文档首页/ 弹性云服务器 ECS/ 最佳实践/ 搭建环境/ 搭建Hadoop环境/ 手工搭建Hadoop环境(多台Linux ECS)
更新时间:2026-07-08 GMT+08:00
分享

手工搭建Hadoop环境(多台Linux ECS)

简介

本文介绍了如何在华为云上使用多台弹性云服务器的Linux实例手工搭建Hadoop环境。Hadoop是一款由Apache基金会用Java语言开发的分布式开源软件框架,用户可以在不了解分布式底层细节的情况下,开发分布式程序,充分利用集群的能力进行高速运算和存储。Hadoop的核心部件是HDFS(Hadoop Distributed File System)和MapReduce:

  • HDFS:是一个分布式文件系统,可对应用程序数据进行分布式储存和读取。
  • MapReduce:是一个分布式计算框架,MapReduce的核心思想是把计算任务分配给集群内的服务器执行。通过对计算任务的拆分(Map计算和Reduce计算),再根据任务调度器(JobTracker)对任务进行分布式计算。

更多信息,请参见Hadoop官网

前提条件

  • 已购买3台弹性云服务器,且已为其绑定弹性公网IP。
  • 在部署Hadoop前需对节点进行规划。以三台弹性云服务器为例,hadoop001节点为master节点,hadoop002hadoop003节点为worker节点。

    功能组件

    hadoop001

    hadoop002

    hadoop003

    HDFS

    • NameNode
    • DataNode

    DataNode

    • SecondaryNameNode
    • DataNode

    YARN

    NodeManager

    • ResourceManager
    • NodeManager

    NodeManager

  • 弹性云服务器所在安全组添加了如下表所示的安全组规则,具体步骤参见为安全组添加安全组规则
    表1 安全组规则

    方向

    优先级

    策略

    类型

    协议端口

    源地址

    入方向

    1

    允许

    IPv4

    TCP: 22

    0.0.0.0/0

    入方向

    1

    允许

    IPv4

    TCP: 443

    0.0.0.0/0

    入方向

    1

    允许

    IPv4

    TCP: 8088

    0.0.0.0/0

    入方向

    1

    允许

    IPv4

    TCP: 9870

    0.0.0.0/0

操作流程

Linux实例手工搭建Hadoop环境的具体操作步骤如下:

  1. 安装JDK
  2. 配置SSH免密登录
  3. 安装Hadoop
  4. 配置Hadoop
  5. 启动Hadoop

