本文汇总了集群管理时的常见问题。

错误提示:The specified zone is not available for purchase.

您选择创建集群的可用区暂时停止了按量计费ECS的售卖,建议您更换可用区购买。

错误提示:The request processing has failed due to some unknown error, exception or failure.

您可以稍等一会重试。

错误提示:The Node Controller is temporarily unavailable.

请稍等一会再重试创建集群。

错误提示:Zone或者Cluster的库存不够了

待创建E-MapReduce集群可用区的ECS实例库存不足。您可以尝试手动选择其他可用区重新创建集群,或者使用随机模式创建集群。

错误提示:The specified instance Type exceeds the maximum limit for the PostPaid instances.

问题分析:
  • 您的按量节点数量已达到上限。
  • 您没有创建这个机型的权限。
解决方法:
  • 申请增加节点数量。
  • 在ECS开通这个机型的使用权限。

如何登录Core节点?

  1. 在Master节点上切换到hadoop账号。
    su hadoop
  2. 免密码登录到对应的Core节点。
    ssh emr-worker-1
  3. 通过sudo获得root权限。
    sudo su - root

为什么集群已续费但还是会收到没有续费的通知?

问题分析:因为E-MapReduce涉及E-MapReduce和ECS两部分费用,大部分的用户都只是续费了ECS而没有续费E-MapReduce。

解决方法:您可以进入集群基础信息页面,在费用管理 > 续费页面,查看ECS和E-MapReduce到期时间。

E-MapReduce是否支持自动续费?

E-MapReduce支持自动续费操作,包括E-MapReduce和ECS的自动续费。

集群创建失败需要处理吗?

可以不用处理,对应的计算资源并没有真正地创建出来。创建失败的集群记录会在60天后自动删除。

在旧版控制台,创建失败的集群会在三天后自动隐藏;在新版控制台,您可以通过筛选集群状态对集群列表进行过滤展示。

集群机器如何分工?

E-MapReduce中包含一个Master节点和多个Slave(或者Worker)节点。其中Master节点不参与数据存储和计算任务,Slave节点用来存储数据和计算任务。例如,3台4核8 GiB机型的集群,其中一台机器用来作为Master节点,另外两台用来作为Slave节点,也就是集群的可用计算资源为2台4核8 GiB机型。

如何处理Kafka集群磁盘异常?

问题分析:常见磁盘异常包括磁盘写满和磁盘损坏。

解决方法:
  • 磁盘写满:
    1. 登录服务器。
    2. 查找到写满的磁盘,然后按照以下原则清理数据。
      • 切勿直接删除Kafka的数据目录,否则所有数据会丢失。
      • 切勿清理Kafka的系统topic,例如consumer_offsets和schema等。
      • 查找到占用空间较多或者明确不需要的topic,选择其中某些Partition,从最早的日志数据开始删除。删除Segment及相应的index和timeindex文件。
    3. 重启Kafka broker服务。
  • 磁盘损坏:

    磁盘损坏不超过25%时,无需处理。

错误提示:The specified DataDisk Size beyond the permitted range, or the capacity of snapshot exceeds the size limit of the specified disk category.

磁盘参数设置太小,建议您调整到40 GB以上重试。

错误提示:Your account does not have enough balance.

账号余额不足。

错误提示:The maximum number of Pay-As-You-Go instances is exceeded: create ecs vcpu quota per region limited by user quota [xxx].

您按量计费的ECS使用量达到上限,需要申请提高ECS使用量上限,或者释放部分按量计费的ECS以便继续创建E-MapReduce集群。

E-Mapreduce主节点是否支持安装其他软件?

不建议安装。因为安装其他软件可能会影响集群的稳定性和可靠性,所以不建议安装。

各个节点上的服务开机会自动启动吗?服务异常中断也会自动重启吗?

会自动启动。服务异常中断会自动恢复。

Hbase的Thrift端口号是多少?

Hbase的Thrift端口号是9099。

E-MapReduce是否支持竞价实例?

E-MapReduce在使用弹性伸缩功能时,支持抢占式实例,详情请参见管理弹性伸缩

错误提示FAILED: SemanticException org.apache.hadoop.hive.ql.metadata.HiveException: java.lang.RuntimeException: Unable to instantiate org.apache.hadoop.hive.ql.metadata.SessionHiveMetaStoreClient

问题描述:创建集群时选择了统一meta库,但执行Hive报错。

通常是因为集群没有公网EIP,导致集群未创建成功。

