常见问题

本文汇总了使用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 Worflow的AliyunEMRWorkflowDefaultRole角色没有访问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),单击确定

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

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

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

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