CentOS下Hadoop集群搭建
导读:CentOS 7 下搭建 Hadoop 3.x 集群 一 环境规划与准备 节点规划(示例): master:NameNode + ResourceManager slave1、slave2:DataNode + NodeManager...
CentOS 7 下搭建 Hadoop 3.x 集群
一 环境规划与准备
- 节点规划(示例):
- master:NameNode + ResourceManager
- slave1、slave2:DataNode + NodeManager
- 软件与系统:
- CentOS 7/8
- Java 8(OpenJDK 8 或 Oracle JDK 8)
- Hadoop 3.3.x(示例:3.3.1)
- 基础网络与主机名(所有节点一致):
- 配置静态 IP,编辑 /etc/hosts
- 示例:
192.168.1.100 master 192.168.1.101 slave1 192.168.1.102 slave2 - 关闭防火墙或放行端口(示例关闭):
sudo systemctl stop firewalld sudo systemctl disable firewalld - 可选:临时关闭 SELinux(生产请按需配置策略)
sudo setenforce 0 sudo sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config
- 创建专用用户(所有节点):
sudo useradd hadoop sudo passwd hadoop su - hadoop
以上准备与网络、防火墙、SELinux、hosts 配置为集群互通与后续服务启动的基础。
二 安装 Java 与 Hadoop
- 安装 Java(所有节点):
sudo yum install -y java-1.8.0-openjdk-devel java -version - 下载并解压 Hadoop(建议在主节点操作,随后同步到从节点):
wget https://downloads.apache.org/hadoop/common/hadoop-3.3.1/hadoop-3.3.1.tar.gz sudo tar -xzvf hadoop-3.3.1.tar.gz -C /usr/local sudo mv /usr/local/hadoop-3.3.1 /usr/local/hadoop sudo chown -R hadoop:hadoop /usr/local/hadoop - 配置环境变量(所有节点,建议写入 ~/.bashrc 或 /etc/profile):
echo 'export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk' > > ~/.bashrc echo 'export HADOOP_HOME=/usr/local/hadoop' > > ~/.bashrc echo 'export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin' > > ~/.bashrc source ~/.bashrc
以上步骤完成 Java 与 Hadoop 的基础安装与环境变量配置。
三 配置 Hadoop 核心文件
- 目录约定(所有节点创建数据目录):
mkdir -p $HADOOP_HOME/hdfs/{ namenode,datanode} mkdir -p $HADOOP_HOME/yarn/local - 配置文件路径:$HADOOP_HOME/etc/hadoop/
- core-site.xml
< configuration> < property> < name> fs.defaultFS< /name> < value> hdfs://master:9000< /value> < /property> < property> < name> hadoop.tmp.dir< /name> < value> /usr/local/hadoop/tmp< /value> < /property> < /configuration> - hdfs-site.xml
< configuration> < property> < name> dfs.replication< /name> < value> 2< /value> < /property> < property> < name> dfs.namenode.name.dir< /name> < value> file:///usr/local/hadoop/hdfs/namenode< /value> < /property> < property> < name> dfs.datanode.data.dir< /name> < value> file:///usr/local/hadoop/hdfs/datanode< /value> < /property> < /configuration> - mapred-site.xml(如文件不存在,先 cp mapred-site.xml.template mapred-site.xml)
< configuration> < property> < name> mapreduce.framework.name< /name> < value> yarn< /value> < /property> < /configuration> - yarn-site.xml
< configuration> < property> < name> yarn.resourcemanager.hostname< /name> < value> master< /value> < /property> < property> < name> yarn.nodemanager.aux-services< /name> < value> mapreduce_shuffle< /value> < /property> < property> < name> yarn.nodemanager.aux-services.mapreduce.shuffle.class< /name> < value> org.apache.hadoop.mapred.ShuffleHandler< /value> < /property> < property> < name> yarn.nodemanager.local-dirs< /name> < value> /usr/local/hadoop/yarn/local< /value> < /property> < /configuration> - workers(或 slaves)文件(列出所有 DataNode 主机名)
slave1 slave2 - 将 /usr/local/hadoop 目录同步到所有从节点,并修正属主属组:
rsync -av /usr/local/hadoop slave1:/usr/local/ rsync -av /usr/local/hadoop slave2:/usr/local/ ssh slave1 'sudo chown -R hadoop:hadoop /usr/local/hadoop' ssh slave2 'sudo chown -R hadoop:hadoop /usr/local/hadoop'
以上为核心配置与目录规划,覆盖 core-site.xml、hdfs-site.xml、mapred-site.xml、yarn-site.xml 与 workers 文件。
四 启动与验证
- 配置 SSH 免密登录(主节点执行,确保能免密登录 master/slave1/slave2)
ssh-keygen -t rsa -P '' ssh-copy-id master ssh-copy-id slave1 ssh-copy-id slave2 - 格式化 NameNode(仅首次执行)
hdfs namenode -format - 启动集群
start-dfs.sh start-yarn.sh - 验证进程(各节点执行)
jps # master 应看到:NameNode、ResourceManager # slave 应看到:DataNode、NodeManager - 查看 HDFS 状态与 Web 界面
hdfs dfsadmin -report # NameNode Web UI:http://master:50070 # ResourceManager Web UI:http://master:8088
以上步骤完成集群启动与可用性验证,包含 SSH 免密、NameNode 格式化、启动脚本与 Web UI 检查。
五 常见问题与优化建议
- 无法免密登录:检查 ~/.ssh/authorized_keys 权限为 600,目录 ~/.ssh 权限为 700;确认 /etc/hosts 与 DNS 解析一致。
- 端口被防火墙拦截:生产环境不建议直接关闭防火墙,按需放行 HDFS(50070/50075/50090) 与 YARN(8088/8042) 等端口。
- 数据目录权限:确保 $HADOOP_HOME/hdfs 与 $HADOOP_HOME/yarn 目录属主为 hadoop:hadoop,否则进程无法写入。
- 副本数设置:测试环境可将 dfs.replication 设为 1 或 2,生产环境建议 3。
- 资源不足:为 ResourceManager/NodeManager 分配合理内存(如 yarn.nodemanager.resource.memory-mb、yarn.scheduler.maximum-allocation-mb),避免 OOM。
- 版本选择:Hadoop 3.3.x 与 JDK 8 组合稳定;如需 JDK 11,请确认所用 Hadoop 版本已声明支持。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: CentOS下Hadoop集群搭建
本文地址: https://pptw.com/jishu/756474.html
