dγèащ

导航

04 Hadoop思想与原理

1.用图与自己的话,简要描述Hadoop起源与发展阶段。

(1)Hadoop是什么?

①Hadoop是Apache Lucene创始人Doug Cutting创建的,Lucene是一个广泛使用的文本搜索系统库。

Hadoop起源于Apache Nutch,一个开源的网络搜索引擎, 它本身也是Lucene项目的一部分。

③Hadoop是一个对海量数据存储和海量数据分析计算的分布式系统。

狭义上说,Hadoop指Apache这款开源框架,它的核心组件有:

HDFS(分布式文件系统):解决海量数据存储

YARN(作业调度和集群资源管理的框架):解决资源任务调度

MAPREDUCE(分布式运算编程框架):解决海量数据计算

广义上来说,Hadoop通常是指一个更广泛的概念——Hadoop生态圈。

(2)Hadoop的起源

2003-2004年,Google公布了部分GFS和MapReduce思想的细节,受此启发的Doug Cutting等人用2年的业余时间实现了DFS和MapReduce机制,使Nutch性能飙升。然后Yahoo招安Doug Gutting及其项目。
2005年,Hadoop作为Lucene的子项目Nutch的一部分正式引入Apache基金会。
2006年2月被分离出来,成为一套完整独立的软件,起名为Hadoop。
Hadoop名字不是一个缩写,而是一个生造出来的词。是Hadoop之父Doug Cutting儿子毛绒玩具象命名的。
Hadoop的成长过程:Lucene–>Nutch—>Hadoop。

(3)hadoop的历史版本

①0.x系列版本:Hadoop当中最早的一个开源版本,在此基础上演变而来的1.x以及2.x的版本。
②1.x版本系列:Hadoop版本当中的第二代开源版本,主要修复0.x版本的一些bug等。
③2.x版本系列:架构产生重大变化,引入了yarn平台等许多新特性。

 

 

2.用图与自己的话,简要描述名称节点、数据节点的主要功能及相互关系。

(1)名称节点的主要功能:

           ①NameNode在内存中保存着整个文件系统的名称空间和文件数据块的地址映射。

 

           ②整个HDFS可存储的文件数受限于NameNode的内存大小。

           ③管理数据块映射;处理客户端的读写请求;配置副本策略;管理HDFS的名称空间。

(2)数据节点的主要功能:

         ①提供真实文件数据的存储服务

           ②以数据的形式存储HDFS文件。

           ③响应HDFS客户端读写请求。

           ③周期性向NameNode汇报心跳信息、数据块信息、缓存数据块信息。

(3)名称节点、数据节点的关系

(4)HDFS结构图

3.分别从以下这些方面,梳理清楚HDFS的 结构与运行流程,以图的形式描述。

  • 客户端与HDFS
  • 客户端读
  • 客户端写
  • 数据结点与集群
  • 数据结点与名称结点
  • 名称结点与第二名称结点
  • 数据结点与数据结点
  • 数据冗余
  • 数据存取策略
  • 数据错误与恢复

  • 客户端与HDFS

 

  • 客户端读

  • 客户端写

 

 

4.梳理HBase的结构与运行流程,以用图与自己的话进行简要描述,图中包括以下内容:

(1)Master主服务器的功能

①为Region server分配region

②负责Region server的负载均衡

③发现失效的Region server并重新分配其上的region。

④HDFS上的垃圾文件回收。

⑤处理schema更新请求。

 

(2)Region服务器的功能

①维护master分配给他的region,处理对这些region的io请求。

②负责切分正在运行过程中变的过大的region。

 

(3)Zookeeper协同的功能

①保证任何时候,集群中只有一个master

②存储所有Region的寻址入口

③实时监控Region server的上线和下线信息。并实时通知给master

④存储HBase的schema和table元数据

 

(4)Client客户端的请求流程

写流程

 

 读流程

(5)四者之间的相系关系

 

 

(6)与HDFS的关联

 

5.理解并描述Hbase表与Region与HDFS的关系。

1)一个HBase表被划分成多个Region;

一个Region会分裂成多个新的Region;

不同的Region可以分布在不同的Region服务器上;

6.理解并描述Hbase的三级寻址。

