大数据技术原理与应用学习笔记(八)

大数据技术原理与应用学习笔记(八)

  • 本系列历史文章
  • Hadoop再探讨
    • Hadoop的优化与发展
      • Hadoop1.0到Hadoop2.0
      • 不断完善的Hadoop生态系统
    • HDFS2.0新特性
      • HDFS HA(高可用性)
      • HDFS Federation
    • YARN——新一代资源管理调度框架
      • MapReduce1.0中的缺陷
      • YARN设计思路
      • YARN体系结构
        • ResourceManager
        • ApplicationMaster
        • NodeManager
      • YARN的工作流程
      • 与MapReduce1.0的对比
      • YARN的发展目标
    • Hadoop生态系统中具有代表性的功能组件
      • Pig
        • Pig的概念与特点
        • Pig的应用场景
      • Tez
        • Tez的概念与特点
      • Spark和Kafka
        • Spark
        • Kafka

本系列历史文章

大数据技术原理与应用学习笔记(一)
大数据技术原理与应用学习笔记(二)
大数据技术原理与应用学习笔记(三)
大数据技术原理与应用学习笔记(四)
大数据技术原理与应用学习笔记(五)
大数据技术原理与应用学习笔记(六)
大数据技术原理与应用学习笔记(七)

Hadoop再探讨

Hadoop的优化与发展

在Hadoop1.0中仍存在很多不足:

  • 抽象层次低,需人工编码
  • 表达能力有限
  • 开发着自己管理Job间的依赖关系
  • 难以看到程序的整体逻辑
  • 执行迭代效率低
  • 资源浪费
  • 实时性差
    采取的改进措施如下:
  • 改进自身的核心组件(MapReduce和HDFS)
  • 其他组件的不断丰富(Pig、Tez、Spark、Kafka)

Hadoop1.0到Hadoop2.0

Hadoop更新到2.0后,以下方面做出了很大更新:
HDFS:

  • 由原来的单一名称节点(存在单点失效问题),增添设计了HDFS HA,提供名称节点热备份机制;
  • 由原来的单一命名空间(存在无法实现资源管理),增添设计了HDFS Federation来管理多个命名空间。
    MapReduce:
  • 由原来的资源管理效率低,增添设计了管理框架YARN。

不断完善的Hadoop生态系统

在Hadoop的优化和发展中,越来越多的组件被包含在Hadoop生态系统中,使得Hadoop平台的性能提升许多。

组件 功能
Pig 处理大规模数据的脚本语言,用户只需编写几条语句,系统会自动转换为MapReduce作业(可用来解决需人工编码的不足)
Spark 基于内存的分布式并行编程框架,具有较高的实时性,并且较好的支持迭代计算(可用来解决迭代效率低的不足)
Oozie 工作流和协作服务引擎,协调Hadoop上运行的不同任务(解决开发者自己管理Job间依赖关系的不足)
Tez 支持DAG作业的计算,对作业的操作进行重新分解和组合,形成DAG作业,减少不必要的操作(解决重复操作的不足)
Kafka 分布式发布订阅消息系统,一般作为企业大数据分析平台的数据交换枢纽,不同类型的分布式系统可以接入到Kafka,实现和Hadoop各组件之间不同类型数据的实时高效交换(解决了Hadoop组件和其他产品间缺乏统一、搞笑的数据交换中介)

HDFS2.0新特性

HDFS HA(高可用性)

HDFS HA(High Availability)是为了解决单点故障问题。HA集群设置两个名称节点,“活跃(Active)”和“待命(Standby)”。两种名称节点的状态同步,可以借助于一个共享存储系统来实现。一旦活跃名称节点出现故障,就可以立即切换到待命名称节点。Zookeeper确保一个名称节点在对外服务。名称节点维护映射信息,数据节点同时向两个名称节点汇报信息。

HDFS Federation

在Hadoop1.0中,仍然存在以下问题:

  • 不可水平扩展;
  • 单点故障(由HDFS HA解决);
  • 系统整体性能受单个名称节点吞吐量限制;
  • 单个名称节点难以提供不同程序间隔离性。

由此设计出了HDFS Federation,其设计了多个相互独立的名称节点,使HDFS命名空间可以横向扩展,不是真正的分布式设计,但远低于分布式设计的复杂性等。
所有名称节点共享底层数据节点的存储资源,拥有多个独立命名空间管理属于自己的一组块(块池)。
采取客户端挂载表访问
比Hadoop1.0的优势:

  • HDFS集群可扩展性
  • 系统整体性能高
  • 良好的隔离性

