EMR, Spark:本地共享缓存的合适位置



在我们的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.enableddfs.datanode.data.dir.perm