错误提示:User real name authenticate failed.

用户账号没有完成实名认证。请到阿里云上完成即可。

之前购买了一套EMR-3.4.3版本,现在需要再购买一套,为什么选不到3.4.3版本?

E-MapReduce的主版本会定期升级,对于部分老版本会做下线处理。您可以查看现有E-MapReduce版本中各个软件的版本(例如Hive和Spark)是否满足您的需求。

E-MapReduce和MaxCompute的区别是什么?

两者都是大数据处理解决方案。E-MapReduce是完全在开源基础上构建的大数据平台,对开源软件的使用方式和实践方式100%兼容。MaxCompute由阿里巴巴开发,对外不开源,但是封装后使用起来比较方便,而且运维成本也较低。

存储会自动负载均衡还是需要手动均衡?如果需要手动均衡在哪里操作?

需要手动均衡,操作步骤如下:
  1. 登录阿里云E-MapReduce控制台
  2. 在顶部菜单栏处,根据实际情况选择地域和资源组
  3. 单击上方的集群管理页签。
  4. 集群管理页面,单击相应集群所在行的详情
  5. 单击左侧导航栏的集群服务 > HDFS
  6. 单击右上角的操作 > Rebalance
  7. 执行集群操作对话框中,配置各项参数,单击确定
  8. 确认对话框中,单击确定

磁盘容量不足时,该如何处理?

因为EMR集群不支持磁盘数量的增加,所以您可以在EMR控制台调大单块磁盘的容量,或扩容Core节点。

磁盘容量过剩时,该如何处理?

因为EMR集群不支持磁盘容量缩容,所以您可以重新购买集群,详情请参见创建集群

计算能力不足时,该如何处理?

您可以在EMR控制台上扩容Task节点,详情请参见扩容集群

计算能力过剩时,该如何处理?

根据集群区分如下:
  • 针对按量付费集群,您可以在EMR控制上缩容Task节点。
  • 针对包年包月集群,先在Task节点decommission YARN Nodemanager服务,然后在ECS控制台将对应Task节点的ECS转为按量付费后再释放。

组件版本过低时,该如何处理?

因为EMR集群不支持单组件版本升级,所以您可以重新购买高版本的集群,详情请参见创建集群

如何转化非HA集群为HA集群?

EMR集群暂不支持非HA集群转为HA集群,建议您重新购买HA集群。

如何在EMR上部署第三方软件或服务?

建议您在集群创建时通过引导操作安装第三方软件或服务。如果集群创建后手工安装第三方软件或服务,在扩容时,新扩容节点需重新手工安装第三方软件或服务。

已增加了内存或CPU,为什么YARN上的内存或CPU没有增加?

因为YARN上的资源是由每个NodeManager的资源相加得到的总值,每个NodeManager的值是固定的,所以您可以通过修改配置并重启NodeManager,来影响YARN的总体资源,修改组件参数详情请参见管理组件参数

修改配置如下:
  • 内存:yarn.nodemanager.resource.memory-mb
  • CPU:yarn.nodemanager.resource.cpu-vcores
mem_cpu

YARN上ApplicationMaster资源超过Queue限制,该如何处理?

  • 问题现象:
    • YARN上任务一直显示accepted。
    • 错误提示Application is added to the scheduler and is not yet activated. Queue's AM resource limit exceeded.
  • 处理方法:任务在YARN上运行时会先启动一个ApplicationMaster,由这个Master来申请运行数据的资源,但是有一个参数会限制Master占用YARN资源的百分比,默认是0.25(25%)。如果您的作业都是消耗资源比较小的任务,建议可以修改yarn.scheduler.capacity.maximum-am-resource-percent的值,调整到0.5~0.8之间,修改参数后无需重启服务,您可以直接在节点上执行yarn rmadmin -refreshQueues命令。修改组件参数详情请参见管理组件参数maximum

Worker节点和Header/Gateway节点提交作业的区别是什么?

在数据开发的作业编辑页面,单击右上角的作业设置,在作业设置页面的高级设置页签,您可以在模式区域,选择在Worker节点提交或者在Header/Gateway节点提交

在Worker节点提交:不可以指定机器提交,会先启动一个名为Launcher的任务,再来启动和监控您实际的任务,即需要用到两个ApplicationMaster的资源,通常这两个任务的ApplicationId是连续的。

在Header/Gateway节点提交:可以指定机器提交,仅启动实际的任务,但是如果任务太多,会对Header/Gateway节点造成一定的压力,如果机器内存不足,任务无法启动。

