文章目录

  • 前言
  • 数据探查服务的初始点:元数据的同步
  • 数据探查服务的分析:索引结构的重新构建
  • 数据探查服务的结果:汇聚表DB的存储
  • 数据探查服务的额外功能:节点级别的统计
  • 数据探查服务的外部展现:用户控制台
  • 引用

前言


在大规模量级的分布式存储系统中,很多时候管理员以及用户都有特定条件的查询需求:比如用户哪个目录文件数据量是最多的?还有对于管理员的需求:哪个节点上存储的文件数量最多,又或者是否存在损坏数据块文件类似种种的问题。因此在大型分布式存储系统中,我们需要有一个能够快速透视,探查里面数据的工具。当然它的功能要远远大于目前文件系统提供的fsck这样的工具命令。对于这种工具,我们可以怎样对其进行设计呢?本文,笔者结合Hadoop Ozone Recon服务,来聊聊里面的一些相关设计思想。

数据探查服务的初始点:元数据的同步


这里需要大家明白一个关键的点,数据探查服务并不是要针对所有的物理数据进行一个个的扫描统计,而只是需要对中心控制节点的核心元数据进行探查分析即可。比如HDFS,那我们专门分析的对象就是FSImage文件。

为了避免对实际生产系统造成影响,我们一般的做法是会从一个Standby的元数据文件进行定期同步,然后对这个同步而来的文件再进行二次分析。当然,有时我们可以做的更高级一些,只有首次同步时进行元数据文件的同步,后面只同步WAL的更新操作,相当于这是Standby的Follower。因为数据探查服务不会对元数据文件进行写操作,所以我们可以让这个文件变为read-only模式的。

对于数据探查的定位,在这里它是一个服务,所以上述的行为应该被纳入到这个服务当中。

数据探查服务的分析:索引结构的重新构建


有时候,针对不同的查询分析需求,如果按照原来元数据文件内的索引构建方式,会导致非常低的效率(比如遍历完全统计),此时我们可以在服务中进行一定结构的转换。比如一种常见的方式:倒排索引的构建,或者带上前缀匹配的支持。或者构建出不同Key对应的不同Value的含义,只要Value是我们所需要的就行。

这里的索引结构的重构建可以和上面元数据的定期同步行为的速率保持一致,以达到准实时更新的效果。

数据探查服务的结果:汇聚表DB的存储


上述各个索引结构都构建完成后,我们可以做一些常规的汇总统计的操作,然后将这些结果存储到一张汇聚表中。然后用户可以通过这张汇聚表的数据来进行他们希望的查询请求。

比如举个例子,我们存储了一张Container–>Blocks数的表数据,定义如下:

CREATE TABLE `num_blocks_per_container` (
`container_id` BIGINT,
`num_blocks` INT,PRIMARY KEY (`container_id`)
);

和上述的步骤类似,这里的汇聚结果表也是需要被定期更新的,这样的话,用户就能够查询到近实时的结果。

数据探查服务的额外功能:节点级别的统计


数据探查服务不仅支持细粒度层面的元数据分析,当然它也应该包含节点层面的统计,诸如以下类似指标:

  • 节点磁盘使用空间
  • 节点总blocks数量

这些节点层面的统计需要由数据探查服务定期对这些节点做一次查询操作,然后也将结果保存到上面的汇聚表中。这类结果数据对于系统管理员来说将会相当有用,比如说利用这些数据我们可以知道节点使用空间的趋势变化情况等等。

数据探查服务的外部展现:用户控制台


数据探查服务作为一项完整的数据分析服务,它不应该直接暴露给使用者。对于使用者来说,我们需要给他们提供一个Console的东西,用户看到的可以是直接提供好的用户命令,不同身份的用户能够使用的执行命令也是有所区分的。而Console里面的Console Server是数据探查服务的一个代理。

在这个Console Server的服务里,我们可以进一步完善Security的功能,加入一些authentication,或者更方便用户进行查询使用的一些Feature,比如浏览器直接浏览查询功能。

以上所有的设计参考自Hadoop Ozone Recon服务的设计,此服务的设计结构图如下,大家可以参考上面描述的进行比较。

引用


[1].https://issues.apache.org/jira/browse/HDDS-1084. Ozone Recon Service

