首页主机资讯Ubuntu中HDFS数据如何存储

Ubuntu中HDFS数据如何存储

时间2025-11-19 09:28:04发布访客分类主机资讯浏览734
导读: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
Ubuntu下如何备份HDFS数据 ubuntu怎样创建与管理符号链接

游客 回复需填写必要信息