【问题标题】:Issue creating/accessing hive external table with s3 location from spark thrift service从 spark thrift 服务创建/访问具有 s3 位置的 hive 外部表的问题
【发布时间】:2017-10-19 03:06:28
【问题描述】:

我已经使用 hadoop-credential api 在 jceks 文件中配置了 s3 密钥(访问密钥和秘密密钥)。用于相同的命令如下:

hadoop 凭据创建 fs.s3a.access.key -provider jceks://hdfs@nn_hostname/tmp/s3creds_test.jceks

hadoop 凭据创建 fs.s3a.secret.key -provider jceks://hdfs@nn_hostname/tmp/s3creds_test.jceks

然后,我使用直线打开与 Spark Thrift Server 的连接,并在连接字符串中传递 jceks 文件路径,如下所示:

beeline -u "jdbc:hive2://hostname:10001/;principal=hive/_HOST@?hadoop.security.credential.provider.path=jceks://hdfs@nn_hostname/tmp/s3creds_test. jceks;

现在,当我尝试使用 s3 中的位置创建外部表时,它会失败并出现以下异常:

CREATE EXTERNAL TABLE IF NOT EXISTS test_table_on_s3 (col1 String, col2 String) 以 ',' LOCATION 's3a://bucket_name/kalmesh/' 结尾的行格式分隔字段;

异常: 错误:org.apache.spark.sql.execution.QueryExecutionException:失败:执行错误,从 org.apache.hadoop.hive.ql.exec.DDLTask 返回代码 1。 MetaException(消息:得到异常:java.nio.file.AccessDeniedException s3a://bucket_name/kalmesh:s3a://bucket_name/kalmesh 上的 getFileStatus:com.amazonaws.services.s3.model.AmazonS3Exception:禁止(服务:Amazon S3 ; 状态码:403;错误码:403 Forbidden;请求 ID:request_id),S3 扩展请求 ID:extended_request_id=) (state=,code=0)

【问题讨论】:

    标签: hadoop apache-spark amazon-s3


    【解决方案1】:

    我认为 jceks 不支持 fs.s3a。在 Hadoop 2.8 之前,秘密一直存在。我不认为;从源头上很难分辨。如果是这种情况,并且您使用的是 Hadoop 2.7,那么这个秘密就不会被泄露。恐怕您必须将其放入配置中。

    【讨论】:

    • 我正在使用 HDP 2.5,它具有 Hadoop 2.7spark 1.6。同样的方法也适用于 Hive Thrift Server
    • 恐怕 JCEKS 支持在 Hadoop 2.8 和 HDP2.6 中,而不是 2.5。恐怕你将不得不排队。在 EC2 中它会被自动拾取,否则,您可以在工作节点上的 AWS 环境变量中执行此操作
    【解决方案2】:

    我也遇到过类似的情况,只是使用了 Drill 而不是 Hive。但就像你的情况一样:

    • 使用 Hadoop 2.9 jars(支持 AWS KMS 的第一个版本)
    • 写入 s3a://
    • 使用 SSE-KMS 加密

    ... 并得到 AmazonS3Exception: Access Denied

    在我的情况下(也许在你的情况下),异常描述有点模棱两可。报告的 AmazonS3Exception: Access Denied 并非源自 S3,而是源自 KMS!我用于加密的密钥被拒绝访问。进行 API 调用的用户不在密钥的用户列表中 - 一旦我将该用户添加到密钥的列表中,写入开始工作,我可以在 s3a://...上创建加密表...

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-10-21
      • 1970-01-01
      • 2019-06-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-12-23
      • 1970-01-01
      相关资源
      最近更新 更多