Ubuntu中HDFS数据如何存储
导读:Ubuntu 中 HDFS 数据存储机制与配置 一、整体架构与数据流转 NameNode:管理文件系统元数据(目录树、文件名、权限、每个块的副本位置等),不存实际文件内容。 DataNode:在本地磁盘保存实际的数据块(Block),并周...
Ubuntu 中 HDFS 数据存储机制与配置
一、整体架构与数据流转
- NameNode:管理文件系统元数据(目录树、文件名、权限、每个块的副本位置等),不存实际文件内容。
- DataNode:在本地磁盘保存实际的数据块(Block),并周期性向 NameNode 汇报块信息。
- 写入流程:客户端向 NameNode 申请写入;NameNode 分配目标 DataNode 与块;客户端直连 DataNode 写入数据块;DataNode 间按副本策略进行管道复制;完成后更新元数据。
- 读取流程:客户端向 NameNode 获取文件块位置;就近从 DataNode 读取;支持短路读与数据本地化优化。
- 适用场景:一次写入、多次读取的高吞吐批处理,适合GB/TB/PB级大文件;不适合低延迟随机访问。
二、存储单元与副本机制
- 块大小(dfs.blocksize):默认 128MB(Hadoop 3.x),可按业务调整(如 64MB 更利于小文件,更大块可减少 NameNode 元数据与连接开销)。
- 副本因子(dfs.replication):默认 3,用于容错与可用性;在仅有 1 个 DataNode 的测试环境可设为 1。
- 容错与恢复:副本跨节点分布;节点或磁盘故障时,NameNode 调度重新复制缺失副本;可通过
hdfs fsck检查文件与块健康。
三、本地磁盘目录与配置
- 关键目录由以下参数决定(位于 $HADOOP_HOME/etc/hadoop/hdfs-site.xml):
- dfs.namenode.name.dir:NameNode 元数据存储目录(如 file:///data/hadoop/namenode)。
- dfs.datanode.data.dir:DataNode 数据块存储目录(如 file:///data/hadoop/datanode)。
- 可配置多个目录(逗号分隔)以利用多磁盘;目录不存在将自动创建(权限允许时)。
- 示例(伪分布式/单节点)配置片段:
< configuration> < property> < name> dfs.replication< /name> < value> 1< /value> < /property> < property> < name> dfs.namenode.name.dir< /name> < value> file:///data/hadoop/namenode< /value> < /property> < property> < name> dfs.datanode.data.dir< /name> < value> file:///data/hadoop/datanode< /value> < /property> < /configuration> - 修改路径后需格式化并重启:
$HADOOP_HOME/bin/hdfs namenode -format $HADOOP_HOME/sbin/start-dfs.sh - 注意:fs.defaultFS(如 hdfs://localhost:9000)是访问地址,不是数据目录;数据目录由上述两个参数决定。
四、常用操作与验证
- 基本操作:
hdfs dfs -mkdir -p /user/input hdfs dfs -put localfile.txt /user/input/ hdfs dfs -ls /user/input hdfs dfs -cat /user/input/localfile.txt hdfs dfs -get /user/input/localfile.txt ./ hdfs dfs -rm -r /user/output - 副本与块检查:
hdfs dfs -setrep 3 /user/input/* hdfs fsck /user/input/localfile.txt -files -blocks hdfs dfsadmin -report - 进程与 Web 管理:
jps # 应见 NameNode、DataNode、SecondaryNameNode # Web UI:NameNode http://< namenode-host> :9870 # Web UI:DataNode http://< datanode-host> :9864 - 常见排错:目录权限/磁盘空间不足、未格式化 NameNode、DataNode 未注册、副本数大于可用节点数。
五、性能与容量优化建议
- 块大小:大文件可适当增大(如 256MB/512MB)以减少元数据与寻道;小文件场景可减小(如 64MB)降低小文件开销。
- 副本因子:生产建议 3;容量紧张或测试可降为 2/1。
- 存储策略与多盘:为 dfs.datanode.data.dir 配置多磁盘目录(可标记 [SSD]/[DISK] 使用存储策略),提升吞吐与容量。
- 内存与线程:结合负载调整 NameNode/DataNode 堆内存 与 handler 线程数,减少 GC 与请求排队。
- 压缩与归档:对文本/日志使用 Snappy/LZO 压缩;冷数据可归档为 HAR 降低 NameNode 压力。
- 网络:保证节点间高带宽/低丢包;必要时使用专用网络与 TCP 参数优化。
- 小文件治理:合并/序列化成 SequenceFile/Parquet,或使用 CombineFileInputFormat 降低 Map 数量。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: Ubuntu中HDFS数据如何存储
本文地址: https://pptw.com/jishu/750875.html
