Hadoop在Linux中的集群管理指南
在Linux环境中部署Hadoop集群前,需完成以下基础准备:
JAVA_HOME环境变量;下载Hadoop稳定版本(如3.3.x),解压至指定目录(如/usr/local/hadoop)。ssh-keygen -t rsa),将公钥(id_rsa.pub)复制到所有DataNode节点(ssh-copy-id user@datanode-ip),实现集群节点间无密码通信(Hadoop组件间需频繁交互)。$HADOOP_HOME/etc/hadoop目录):
core-site.xml:设置HDFS默认文件系统(fs.defaultFS,如hdfs://namenode-ip:9000);hdfs-site.xml:配置NameNode数据存储路径(dfs.namenode.name.dir)、DataNode数据存储路径(dfs.datanode.data.dir)、副本数(dfs.replication,默认3);yarn-site.xml:配置ResourceManager地址(yarn.resourcemanager.hostname)、NodeManager资源分配(yarn.nodemanager.resource.memory-mb、yarn.nodemanager.resource.cpu-vcores);mapred-site.xml:设置MapReduce运行框架为YARN(mapreduce.framework.name为yarn)。hdfs namenode -format),启动HDFS服务(start-dfs.sh,启动NameNode和DataNode),启动YARN服务(start-yarn.sh,启动ResourceManager和NodeManager)。也可使用start-all.sh同时启动HDFS和YARN(不推荐,已逐渐被拆分命令替代)。stop-dfs.sh停止HDFS服务,stop-yarn.sh停止YARN服务;或使用stop-all.sh同时停止所有服务。jps:查看集群节点进程(NameNode、DataNode、ResourceManager、NodeManager等),确认服务是否正常运行;hdfs dfsadmin -report:查看HDFS集群状态(节点数量、存储容量、副本数等);yarn application -list:查看YARN中正在运行的作业列表;yarn application -status <application_id>:查看指定作业的详细状态(进度、资源使用情况等)。http://namenode-ip:9870,Hadoop 3.x版本),查看HDFS文件系统结构、存储使用情况;访问YARN ResourceManager Web UI(http://resourcemanager-ip:8088),查看集群资源分配、作业调度情况。core-site.xml、hdfs-site.xml、yarn-site.xml)复制到新节点的$HADOOP_HOME/etc/hadoop目录;在NameNode节点执行hdfs dfsadmin -refreshNodes(刷新DataNode节点列表),在ResourceManager节点执行yarn rmadmin -refreshNodes(刷新NodeManager节点列表);启动新节点的DataNode(hadoop-daemon.sh start datanode)和NodeManager(yarn-daemon.sh start nodemanager)服务。hdfs dfsadmin -decommission <datanode_host:port>(将指定DataNode标记为待下线,等待数据迁移完成);在ResourceManager节点执行yarn rmadmin -decommission <nodemanager_host:port>(将指定NodeManager标记为待下线);待数据迁移完成后,在待下线节点停止DataNode和NodeManager服务,并从集群配置中移除该节点信息。hdfs balancer命令启动数据均衡(默认阈值10%,可将数据均匀分布在所有DataNode上,避免数据倾斜影响性能)。wordcount.jar),使用hadoop jar命令提交作业到YARN(hadoop jar wordcount.jar com.example.WordCount /input/path /output/path),其中/input/path为HDFS输入目录,/output/path为HDFS输出目录(需提前创建,且不能已存在)。yarn application -status <application_id>:查看作业执行状态(如RUNNING、SUCCEEDED、FAILED);yarn application -kill <application_id>:杀死指定作业(如作业运行异常或需要取消)。yarn-site.xml中的yarn.scheduler.class参数选择调度器(如org.apache.hadoop.yarn.server.resourcemanager.scheduler.capacity.CapacityScheduler)。$HADOOP_HOME/logs目录下(如NameNode日志为hadoop-username-namenode-namenode-ip.log,DataNode日志为hadoop-username-datanode-datanode-ip.log,ResourceManager日志为yarn-username-resourcemanager-namenode-ip.log)。使用yarn logs -applicationId <application_id>命令查看指定作业的详细日志(包括Map、Reduce任务的执行日志)。dfs.namenode.name.dir路径是否存在且可写,查看NameNode日志(是否有java.io.IOException等错误);ping命令)、SSH免密登录是否正常,查看DataNode日志(是否有Connection refused等错误);yarn.nodemanager.resource.memory-mb)或优化MapReduce程序(如调整mapreduce.task.io.sort.mb参数)。dfs.blocksize,如128MB或256MB,块越大可减少NameNode元数据压力,适合大文件处理);启用数据压缩(mapreduce.map.output.compress为true,mapreduce.map.output.compress.codec为org.apache.hadoop.io.compress.SnappyCodec,减少磁盘I/O和网络传输)。yarn.scheduler.minimum-allocation-mb、yarn.scheduler.maximum-allocation-mb,设置容器最小/最大内存,避免资源浪费或不足);优化调度策略(如使用Fair Scheduler提升小作业响应速度)。mapreduce.map.memory.mb、mapreduce.reduce.memory.mb,根据集群资源设置);启用推测执行(mapreduce.map.speculative为true,mapreduce.reduce.speculative为true,对慢任务启动备份任务,提升整体作业速度)。