Hadoop的认知副本放置策略、HDFS读写流程、pid文件、hdfs dfs常用命令、多节点,单节点的磁盘均衡、安全模式

Hadoop的认知副本放置策略、HDFS读写流程、pid文件、hdfs dfs常用命令、多节点,单节点的磁盘均衡、安全模式

Hadoop的认知

1.副本放置策略

共计3个副本
第一个副本:假如上传节点为DN节点,优先放置本节点;否则就随机挑选一台磁盘不太慢 CPU不太繁忙的节点;
第二个副本:放置在于第一个副本的不同的机架的节点上;
第三个副本:放置于第二个副本相同机架的不同节点上。

2.HDFS写流程

hadoop fs -put xxx.log /

2.1 Client调用FileSystem.create(filePath)方法,与NameNode进行【rpc】通信,check是否存在及是否有权限创建;假如不通,就返回错误信息;假如通,就创建一个新文件,不关联任何的block块,返回一个FSDataOutputStream对象。
2.2 Client调用FSDataOutputStream对象的write()方法,先将第一块的第一个副本写到第一个DataNode,第一个副本写完;就传输给第二个DataNode,第二个副本写完;就传输给第三个DataNode,第三个副本写完。就返回一个ack packet确认包给第二个DataNode,第二个DataNode接收到第三个的ack packet确认包加上自身完成,就返回一个ack packet确认包给第一个DataNode,第一个DataNode接收到第二个DataNode的ack packet确认包加上自身完成,就返回ack packet确认包给FSDataOutputStream对象,标志第一个块 3个副本写完。然后余下的块依次这样写。
2.3 当向文件写入数据完成后,Client调用FSDataOutputStream.close()方法,关闭输出流。
2.4 再调用FileSystem.complete()方法,告诉NameNode该文件写入成功。

3.HDFS读流程

3.1 Client调用FileSystem.open(filePath)方法,与NameNode进行【rpc】通信,返回该文件的部分或者全部的block列表,也就是返回FSDataInputStream对象。
3.2 Client调用FSDataInputStream对象read()方法;
a.与第一个块最近的DataNode进行read,读取完成后,会check;假如没问题,就关闭与当前DataNode的通信;假如失败,会记录失败块和DataNode信息,下次不会再读取;那么会去该块的第二个DataNode地址读取。
b.然后去第二个块的最近的DataNode上通信读取,check后,关闭通信。
c.假如block列表读取完成后,文件还未结束,就再次FileSystem会从NameNode获取该文件的下一批次的block列表。
3.3 Client调用FSDataInputStream.close()方法,关闭输入流。

4.pid文件

4.1.认识pid
PID全称是Process Identification。
PID是进程的代号,

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值