hadoop HDFS入门

来源:互联网 发布:定位兔软件下载 编辑:程序博客网 时间:2024/04/28 02:45

hadoop主要分为三个模块:

HDFS、MapReduce、Yarn

hadoop具体能干什么:

hadoop擅长日志分析

海量数据存储 
hadoop具有很多节点,节点叫DataNode。 
每一个块在节点上存多个副本。

海量数据计算 
map本地局部处理。 
reduce通过网络取得其他节点的统计结果。

HDFS的实现思想:

  1. hdfs是通过分布式集群来存储文件,为客户端提供了一个便捷的访问方式,就是一个虚拟的目录结构。
  2. 文件存储到hdfs集群中去的时候是被切分成block的
  3. 文件的block存放在若干台DataNode节点上。
  4. hdfs文件系统中的文件与真实的block之间有映射关系,由namenode管理。
  5. 每一个block在集群中会存储多个副本,好处是可以提高数据的可靠性,还可以提高访问的吞吐量。 
    HDFS实现机制

HDFS 上传文件

  1. 客户端向NameNode申请上传文件
  2. NN向客户端返回分配的DataNode
  3. 客户端向DataNode写入Block数据(1号块,2号块,3号块。切分是由客户端切分的。按照偏移量写。)
  4. DN向其他DN再复制两个副本 
    HDFS上传文件

块数据是客户端自己切分的,假设每个块是128M,第一块按照偏移量从0开始写,第二块偏移量从128M开始写。 
最后一个block不到128M,但也算是block,也需要在NN中记录。


向DFS中存储的数据不到128M(大量小文件),会浪费NameNode元数据的存储空间,不会浪费DataNode的存储空间。 
对MR分析效率也会降低。


元数据管理 
Namenode只有一个节点,客户端要并发的大量写入。怎样做到呢。 
1. 元数据写入本地磁盘中。(速度无法响应)(不合理) 
2. 元数据放在内存中(如果当机怎么办,断电)(不合理) 
3. 元数据放到内存中,定期flush到磁盘文件。(在flush之前断电、当机)(不合理)

NameNode实际上管理元数据

  • 磁盘上存储一份。fsimage是一个持久化的磁盘文件。如果NameNode直接读取的话,速度太慢。所以内存中也存有一份。
  • 如果往内存中记录,很容易丢失。内存中的元数据是用来查询的。
  • 最新的元数据记录在一个文件中(edits log),不提供修改,只提供追加,以日志的形式记录下来。
    1. 客户端向HDFS写入数据,向NN发出请求,
    1. NN把元数据首先写入edits Log中
    1. NN返回给客户端,可以往那些DN里写
    1. 客户端开始向特定的DN中写。
  • 5.客户端写好一个副本就算成功了。告诉NN,
  • 6.NN将元数据更新到内存中。(假如此时断电了,刚才的元数据在edits log中还能找到。)

NN元数据管理


  1. 客户端上传文件时,NN首先往edits log文件中记录元数据操作日志
  2. 客户端开始上传文件,完成后返回成功信息给NN,NN就在内存中写入这次上传操作的新产生的元数据信息
  3. 每当 edits log写满时,需要将这段时间的新的元数据刷到fsimages中去。(合并是由secondary namenode完成的)

SN合并 
1. edits log写满了通知SN进行checkpoint操作 
2. SN通知NN停止往edits文件中写数据 
3. NN产生一个新的edits.new,继续写文件 
4. SN把fsimage和edits下载下来 
5. SN利用自己的CPU和内部资源,将fsimage和edit合并,生成新文件fsimage.chkpoint 
6. 新文件上传给NN 
7. NN把新的文件替换原来的旧文件(fsimage.chkpoint改名为fsimage)。同时把edits删掉,把edits.new重命名为edits。 
SN合并


什么时候checkpoint

  • fs.checkpoint.period指定两次checkpoint的最大时间间隔,默认3600秒
  • fs.checkpoint.size 规定edits文件的最大值,一旦超过这个值则强制checkpoint,不管是否到达最大时间间隔。默认是64M。

NN的主要职责: 
1. 维护元数据信息 
2. 维护HDFS的目录树 
3. 响应客户端的请求


hdfs文件系统

MR只需要找FileSystem抽象类,而不需要知道具体的是本地的还是HDFS上的文件系统

FileSystem


转载自http://blog.csdn.net/beidiqiuren/article/details/51759544
0 0
原创粉丝点击