Hadoop概述

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

Hadoop概述
⼀、Hadoop概述
Hadoop实现了⼀个分布式⽂件系统,简称HDFS。

Hadoop在数据提取、变形和加载(ETL)⽅⾯有着天然的优势。

Hadoop的HDFS实现了⽂件的⼤批量存储,Hadoop的MapReduce功能实现了将单个任务打碎,将碎⽚任务(Map)发送到多个节点上,之后再以单个数据集的形式加载(Reduce)到数据仓库⾥。

Hadoop的ETL可批量操作数据,使处理结果直接⾛向存储。

Hadoop有以下特点:
1、⾼可靠性。

因为它假设计算元素和存储会失败,因此它维护多个⼯作数据副本,能够确保针对失败的节点重新分布处理。

2、⾼扩展性。

Hadoop是在可⽤的计算机集簇间分配数据并完成计算任务的,这些集簇可⽅便的扩展到数以千计的节点中。

3、⾼效性。

它以并⾏的⽅式⼯作,能够在节点之间动态移动数据,并保证各个节点动态平衡,因此处理速度⾮常快。

4、⾼容错性。

Hadoop能够⾃动保存数据的多个副本,能够⾃动将失败的任务重新分配。

5、可伸缩性。

Hadoop能够处理PB级数据。

6、低成本。

Hadoop是开源的,项⽬软件成本⼤⼤降低。

Hadoop的组成:
1、最底部的是HDFS(Hadoop Distribute File System),它存储Hadoop集群中所有存储节点上的⽂件,是数据存储的主要载体。

它由Namenode和DataNode组成。

2、HDFS的上⼀层是MapReduce引擎,该引擎由JobTrackers和TaskTrackers组成。

它通过MapReduce过程实现了对数据的处理。

3、Yarn实现了任务分配和集群资源管理的任务。

它由ResourceManager、nodeManager和ApplicationMaster组成。

Hadoop由以上三个部分组成,下⾯我们就这三个组成部分详细介绍:
1、HDFS
Hadoop HDFS 的架构是基于⼀组特定的节点构建的,
(1)名称节点(NameNode仅⼀个)负责管理⽂件系统名称空间和控制外部客户机的访问。

NameNode决定是否将⽂件映射到DataNode 上的复制块上。

对于常见的三个复制块,第⼀个复制块存储在同⼀台机架的不同节点上,最后⼀个复制块存储在不通机架的某个节点上。

(2)数据节点(DataNode⼤量)响应来⾃HDFS客户机的读写请求,还响应NameNode的创建、删除和复制块的命令。

名称节点依赖来⾃每个数据节点的定期⼼跳消息,名称节点可以根据这个报告验证块映射和其他⽂件系统元数据。

(3)第⼆名称节点(Secondary NameNode)为名称节点提供⼀个CheckPoint,他只是名称节点的⼀个助⼿节点,第⼆名称节点会定时到NameNode去获取名称节点的edits,并及时更新到⾃⼰fsimage上,这样,如果NameNode宕机,我们也可以使⽤Secondary NameNode的信息来恢复NameNode,从⽽防⽌丢失信息,减少重启时间。

HDFS的⼯作原理:
(1)客户端将要上传的⽂件按128M的⼤⼩分块。

(2)客户端向名称节点发送写数据请求。

(3)名称节点记录各个DataNode信息,并返回可⽤的DataNode列表。

(4)客户端直接向DataNode发送分割后的⽂件块,发送过程以流式写⼊。

(5)写⼊完成后,DataNode向NameNode发送消息,跟新元数据。

注意:
(1)写⼊1T⽂件,需要3T的存储,3T的⽹络流量。

(2)在执⾏读或写的过程中,NameNode和DataNode通过HeartBeat保持通信,确定DataNode活着,如果发现DataNode死掉了,就将DataNode上的数据放到其他节点。

(3)宕掉⼀个节点没关系,还有其他节点可以备份,甚⾄宕掉⼀个机架也没关系,其他机架上也有备份。

2、MapREduce
MapReduce⽤于⼤规模数据集(⼤于1T)的并⾏运算,Map(映射阶段)使⽤函数把键值对映射成新的键值对,Reduce(规约阶段)把键值对中键相同的值整合,同时应⽤函数映射成新的键值对。

⼀般的MapReduce程序会经过以下⼏个过程:
(1)输⼊(Input)。

数据被分块放在HDFS中。

(2)输⼊分⽚(Splitting)。

MapReduce会根据输⼊⽂件计算输⼊分⽚(split),⼀般来说,⼀个⽂件块(DHFS中的数据块的⼤⼩是128M,不⾜128M会被当做⼀个分⽚,超过128M会被切分成多个⽂件块)会对应⼀个分⽚。

