启动前准备

使用Yarn包管理器启动前,需首先进行Hadoop相关配置,参考官方文档配置,完成后重新启动Hadoop。

  • 普通模式启动和Yarn启动选择其一。
  • 使用Yarn包管理器启动时,如Hadoop版本为3.2.2及以上版本,则需重新编译container-executor,否则将无法启动Hadoop。详细内容请参考Yarn启动Hadoop失败的解决方法
  • 部署和启动Hadoop建议使用普通用户,使用root用户可能存在安全风险。
  • 官方文档可参考:Launching Applications Using runC Containers
  1. 主节点修改Hadoop配置文件。

    1. 修改“${HADOOP_HOME}/etc/hadoop/yarn-site.xml”文件。
      1. 开启container-executor配置,用户组为ockadmin,如下所示。
        <property>
            <name>yarn.nodemanager.container-executor.class</name>
            <value>org.apache.hadoop.yarn.server.nodemanager.LinuxContainerExecutor</value>
        </property>
        <property>
            <name>yarn.nodemanager.linux-container-executor.group</name>
            <value>ockadmin</value>
        </property>
        <property>
            <name>yarn.nodemanager.linux-container-executor.nonsecure-mode.limit-users</name>
            <value>false</value>
        </property>
      2. 配置开启Node Labels特性。
        图1 开启Node Labels

        yarn-site.xml文件配置示例如下:

        <propert>
            <name>yarn.node-labels.enabled</name>
            <value>true</value>
        </propert>
        <propert>
            <name>yarn.node-labels.fs-store.root-dir</name>
            <value>/tmp/node-labels</value>
        </propert>
        <propert>
            <name>yarn.resourcemanager.scheduler.class</name>
            <value>org.apache.hadoop.yarn.server.resourcemanager.scheduler.capacity.CapacityScheduler</value>
        </propert>
      3. 重启ResourceManager组件以生效配置。
        • 执行以下命令查询节点列表,确认ResourceManager是否正在运行。
          yarn node -list
        • 执行以下命令停止ResourceManager服务。
          yarn --daemon stop resourcemanager
        • 待ResourceManager服务停止后,执行以下命令重启该服务。
          yarn --daemon start resourcemanager
    2. 修改“${HADOOP_HOME}/etc/hadoop/core-site.xml”文件,代理的用户和用户组分别为${HADOOP_USER}、${HADOOP_GROUP},如下所示。
      <property>
          <name>hadoop.proxyuser.sparkadmin.hosts</name>
          <value>*</value>
      </property>
      <property>
          <name>hadoop.proxyuser.ockadmin.groups</name>
          <value>*</value>
      </property>
    3. 修改“$HADOOP_HOME/etc/hadoop/container-executor.cfg”文件,添加以下内容。若文件不存在则参考官方文档创建并设置正确的权限。
      yarn.nodemanager.linux-container-executor.group=ockadmin #configured value of yarn.nodemanager.linux-container-executor.group
      banned.users= #comma separated list of users who can not run applications
      min.user.id=1000 #Prevent other super-users
      allowed.system.users= #comma separated list of system users who CAN run applications
      feature.tc.enabled=false
    4. 在所有节点上执行以下操作。
      1. 切换为ockadmin用户,并在该用户目录下创建.hadooprc文件,权限修改为640。
        su - ockadmin
        touch .hadooprc
        chmod 640 .hadooprc
      2. 添加以下内容:
        export HADOOP_USER_NAME=ockadmin
        export HDFS_DATANODE_USER=ockadmin
        export HDFS_NAMENODE_USER=ockadmin
        export HDFS_SECONDARYNAMENODE_USER=ockadmin
        export YARN_RESOURCEMANAGER_USER=ockadmin
        export YARN_NODEMANAGER_USER=ockadmin

  2. 重启Hadoop。

    执行以下命令进入Hadoop bin目录下,重启Hadoop。
    cd $HADOOP_HOME/sbin
    ./stop-all.sh
    ./start-all.sh

    重启后执行jps命令查看ResourceManager是否启动。若未启动,可查看ResourceManager日志进行分析。若未启动原因为安全模式开启,则可执行以下命令退出安全模式并重启Hadoop服务。

    hadoop dfsadmin -safemode leave
    ./start-all.sh