其他分享
首页 > 其他分享> > HDFS

HDFS

作者:互联网

HDFS基本概念 是一个文件系统,用于存储文件,通过目录树来定位文件;是分布式的,由多个服务器联合起来实现其功。 适合场景:一次写入,多次读出,不可更改。文件写入后就不需要再改变   HDFS特征 优点 缺点   组成架构   HDFS的块大小 HDFS是分块存储,块大小通过配置参数dfs.blocksize来规定,默认大小在Hadoop2/3版本是128M,1.x版本是64M。   HDFS是块大小主要取决于磁盘传输的速率,普通机械硬盘一般80~90MB/s,固态200~300MB/s   准则:寻址时间为传输时间的1%为最佳状态。   HDFS的Shell操作 HDFS的API操作     环境搭建: 都是代码实现,在IDEA中   HDFS的读写数据流程:面试重点     HDFS读数据流程     节点距离计算 在HDFS写数据的过程中,NN会选择距离上离带上传数据最近的DN接收数据。 节点距离:两个节点到达最近共同祖先的距离总和。 解释:将网络分层,数出节点到达共同祖先的另一节点即可   副本存储节点选择——机架感知 NameNode和DataNode的工作机制 注意的点: secondary NameNode向NameNode checkpoint时的条件:
  1. 定时时间到
    • hdfs-default.xml中有所描述,即 dfs.namenode.checkpoint.period字段,默认设置为3600s。即每个小时2NN会向NN请求checkpoint
  2. Edits中的数据满了
    • hdfs-default.xml中有所描述,即 dfs.namenode.checkpoint.txns字段,当操作次数到达100w次时,2NN执行checkpoint,检查次数的时间由 dfs.namenode.checkpoint.check.period设置,默认为60s即每分钟检查一次操作次数
    Fsimage和Edits解析   NameNode被格式化之后,将会在$HADOOP_HOME/data/tmp/dfs/name/cirrent目录下产生如下文件 Fsimage:HDFS文件系统元数据的一个永久性的检查点,包含HDFS文件系统的所有目录和文件inode的序列化信息 Edits:存放HDFS文件系统的所有更新操作,客户端执行的写操作会首先被记录到Edits文件中(追加操作) seen_txid:保存的是一个数字,最后一个edits_的数字   语法:hdfs oiv -p 文件类型 -i镜像文件 -o 转换后文件输出路径
例子:
hadoop103:8088hdfs oiv -p XML -i fsimage_0000000000000000025 -o /opt/module/hadoop-3.1.3/fsimage.xml
cat /opt/module/hadoop-3.1.3/fsimage.xml
fsimage.xml文件中,记录了HDFS中的文件树,并使用inode来作为元数据中的目录管理节点,与文件一一对应。   语法:hdfs oev -p 文件类型 -i编辑日志 -o 转换后文件输出路径
例子:
hdfs oev -p XML -i edits_inprogress_0000000000000000289 -o /opt/software/edits.xml
cat /opt/module/hadoop-3.1.3/edits.xml
edits.xml中记录了写入追加的操作。 NN和2NN最大的区别就是2NN没有edits_inprogress这个记录最新操作的文件,因此如果发生数据丢失,最有可能丢失的是最近一次操作,而往期操作被存放在2NN中     DataNode 的工作机制 服务及开机之后,DN会主动向NN发送当前节点的所有块信息(活动的块,非死亡块)(注册) 块信息——数据、数据长度、校验和、时间戳 在开机之后:   HDFS数据完整性校验 原始数据封装后在末尾添加CRC校验位,HDFS接收数据后重新CRC计算与传输过来的校验位比较看是否一致                    

标签:DN,HDFS,NN,xml,dfs,文件
来源: https://www.cnblogs.com/yuan-zhou/p/15378123.html