Hadoop-离线批处理技术

Hadoop-离线批处理技术

Hadoop-LOGO

做者 | WenasWeihtml

一 Hadoop

Hadoop是一个由Apache基金会所开发的分布式系统基础架构。充分利用集群的威力进行高速运算和存储。node

Hadoop的框架最核心的设计就是:HDFS1和MapReduce2。HDFS为海量的数据提供了存储,而MapReduce则为海量的数据提供了计算。git

Apache Hadoop软件库是一个框架,该框架容许使用简单的编程模型跨计算机集群对大型数据集进行分布式处理。它旨在从单个服务器扩展到数千台机器,每台机器都提供本地计算和存储。库自己不依赖于硬件来提供高可用性,而是被设计用来检测和处理应用程序层的故障,所以能够在计算机集群的顶部提供高可用性服务,每台计算机都容易出现故障。github

二 Hadoop特色

Hadoop 是一个可以对大量数据进行分布式处理的软件框架, 支持C++,Java开发语言,其带有用Java语言编写的框架,所以运行在 Linux 生产平台上是很是理想的。apache

2.1 Hadoop的优势

  • 1.高可靠性: Hadoop按位存储和处理数据的能力值得人们信赖, 假设计算元素和存储会失败,它维护的多个工做数据副本,确保可以针对失败的节点从新分布处理。
  • 2.高扩展性: Hadoop是在可用的计算机集簇间分配数据并完成计算任务的,这些集簇能够方便地扩展到数以千计的节点中。
  • 3.高效性: Hadoop可以在节点之间动态地移动数据,并保证各个节点的动态平衡,所以处理速度很是快,且并行的方式工做,经过并行处理加快处理速度。
  • 4.高容错性: Hadoop可以自动保存数据的多个副本,而且可以自动将失败的任务从新分配。
  • 5.低成本:与一体机、商用数据仓库以及其余的数据集市相比,hadoop是开源的,项目的软件成本所以会大大下降。

2.2 Hadoop的缺点

  • 一、不能作到低延迟: 高数据吞吐量作了优化,牺牲了获取数据的延迟。
  • 二、不适合大量的小文件存储。
  • 三、文件修改效率低: 不支持任意修改文件和不支持多人同时进行写操做, HDFS 适合一次写入,屡次读取的场景。

三 Hadoop的意义

Hadoop 已经不仅是一个大数据框架,它逐渐演化成为 Hadoop 生态系统。Hadoop 生态系统中涵盖
了各类各样的大数据处理技术,包括Hadoop、Storm、Spark、Hive、Zookeeper、Flume、Kafka等一系列技术和框架,已然成为大数据处理的事实标准。编程

Hadoop的分布式架构,将大数据处理引擎尽量的靠近存储数据,对例如像 ETL3 这样的批处理操做相对合适,由于相似这样操做的批处理结果能够直接走向存储。Hadoop 的 MapReduce 功能实现了将单个任务打碎,并将碎片任务(Map)发送到多个节点上,以后再以单个数据集的形式加载(Reduce)到数据仓库里。服务器

hadoop主要的功能就是用来处理大数据:网络

  • 首先,大数据能够对顾客群体细分而后对每一个群体量体裁衣般的采起独特的行动。
  • 第二点,运用大数据模拟实境,发掘新的需求和提升投入的回报率。如今愈来愈多的产品中都装有传感器,汽车和智能手机的普及使得可收集数据呈现爆炸性增加。
  • 第三点,提升大数据成果在各相关部门的分享程度,提升整个管理链条和产业链条的投入回报率。大数据能力强的部门能够经过云计算、互联网和内部搜索引擎把大数据成果和大数据能力比较薄弱的部门分享,帮助他们利用大数据创造商业价值。
  • 第四点,进行商业模式产品和服务的创新。大数据技术使公司能够增强已有的产品和服务,创造新的产品和服务,甚至打造出全新的商业模式。

四 Hadoop的总体架构

4.1 Hadoop的核心组件

Hadoop的核心组件分别是:架构

  • MapReduce: 分布式计算框架
  • HDFS:hadoop的数据存储工具
  • YARN4:Hadoop 的资源管理器
  • Common 工具: 封装的一些经常使用底层工具

Hadoop组件

(1) MapReduce-分布式计算框架

MapReduce 编程模型借鉴了 "分而治之" 的思想,将一个大而复杂的计算问题分解成多个小的计算问题,由多个map()函
数对这些分解后的小问题进行并行计算,输出中间计算结果,而后由 reduce() 函数对 map() 函数的输出结果进行进一步合并,得出最终的计算结果。并发

MapReduce-简单模型

(2) HDFS-数据存储工具

Hadoop分布式文件系统(HDFS)是指被设计成适合运行在通用硬件(commodity hardware)上的分布式文件系统。并且是一个高度容错性的系统,适合部署在廉价的机器上。HDFS能提供高吞吐量的数据访问,很是适合大规模数据集上的应用。HDFS放宽了一部分POSIX约束,来实现流式读取文件系统数据的目的。

HDFS采用Java语言开发,所以任何支持Java的机器均可以部署Namenode或Datanode。

HDFS 架构

