【问题标题】:Dockerfile to give permissions to hdfsDockerfile 授予 hdfs 权限
【发布时间】:2020-12-11 08:18:00
【问题描述】:

我有一个 dockerfile 可以在我的容器中运行我想要的一切。在这种情况下,我想运行一个 spark 代码,并在 dockerfile 中授予 spark 写入某个目录的权限。

现在,我还希望允许 spark 在 hdfs 上运行。为此,我像在其他情况下一样使用“chown -R”,但对于 HDFS,它不起作用。

FROM maven:3.6.3-jdk-8-slim
COPY ./ /test
WORKDIR /teste
RUN mvn -e install
RUN apt-get update && \
 ...
chown -R spark:spark /usr/spark* && \
chown -R spark:spark hdfs://localhost:8020/user/admin*

USER spark
WORKDIR /opt/spark

这样我可以在目录“/usr/spark”中写入文件,但不能在 hdfs 中。有人可以告诉我我做错了什么吗?我不能对 HDFS 做同样的事情吗?

【问题讨论】:

  • 没有回答,因为这里有命令放在命令行上,我想把它放在我的 Dockerfile 文件中,以授予 spark 权限以在 HDFS 上写入/放置文件
  • 它确实回答了你的情况。您的问题是您不知道该命令,它会建议该命令。

标签: java apache-spark hadoop dockerfile hdfs


【解决方案1】:

chown 本身用于本地文件

对于 HDFS 文件,您需要 hadoop fs chown

但是,您确实应该在容器构建过程之外执行此操作,因为 localhost:8020 是容器本身,而不是可访问的 HDFS 位置

【讨论】:

  • 我在一个集群中工作。当我将 talend 大数据文件发送到 HDFS 时,他将文件放在那里。但是,当我希望这个 spark 代码将文件保存在同一个地方时,我不再拥有权限,这就是为什么我记得在 Dockerfile 中授予这些权限
  • 当然...但是localhost 是 Java 容器本身,而不是 HDFS。您应该以拥有父文件夹权限的用户身份运行 Spark 代码,而不是所有以 admin 为前缀的用户
猜你喜欢
  • 1970-01-01
  • 2017-08-07
  • 2012-09-27
  • 2016-08-24
  • 2015-01-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多