本文介绍E-MapReduce集群部分运维的方法,以便于您可以自主的运维服务。

前提条件

已创建集群,详情请参见创建集群

一些通用的环境变量

在集群Master节点上,输入env命令,可以看到类似如下的环境变量配置(具体以集群上最新的配置为准)。
JAVA_HOME=/usr/lib/jvm/java
HADOOP_HOME=/usr/lib/hadoop-current
HADOOP_CLASSPATH=/usr/lib/hbase-current/lib/*:/usr/lib/tez-current/*:/usr/lib/tez-current/lib/*:/etc/emr/tez-conf:/usr/lib/hbase-current/lib/*:/usr/lib/tez-current/*:/usr/lib/tez-current/lib/*:/etc/emr/tez-conf:/opt/apps/extra-jars/*:/opt/apps/extra-jars/*
HADOOP_CONF_DIR=/etc/emr/hadoop-conf
SPARK_HOME=/usr/lib/spark-current
SPARK_CONF_DIR=/etc/emr/spark-conf
HBASE_HOME=/usr/lib/hbase-current
HBASE_CONF_DIR=/etc/emr/hbase-conf
HIVE_HOME=/usr/lib/hive-current
HIVE_CONF_DIR=/etc/emr/hive-conf
PIG_HOME=/usr/lib/pig-current
PIG_CONF_DIR=/etc/emr/pig-conf
TEZ_HOME=/usr/lib/tez-current
TEZ_CONF_DIR=/etc/emr/tez-conf
ZEPPELIN_HOME=/usr/lib/zeppelin-current
ZEPPELIN_CONF_DIR=/etc/emr/zeppelin-conf
HUE_HOME=/usr/lib/hue-current
HUE_CONF_DIR=/etc/emr/hue-conf
PRESTO_HOME=/usr/lib/presto-current
PRESTO_CONF_DIR=/etc/emr/presot-conf

启停服务进程

您可以在E-MapReduce控制台,对指定服务执行启动、停止和重启操作。各个服务进程的操作类似,下面以HDFS为例,介绍如何启动、停止和重启emr-worker-1主机上的DataNode进程。

  1. 登录阿里云E-MapReduce控制台
  2. 在顶部菜单栏处,根据实际情况选择地域(Region)和资源组
  3. 单击上方的集群管理页签。
  4. 集群管理页面,单击相应集群所在行的详情
  5. 在左侧导航栏中,单击集群服务 > HDFS
  6. 单击部署拓扑页签。
    可以看到该集群中运行的服务进程列表。
  7. 操作emr-worker-1主机上的DataNode组件。
    1. 启动组件。
      1. 单击操作列的启动
      2. 执行集群操作对话框中,输入执行原因,单击确定
      3. 确认对话框中,单击确定

        刷新页面,可以看到组件状态列从STOPPED变为STARTED

    2. 重启组件。
      1. 单击操作列的重启
      2. 执行集群操作对话框中,输入执行原因,单击确定
      3. 确认对话框中,单击确定

        刷新页面,可以看到组件状态列从STOPPED变为STARTED

    3. 停止组件。
      1. 单击操作列的停止
      2. 执行集群操作对话框中,输入执行原因,单击确定
      3. 确认对话框中,单击确定

        刷新页面,可以看到组件状态列从STARTED变为STOPPED

批量操作服务进程

本示例以HDFS为例,介绍如何重启所有实例上的DataNode进程。

  1. 登录阿里云E-MapReduce控制台
  2. 在顶部菜单栏处,根据实际情况选择地域(Region)和资源组
  3. 单击上方的集群管理页签。
  4. 集群管理页面,单击相应集群所在行的详情
  5. 在左侧导航栏中,单击集群服务 > HDFS
  6. 单击部署拓扑页签,可以看到该集群中所有运行的服务进程列表。
  7. 单击右上角的操作 > 重启DataNode
    1. 执行集群操作对话框中,输入执行原因,单击确定
    2. 确认对话框中,单击确定
    注意 执行完滚动重启后,不能再执行非滚动重启,否则系统会报错。

通过命令行方式启停服务进程

  • YARN
    操作用账号:hadoop
    • ResourceManager(Master节点)
      // 启动ResourceManager
      /usr/lib/hadoop-current/sbin/yarn-daemon.sh start resourcemanager
      // 停止ResourceManager
      /usr/lib/hadoop-current/sbin/yarn-daemon.sh stop resourcemanager
    • NodeManager(Core节点)
      // 启动NodeManager
      /usr/lib/hadoop-current/sbin/yarn-daemon.sh start nodemanager
      // 停止NodeManager
      /usr/lib/hadoop-current/sbin/yarn-daemon.sh stop nodemanager
    • JobHistoryServer(Master节点)
      // 启动JobHistoryServer
      /usr/lib/hadoop-current/sbin/mr-jobhistory-daemon.sh start historyserver
      // 停止JobHistoryServer
      /usr/lib/hadoop-current/sbin/mr-jobhistory-daemon.sh stop historyserver
    • JobHistoryServer (Master节点)
      // 启动
      /usr/lib/hadoop-current/sbin/mr-jobhistory-daemon.sh start historyserver
      // 停止
      /usr/lib/hadoop-current/sbin/mr-jobhistory-daemon.sh stop historyserver
    • WebProxyServer(Master节点)
      // 启动WebProxyServer
      /usr/lib/hadoop-current/sbin/yarn-daemon.sh start proxyserver
      // 停止WebProxyServer
      /usr/lib/hadoop-current/sbin/yarn-daemon.sh stop proxyserver
  • HDFS
    操作用账号:hdfs
    • NameNode(Master节点)
      // 启动NameNode
      /usr/lib/hadoop-current/sbin/hadoop-daemon.sh start namenode
      // 停止NameNode
      /usr/lib/hadoop-current/sbin/hadoop-daemon.sh stop namenode
    • DataNode(Core节点)
      // 启动DataNode
      /usr/lib/hadoop-current/sbin/hadoop-daemon.sh start datanode
      // 停止DataNode
      /usr/lib/hadoop-current/sbin/hadoop-daemon.sh stop datanode
  • Hive
    操作用账号:hadoop
    • MetaStore(Master节点)
      // 启动MetaStore,内存可以根据需要扩大。
      HADOOP_HEAPSIZE=512 /usr/lib/hive-current/bin/hive --service metastore >/var/log/hive/metastore.log 2>&1 &
    • HiveServer2(Master节点)
      // 启动
      HADOOP_HEAPSIZE=512 /usr/lib/hive-current/bin/hive --service hiveserver2 >/var/log/hive/hiveserver2.log 2>&1 &
  • HBase

    操作用账号:hdfs

    需要注意的,需要在组件中选择了 HBase 以后才能使用如下的方式来启动,否则对应的配置未完成,启动的时候会有错误。

    • HMaster(Master节点)
      // 启动HMaster
      /usr/lib/hbase-current/bin/hbase-daemon.sh start master
      // 重启HMaster
      /usr/lib/hbase-current/bin/hbase-daemon.sh restart master
      // 停止HMaster
      /usr/lib/hbase-current/bin/hbase-daemon.sh stop master
    • HRegionServer(Core节点)
      // 启动HRegionServer
      /usr/lib/hbase-current/bin/hbase-daemon.sh start regionserver
      // 重启HRegionServer
      /usr/lib/hbase-current/bin/hbase-daemon.sh restart regionserver
      // 停止HRegionServer
      /usr/lib/hbase-current/bin/hbase-daemon.sh stop regionserver
    • ThriftServer(Master节点)
      // 启动ThriftServer
      /usr/lib/hbase-current/bin/hbase-daemon.sh start thrift -p 9099 >/var/log/hive/thriftserver.log 2>&1 &
      // 停止ThriftServer
      /usr/lib/hbase-current/bin/hbase-daemon.sh stop thrift
  • Hue

    操作用账号:hadoop

    // 启动
    su -l root -c "${HUE_HOME}/build/env/bin/supervisor >/dev/null 2>&1 &"
    // 停止
    ps aux | grep hue     // 查找到所的Hue进程。
    kill -9 huepid        // 杀掉查找到的对应Hue进程。
  • Zeppelin

    操作用账号:hadoop

    // 启动Zeppelin ,内存可以根据需要扩大。
    su -l root -c "ZEPPELIN_MEM=\"-Xmx512m -Xms512m\" ${ZEPPELIN_HOME}/bin/zeppelin-daemon.sh start"
    // 停止Zeppelin 
    su -l root -c "${ZEPPELIN_HOME}/bin/zeppelin-daemon.sh stop"
  • Presto

    操作用账号:hdfs

    • PrestoServer(Master节点)
      // 启动PrestoServer
      /usr/lib/presto-current/bin/launcher --config=/usr/lib/presto-current/etc/coordinator-config.properties start
      // 停止PrestoServer
      /usr/lib/presto-current/bin/launcher --config=/usr/lib/presto-current/etc/coordinator-config.properties stop
    • PrestoServer(Core节点)
      // 启动PrestoServer
      /usr/lib/presto-current/bin/launcher --config=/usr/lib/presto-current/etc/worker-config.properties start
      // 停止PrestoServer
      /usr/lib/presto-current/bin/launcher --config=/usr/lib/presto-current/etc/worker-config.properties stop

通过命令行方式批量操作

当您需要对Core节点做统一操作时,可以写脚本命令。在EMR集群中,Master和所有Worker节点在hadoop和hdfs账号下是SSH互通的。

例如,如果需要对所有Core节点的NodeManager做停止操作,则可以通过以下命令操作。本示例Core节点数为10。
for i in `seq 1 10`;do ssh emr-worker-$i /usr/lib/hadoop-current/sbin/yarn-daemon.sh stop nodemanager;done