日志级别
info (多)
warn(偏少)
error(更少,需要解决)
1、HDFS写流程
对用户操作是无感知的
1、client调用FileSystem.create去对namenode进行rpc通信
namenode检查文件是否存在,是否有权限创建文件;如果都可以,
不存在则创建一个新文件,此时还没有写数据,不关联任何block。
根据上传文件的大小,块大小和副本数,决定上传多少块和块存储的
DataNode的位置,最终将这些信息发送个FSDataOutputStream对象。
2、client调用FSDataOutputStream对象
write方法
第一个块的副本数写第一个 DataNode节点
写完去第二个DataNode节点写入第二个副本
写完去第三个DataNode节点写入第三个副本
第三个写完后,就返回一个ack packet确认包个第二个DataNode节点
收到后也发送一个ack packet确认包个第一个DataNode节点
第一个DataNode节点收到后自己也写完了就也发送一个ack packet确认包给
FSDataOutputStream对象表示了一个 块的三副本写完了。
其它块以此类推
3、当所有块全部写完,client调用FSDataOutputStream对象的close方法,告诉namenode文件全部写完。
2、HDFS读流程
1、client调用fs.open与namenode进行rpc通信返回该文件部分或全部的block列表。
2、client调用FSDataInputStream对象read方法
与第一个块最近的DataNode进行读取,读取完成会chock,假如成功则关闭与DataNode通信
失败则记录DataNode + block信息,下次则不会在这个节点进行读取。那么就丛离第二个块最近的进行读取,以此类推。
假如block列表已经全部完成,文件还没有读取完继续调用fs从nn获取下一批block列表,以此类推。
3、client调用FSDataInputStream对象close方法关闭流。
3.HDFS副本放置策略
第一副本:
放置在client上传的DN节点
client不在节点DN上,就随机选择一个DN节点
第二副本:
放置在第一个副本不同的机架上的某个DN节点
第三副本:
与第二副本相同机架的不同节点上
补充:
副本数 3
副本数更多 则随机放置
4、HDFS安全模式
什么时候启动安全模式?
启动hadoop时
hdfs故障(集群块大量丢失,集群不稳定)
人为进入安全模式:与业务有关
命令:
hdfs dfsadmin -safemode get
hdfs dfsadmin -safemode enter
安全模式对业务有什么影响:
可以读文件
不可以写文件