1

我们正在运行 BlueData 3.7,我使用 Spark 和 YARN 启动了 Cloudera 5.14 集群。我从 Qumulo 每个 NFS 每个 DTAP 获取一个 csv 文件到 Spark 容器中,然后只做一个小过滤器并将结果作为每个 DTAP 的 parquet 文件保存到我们的外部 HDFS Cloudera 集群中。一切正常,但将文件写入外部 HDFS 集群。我完全可以从 HDFS 读取每个 DTAP 并将每个 DTAP 写入 Qumulo NFS。只是按 DTAP 写入 HDFS 是行不通的。我收到消息说我在 EPIC 的 AD 组中的用户没有写入权限(如下图所示)。

知道为什么吗?HDFS 的 DTAP 未配置为只读。所以我希望它可以被读写。

笔记:

  • 我已经检查了 Cloudera 中的访问权限。
  • 我检查了 BD 集群中的 AD 凭据。
  • 我可以从 HDFS 读取这些凭据。

这是我的代码:

$ pyspark --master yarn --deploy-mode client --packages com.databricks:spark-csv_2.10:1.4.0
>>> from pyspark.sql import SQLContext
>>> sqlContext = SQLContext(sc)
>>> df = sqlContext.read.format('com.databricks.spark.csv').options(header='true', inferschema='true').load('dtap://TenantStorage/file.csv')
>>> df.take(1)
>>> df_filtered = df.filter(df.incidents_85_99 == 0)
>>> df_filtered.write.parquet('dtap://OtherDataTap/airline-safety_zero_incidents.parquet')

错误信息:

hdfs_access_control_exception:授权被拒绝

在此处输入图像描述

4

1 回答 1

2

在 BlueData 支持人员的帮助下,我可以解决这个问题!我得到信息:“如果没有应用ACL规则,那么可能该属性dfs.namenode.acls.enabled没有设置为true。请将其更改为已启用并重新启动namenode以启用ACL,否则配置的ACL不会生效。”我这样做了,但仍然无法使用写入命令访问 HDFS。

我还必须在 HDFS 本​​身中更改对我的文件夹的访问权限以写入权限。问题解决了。

于 2019-07-22T08:48:00.330 回答