经典网络中ECS与VPC中的E-MapReduce集群如何进行网络互访?

目前阿里云存在经典网络和VPC两种网络类型。由于E-MapReduce集群是在VPC网络中,而很多用户的业务系统还存在于经典网络中,为了解决此问题,阿里云推出了ClassicLink方案,您可以参见此方案进行网络互访,详情请参见ClassicLink方案

ClassicLink方案的简要操作步骤如下:
  1. 指定网段创建vSwitch,详情请参见ClassicLink方案
  2. 创建集群时,使用指定网段的vSwitch来部署E-MapReduce集群。
  3. 在ECS控制台,将对应的经典网络节点连接到这个VPC。
  4. 设置安全组访问规则。

如何访问开源组件的Web UI?

您可以通过E-MapReduce控台的访问链接与端口功能,访问开源组件的Web UI,详情请参见访问链接与端口

如何对不同RAM用户的OSS数据进行隔离?

您可以使用访问控制RAM(Resource Access Management),对不同RAM用户的OSS数据进行隔离。操作步骤如下:
  1. 通过阿里云账号登录RAM控制台
  2. 创建RAM用户。
    1. 在左侧导航栏中,选择身份管理 > 用户
    2. 单击创建用户
      说明 可以一次性创建多个RAM用户。
    3. 输入登录名称显示名称
    4. 访问方式区域,选择访问方式。
      • 控制台访问:完成对登录安全的基本设置,包括自动生成或自定义登录密码、是否要求下次登录时重置密码以及是否要求开启多因素认证。
      • OpenAPI调用访问:自动为RAM用户生成访问密钥(AccessKey),支持通过API或其他开发工具访问阿里云。
      说明 为了保障账号安全,建议仅为RAM用户选择一种登录方式,避免RAM用户离开组织后仍可以通过访问密钥访问阿里云资源。
    5. 单击确定
  3. 新建权限策略。
    1. 在左侧导航栏中,选择权限管理 > 权限策略管理
    2. 单击创建权限策略
    3. 填写策略名称
    4. 选中脚本配置脚本配置方法请参见语法结构编辑策略内容。 本示例分别按照不同环境来创建两个权限策略,您可以根据自己的环境选择对应的脚本进行创建。
      测试环境(test-bucket) 生产环境(prod-bucket)
      {
      "Version": "1",
      "Statement": [
      {
      "Effect": "Allow",
      "Action": [
        "oss:ListBuckets"
      ],
      "Resource": [
        "acs:oss:*:*:*"
      ]
      },
      {
      "Effect": "Allow",
      "Action": [
        "oss:Listobjects",
        "oss:GetObject",
        "oss:PutObject",
        "oss:DeleteObject"
      ],
      "Resource": [
        "acs:oss:*:*:test-bucket",
        "acs:oss:*:*:test-bucket/*"
      ]
      }
      ]
      }
      {
      "Version": "1",
      "Statement": [
      {
      "Effect": "Allow",
      "Action": [
        "oss:ListBuckets"
      ],
      "Resource": [
        "acs:oss:*:*:*"
      ]
      },
      {
      "Effect": "Allow",
      "Action": [
        "oss:Listobjects",
        "oss:GetObject",
        "oss:PutObject"
      ],
      "Resource": [
        "acs:oss:*:*:prod-bucket",
        "acs:oss:*:*:prod-bucket/*"
      ]
      }
      ]
      }
      按上述脚本示例进行权限隔离后,RAM用户在E-MapReduce控制台的限制如下:
      • 在创建集群、创建作业和创建工作流的OSS文件页面,可以看到所有的Bucket,但是只能进入被授权的Bucket。
      • 只能看到被授权的Bucket下的内容,无法看到其他Bucket内的内容。
      • 作业中只能读写被授权的Bucket,读写未被授权的Bucket会报错。
    5. 单击确定
  4. 可选:为RAM用户授权。
    创建的RAM用户未授权,则您可按以下方法进行授权:
    1. 在左侧导航栏,选择身份管理 > 用户
    2. 单击待授权RAM用户所在行的添加权限
    3. 单击需要授予RAM用户的权限策略,单击确定
    4. 单击完成
  5. 可选:开启RAM用户的控制台登录权限。
    如果创建RAM用户时未开启控制台登录权限,则您可按以下方法进行开启:
    1. 单击左侧导航栏,选择身份管理 > 用户
    2. 单击目标RAM用户的用户登录名称。
    3. 控制台登录管理区域,单击修改登录设置
    4. 修改登录设置页签,开启控制台访问
    5. 单击确定
  6. 通过RAM用户登录E-MapReduce控制台。
    1. 通过RAM用户登录控制台
    2. 登录控制台后,选择E-MapReduce产品即可。

