Ubuntu HDFS配置关键注意事项
JAVA_HOME环境变量正确指向JDK路径(如export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-amd64),否则Hadoop无法启动。ssh-copy-id复制公钥到所有节点)。ping或telnet测试节点间的连通性。core-site.xml:设置fs.defaultFS(如hdfs://mycluster,高可用集群需指定命名服务)和hadoop.tmp.dir(临时目录,建议用独立分区)。hdfs-site.xml:配置dfs.replication(副本数,默认3,可根据集群规模调整)、dfs.namenode.name.dir(NameNode元数据目录,需持久化存储)、dfs.datanode.data.dir(DataNode数据目录,多目录可提升IO性能)。dfs.nameservices(命名服务名称)、dfs.ha.namenodes.<nameservice>(NameNode节点列表)、dfs.namenode.shared.edits.dir(JournalNode共享编辑日志目录)、dfs.client.failover.proxy.provider.<nameservice>(客户端故障转移代理类)。scp等工具同步到所有节点,避免因配置不一致导致启动失败。dfs.name.dir、dfs.data.dir)需对当前用户(如hadoop)有读写权限,可使用chown -R hadoop:hadoop /path/to/dir修改权限,避免“Permission denied”错误。dfs.datanode.data.dir目录结构需一致,否则DataNode启动时会报“Directory is not writable”错误。hdfs namenode -format,初始化元数据目录(如dfs.namenode.name.dir),否则NameNode无法启动。hdfs namenode -initializeSharedEdits初始化JournalNode共享编辑日志,确保NameNode元数据同步。clusterID与NameNode不一致,需删除DataNode目录(如rm -rf /path/to/datadir/*)并重新同步,避免“ClusterID mismatch”错误。hdfs --daemon start journalnode,作为NameNode元数据的共享存储,确保主备NameNode元数据一致。dfs.ha.fencing.methods(如sshfence)和dfs.ha.fencing.ssh.private-key-files(SSH私钥路径),确保主备NameNode切换时,原主节点能被正确隔离,避免脑裂。ha.zookeeper.quorum),用于协调NameNode状态,确保故障转移的可靠性。dfs.blocksize(默认128MB),大文件(如日志、视频)可增大至256MB或512MB,减少NameNode负载;小文件(如图片、配置)可保持默认或减小,避免过多小文件占用元数据空间。dfs.replication(默认3),热数据可保持3副本,冷数据可降低至2副本,节省存储空间。dfs.namenode.handler.count、dfs.datanode.handler.count),避免内存不足导致GC频繁或进程崩溃。/var/log/hadoop目录下(如hadoop-<username>-namenode-<hostname>.log),启动失败时需优先查看日志中的错误信息(如tail -f /var/log/hadoop/*.log),快速定位问题根源。netstat -tuln | grep 8020),避免“Address already in use”错误。