04-Hadoop思想与原理
1.用图文与自己的话,简要描述Hadoop起源与发展阶段。
- 2003-2004年,Google公布了部分GFS和MapReduce思想的细节,
- 2006年2月被分离出来,成为一套完整独立的软件,起名为Hadoop
- Hadoop的成长过程
- Lucene–>Nutch—>Hadoop
2.用图与自己的话,简要描述名称节点、第二名称节点、数据节点的主要功能及相互关系。
名称节点:管理HDFS, 存储实际的数据块,执行数据块的读/写操作。
接受客户端的请求:文件上传、文件下载
管理和维护日志(edits文件)和元信息(数据块的位置信息:fsimage文件)
第二名称节点:
1、辅助 NameNode,分担其工作量。
2、定期合并 fsimage和fsedits,并推送给NameNode。
3、在紧急情况下,可辅助恢复 NameNode
数据结点:
是HDFS的工作节点,负责数据的存储和读取 , 存储管理用户的文件块数据
3.分别从以下这些方面,梳理清楚HDFS的 结构与运行流程,以图的形式描述。
- 客户端与HDFS
- 客户端读
- 客户端写
- 数据结点与集群
- 数据结点与名称结点
- 名称结点与第二名称结点
- 数据结点与数据结点
- 数据冗余
- 数据存取策略数据错误与恢复
-
-
4.梳理HBase的结构与运行流程,以用图与自己的话进行简要描述。
- Master主服务器的功能:
- 为Region server分配region
- 负责Region server的负载均衡
- 发现失效的Region server并重新分配其上的region。
- HDFS上的垃圾文件回收。
- 处理schema更新请求。
- Region服务器的功能:
- 维护master分配给他的region,处理对这些region的io请求。
- 负责切分正在运行过程中变的过大的region。
- Zookeeper协同的功能:
Client客户端的请求流程- 保证任何时候,集群中只有一个master
- 存储所有Region的寻址入口
- 实时监控Region server的上线和下线信息。并实时通知给master
- 存储HBase的schema和table元数据
- 四者之间的相系关系
- 与HDFS的关联
5.理解并描述Hbase表与Region的关系。
Region是HBase中分布式存储和负载均衡的最小单元。不同Region分布到不同RegionServer上,但并不是存储的最小单元。
Region由一个或者多个Store组成,每个store保存一个columns family,每个Strore又由一个memStore和0至多个StoreFile 组成。memStore存储在内存中, StoreFile存储在HDFS上。HBase通过将region切分在许多机器上实现分布式。
6.理解并描述Hbase的三级寻址。
三级寻址对应了三层表:
(1) -ROOT-表:存储元数据表,即.MEAT.表的信息。它被“写死”在ZooKeeper文件中,是唯一的、不能再分裂的
(2) .META.表:存储用户数据具体存储在哪些Region服务器上。它会随存储数据的增多而分裂成更多个。
(3) 用户数据表:具体存储用户数据。它是最底层的、可分裂的寻址过程:(1) ZooKeeper找到-ROOT-表地址
(2) -ROOT-表中找到需要的.META.表地址
(3) .META.表找到所需的用户数据表地址
(4) 最后从用户数据表取出目标数据7.假设.META.表的每行(一个映射条目)在内存中大约占用1KB,并且每个Region限制为2GB,通过HBase的三级寻址方式,理论上Hbase的数据表最大有多大?
(2G/1K)x(2G/1k)=242 即2ZB
所以上Hbase的数据表最大有2 - Master主服务器的功能:
-
-
8.MapReduce的架构,各部分的功能,以及和集群其他组件的关系。
a)client客户端
每一个Job都会在用户端通过Client类将应用程序以及参数配置Configuration打包成Jar文件存储在HDFS,并把路径提交到JobTracker的master服务,然后由master创建每一个Task(即MapTask和ReduceTask),将它们分发到各个TaskTracker服务中去执行。
b)JobTracker
JobTracker负责资源监控和作业调度。JobTracker监控所有的TaskTracker与job的健康状况,一旦发现失败,就将相应的任务转移到其它节点;同时JobTracker会跟踪任务的执行进度,资源使用量等信息,并将这些信息告诉任务调度器,而调度器会在资源出现空闲时,选择合适的任务使用这些资源。在Hadoop中,任务调度器是一个可插拔的模块,用于可以根据自己的需要设计相应的调度器。
c)TaskTracker
TaskTracker会周期性地通过HeartBeat将本节点上资源的使用情况和任务的运行进度汇报给JobTracker,同时执行JobTracker发送过来的命令 并执行相应的操作(如启动新任务,杀死任务等)。
d)Task
Task分为MapTask和Reduce Task两种,均由TaskTracker启动9.MapReduce的工作过程,用自己词频统计的例子,将split, map, partition,sort,spill,fetch,merge reduce整个过程梳理并用图形表达出来。
1、Splitting部分
把要读取的文件分成几个部分,分到不同的机器上实现并行处理。2、Map和Combine部分
从Splitting部分接收到文件的一部分,Map将字符切割后得到了一些键值对<key,value>,key就是每一个单词,value就是根据单词的出现频次得到的:(1,1,1,1,1…)出现多少次就有多少个1。
然后再由Combine进行局部的统计后,又得到了一些键值对<key,value>,这里的value就是Map中的1相加的结果。
3、Shuffle/Sort部分
这里是Mapper和Reducer的中间部分,它的每一个处理步骤都分散在map task和reduce task节点上,整体看来,就是对Map的结果进行分区、排序、分割。也就是对Combine中的value进行分区,排序后合并。
4、Reduce部分
接受经过Shuffle后得到的<key,value>,把各value的值相加,得到最后每一个单词的出现次数。 -
-