CentOS环境下HDFS配置与优化指南
sudo yum install java-1.8.0-openjdk-devel -y安装,验证java -version确认安装成功。/usr/local/并重命名为hadoop,配置环境变量(编辑/etc/profile.d/hadoop.sh,添加HADOOP_HOME、PATH等变量),执行source /etc/profile.d/hadoop.sh使变量生效。ssh-keygen -t rsa),将公钥分发至所有DataNode节点(ssh-copy-id hadoop@datanode1),确保节点间无密码通信。<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://namenode:9000</value> <!-- NameNode RPC地址 -->
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/usr/local/hadoop/tmp</value> <!-- 临时文件目录 -->
</property>
</configuration>
<configuration>
<property>
<name>dfs.replication</name>
<value>3</value> <!-- 副本因子(根据集群规模调整,生产环境建议3) -->
</property>
<property>
<name>dfs.namenode.name.dir</name>
<value>/usr/local/hadoop/data/namenode</value> <!-- NameNode元数据存储路径 -->
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>/usr/local/hadoop/data/datanode</value> <!-- DataNode数据存储路径 -->
</property>
</configuration>
hdfs namenode -format),清除旧元数据。start-dfs.sh,启动NameNode、DataNode等服务。jps命令查看进程(NameNode、DataNode是否运行),或通过hdfs dfsadmin -report查看集群节点信息。ulimit -n 65535,永久生效需编辑/etc/security/limits.conf(添加* soft nofile 65535、* hard nofile 65535)和/etc/pam.d/login(添加session required pam_limits.so),解决NameNode因文件描述符不足导致的崩溃问题。/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使配置生效。-Xmx8g -Xms4g、DataNode设为-Xmx4g -Xms2g),避免内存溢出导致服务崩溃。mapreduce.job.locality.wait参数,控制任务等待数据本地化的时间)。<property>
<name>mapreduce.map.output.compress</name>
<value>true</value> <!-- 启用Map输出压缩 -->
</property>
<property>
<name>mapreduce.map.output.compress.codec</name>
<value>org.apache.hadoop.io.compress.SnappyCodec</value> <!-- 使用Snappy算法 -->
</property>
hdfs fs -ls -R / | grep "^-" | awk '{print $5}' | grep -E "^([0-9]{1,2}|100)$'"查找小于100KB的文件),或通过合并工具归档。NameNode日志中的Full GC次数、DataNode日志中的磁盘错误),及时发现并解决性能瓶颈。