一、SecondaryNameNode合并过程
五、HDFS基本操作1、将edits和fsimages文件通过网络拷贝到SecondaryNameNode上,
2、在namenode上产生一个edits.new记录合并期间的操作,
3、拷贝完成之后,fsimage就会将其中的数据保存到SecondaryNameNode的内存中,
4、将edits的操作更新到SecondaryNameNode的内存中,
5、更新完成后,将内存中的数据写到fsimsge.ckpt文件中,
6、通过网络将fsimage.ckpt拷贝到namenode中,
7、将fsimage.ckpt重命名为fsimage,并将edits.new也命名为edits
SecondaryNameNode只负责进行数据的合并,不是Namenode的热备,但是也能起到一定的备份作用,会产生数据的丢失

二、DataNode
1、以数据块的形式存储数据,
2、DataNode存储namenode对应的clusterID,以确定当前的DataNode归哪一个namenode管理,
3、DataNode每隔3秒会主动向namenode发送心跳信息(节点状态、节点数据)
4、如果namenode超过了10分钟没有收到DataNode的心跳,则认为这个datanode产生lost,那么namenode就会将这个datanode上的数据copy到其他节点上

三、HDFS读取数据流程
五、HDFS基本操作1、客户端发起RPC请求访问namenode,
2、namenode会查询元数据,找到这个文件的存储位置对应的数据块的信息,
3、namenode将文件对应的数据块的节点地址的全部或者部分放入到一个队列中然后返回,
4、client收到这个数据块对应的节点地址,
5、client会从队列中取出第一个数据块对应的节点地址,会从这些节点地址中选择一个最近的节点进行读取,
6、将Block读取之后,对Block进行checksum的验证,如果验证失败,说明数据块产生损坏,那么client会向namenode发送信息说明该节点上的数据损坏,然后从其其他节点中再次读取这个数据块,
7、验证成功,则从队列中取出下一个block的地址,然后继续读取,
8、当把这一次的文件块全部读完之后,client会向namenode要下一批的block地址,
9、当把文件全部读取完成之后,从client会向namenode发送一个读取完毕的信号,namenode就会关闭对应的文件。

四、HDFS写数据流程
五、HDFS基本操作1、客户端发起RPC请求访问namenode,
2、namenode接收到请求之后,对请求进行验证,例如这个请求中的文件是否存在,再例如权限验证,
3、如果验证通过,namenode确定文件的大小以及分块的数量,确定对应的节点(会去找磁盘空间相对空闲的节点来使用),将节点地址放入队列中返回,
4、客户端收到地址之后,从队列中依次取出节点地址,然后数据块依次放入对应的节点地址上,
5、客户端在在写完之后就会向namenode发送完数据的信号,namenode会给客户端返回一个关闭文件的信号,
6、DataNode之间将会通过管道进行自动的备份,保证复本数量。

五、HDFS删除数据
1、Client发起RPC请求到namenode
2、namenode收到请求之后,会将这个操作记录到edits中,然后将数据从内存中删掉,给客户端返回一个删除成功的信号
3、客户端收到信号之后认为数据已经删除,实际上数据依然存在datanode上
4、当datanode向namenode发送心跳消息(节点状态,节点数据)的时候,namenode就会检查这个datanode中的节点数据,发现datanode中的节点数据在namenode中的元数据中没有记录,namenode就会做出响应,就会命令对应的datanode删除指定的数据

六、hdfs的操作指令
hadoop fs -put a.txt /a.txt - 上传文件
hadoop fs -mkdir /hadoopnode01 - 创建目录
hadoop fs -rm /hadoop-2.7.1_64bit.tar.gz - 删除文件
hadoop fs -rmdir /hadoopnode01 - 删除目录
hadoop fs -rmr /a - 递归删除
hadoop fs -get /a.txt /home - 下载
hadoop fs -ls / - 查看
hadoop fs -lsr / - 递归查看
hadoop fs -cat /a.txt - 查看内容
hadoop fs -tail /a.txt - 产看文件的最后1000个字节
hadoop fs -mv /a/a.txt /a/b.txt - 移动或者重命名
hadoop fs -touchz /demo.txt - 创建空文件
hadoop fs -getmerge /a demo.txt - 合并下载

相关文章: