04 Hadoop思想与原理,Hbase原理


一、用图与自己的话,简要描述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、数据错误与恢复

相关