1. 前期准备:硬件与系统配置
nofile设为65535以上)、网络连接数上限(somaxconn设为32767以上);关闭swap分区(swapoff -a),避免内存不足时系统性能骤降。2. 基础环境安装与配置
sudo apt install openjdk-11-jdk),验证安装(java -version)。ssh-keygen -t rsa),将公钥复制到从节点(cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys),测试免密登录(ssh slave1)。3. Hadoop安装与核心配置
/usr/local/hadoop),设置目录权限(chown -R hadoop:hadoop /usr/local/hadoop)。~/.bashrc(或/etc/profile),添加以下内容:export JAVA_HOME=/usr/lib/jvm/java-11-openjdk-amd64 # 根据实际Java路径调整
export HADOOP_HOME=/usr/local/hadoop
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
执行source ~/.bashrc使配置生效。core-site.xml:设置HDFS默认文件系统地址(fs.defaultFS)和临时目录(hadoop.tmp.dir),例如:<property><name>fs.defaultFS</name><value>hdfs://master:9000</value></property>
<property><name>hadoop.tmp.dir</name><value>/usr/local/hadoop/tmp</value></property>
hdfs-site.xml:配置NameNode和DataNode的存储路径(dfs.namenode.name.dir、dfs.datanode.data.dir),以及副本因子(dfs.replication,生产环境建议3,测试环境可设为1):<property><name>dfs.namenode.name.dir</name><value>/usr/local/hadoop/dfs/name</value></property>
<property><name>dfs.datanode.data.dir</name><value>/usr/local/hadoop/dfs/data</value></property>
<property><name>dfs.replication</name><value>3</value></property>
mapred-site.xml:指定MapReduce运行框架为YARN(mapreduce.framework.name):<property><name>mapreduce.framework.name</name><value>yarn</value></property>
yarn-site.xml:配置ResourceManager的辅助服务(yarn.nodemanager.aux-services)和端口:<property><name>yarn.nodemanager.aux-services</name><value>mapreduce_shuffle</value></property>
<property><name>yarn.resourcemanager.hostname</name><value>master</value></property>
4. 集群启动与验证
hdfs namenode -format
start-dfs.sh # 启动HDFS(NameNode、DataNode)
start-yarn.sh # 启动YARN(ResourceManager、NodeManager)
jps命令检查进程(主节点应有NameNode、ResourceManager;从节点应有DataNode、NodeManager);访问Web界面(HDFS:http://master:50070,YARN:http://master:8088)确认集群运行状态。5. 性能优化:提升集群效率
dfs.block.size,大文件设为256MB或512MB,小文件可合并后存储);优化NameNode处理能力(dfs.namenode.handler.count,设为10以上,提升并发请求处理能力);启用数据均衡(hdfs balancer命令),定期重新分配数据,避免节点存储不均。mapreduce.map.memory.mb、mapreduce.reduce.memory.mb,根据节点内存调整,如Map任务设为2GB,Reduce任务设为4GB);提高数据本地化(通过机架感知策略topology.script.file.name,让任务尽量在数据所在节点执行,减少网络传输);启用数据压缩(mapreduce.map.output.compress设为true,使用Snappy算法,减少中间数据存储和传输开销)。yarn.scheduler.fair.share)或容量调度器(yarn.scheduler.capacity.root.queues),合理分配资源,避免单个作业占用过多资源;调整DataNode数据目录(dfs.datanode.data.dir,使用多块磁盘,如/disk1/data,/disk2/data,提升I/O并行能力)。