HDFS采用master/slave架构, 即主从模式。一个HDFS集群是由一个Namenode和必定数目的Datanodes组成。Namenode是一个中心服务器,负责管理文件系统的名字空间(namespace)以及客户端对文件的访问。集群中的Datanode通常是一个节点一个,负责管理它所在节点上的存储。HDFS暴露了文件系统的名字空间,用户可以以文件的形式在上面存储数据。从内部看,一个文件其实被分红一个或多个数据块,这些块存储在一组Datanode上。Namenode执行文件系统的名字空间操做,好比打开、关闭、重命名文件或目录。它也负责肯定数据块到具体Datanode节点的映射。Datanode负责处理文件系统客户端的读写请求。在Namenode的统一调度下进行数据块的建立、删除和复制。

(3) YARN-资源管理器

YARN-资源调度框架是从Hadoop2.0版本开始引入的, 引入以前, MapReduce框架的核心 Job Tracker(做业跟踪者), JobTracker 须要与集群中的机器定时通讯 (heartbeat), 须要管理哪些程序应该跑在哪些机器上,须要管理全部 job 失败、重启等操做,还须要和数据元数据中心通信,了解数据分布等等, 既当爹又当妈的意思,即既作资源管理又作任务调度/监控。Task Tracker资源划分过粗放,二大部分工做是能够高度一致的监控任务。

Job Tracker 存在的问题:

  • 单点故障: 依旧是单点故障问题,若是JobTracker挂掉了会致使MapReduce做业没法执行
  • 资源浪费: JobTracker完成了太多的任务,形成了过多的资源消耗,当map-reduce job很是多的时候,会形成很大的内存开销,潜在来讲,也增长了JobTracker失效的风险,这也是业界广泛总结出老Hadoop的Map-Reduce只能支持4000节点主机的上限
  • 局限性: 只支持简单的MapReduce编程模型, 要使用Hadoop进行编程的话只能使用基础的MapReduce,而没法使用诸如 Spark 这些计算模型。而且它也不支持流式计算和实时计算

YARN 框架中将 JobTracker 资源分配和做业控制分开,分为 Resource Manager(RM) 以及 Application Master(AM)。

资源调度管理器最核心是

  • 管理集群资源,原则上能够包括任何硬件资源,当前 YARN 管理粒度是 CPU 和内存——解决物理资源透明化
  • 基于资源状况和任务进行状态,调度任务队列——解决并发任务调度透明化

YARN框架执行流程架构

Yarn的主要组件以下:

  • Resource Manager:ResourceManager包含两个主要的组件:定时调用器(Scheduler)以及应用管理器(ApplicationManager)。

    • 定时调度器(Scheduler):定时调度器负责向应用程序分配资源,它不作监控以及应用程序的状态跟踪,而且它不保证会重启因为应用程序自己或硬件出错而执行失败的应用程序。
    • 应用管理器(ApplicationManager):应用程序管理器负责接收新任务,协调并提供在ApplicationMaster容器失败时的重启功能。
  • Application Master:每一个应用程序的ApplicationMaster负责从Scheduler申请资源,以及跟踪这些资源的使用状况以及任务进度的监控。
  • Node Manager:NodeManager是ResourceManager在每台机器的上代理,负责容器的管理,并监控他们的资源使用状况(cpu,内存,磁盘及网络等),以及向ResourceManager/Scheduler提供这些资源使用报告。
  • Contain: 为资源申请和任务运行的容器, 会向 Application Master 上报 MapReduce 状态。

Yarn框架做为一个通用的资源调度和管理模块,同时支持多种其余的编程模型,好比最出名的Spark。

(4) Common-底层工具

Hadoop 的 Common 工做理解起来比较简单, 就是封装了一些经常使用的底层工具,供其余
Hadoop 模块使用。其主要包括配置工具 Configuration、 远程过程调用(Remote Procedure
Cal.RPC)、序列化工具和 Hadoop 的抽象文件系统工具 FileSystem 等,为其余 Hadoop 模块的运行提供基本服务,并为开 发Hadoop 程序提供了必要的 API。

4.2 Hadoop的物理架构

Hadoop 在物理架构上会采用 Master/Slave模式。NameNode 服务器存放集群的元数据信息,负责整个数据集群的管理。DataNode 分布在不一样的物理机架上,保存具体的数据块并按期向 NameNode 发送存储的数据块信息,以心跳的方式告知 NameNode。客户端与 Hadoop 交互时,首先要向 NameNode 获取元数据信息,根据 NameNode 返回的元数据信息,到具体的 DataNode 服务器上获取数据或写入数据。

Hadoop的物理架构

Hadoop 提供了默认的副本存放策略,每一个 DataNode 默认保存了3个副本,其中2个副本会保存在同一个机架的不一样节点,另外一个副本会保存在不一样机架的节点上。

参考文档:

  1. HDFS: Hadoop 分布式文件系统, Hadoop Distributed File System, 简称HDFS
  2. MapReduce: 一种编程模型,用于大规模数据集的并行运算, 主要思想: "Map(映射)"和"Reduce(归约)"
  3. ETL: 数据仓库技术, Extract-Transform-Load, 用来描述将数据历来源端通过抽取(extract)、转换(transform)、加载(load)至目的端的过程
  4. YARN: 另外一种资源协调者, Yet Another Resource Negotiator
相关文章
相关标签/搜索