(3)Map阶段。

这个阶段的处理逻辑其实就是执⾏程序员编写好Map函数,因为⼀个分⽚对应⼀个Map任务,并且对应⼀个⽂件块,所以这⾥就是数据本地化的操作。

(4)Shuffle阶段。

MapReduce的核⼼就是Shuffle,Shuffle就是将Map的输出进⾏整合,然后作为Reduce的输⼊发送给Reduce。

简单理解就是把所有的Map输出按照键进⾏排序,并把相对键的键值对整合到同⼀组中。

(5)Reduce阶段。

这⾥也是⽤于编写程序的地⽅,针对分组后的键值对进⾏处理。

(6)输出(Final Result)。

Reduce的输出直接写到HDFS上。

输出⽂件也是分块存储的。

3、Yarn
Yarn资源管理框架包括以下⼏个部分:
(1)ResourceManager(资源管理器)是⼀个全局的资源管理器,负责整个系统的资源管理和分配。

它主要由调度器(Scheduler)和应⽤程序管理器(ApplicationManager,AM)组成。

Scheduler基于资源的调度情况将所需资源给Application,并不负责监控Application的状态,也不处理失败的task。

ApplicationMaster负责处理客户端提交的Job以及协商第⼀个Container以供ApplicationMaster运⾏,并且在ApplicationMaster失败的时候会重新启动ApplicationMaster。

(2)ApplicationMaster是⼀个框架特殊的库,每个Application有⼀个ApplicationMaster,主要负责管理和监控部署在Yarn集群上的各种应⽤。

(3)NodeManager(节点管理器)主要负责启动ResourceManager分配给ApplicationMaster的Container,并监视Container的资源占⽤及运⾏情况。

若超过了该Container所声明的资源量,则会kill掉该Container所代表的进程。

⼆、搭载在Hadoop上的框架
1、HBASE
HBASE(Hadoop Database)是⼀个⾼可靠性、⾼性能、⾯向列、可伸缩的分布式存储系统,利⽤HBASE技术可在廉价PC Server上搭建起⼤规模机构化存储集群。

2、Hive
Hive是建⽴在Hadoop上的数据仓库基础构架。

它提供了⼀系列⼯具,可以⽤来数据提取转化加载(ETL),这是⼀种可以存储、查询和分析存储在Hadoop中的⼤规模数据的机制。

3、Pig
Pig是⼀个基于Hadoop的⼤规模数据分析平台,他提供的sql-like语⾔叫做Pig Latin。

该语⾔的编译器会把类SQL的数据分析请求转换成⼀系列经过优化处理的MapReduce运算。

4、Sqoop
Sqoop是⼀款开源的⼯具,主要⽤于在Hadoop(Hive)与传统的数据库(MySQL,postgreSQL等)间进⾏数据的传递,可以将⼀个关系型数据库中的数据导⼊Hadoop中的HDFS中,也可以将HDFS中的数据导⼊关系型数据库中。

5、Flume
Flume是Cloudera提供的⼀个⾼可⽤、⾼可靠、分布式的海量⽇志采集、聚合和传输的系统,Flume⽀持在⽇志系统中定制各类数据发送⽅,⽤于收集数据。

同时,Flume提供对数据进⾏简单处理并写到各数据接收⽅的能⼒。

6、Oozie
Oozie是基于Hadoop的调度器,以XML的形式写调度流程,可以调度MR、Pig、Hive、shell、jar任务等。

7、Chukwa
Chukwe是⼀个开源的、⽤于监控⼤型分布式系统的数据收集系统。

它构建在Hadoop的HDFS和MapReduce框架上,继承了Hadoop的可伸缩性等特性。

Chukwa还包括了⼀个强⼤和灵活的⼯具集,可⽤于展⽰、监控和分析已收集的数据。

8、ZooKeeper
ZooKeeper是⼀个开放源码的分布式应⽤程序协调服务,是Google的Chubby⼀个开放的实现,是Hadoop和HBASE的重要组件,它是⼀个为分布式应⽤提供⼀致性服务的软件,提供的功能包括:配置维护、域名服务、分布式同步、组服务等。

9、Avro
Avro是⼀个数据序列化系统。

他提供:丰富的数据结构类型、快速可压缩的⼆进制数据形式、存储持久数据的⽂件容器、远程过程调⽤RPC。

10、Mahout
Mahout是Apache Soft Foundation(ASF)旗下的⼀个开源项⽬,提供⼀些可扩展的机器学习领域的经典算法的实现,Mahout包含聚类、分类、推荐过滤、频繁⼦项挖掘算法的实现。

相关文档
最新文档