《大数据技术原理与应用》第二版-第八章Hadoop再探讨

8.1Hadoop优化与发展

  1. Hadoop1.0的不足与局限
    • 抽象层次低
    • 表达能力有限
    • 开发者自己管理作业之间的依赖关系
    • 难以看到程序整体逻辑
    • 执行迭代效率低
    • 浪费资源
    • 实时性差
  2. 针对Hadoop的改进与提升
    • 在1.0中单一名称节点,存在单点失效问题,设计了HDFS HA提供名称节点热备份机制
    • 单一命名空间无法实现资源隔离,设计HDFS联邦,管理多个命名空间
    • 对于MapReduce资源管理效率低下,设计新的资源管理框架YARN
    • Pig,处理大规模数据脚本语言,解决抽象层次低的问题
    • Oozie,工作流和协作服务引擎,协助Hadoop运行不同的任务,解决没有提供依赖关系管理机制。
    • Tez, 支持DAG作业的计算框架,对于作业操作进行分解和重组,解决不同MapReduce任务之间存在的重复操作。
    • Kafka, 分布式发布订阅消息系统,一般为作为企业大数据分析平台的数据交换枢纽,实现各个组件之间不同数据类型的高效交换,解决Hadoop生态中各个组件和产品之间缺乏统一数据交换中介。

8.2HDFS2.0的新特性

增加了HDFS HA和HDFS联邦

HDFS HA
  1. 在HDFS1.0中存在一个第二名称节点,它的职责是周期性的从名称节点中获取命名空间镜像文件(FsImage)和修改日志(EditLog),进行合并后再发送给名称节点,替换掉原来的FsImage,以防止日志文件过大,同时在第二名称节点中也保存一份。,这样就可以进行冷备份了。
  2. 在HDFS2.0中为了解决单点问题采用HA架构,设置两个名称节点,其中一个处于活跃状态。也就是可以进行热备份了。两个名称节点的状态同步,可以借助一个共享系统来实现,NFS、QJM或Zookeeper,防止出现两个管家,使用Zookeeper进行管理。
HDFS联邦
  1. HDFS1.0中只有一个名称节点,不可以进行水平扩展,整体性能方面受限于单个名称节点吞吐量。HDFS HA解决了单点故障问题,但是没有解决扩展性、系统性能、隔离性问题。
  2. 在联邦设计中设计多个互相独立的名称节点,使得HDFS命名服务能够水平扩展,这些名称节点分别进行各自的命名空间和块管理,相互之间是联邦关系,不需要彼此协调。
  3. 在联邦中名称节点提供了命名空间和块管理功能,所有名称节点共享底层的数据节点存储资源。
  4. HDFS联邦的访问方式,可以采用客户端挂载表进行数据共享。
  5. 相比于1.0优势:
    • HDFS集群可扩展性,各自分管一部分目录
    • 性能更高
    • 良好的隔离性
    • 需要注意的是HDFS联邦不能够解决单点故障问题,估计是相互独立的原因,所以需要为每个名称节点部署一个后备节点。

8.3新一代资源管理调度框架

  1. MapReduce1.0采用Master/Slave架构设计,包括一个JobTracker和若干个TaskTracker,存在以下缺点:
    • 存在单点故障
    • JobTracker“大包大揽”导致任务过重(三大功能,资源管理、任务调度和任务监控)
    • 容易出现内存溢出
    • 资源划分不合理
  2. YARN(Yet Another Resource Negotiator)设计思路
    • 基本思路就是放权,把原有功能进行拆分
    • ResourceManager负责管理资源,处理客户端请求;启动和监控Application;监控NodeManager;资源分配与调度
    • ApplicationMaster负责任务调度和监控,为应用程序申请资源,并且分配给内部;任务调度、监控与容错
    • NodeManager负责执行原TaskTracker的任务,单个节点上的资源管理;处理来自ResourceManager的命令;处理来自ApplicationMaster的命令
    • YARN中是以容器(Container)作为动态资源分配单位
    • YARN的ResourceManager的组件和HDFS的名称节点部署在一个节点上面
    • YARN的ApplicationMaster及NodeManager是和HDFS的数据节点部署在一起的
YARN工作流程
  1. 用户编写客户端应用程序,向YARN提交程序,包括ApplicationMaster程序、启动的命令、用户程序等
  2. YARN中的ResourceManager负责接收和处理来自客户端的请求。启动一个ApplicationMaster
  3. ApplicatioMaster被创建后首先向ResourceManager注册
  4. ApplicationMaster采用轮询的方式通过RPC协议向ResourceManager申请资源
  5. ResourceManager以容器的形式向ApplicationMaster分配资源,一旦得到资源后会在容器里面与NodeManager进行通信。
  6. 当ApplicationMaster要求容器启动任务时他会为任务设置好运行环境,然后将任务启动命令写到一个脚本中,通过容器来运行此脚本来启动任务。
  7. 各个任务通过RPC协议向ApplicationMaster可以随时掌握各个任务运行状态,可以在任务失败时重启任务。
  8. 应用程序运行完成后,ApplicationMaster向ResourceManager的应用程序管理器注销并关闭自己。
YARN框架的优势相比于MapReduce1.0
  1. 大大减少了承担中心服务功能ResourceManager的资源消耗
  2. MapReduce是一个计算框架,又是一个资源管理调度框架,但是只能支持MapReduce编程模型。而YARN一个纯粹的资源调度框架,可以运行各种计算框架。
  3. YARN资源管理更加高效
上一篇:YARN的job提交流程


下一篇:hadoop学习笔记(九):mr2HA高可用环境搭建及处步使用