常见问题

本文汇总了使用EMR Workflow时的常见问题。

报错“The bucket you access does not belong to you”问题

问题详情

当您的任务或者工作流运行失败时,日志信息中包含The bucket you access does not belong to you的错误信息。详细信息如下图所示。image.png

问题原因

您绑定的集群使用了OSS-HDFS作为集群存储根路径,但是EMR WorflowAliyunEMRWorkflowDefaultRole角色没有访问OSS-HDFS的权限。需要您额外授予EMR Workflow访问OSS-HDFS的权限。

解决方案

  1. 使用阿里云账号(主账号)或具有管理权限的RAM用户登录RAM控制台

  2. 创建权限策略。

    1. 在左侧导航栏,选择权限管理 > 权限策略

    2. 权限策略页面,单击创建权限策略

    3. 创建权限策略页面,单击脚本编辑,填写以下信息,单击确定

      {
          "Statement": [
              {
                "Effect": "Allow",
                "Action": "oss:ListObjects",
                "Resource": [
                  "acs:oss:*:*:*"
                ]
              },
              {
                  "Effect": "Allow",
                  "Action": [
                      "oss:GetBucketInfo",                
                      "oss:PostDataLakeStorageFileOperation",
                      "oss:PostDataLakeStorageAdminOperation"
                  ],
                  "Resource": "*"
              },
              {
                  "Effect": "Allow",
                  "Action": "oss:*",
                  "Resource": [
                      "acs:oss:*:*:*/.dlsdata",
                      "acs:oss:*:*:*/.dlsdata*"
                  ]
              }
          ],
          "Version": "1"
      }
    4. 创建权限策略对话框中,设置权限策略的名称(例如EMRWorkflowDefaultRolePolicyExtra),单击确定

  3. RAM角色授权。

    1. 在左侧导航栏,选择身份管理 > 角色

    2. 搜索并单击角色AliyunEMRWorkflowDefaultRole

    3. 权限管理页面,单击新增授权

    4. 新增授权页面,选择自定义策略

    5. 输入并选择上一步中您创建的权限策略的名称(例如EMRWorkflowDefaultRolePolicyExtra),单击确认新增授权

标题默认是 H2,请按需要调整为合适的标题级别。相邻区块应该使用同级别标题,嵌套区块应该使用低一级的标题。

如何在仅部分worker节点安装了依赖环境的集群中执行PySpark?

在仅部分worker节点安装了依赖环境的集群中执行PySpark,按照以下步骤进行操作:

  1. 使用SPARK任务类型,程序类型选择CUSTOM_SCRIPT,开启提交到Yarn执行开关,并且填写完整的spark-submit命令。

  2. 使用Yarn Node Labels特性,将Spark作业调度到已安装所需Python第三方依赖环境的节点上,详情请参见Node Labels特性使用

报错“current cpu load average 0.0 is too high or available memory xxxG is too low, under max.cpuload.avg=2.0 and reserved.memory=xxxG”问题

问题详情

如果提交的任务处于卡顿状态且状态显示为提交成功,即使将所有之前卡住的任务停止,手动重新运行一个任务仍然会出现卡顿并报错。

问题原因

由于调度资源组与Pod的概念存在差异,停止任务并不会自动释放内存,资源组将持续占用内存。因此,当任务增加或数据量上升时,可能会导致调度资源组出现内存不足的错误。

解决方案

建议您对资源组进行扩容,或选择更大规格的资源组,同时释放小规格的资源组。