7.假设.META.表的每行(一个映射条目)在内存中大约占用1KB,并且 ,通过HBase的三级寻址方式,理论上Hbase的数据表最大有多大?

一个-ROOT-表最多只能有一个Region,也就是最多只能有2GB,按照每行(一个映射条目)占用1KB内存计算,2GB空间可以容纳2GB/1KB=231行,也就是说,一个-ROOT-表可以寻址231个.META.表的Region。

同理,每个.META.表的 Region可以寻址的用户数据表的Region个数是2GB/1KB=231

最终,三层结构可以保存的Region数目是(2GB/1KB) × (2GB/1KB) = 2100个Region,即理论上Hbase表最大273G。

 

8.MapReduce的架构,各部分的功能,以及和集群其他组件的关系。

同HDFS一样,Hadoop MapReduce也采用了Master/Slave(M/S)架构,主要由4个组件构成:Client、JobTracker、TaskTracker和Task。

1)Client:

用户编写的Mapreduce程序通过Client提交到JobTracker端;同时,用户可通过Client提供的一些接口查看作业运行状态。在Hadoop内部用“作业”(Job)表示Mapreduce程序。一个Mapreduce程序可对应若干个作业,而每个作业会被分解成若干个Mapreduce任务(Task)。
2)JobTracker:
JobTracker主要负责资源监控和作业调度。JobTracker监控所有TaskTracker与作业的健康状况,一旦发现失败情况后,会将 相应的任务转移到其他节点;同时,JobTracker会跟踪任务的执行进度、资源使用量等信息,并将这些信息告诉任务调度器,而调度器会在资源出现空闲时,选择合适的任务使用这些资源。在hadoop中,任务调度器是一个可插拔的模块,用户可以根据自己的需要设计相应的调度器。
3)TaskTracker:
TaskTracker会周期性的通过Heartbeat将本节点上资源的使用情况和任务的运行进度汇报给JobTracker,同时接收JobTracker发送过来的命令并执行相应的操作(如启动新任务、杀死任务等)。TaskTracker使用“slot”等量划分本节点上的资源量。“slot”代表计算资源(CPU、内存等)。一个Task获取到一个slot后才有机会运行,而Hadoop调度器的作用就是将各个TaskTracker上空闲slot分配给Task使用。slot分为Map slot和Reduce slot两种,分别供Map Task和Reduce Task使用。TaskTracker通过slot数目(可配置参数)限定Task的并发度。
4)Task:
Task分为Map Task和Reduce Task两种,均由TaskTracker启动。从上篇HDFS文档中知道,HDFS以固定大小的block为基本单位存储数据,而对于Mapreduce而言,其处理单位是split。split是一个逻辑概念,它只包含一些元数据信息,比如数据起始位置、数据长度、数据所在节点等。它的划分方法完全由用户自己决定。但需要注意的是,split的多少决定了Map Task的数目,因为每个split会交由一个Map Task处理。
Map Task执行过程:先将对应的split迭代解析成一个个key/value对,依次调用用户自定义的map()函数进行处理,最终将临时结果存放到本地磁盘上,其中临时数据被分成若干个partition,每个partition 将被一个Reduce Task处理。
Reduce Task执行过程:该过程分为三个阶段①从远程节点上读取Map Task中间结果(称为“Shuffle阶段”);②按照key对key/value对进行排序(称为“Sort阶段”);③依次读取,调用用户自定义的reduce()函数处理,并将最终结果存到HDFS上(称为“Reduce阶段”)。
 

9.MapReduce的工作过程,用自己词频统计的例子,将split, map, partition,sort,spill,fetch,merge reduce整个过程梳理并用图形表达出来。

 MapReduce程序运行流程分析

词频分析:

MapTask并行度决定机制: 一个job的map阶段MapTask并行度(个数),由客户端提交job时的切片个数决定。

 

 

shuffle机制:Mapreduce确保每个reducer的输入都是按键排序的。系统执行排序的过程(即将map输出作为输入传给reducer)称为shuffle。

 

 

 

 

reduce端

 

 

Combiner合并

 

 

 

 

posted on   dγèащ  阅读(82)  评论(0编辑  收藏  举报

努力加载评论中...
点击右上角即可分享
微信分享提示