实施步骤

  1. 安装JDK

    所有实例均需执行此操作。

    1. 登录弹性云服务器。

      具体操作请参见Linux ECS登录方式概述

    2. 执行以下命令,下载JDK 1.8安装包。
      wget https://download.java.net/openjdk/jdk8u41/ri/openjdk-8u41-b04-linux-x64-14_jan_2020.tar.gz
    3. 执行以下命令,解压下载的JDK 1.8安装包。
      tar -zxvf openjdk-8u41-b04-linux-x64-14_jan_2020.tar.gz
    4. 执行以下命令,移动并重命名JDK安装包。

      本示例中将JDK安装包重命名为java8,您可以根据需要使用其他名称。

      sudo mv java-se-8u41-ri/ /usr/java8
    5. 执行以下命令,配置Java环境变量。

      如果您将JDK安装包重新命名为其他名称,需将以下命令中的java8替换为实际的名称。

      sudo sh -c "echo 'export JAVA_HOME=/usr/java8' >> /etc/profile"
      sudo sh -c 'echo "export PATH=\$PATH:\$JAVA_HOME/bin" >> /etc/profile'
      source /etc/profile
    6. 验证安装。
      java -version

      回显信息如下表示jdk安装成功。

  2. 配置SSH免密登录

    所有实例均需执行此操作。

    1. 执行以下命令,配置主机名和通信。
      sudo vim /etc/hosts

      添加所有实例的信息<主私网IP 主机名>到/etc/hosts文件中。如下:

      私网IP hadoop001 
      私网IP hadoop002 
      私网IP hadoop003
    2. 执行以下命令,创建公钥和私钥。
      ssh-keygen -t rsa

      按三次回车后回显信息如下图所示,表示创建公钥和私钥成功。

    3. 执行,替换主机名为正确的名称。
      ssh-copy-id <主机名>

      示例如下:

      hadoop001上依次执行以下命令,执行每一个命令后需要输入yes和对应ECS实例的登录密码。

      ssh-copy-id hadoop001 
      ssh-copy-id hadoop002 
      ssh-copy-id hadoop003

      返回如下信息,表示免密登录配置成功。

  3. 安装Hadoop

    所有实例均需执行此操作。

    1. 执行以下命令,下载Hadoop软件包

      此处以3.2.4版本为例。

      wget https://archive.apache.org/dist/hadoop/common/hadoop-3.2.4/hadoop-3.2.4.tar.gz
    2. 解压Hadoop安装包到opt目录下。
      sudo tar -zxvf hadoop-3.2.4.tar.gz -C /opt/
      sudo mv /opt/hadoop-3.2.4 /opt/hadoop
    3. 执行以下命令,配置环境变量。
      sudo sh -c "echo 'export HADOOP_HOME=/opt/hadoop' >> /etc/profile"
      sudo sh -c "echo 'export PATH=\$PATH:/opt/hadoop/bin' >> /etc/profile"
      sudo sh -c "echo 'export PATH=\$PATH:/opt/hadoop/sbin' >> /etc/profile"
      source /etc/profile
    4. 执行以下命令,修改配置文件yarn-env.sh和hadoop-env.sh中JAVA_HOME的路径。
      sudo sh -c 'echo "export JAVA_HOME=/usr/java8" >> /opt/hadoop/etc/hadoop/yarn-env.sh'
      sudo sh -c 'echo "export JAVA_HOME=/usr/java8" >> /opt/hadoop/etc/hadoop/hadoop-env.sh'
    5. 验证安装。
      hadoop version

      回显信息如下,表示Hadoop安装成功。

  4. 配置Hadoop

    所有实例均需执行此操作。

    1. 修改Hadoop配置文件core-site.xml。
      1. 执行以下命令,进入编辑页面。
        vim /opt/hadoop/etc/hadoop/core-site.xml
      2. 输入i,进入编辑模式。
      3. 在<configuration></configuration>节点内,插入如下内容。
           <!--指定namenode的地址-->
           <property>
                 <name>fs.defaultFS</name>
                 <value>hdfs://hadoop001:8020</value>
           </property>
           <!--用来指定使用hadoop时产生文件的存放目录-->
           <property>
                 <name>hadoop.tmp.dir</name>
                 <value>/opt/hadoop/data</value>
           </property>
           <!--配置HDFS网页登录使用的静态用户为hadoop-->
           <property>
                  <name>hadoop.http.staticuser.user</name>
                  <value>hadoop</value>
           </property>
      4. Esc键退出编辑模式。
      5. 执行以下命令保存并退出。
        :wq
    2. 修改Hadoop配置文件hdfs-site.xml。
      1. 执行以下命令,进入编辑页面。
        vim /opt/hadoop/etc/hadoop/hdfs-site.xml
      2. 输入i,进入编辑模式。
      3. 在<configuration></configuration>节点内,插入如下内容。
            <!-- namenode web 端访问地址-->
            <property>
                <name>dfs.namenode.http-address</name>  
                <value>hadoop001:9870</value>
            </property>
            <!-- secondary namenode web 端访问地址-->
            <property>
                <name>dfs.namenode.secondary.http-address</name>
                <value>hadoop003:9868</value>
            </property>
      4. Esc键退出编辑模式。
      5. 执行以下命令保存并退出。
        :wq
    3. 修改Hadoop配置文件yarn-site.xml。
      1. 执行以下命令,进入编辑页面。
        vim /opt/hadoop/etc/hadoop/yarn-site.xml
      2. 输入i,进入编辑模式。
      3. 在<configuration></configuration>节点内,插入如下内容。
             <!--NodeManager获取数据的方式是shuffle-->
             <property>
        	 <name>yarn.nodemanager.aux-services</name>
        	 <value>mapreduce_shuffle</value>
             </property>
        
        
            <!--指定Yarn(ResourceManager)的地址-->     
            <property>
        	 <name>yarn.resourcemanager.hostname</name>
        	 <value>hadoop002</value>
            </property> 
        
            <!--指定NodeManager允许传递给容器的环境变量白名单-->
            <property>
        	<name>yarn.nodemanager.env-whitelist</name>
        	<value>JAVA_HOME,HADOOP_COMMON_HOME,HADOOP_HDFS_HOME,HADOOP_CONF_DIR,CLASSPATH_PREPEND_DISTCACHE,HADOOP_YARN_HOME,HADOOP_MAPRED_HOME</value>
            </property>
      4. Esc键退出编辑模式。
      5. 执行以下命令保存并退出。
        :wq
    4. 修改Hadoop配置文件mapred-site.xml。
      1. 执行以下命令,进入编辑页面。
        vim /opt/hadoop/etc/hadoop/mapred-site.xml
      2. 输入i,进入编辑模式。
      3. 在<configuration></configuration>节点内,插入如下内容。
           <!--告诉hadoop将MR(Map/Reduce)运行在YARN上-->
           <property>
        	 <name>mapreduce.framework.name</name>
        	 <value>yarn</value>
           </property>
      4. Esc键退出编辑模式。
      5. 执行以下命令保存并退出。
        :wq
    5. 修改Hadoop配置文件workers。
      1. 执行以下命令,进入编辑页面。
        vim /opt/hadoop/etc/hadoop/workers
      2. 输入i,进入编辑模式。
      3. 在文件workers内,插入实例信息。
        hadoop001
        hadoop002
        hadoop003
      4. Esc键退出编辑模式。
      5. 执行以下命令保存并退出。
        :wq

  5. 启动Hadoop

    1. 执行以下命令,初始化namenode。
      仅在第一次启动时需要初始化namenode。三台实例均需执行此操作。
      hadoop namenode -format
    2. 启动Hadoop。
      • 出于系统安全和稳定性考虑,Hadoop官方不推荐使用root用户来启动Hadoop服务,直接使用root用户会因为权限问题无法启动Hadoop。您可以通过非root用户身份启动Hadoop服务,例如ecs-user用户等。
      • 如果您一定要使用root用户启动Hadoop服务,请在了解Hadoop权限控制及相应风险之后,修改配置文件,具体步骤请参见相关操作
      • 使用root用户启动Hadoop服务会带来严重的安全风险,包括但不限于数据泄露、恶意软件更容易获得系统最高权限、意料之外的权限问题或行为。
      1. 在hadoop001上执行start-dfs.sh脚本,启动HDFS服务。

        这个脚本会启动NameNode、SecondaryNameNode和DataNode等组件,从而启动HDFS服务。

        start-dfs.sh

        回显信息如下图所示。

      2. 在hadoop002上执行start-yarn.sh脚本,启动YARN服务。

        这个脚本会启动ResourceManager、NodeManager等组件,从而启动YARN服务。

        start-yarn.sh

        回显信息如下图所示。

    3. 在三台节点上执行以下命令,可以查看成功启动的进程。
      jps

      成功启动的进程如下所示。

    4. 打开浏览器访问http://<hadoop002 ECS公网IP>:8088,访问YARN的Web UI界面。

      通过该界面可以查看整个集群的资源使用情况、应用程序状态(比如MapReduce作业)、队列信息等。

      若显示如下界面,表示Hadoop环境搭建完成。

    5. 打开浏览器访问http://<hadoop001 ECS公网IP>:9870,访问NameNode的Web UI界面;输入http://<hadoop003 ECS公网IP>:9868,访问SecondaryNameNode的Web UI界面。

      该界面提供了有关HDFS文件系统状态、集群健康状况、活动节点列表、NameNode日志等信息。

      显示如下界面,则表示Hadoop环境已搭建完成。

相关操作

修改配置文件,以便root用户可以启动Hadoop服务。

  1. 分别执行以下命令,编辑start-dfs.shstop-dfs.sh两个文件。
    vim /opt/hadoop/sbin/start-dfs.sh
    vim /opt/hadoop/sbin/stop-dfs.sh
  2. 在文件中添加以下参数。
    HDFS_DATANODE_USER=root
    HADOOP_SECURE_DN_USER=hdfs
    HDFS_NAMENODE_USER=root
    HDFS_SECONDARYNAMENODE_USER=root

  3. 分别执行以下命令,编辑start-yarn.shstop-yarn.sh两个文件。
    vim /opt/hadoop/sbin/start-yarn.sh
    vim /opt/hadoop/sbin/stop-yarn.sh
  4. 在文件中添加以下参数。
    YARN_RESOURCEMANAGER_USER=root
    HADOOP_SECURE_DN_USER=yarn
    YARN_NODEMANAGER_USER=root

相关文档