Hadoop_HDFS_Guide
HDFS基础
基础储存结构
- NameNode(Master);维护文件系统内所有文件和目录的相关信息,用于DataNode的管理。
- DataNode(Slave):储存数据块,默认以128M为文件块大小。
HDFS的特点
优点
- 多副本备份与自动恢复机制,保证容错性。
- 默认文件块128M,只能追加读写等特性保证了数据的高吞吐速率。
缺点- 高延迟,不适合毫秒级查询。
- 文件块大小默认128M,大量的小文件读写容易在NameNode上产生储存瓶颈。
HDFS架构
请注意NameNode不会向DataNode主动发送请求,通信严格遵守C/S架构。
Client
客户端,用于管理HDFS。
- 使用HDFS Shell管理HDFS,例如上传文件,创建目录等等。
- 与NameNode交互,获取文件快储存的位置。
- 与DataNode交互,读取或者写入数据。
NameNode
名称节点,管理文件系统的相关信息。
- 响应Client请求。
- 接收来自DataNode的心跳包,处理DataNode的数据管理与自动恢复。
- 管理文件块(Block)与名称空间(Namespace)。
Block管理
NameNode记录文件块所在的DataNode信息,动态更新。元数据保存如下映射:1
2“文件名 ——> 数据块”
“数据块 ——> DataNode列表”Namespace管理
HDFS内部维护FsImage与Editlog两个文件。其中FsImage储存文件系统的Namespace,Editlog记录元数据的变化保存为日志,只有在重启的时候Editlog才会被整合进入FsImage。然而现实情况下NameNode很少重启,因此需要借助SecondaryNameNode来保持文件系统元数据的最新。
SecondaryNameNode
检查点结点,用于辅助NameNode。
- 将Editlog合并到FsImage,缩短集群启动时间保证HDFS完整性。
- 特定情况下辅助恢复NameNode
DataNode
数据结点,储存数据。
- 储存集群的数据块内容(ID与内容的映射关系)
- 处理数据块的读写操作,包括来自Client,DataNode的请求。
HDFS Shell
使用hadoop fs -help
可查看HDFS的帮助信息。cp与mv命令必须在HDFS中使用,不可跨文件系统。
hadoop fs -ls -h -R /
#打印指定路径下的目录结构,-h参数格式化打印,-R参数递归打印子目录。hadoop fs -mkdir -p /hadoop/data
#创建目录,-p参数为递归创建。hadoop fs -put -f -p README.md /hadoop/data/README.md
#将本地文件传入HDFS,-f参数为覆盖目标文件,-p参数保留原始修改时间与权限。hadoop fs -get -p /hadoop/data/README.md .
#将HDFS信息传入本地,-p参数保留原始修改时间与权限。hadoop fs -cp -f -p /hadoop/data/README.md /hadoop/README.md
#在HDFS文件系统中复制文件。hadoop fs -mv /hadoop/data/README.md /hadoop/README.md
#在HDFS文件系统中移动文件。hadoop fs -rm -r -f /hadoop/README.md
#删除文件/目录,-r参数为递归删除目录,-f参数为忽略文件不存在。hadoop fs -rmdir /hadoop/data
#删除目录hadoop fs -cat /hadoop/data/README.md
#查看文本内容。hadoop fs -tail /hadoop/data/README.md
#查看文本最后1KB的内容。hadoop fs -appendToFile 1.txt /hadoop/data/README.md
#向README.md后追加1.txt。hadoop fs -getmerge -nl /hadoop/data/*.txt /root/merge.txt
#合并下载多个文件,-nl参数在文件末尾增加换行符。hadoop fs -chmod -R 766 /hadoop2.7.7
#改变文件/目录权限,-R参数递归更改。hadoop fs -count -h /tmp
#统计目录下的文件情况。hadoop fs -df -h /
#统计文件系统的容量。
本文标题:Hadoop_HDFS_Guide
文章作者:Raincorn
发布时间:2020-06-07
最后更新:2020-07-28
原始链接:https://blog.raincorn.top/2020/06/07/Hadoop_HDFS_Guide/
版权声明:本文采用知识共享署名-非商业性使用 4.0 国际许可协议进行许可