温馨提示×

Hadoop Linux版如何配置集群

小樊
50
2025-10-12 05:02:33
栏目: 智能运维

Hadoop Linux版集群配置指南

1. 前期环境准备

  • 节点规划:至少准备3台Linux服务器(如CentOS 7/Ubuntu),分别作为主节点(NameNode、ResourceManager)和从节点(DataNode、NodeManager)。示例规划:namenode(主节点)、datanode1datanode2(从节点)。
  • 系统配置
    • 关闭防火墙:systemctl stop firewalld && systemctl disable firewalld(避免通信拦截)。
    • 修改主机名:hostnamectl set-hostname <节点名>(如namenode),并通过vim /etc/hosts添加所有节点的IP与主机名映射(如192.168.1.100 namenode)。
    • 配置网络:确保所有节点在同一局域网,可通过ping <节点IP>测试连通性。

2. 安装Java环境

Hadoop依赖Java 8或更高版本(推荐OpenJDK):

  • 安装OpenJDK 8:sudo yum install -y java-1.8.0-openjdk-devel(CentOS)或sudo apt install -y openjdk-8-jdk(Ubuntu)。
  • 验证安装:java -version(需显示Java版本信息)。
  • 配置环境变量:编辑/etc/profile,添加export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk(路径以实际安装位置为准),并执行source /etc/profile使配置生效。

3. 下载并解压Hadoop

  • 从Apache官网下载稳定版本(如Hadoop 3.3.4):wget https://dlcdn.apache.org/hadoop/common/hadoop-3.3.4/hadoop-3.3.4.tar.gz
  • 解压到指定目录(如/export/servers):tar -xzvf hadoop-3.3.4.tar.gz -C /export/servers/
  • 配置环境变量:编辑/etc/profile,添加export HADOOP_HOME=/export/servers/hadoop-3.3.4export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin,执行source /etc/profile生效。

4. 配置Hadoop核心文件

所有配置文件位于$HADOOP_HOME/etc/hadoop目录下,需修改以下关键文件:

4.1 hadoop-env.sh

修改JAVA_HOME指向已安装的Java路径:export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk(根据实际路径调整)。

4.2 core-site.xml

配置HDFS的默认文件系统和临时目录:

<configuration>
    <property>
        <name>fs.defaultFS</name>
        <value>hdfs://namenode:9000</value> <!-- 主节点主机名:端口 -->
    </property>
    <property>
        <name>hadoop.tmp.dir</name>
        <value>/export/data/hadoop/tmp</value> <!-- 临时文件存储路径 -->
    </property>
</configuration>

4.3 hdfs-site.xml

配置HDFS副本数(生产环境建议3)和数据目录:

<configuration>
    <property>
        <name>dfs.replication</name>
        <value>2</value> <!-- 副本数(从节点数量+1) -->
    </property>
    <property>
        <name>dfs.namenode.name.dir</name>
        <value>file:/export/data/hadoop/hdfs/namenode</value> <!-- NameNode元数据目录 -->
    </property>
    <property>
        <name>dfs.datanode.data.dir</name>
        <value>file:/export/data/hadoop/hdfs/datanode</value> <!-- DataNode数据目录 -->
    </property>
</configuration>

4.4 yarn-site.xml

配置YARN资源管理器和shuffle服务:

<configuration>
    <property>
        <name>yarn.resourcemanager.hostname</name>
        <value>namenode</value> <!-- ResourceManager所在节点 -->
    </property>
    <property>
        <name>yarn.nodemanager.aux-services</name>
        <value>mapreduce_shuffle</value> <!-- MapReduce shuffle服务 -->
    </property>
</configuration>

4.5 mapred-site.xml

创建mapred-site.xml(若不存在,可复制mapred-site.xml.template):

<configuration>
    <property>
        <name>mapreduce.framework.name</name>
        <value>yarn</value> <!-- 使用YARN作为资源管理器 -->
    </property>
    <property>
        <name>mapreduce.application.classpath</name>
        <value>$HADOOP_HOME/share/hadoop/mapreduce/*:$HADOOP_HOME/share/hadoop/mapreduce/lib/*</value> <!-- MapReduce类路径 -->
    </property>
</configuration>

4.6 workers文件

指定从节点主机名(每行一个):

datanode1
datanode2

该文件用于Hadoop自动识别从节点。

5. 配置SSH免密登录

实现主节点到从节点的无密码通信:

  • 在主节点生成SSH密钥:ssh-keygen -t rsa(直接回车,默认保存到~/.ssh/id_rsa)。
  • 将公钥复制到所有从节点:ssh-copy-id hadoop@datanode1ssh-copy-id hadoop@datanode2hadoop为从节点用户名,需提前创建并设置密码)。
  • 验证免密登录:ssh hadoop@datanode1(无需输入密码即可登录)。

6. 分发配置文件到从节点

将主节点的Hadoop目录复制到所有从节点(确保路径一致):

scp -r /export/servers/hadoop-3.3.4 hadoop@datanode1:/export/servers/
scp -r /export/servers/hadoop-3.3.4 hadoop@datanode2:/export/servers/

分发后,需在从节点上同样配置workers文件(内容与主节点一致)。

7. 格式化NameNode

仅在首次启动集群前执行,用于初始化HDFS元数据:

hdfs namenode -format

执行成功后会显示Successfully formatted,表示格式化完成。

8. 启动集群

  • 启动HDFS:start-dfs.sh(启动NameNode、DataNode)。
  • 启动YARN:start-yarn.sh(启动ResourceManager、NodeManager)。
  • 验证进程:jps(主节点应显示NameNodeResourceManager;从节点应显示DataNodeNodeManager)。

9. 验证集群状态

  • Web界面:访问http://<namenode-IP>:9870(HDFS Web UI),查看NameNode和DataNode状态;访问http://<namenode-IP>:8088(YARN Web UI),查看ResourceManager和NodeManager状态。
  • 命令行hdfs dfsadmin -report(查看HDFS集群详情,如节点数量、存储容量);yarn node -list(查看YARN节点列表)。

常见问题排查

  • DataNode未启动:检查dfs.datanode.data.dir指定的目录是否存在且权限正确(需为hadoop用户所有);确保从节点能访问主节点的9000端口(telnet namenode 9000)。
  • 网络问题:确认所有节点IP和主机名映射正确,防火墙已关闭。
  • 权限问题:确保HADOOP_HOME目录及子目录权限为hadoop用户(chown -R hadoop:hadoop /export/servers/hadoop-3.3.4)。

0