CentOS环境下HDFS最佳实践总结
JAVA_HOME环境变量(如export JAVA_HOME=/usr/java/default),并添加至PATH中,通过source /etc/profile使配置生效。/etc/profile,添加HADOOP_HOME(如/opt/hadoop)、PATH(包含$HADOOP_HOME/bin和$HADOOP_HOME/sbin)等变量,执行source /etc/profile生效。fs.defaultFS,如hdfs://namenode:9020)和临时目录(hadoop.tmp.dir,如/data/hadoop/tmp),确保目录权限正确。dfs.replication):生产环境建议设为3(兼顾可靠性与存储成本);dfs.block.size):根据业务场景选择(如128M适用于大数据批量处理,64M适用于小文件较多场景);dfs.namenode.handler.count、dfs.datanode.handler.count):分别设置为20-30(提升并发处理能力)。hdfs-site.xml:添加dfs.nameservices(集群名称,如mycluster)、dfs.ha.namenodes(NameNode标识,如nn1,nn2)、dfs.namenode.rpc-address(各NameNode RPC地址)、dfs.namenode.shared.edits.dir(JournalNode共享目录)、dfs.client.failover.proxy.provider(故障转移代理)等参数;core-site.xml:设置fs.defaultFS为高可用地址(如hdfs://mycluster);hdfs-site.xml中添加dfs.journalnode.edits.dir(JournalNode数据目录),并在每个JournalNode节点启动服务(hadoop-daemon.sh start journalnode);hdfs namenode -format),启动NameNode、Standby NameNode及ZooKeeper Failover Controller(zkfc),验证状态(hdfs dfsadmin -report)。/etc/security/limits.conf(添加* soft nofile 65535、* hard nofile 65535),编辑/etc/pam.d/login(添加session required pam_limits.so),永久生效;临时调整可使用ulimit -n 65535。/etc/sysctl.conf,添加net.ipv4.tcp_tw_reuse = 1(复用TIME_WAIT连接)、net.core.somaxconn = 65535(最大连接队列长度)、net.ipv4.ip_local_port_range = 1024 65535(可用端口范围),执行sysctl -p生效。/etc/fstab中为HDFS数据目录添加noatime,nodiratime(禁用访问时间记录),减少文件系统元数据操作开销。Hadoop Archive工具)减少文件数量。mapreduce.map.output.compress=true(Map输出压缩)和mapreduce.output.fileoutputformat.compress=true(最终输出压缩),选择合适的压缩算法(Snappy适合低延迟场景,LZO适合高压缩比场景)。dfs.client.read.shortcircuit=true,允许客户端直接从本地DataNode读取数据,减少网络跳转延迟。core-site.xml中设置topology.script.file.name(指向机架感知脚本,如/etc/hadoop/conf/topology.sh),脚本根据节点IP返回机架信息(如/rack1、/rack2)。HDFS会优先将数据块副本分布在不同机架的节点上,防止单机架故障导致数据不可用。dfs.namenode.name.dir目录复制到异地),制定恢复流程(如使用hdfs namenode -importCheckpoint恢复元数据)。fs.trash.interval=1440(单位:分钟,1天)、fs.trash.checkpoint.interval=60(检查间隔)),避免误删文件。删除的文件会移动到回收站目录(/user/<username>/.Trash),可在有效期内恢复。hadoop-<user>-namenode-<hostname>.log、DataNode的hadoop-<user>-datanode-<hostname>.log),定位性能瓶颈或故障原因(如磁盘空间不足、网络延迟)。