第四次作业
一、用图与自己的话,简要描述Hadoop起源与发展阶段。
1、起源
Hadoop起源于Apache Nutch项目,始于2002年,是Apache Lucene的子项目之一。
2、发展
Hadoop最早起源于lucene下的Nutch,后由Doug Cutting基于谷歌发布的三篇论文完成了相应的开源实现HDFS和Map Reduce,到2008年一月成为Apache顶级项目。
二、用图与自己的话,简要描述名称节点、数据节点的主要功能及相互关系。
名称节点负责管理分布式文件系统的命名空间,记录每个文件中各个块所在的数据节点的位置信息;
数据节点是分布式文件系统HDFS的工作节点,负责数据的存储和读取,会根据客户端或者名称节点的调度来进行数据的存储和检索,并向名称节点定期发送自己所存储的块的列表。
在名称节点启动时,因为EditLog 要小很多。每次执行写操作之后,且在向客户端发送成功代码之前,edits文件都需要同步更新。为了防止Editl og过大的问题,引入了数据节点。
三、分别从以下这些方面,梳理清楚HDFS的 结构与运行流程,以图的形式描述。
1、客户端与HDFS
2、客户端读
客户端向NameNode发出写文件请求。
检查是否已存在文件、检查权限。若通过检查,直接先将操作写入EditLog,并返回输出流对象。
client端按128MB的块切分文件。
client将NameNode返回的分配的可写的DataNode列表和Data数据一同发送给最近的第一个DataNode节点,此后client端和NameNode分配的多个DataNode构成pipeline管道,client端向输出流对象中写数据。client每向第一个DataNode写入一个packet,这个packet便会直接在pipeline里传给第二个、第三个…DataNode。
每个DataNode写完一个块后,会返回确认信息。
写完数据,关闭输输出流。
发送完成信号给NameNode
3、客户端写
client访问NameNode,查询元数据信息,获得这个文件的数据块位置列表,返回输入流对象。
就近挑选一台datanode服务器,请求建立输入流 。
DataNode向输入流中中写数据,以packet为单位来校验。
关闭输入流
4、数据结点与集群
5、数据结点与名称结点
6、名称结点与第二名称结点

7、数据结点与数据结点
8、数据冗余
9、数据存取策略
10、数据错误与恢复
4.梳理HBase的结构与运行流程,以用图与自己的话进行简要描述,图中包括以下内容:
- Master主服务器的功能
- Region服务器的功能
- Zookeeper协同的功能
- Client客户端的请求流程
- 四者之间的相系关系
- 与HDFS的关联

(1)Master主服务器的功能
管理用户对Table表的增、删、改、查操作;
管理HRegion服务器的负载均衡,调整HRegion分布;
(2)Region服务器的功能
HRegion部分由很多的HRegion组成,存储的是实际的数据。每一个HRegion又由很多的Store组成,每一个Store存储的实际上是一个列簇(ColumnFamily)下的数据。
(3)Zookeeper协同的功能
zookeeper是hbase集群的"协调器"。由于zookeeper的轻量级特性,因此我们可以将多个hbase集群共用一个zookeeper集群,以节约大量的服务器.
(4)Client客户端的请求流程
Client请求Zookeeper确定meta表所在的RegionServer所在的地址,接着根据Rowkey找到数据所归属的RegionServer;用户提交put或delete请求时HbaseClient会将put或delete请求添加到本地buffer中,符合一定条件 会通过异步批量提交服务器处理。
(5)与HDFS的关联
HDFS是GFS的一种实现,他的完整名字是分布式文件系统,类似于FAT32,NTFS,是一种文件格式,是底层的,Hadoop HDFS为HBase提供了高可靠性的底层存储支持。
HBase是Google Bigtable的开源实现,类似Google Bigtable利用GFS作为其文件存储系统,HBase利用Hadoop HDFS作为其文件存储系统
5.理解并描述Hbase表与Region与HDFS的关系。
在Hbase中存在一张特殊的meta表,其中存放着HBase的元数据信息,包括,有哪些表,表有哪些HRegion,每个HRegion分布在哪个HRegionServer中。meta表很特殊,永远有且仅有一个HRegion存储meta表,这个HRegion存放在某一个HRegionServer中,并且会将这个持有meta表的Region的HRegionServer的地址存放在Zookeeper中meta-region-server下。
所以当在进行HBase表的读写操作时,需要先根据表名和行键确 定位到HRegion,这个过程就是HRegion的寻址过程。
HRgion的寻址过程首先由客户端开始,访问zookeeper 得到其中meta-region-server的值,根据该值找到唯一持有meta表的HRegion所在的HRegionServer,得到meta表,从中读取真正要查询的表和行键 对应的HRgion的地址,再根据该地址,找到真正的操作的HRegionServer和HRegion,完成HRgion的定位,继续读写操作。客户端会缓存之前已经查找过的HRegion的地址信息,之后的HRgion定位中,如果能在本地缓存中的找到地址,就直接使用该地址提升性能。
6.理解并描述Hbase的三级寻址。
Region标识符:表名+开始主键+RegionId
元数据表(又名.META.表),存储了Region和Region服务器的映射关系:Region标识符+Region服务器标识
当HBase表很大时, .META.表会被分裂成多个Region
根数据表(又名-ROOT-表),记录所有元数据(即Region和Region服务器的映射关系)的具体位置。-ROOT-表只有唯一一个Region,名字在程序中被写死,Master主服务器永远知道它的位置。Zookeeper文件记录了-ROOT-表的位置
7.假设.META.表的每行(一个映射条目)在内存中大约占用1KB,并且每个Region限制为2GB,通过HBase的三级寻址方式,理论上Hbase的数据表最大有多大?
一个-ROOT-表最多只能有一个Region,也就是最多只能有2GB,按照每行(一个映射条目)占用1KB内存计算,2GB空间可以容纳2GB/1KB=2的21次方行,也就是说,一个-ROOT-表可以寻址2的21次方个.META.表的Region。同理,每个.META.表的 Region可以寻址的用户数据表的Region个数是2GB/1KB=2的21次方。最终,三层结构可以保存的Region数目是(2GB/1KB) × (2GB/1KB) = 2的42次方个Region
8.MapReduce的架构,各部分的功能,以及和集群其他组件的关系。
9.MapReduce的工作过程,用自己词频统计的例子,将split, map, partition,sort,spill,fetch,merge reduce整个过程梳理并用图形表达出来。

浙公网安备 33010602011771号