Hadoop基本原理

####Hadoop是一个分布式系统,数据分布在Datanode上,在进行存储的时候,由Namenode选择哪一个Datanode进行存储.NameNode是文件系统的管理节点。

NameNode:用于维护整个文件系统和响应用户请求,记录数据块保存节点。
启动NameNode后,会对每个DataNode进行扫描,将Datanode信息保留到内存中。
fsimage记录了最后一次检查点之前HDFS文件系统中所有目录和文件的序列化信息。
edits是元数据操作日志,记录每一次保存fsimage到下一次保存之间所有dfs信息。

NameNode启动时候,会先将fsimage中信息加载到内存中,然后下一个更新的时候就依据eidts中记录将内存同步为最新状态。
为了避免edits日志过大,回周期性合并fsimage和edits,然后将最新的fsimage推送给NmaeNode。

SecondaryNameNode:用于定期合并fsimage和edits,控制edits大小。减少NameNode的负担

HDFS写文件:HDFS保存多个副本,并且将文件分割为block,比如64M(版本不同,block的大小也不同),然后将block按照键值对映射到内存中。
实例:现在又一个100M的文件,每个块是64M,文件被分为两个块,一个是64M(块1),一个是36M(块2).

Client向NameNode发送写请求,NameNode记录block信息,并返回可用的DataNode
Client将64M的块按照64k的package每个发送,DataNode-01接受完成后,将这个package发送个DataNode-02,同时,Client接着发送package。DataNode-02接受完后,将package发送给DataNode-03,同时接受来自DataNode-01的package。发送完成后向Client发送一条完成信息。

在过程中,NameNode会一直监测DataNode是否还活着。如果一个DataNode挂掉了,就将数据放到其他节点上去。挂掉一个节点,还有其他节点有备份。

HDFS读文件,Client要读取文件,文件分为两个block,根据NameNode的映射去找这两个block读取

(未完待续)

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值