在CentOS上部署HDFS时,需从系统底层优化、HDFS参数调优、硬件资源适配、数据管理策略四大维度综合配置,以平衡性能、可靠性与资源利用率。以下是具体最佳实践:
ulimit -n至65535及以上(临时生效);永久生效需修改/etc/security/limits.conf(添加* soft nofile 65535、* hard nofile 65535)和/etc/pam.d/login(添加session required pam_limits.so)。/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使配置生效。noatime和nodiratime选项(禁用文件访问时间记录),减少元数据操作开销。<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://namenode:9000</value> <!-- NameNode地址 -->
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/opt/hadoop/tmp</value> <!-- 临时目录 -->
</property>
</configuration>
<configuration>
<property>
<name>dfs.replication</name>
<value>3</value> <!-- 副本数 -->
</property>
<property>
<name>dfs.blocksize</name>
<value>128M</value> <!-- 块大小 -->
</property>
<property>
<name>dfs.namenode.name.dir</name>
<value>/opt/hadoop/dfs/namenode</value> <!-- NameNode元数据目录 -->
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>/opt/hadoop/dfs/datanode</value> <!-- DataNode数据目录 -->
</property>
<property>
<name>dfs.namenode.handler.count</name>
<value>20</value> <!-- NameNode线程数 -->
</property>
<property>
<name>dfs.datanode.handler.count</name>
<value>30</value> <!-- DataNode线程数 -->
</property>
<property>
<name>fs.trash.interval</name>
<value>1440</value> <!-- 回收站保留时间(分钟) -->
</property>
</configuration>
```。
<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>
```。
chrony),确保集群中所有节点时间一致,避免因时间不同步导致的数据一致性问题。以上配置需根据集群规模(节点数量、数据量)、工作负载类型(批处理、实时处理)和业务需求(可靠性、性能)灵活调整,建议通过TestDFSIO等工具进行压测,验证优化效果。