这是我参与「第四届青训营 」笔记创作活动的第8天
题目来源:【大数据专场 学习资料三】第四届字节跳动青训营 - 掘金
思考题
-
为什么需要存在这么多不同的分布式存储系统?
- 基于不同的目的设计的,比如hdfs是为了满足高可用、高容量的需求,对象存储是为了存储大规模非结构化数据
-
在实际运行过程中,HDFS可能会有哪些异常场景?
-
写异常
- Client挂掉:租约未释放,副本不一致 -> 需要不断续约 lease recovery
- DataNode挂掉:Pipeline Recovery,重新选择DataNode
- NameNode挂掉:重新选举NameNode
-
读异常
- DataNode挂掉或很慢:更换节点
-
-
HDFS诞生于2006年,依照当时的硬件条件设计,以今天的硬件水平来看,哪些设计可以改进?
- 数据块被切割成128MB,现在硬件容量更大,可以切割更大的数据块,数据不需要从多个节点读取数据,降低读写耗时
-
DataNode的启动扫盘设计存在哪些问题?可以如何优化
-
DataNode启动扫盘分为
- 读取解析数据目录即datadir所配置的目录。
- 检查这些目录对应磁盘是否是坏的磁盘(此步骤现有的逻辑为串行执行)。
- DataNode发送心跳信息,向NameNode进行注册。
- 扫描各个数据目录下的数据块,并将这些数据块初次汇报给NameNode。
-
问题:检查目录是否损坏为串行之行
-
优化:改成并行执行
-
-
什么是分布式系统的“脑裂”?
- 同时有多个节点认为自己是Leader(hdfs为NameNode)
-
HouseKeeping组件的设计需要注意哪些点?
- 处理范围:可以只处理最新的数据,按日期划分
- 处理周期:可以每天处理一次
- 处理条件:DataNode的容量不均衡评估阈值,副本的放置策略
-
HDFS作为通用存储场景,有哪些优缺点?
- 优点:高可用,大容量,可扩展等
- 缺点:不适合低延时数据访问,无法高效的对大量小文件进行存储,不支持并发写入、文件随机修改
-
以各大云厂商相关产品为切入点,大数据存储领域发展有哪些趋势?
- 数据湖:AWS Glue,可以快速完成复杂的ETL过程,处理完的数据,既可以注入数据湖,也可以给数仓或数据库用;Amazon Athena,这个工具,让我们可以用标准的SQL,对存储在S3里的数据进行查询,不管是结构化的还是非结构化的。这就意味着,大家可以用最熟悉的SQL,轻松在S3硬地里“吃土”,当然也能在湖里“划水”,轻松进行数据洞察。
- 云存储:不存储到各自维护的节点上,统计都挂到云上的节点,
探索学习
-
进一步了解可观测性工程
- 日志、Metrics打点、trace链、Grafana看板
-
进一步了解大数据生态一些开源系统,理解它们要解决的问题
-
调度系统AirFlow
- 通过 DAG(Directed acyclic graph 有向无环图)来管理任务流程的任务调度工具,不需要知道业务数据的具体内容,设置任务的依赖关系即可实现任务调度。
-
ETL系统 Airbyte
- 数据整合工具,抽取、转换、加载,将不同数据源数据都转换成统一目录管理
-
数据开发 dbt
- 转换数据库或数据仓库中的数据,在 E(Extract)、L(Load)、T(Transform) 的流程中,仅负责转换(transform)的过程
-
元数据系统 Apache Altas, LinkedIn DataHub
- 元数据管理/治理平台
-
-
如果想进一步阅读HDFS的源码,可以把源码导入到IDE(例如Intellij IDEA),以基本的读写操作为线索,比如一个hdfs put 命令,按图索骥摸索出实现这个命令的代码。