zoukankan      html  css  js  c++  java
  • 《大数据技术原理与应用》第二版-第八章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发展目标

    作者:睿晞
    身处这个阶段的时候,一定要好好珍惜,这是我们唯一能做的,求学,钻研,为人,处事,交友……无一不是如此。
    劝君莫惜金缕衣,劝君惜取少年时。花开堪折直须折,莫待无花空折枝。
    曾有一个业界大牛说过这样一段话,送给大家:   “华人在计算机视觉领域的研究水平越来越高,这是非常振奋人心的事。我们中国错过了工业革命,错过了电气革命,信息革命也只是跟随状态。但人工智能的革命,我们跟世界上的领先国家是并肩往前跑的。能身处这个时代浪潮之中,做一番伟大的事业,经常激动的夜不能寐。”
    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利.
  • 相关阅读:
    1096 Consecutive Factors (20分)
    js-实现省市区地址选择器三级联动
    js-面向对象编程基础
    js-滑块拼图登录验证
    js-promise以及async、await实现简易红绿灯
    js-前端分页效果的实现
    js-ajax方法详解以及封装
    js-jsonp跨域请求原理以及jsonp的封装
    js-实现常见的拖拽效果(表单滑块验证)
    js本地存储-localStorage和cookie详解以及区别
  • 原文地址:https://www.cnblogs.com/tsruixi/p/12095907.html
Copyright © 2011-2022 走看看