在我们的Spark应用程序中,我们将本地应用程序缓存存储在/mnt/yarn/app-cache/
目录中,该目录在同一EC2示例上的应用程序容器之间共享
之所以选择/mnt/...
,是因为它是r5d示例上的FAST NVMe固态硬盘
这种方法在EMR 5.x上运行良好,/mnt/yarn
属于yarn
用户,应用程序容器从yarn
运行,它可以创建目录
在EMR 6.x中,情况发生了变化-容器现在从hadoop
用户运行,该用户对/mnt/yarn/
没有写入权限
hadoop
用户可以在/mnt/
中创建目录,但yarn
不能,我希望保持兼容性-该应用程序应该能够在EMR 5.x和6.x上成功运行
java.io.tmpdir
也不起作用-每个容器的情况都不同
在NVMe SSD(/mnt
、/mnt1
)上存储缓存的合适位置应该是什么,以便所有容器都可以访问它,并且可以在EMR 5.x和6.x上操作?
1条答案
按热度按时间vu8f3i0k1#
在EMR群集上,您可以将
yarn
用户添加到超级用户组;默认情况下,该组称为supergroup
。您可以通过检查hdfs-site.xml
文件中的dfs.permissions.superusergroup
来确认这是否为正确的组。您还可以尝试修改以下HDFS属性(在上面命名的文件中):
dfs.permissions.enabled
或dfs.datanode.data.dir.perm
。