本文共 1539 字,大约阅读时间需要 5 分钟。
第八章 Hadoop 再探讨
写在章节前面的话
- Hadoop的优化和发展主要体现在两个方面:
- Hadoop两大核心组件MapReduce和HDFS的架构的改进与提升。
- hadoop系统的其他组件不断丰富,通过优化和提升,Hadoop可以支持更多的应用场景,提高更高的集群可用性,也带来更高的资源利用率
- 本章内容概览
- Hadoop局限
- Hadoop在核心组件组件的新发展
- Hadoop生态系统的成员
8.1 Hadoop的优化与发展
- Hadoop1.0 核心组件(仅指MapReduce和HDFS)主要存在以下不足:
- 抽象层次低,编码复杂
- 表达能力有限
- 开发者需要自己管理作业依赖关系
- 难以看到程序整体逻辑。
- 执行迭代操作效率低。
- 资源浪费
- 实时性差
- Hadoopdoop改进
- 表8.1
- 表8.2
8.2 HDFS2.0 新特性
8.2.1 HDFS HA
- 两个名称节点的状态同步,可以借助于一个共享存储系统来实现,比如 NFS、QJM、或者Zookeeper.
- 活跃名称节点的更新数据写入到共享存储系统
- 待命名称节点会一直监听该系统,一旦有新的写入,就立即从公共存储系统中读取这些数据并加载到自己的内存中,从而保证名称节点状态的完全同步。
- 要保证待命名称节点一直包含最新的集群各个块的位置信息
- 需要给数据节点配备两个名称节点的地址,并把块的位置信息和心跳信息同时发送到两个名称节点。
- Zookeeper可以确保任意时刻只有一个名称节点对外服务。如果HDFS集群中有“两个管家”,会导致数据丢失或者其他异常。
8.2.2 HDFS 联邦
- HDFS1.0 中存在的问题
- 单点故障
- 可扩展性
- 不可以横向扩展
- 不可以纵向扩展
- 会带来过长的系统启动时间
- 当在内存空间清理时,发送错误,就会导整个HDFS集群宕机。
- 性能
- 整个文件系统的性能会受限于单个名称节点的吞吐量
- 隔离性
- 单个名称节点无法难以提供不同程序之间的隔离性,一个程序可能影响其他运行的程序
- HDFS联邦的设计 1.
- HDFS联邦的访问方式
- HDFS联邦相对于HDFS1.0的优势
- 可扩展性
- 性能更好
- 良好的隔离性
- HDFS联邦并不能解决单点故障的问题,需要为每个名称节点部署一个后备名称节点,以应对名称节点宕机后对业务产生的影响
8.3 新一代资源管理调度框架YARN
8.3.1 MapReduce1.0 的缺陷
- 采取了Master/Slave 架构设计,包括一个JobTrack和若干个TaskTrack
- 前者负责作业的调度和资源的管理,后者负责执行JobTracker指派的具体的任务
- 这种架构很难克服的缺陷
- 存在单点故障
- JobTracker任务过重。
- 容易造成内存溢出
- 资源分配不合理
- 图8-4
8.3.2 YARN设计思路
- 基本思路就是放权,即不让JobTracker这一组件承担过多的任务,把原JobTraker三大功能(资源管理、任务调度、任务监控)进行拆分
- YARN包括ResourceManager、ApplicationMaster和NodeManager
- ResourceManager:负责资源管理
- ApplicationManager:负责任务调度和监控
- NodeManager负责执行TaskTracker任务
- 图 8-5
8.3.3 YARN 体系结构
- 图 8-6
- 表8-3
转载于:https://juejin.im/post/5c9353b05188252d5541fd24