存储系统“数据之眼”的设计--数据探查服务相关推荐

  1. 第四章第十一节数据资产盘点-设计数据资产标签

    第四章第十一节数据资产盘点-设计数据资产标签 在形成数据资产目录以后,开始设计数据资产标签体系,例如对于一个字段"客户名称"来说,需要给这个客户名称打上一个标签,比安全等级是几级? ...

  2. 数据中心网络规划设计,数据中心设计规范解读

    计算机网络系统设计方案时应遵循哪些原则 计算机网络系统设计方案时应遵循原则:1.网络信息系统安全与保密.2.网络安全系统的整体性原则强调安全防护.监测和应急恢复. 要求在网络发生被攻击.破坏事件的情况 ...

  3. Ozone数据探查服务Recon2.0设计

    文章目录 前言 现今Ozone Recon的功能以及2.0版本的目标 SCM Container的track实现 方法一: 在SCM中新增实现API来获取丢失,损坏的Container数据 方法二: ...

  4. Ozone数据探查服务Recon的启用

    文章目录 前言 Ozone Recon服务的启用 前言 笔者之前写过一篇关于Ozone数据探查服务Recon的文章:存储系统"数据之眼"的设计–数据探查服务,大致阐述了Recon如 ...

  5. 数据之眼 | 数据探查服务的设计

    点击上方蓝色字体,选择"设为星标" 回复"资源"获取更多资源 本文作者:林意群 原文地址:http://suo.im/5Xcmci 大数据技术与架构 点击右侧关 ...

  6. 【2017年第3期】交通大数据:一种基于微服务的敏捷处理架构设计

    杜圣东, 杨燕, 滕飞 西南交通大学信息科学与技术学院,四川 成都 610031 摘要:面对智慧交通广泛的大数据应用场景和技术需求,一般大数据系统难以适应多种处理情况并做出快速响应.针对这一问题,首次 ...

  7. 如何设计云存储服务端数据存储加密机制

    云存储是一种新型的网络存储形式.随着云存储的广泛使用,云存储中的数据安全问题,如数据泄漏.数据篡改,如何设计云存储服务端数据存储加密机制也成了用户广泛关注的问题.云存储可以分为访问层.应用接口层.基础 ...

  8. .NET应用架构设计—面向查询服务的参数化查询设计(分解业务点,单独配置各自的数据查询契约)...

    阅读目录: 1.背景介绍 2.对业务功能点进行逻辑划分(如:A.B.C分别三个业务点) 2.1.配置映射关系,对业务点配置查询契约(构造VS插件方便生成查询契约) 2.2.将配置好的映射策略文件放在调 ...

  9. 设计数据密集型应用 第五章:复制

    设计数据密集型应用 第五章:复制 与可能出错的东西比,'不可能'出错的东西最显著的特点就是:一旦真的出错,通常就彻底玩完了. --道格拉斯·亚当斯(1992) 文章目录 设计数据密集型应用 第五章:复 ...

最新文章

  1. SOA、SOAP、RPC、REST、DUBBO的区别与联系
  2. 2.2.5 调度算法:时间片轮转 优先级调度 多级反馈队列
  3. 如何发现 GitHub 上那些有趣好玩的项目?
  4. 由“深”至“广”,探索2022音视频技术的无限可能
  5. 浅谈HTTPS以及Fiddler抓取HTTPS协议
  6. 固定宽度弹性布局(以适应各种各辨率)
  7. 绿幕通通扔掉 ੧ᐛ੭ | 谷歌AI实时「抠」背景
  8. linux搭建饥荒服务器
  9. 共射极单管放大器的Multisim仿真实验
  10. 生命的质量,在于你拥有多少内在的和平与喜悦
  11. 五维图matlab,五维立体图,怎么画五维图(即以五边形反映各项水平)
  12. python将工作表根据一列拆分成多个独立的sheet工作薄
  13. 数学建模之spss软件使用和例题
  14. [unity]使用Unity粒子系统制作跑尘
  15. Django cms 教程二:新建页面
  16. 自己动手、丰衣足食!箭头 → ← → ← ---1
  17. 上次的问题解决啦,重新送上Go ORM 单元测试全流程讲解
  18. EPICS记录参考--多位二进制输入记录(mbbi)
  19. LiFi技术发展及对监管的影响
  20. opencv3.0中contrib模块的添加

热门文章

  1. 手写内存池以及原理代码分析【C语言】
  2. android校园通代码,Android校园通软件的设计与实现.doc
  3. canopen服务器协议,CANOpen协议如何保证通讯不丢帧?-通信/网络-与非网
  4. 面试中常被问到的(17)多线程及多进程优缺点
  5. python判断能否组成三角形_Python练习题4.16判断是否构成三角形
  6. Java 基础【02】 Super 用法
  7. matlab中caitu_tiqu,车牌识别matlab语音版+OpenCV版+测试图像和设计文档
  8. ccd无法连接到计算机,激光三维手持式扫描仪无法连接电脑维修技术人员多
  9. java后端解决跨域问题
  10. 驱动程序无法使用安全套接字层(SSL)加密与 SQL Server 建立安全连接