在我们的Spark应用程序中,我们将本地应用程序缓存存储在/mnt/yarn/app-cache/
目录中,该目录在同一个ec2实例上的应用程序容器之间共享
/mnt/...
选择,因为它是一个快速NVMe SSD r5d实例
这种方法在EMR 5上运行了好几年。x -/mnt/yarn
属于yarn
用户,从yarn
容器和应用程序运行,它可以创建目录
In 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 ?
在您的EMR集群上,您可以将yarn
用户添加到超级用户组;默认为supergroup
。您可以通过检查hdfs-site.xml
文件中的dfs.permissions.superusergroup
来确认这是否是正确的组。
您还可以尝试修改以下HDFS属性(在上述文件中):dfs.permissions.enabled
或dfs.datanode.data.dir.perm
。