YARN——新一代资源管理调度框架

MapReduce1.0中的缺陷

  • 存在单点故障
  • JobTracker“大包大揽”任务过重
  • 容易出现内存溢出
  • 资源划分不合理

YARN设计思路

将原来的JobTracker拆分(原Master端)

  • 资源管理→ResourceManager
  • 任务调度→ApplicationMaster
  • 任务监控→ApplicationMaster

YARN体系结构

ResourceManager
  • 处理客户端请求
  • 启动、监控ApplicationMaster
  • 资源分配与调度
  • 监控NodeManager
ApplicationMaster
  • 为应用程序申请资源,并分配给内部任务
  • 任务监控、调度与容错
NodeManager
  • 单个节点上的资源管理
  • 处理来自ResourceManager的命令
  • 处理来自ApplicationMaster的命令

YARN的工作流程

  • 首先由用户编写客户端应用程序,向YARN提交;
  • YARN中,ResourceManager 负责接受和处理来自客户端的请求,为其分配一个容器,并在其中启动一个ApplicationMaster;
  • 启动后,向ResourceManager注册;
  • ApplicationMaster轮询向ResourceManager申请资源;
  • ResourceManager以“容器”形式向ApplicationMaster申请资源;
  • 在容器中启动任务(二次分配后)
  • 各任务向ApplicationMaster汇报自己的状态和进度;
  • 运行完成后ApplicationMaster向ResourceManager的应用程序管理器注销并关闭自己。

与MapReduce1.0的对比

优势:

  • YARN减少了中心服务功能ResourceManager的资源消耗
  • YARN是纯粹的资源调度管理框架
  • YARN中的资源管理比MapReduce1.0更加高效

YARN的发展目标

实现 “一个集群,多个框架”

Hadoop生态系统中具有代表性的功能组件

Pig

Pig的概念与特点
  • 提供了类似SQL的Pig Latin语言,允许用户通过编写简单的脚本来实现复杂的数据分析,而不需要编写复杂的MapReduce应用程序
  • Pig会自动把用户编写的脚本转换成MapReduce作业在Hadoop集群上运行,而且具备对生成的MapReduce程序进行自动优化的功能(用户在编写Pig程序的时候,不需要关心程序的运行效率,这就大大减少了用户编程时间)
  • 通过配合使用Pig和Hadoop,在处理海量数据时就可以实现事半功倍的效果,比使用Java、C++等语言编写MapReduce程序的难度要小很多,并且用更少的代码量实现了相同的数据处理分析功能
Pig的应用场景
  • 数据查询只面向相关技术人员
  • 即时性的数据处理需求,这样可以通过pig很快写一个脚本开始运行处理,而不需要创建表等相关的事先准备工作

Tez

Tez的概念与特点
  • Tez是Apache开源的支持DAG作业的计算框架,它直接源于MapReduce框架
  • 核心思想是将Map和Reduce两个操作进一步拆分(Map被拆分成Input、Processor、Sort、Merge和Output) Reduce被拆分成Input、Shuffle、Sort、Merge、Processor和Output等
  • 分解后的元操作可以任意灵活组合,产生新的操作。这些操作经过一些控制程序组装后,可形成一个大的DAG作业
  • 通过DAG作业的方式运行MapReduce作业,提供了程序运行的整体处理逻辑,就可以去除工作流当中多余的Map阶段,减少不必要的操作,提升数据处理的性能

Spark和Kafka

Spark

Spark最初诞生于伯克利大学的APM实验室,是一个可应用于大规模数据处理的快速、通用引擎,如今是Apache软件基金会下的顶级开源项目之一。Spark在借鉴Hadoop MapReduce优点的同时,很好地解决了MapReduce所面临的问题。Spark最大的特点是内存计算,带来了更高的迭代运算效率
其基于DAG的任务调度执行机制,优于MapReduce的迭代执行机制。所以当前,Spark正以其结构一体化、功能多元化的优势,逐渐成为当今大数据领域最热门的大数据计算平台。关于Spark后面的学习笔记还会提到。

Kafka

Kafka是一种高吞吐量的分布式发布订阅消息系统,用户通过Kafka系统可以发布大量的消息,同时也能实时订阅消费消息。Kafka可以同时满足在线实时处理和批量离线处理。

你可能感兴趣的:(大数据学习笔记,hadoop,大数据)