初识hadoop

关于hadoop的写入(存入)

nn里面维护了一份元数据。

客户端在存入的数据的时候先经过nn,查要存入的数据是否存在(通过元数据查询),如果存在就返回拒绝写入,若不存在,就开始返回可以往集群里面写入,而且还分配存入那些dn。客户端程序就开始找相应的nn,将相应的block块存进去(切分是由客户端切分的)。

关于副本

客户端在存入数据的时候只是将数据块block0存入相应的机器,然后由被存入的机器(nn)开始复制副本1,副本1复制给副本2,block0是这一连串的复制的发起者,block0必须收到副本1的正确的响应才能算成功,同理,副本1要收到副本2的正确响应才算复制成功。

成功的响应流程,副本2复制成功,响应副本1节点,副本1节点收到响应然后响应block0节点,然后整个写入数据成功。

 

关于元数据的存储

nn存放元数据,磁盘肯定是由一份数据,是由sn处理合并edits 和fsimage

 

元数据存储位置

/home/hadoop/tmp/dfs/data/current

元数据的存储格式:

/test/a.log, 3 ,{blk_1,blk_2},[{blk_1:[h0,h1,h3]},{blk_2:[h0,h2,h4]}]

解释:a.log这个文件有3个副本,两个文件块blk_1,blk_2,每个文件块的副本在h0,h1,h3和h0,h2,h4这几台机器上的datanode上

DN

配置文件块的大小,在hdfs-site.xml的dfs.block.size的数据项,副本数量dfs.replication

 

文件块的存储位置:

/home/hadoop/tmp/dfs/data/current/BP-1492359729-192.168.2.100-1528065072236/current/finalized

 

奇异组合:

拿到block的文件位置,取出文件块,将其追加组合,解压后就可编程原来的文件,说明hadoop并没有对文件进行重新编码,单纯的将文件进行了切割。

关于hadoop启动时,报ssh: Could not resolve hostname xxx: Name or service not known

很恶心,解决方法:  

    /etc/profile文件中添加:  

    export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native  

 export HADOOP_OPTS=-Djava.library.path=$HADOOP_HOME/lib  

1.            

2.      注意:是export HADOOP_OPTS=-Djava.library.path=$HADOOP_HOME/lib,而不是export HADOOP_OPTS="-Djava.library.path=$HADOOP_HOME/lib" 

 

关于nn的工作特点:

1、Namenode始终在内存中保存metedata,用于处理“读请求”

2、到有“写请求”到来时,namenode会首先写editlog到磁盘,即向edits文件中写日志,成功返回后,才会修改内存,并且向客户端返回

3、Hadoop会维护一个fsimage文件,也就是namenode中metedata的镜像,但是fsimage不会随时与namenode内存中的metedata保持一致,而是每隔一段时间通过合并edits文件来更新内容。Secondarynamenode就是用来合并fsimage和edits文件来更新NameNode的metedata的。

 

secondary namenode的工作流程

secondary通知namenode切换edits文件

secondary从namenode获得fsimage和edits(通过http)

secondary将fsimage载入内存,然后开始合并edits

secondary将新的fsimage发回给namenode

namenode用新的fsimage替换旧的fsimage

 

什么时候checkpiont

fs.checkpoint.period 指定两次checkpoint的最大时间间隔,默认3600秒。

 

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

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

西门吹水之城

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值