同账号不同VPC下的E-MapReduce如何互连?

专有网络VPC(Virtual Private Cloud)可以为您创建一个隔离的网络环境,支持自定义IP地址范围、划分网络、配置路由表和网关等。您可以将多个E-MapReduce集群创建在不同的VPC下,通过高速通道的配置使其可以互连。

创建专有网络集群相关信息如下:
  • VPC:选择当前创建的E-MapReduce集群归属的VPC,如果还没创建可以进入VPC控制台进行创建,通常一个账号最多创建2个VPC网络。
  • 交换机:E-MapReduce集群内的ECS实例通过交换机进行通信,如果还没创建可以进入VPC控制台,单击交换机页签进行创建。因为交换机有可用区的属性,所以创建交换机的可用区需要和在E-MapReduce创建集群时一致。
  • 安全组名称:集群所属的安全组,经典网络的安全组不能在VPC中使用,VPC的安全组只能在当前VPC中使用。安全组列表中只展示您在E-MapReduce产品中创建的安全组。如果需要新建安全组,直接输入安全组名称即可。
以下通过示例为您介绍,创建两个不同VPC下的E-MapReduce集群,并通过云企业网配置使其中一个集群可以访问另一个集群(Hive访问HBase)。
  1. 创建集群,详情请参见创建集群

    在E-MapReduce控制台上创建两个集群,Hive集群C1处于VPC1中,HBase集群C2处于VPC2中,两个集群都在杭州区域。

  2. 配置同账号VPC互连。

    详细配置信息,请参见创建云企业网实例

  3. 使用SSH登录HBase集群,通过HBase Shell创建表。
    create 'testfromHbase','cf'
  4. 使用SSH登录Hive集群,进行以下配置,即可实现同账号不同VPC下的E-MapReduce集群互连。
    1. 修改hosts,增加如下信息。
      $zk_ip emr-cluster //$zk_ip为HBase集群的ZooKeeper节点IP地址。
    2. 通过Hive Shell访问HBase。
      set hbase.zookeeper.quorum=172.*.*.111,172.*.*.112,172.*.*.113;
      CREATE EXTERNAL TABLE IF NOT EXISTS testfromHive (rowkey STRING, pageviews Int, bytes STRING) STORED BY 'org.apache.hadoop.hive.hbase.HBaseStorageHandler' WITH SERDEPROPERTIES ('hbase.columns.mapping' = ':key,cf:c1,cf:c2') TBLPROPERTIES ('hbase.table.name' = 'testfromHbase');
      如果提示java.net.SocketTimeoutException异常信息,则您需要在HBase集群的安全组中新增安全组规则给Hive集群开放端口,示例如下。安全组规则列表

Metastore初始化时提示Failed to get schema version异常信息,该如何处理?

异常详细信息如下图。initialize_fail

请检查RDS MySQL安全组配置,确认RDS对EMR集群已开通安全组白名单。开通白名单详情,请参见设置IP白名单

如果Hive元数据信息中包含中文信息,例如列注释和分区名等,该如何处理?

您可以在对应RDS数据库中逐条依次执行如下命令修改相应字段为UTF-8格式。
  1. 执行以下命令,修改COMMENT列的数据类型。
    alter table COLUMNS_V2 modify column COMMENT varchar(256) character set utf8;
  2. 执行以下命令,修改表TABLE_PARAMS中PARAM_VALUE列的数据类型。
    alter table TABLE_PARAMS modify column PARAM_VALUE varchar(4000) character set utf8;
  3. 执行以下命令,修改表PARTITION_PARAMS中PARAM_VALUE列的数据类型。
    alter table PARTITION_PARAMS modify column PARAM_VALUE varchar(4000) character set utf8;
  4. 执行以下命令,修改PKEY_COMMENT列的数据类型。
    alter table PARTITION_KEYS modify column PKEY_COMMENT varchar(4000) character set utf8;
  5. 执行以下命令,修改表INDEX_PARAMS中PARAM_VALUE列的数据类型。
    alter table INDEX_PARAMS modify column PARAM_VALUE varchar(4000) character set utf8;