EMR提交Flink步骤时无法访问/var/lib/flink的解决方法
解决EMR上Flink任务访问/var/lib/flink权限拒绝问题
问题分析
EMR 6.X版本提交Flink YARN会话时出现java.nio.file.AccessDeniedException: /var/lib/flink,核心原因是提交任务的默认用户(hadoop)对Flink默认工作目录/var/lib/flink无读写权限,或是目录所属权限配置错误。
具体解决方法
1. 修复/var/lib/flink目录权限
登录EMR主节点,执行以下命令调整目录权限:
- 查看当前目录权限:
ls -ld /var/lib/flink - 修改目录所属用户组及权限:
sudo chown -R flink:hadoop /var/lib/flink sudo chmod -R 755 /var/lib/flink
2. 提交任务时指定自定义工作目录
避开默认本地目录,改用HDFS或S3路径(EMR对这类存储有默认权限),提交命令示例:
flink-yarn-session -d -Dflink.tmp.dir=hdfs:///user/flink/tmp -Dflink.yarn.app.dir=hdfs:///user/flink/apps
若使用S3,替换为你的存储桶路径:
flink-yarn-session -d -Dflink.tmp.dir=s3://your-flink-bucket/tmp -Dflink.yarn.app.dir=s3://your-flink-bucket/apps
3. 修改Flink配置文件持久化解决
编辑Flink的flink-conf.yaml(通常路径为/etc/flink/conf/flink-conf.yaml),添加或修改以下配置:
tmp.dir: hdfs:///user/flink/tmp yarn.application.dir: hdfs:///user/flink/apps
修改后,后续提交任务会默认使用这些路径,无需每次指定参数。
4. 切换到flink用户提交任务
EMR步骤默认以hadoop用户执行,可切换到flink用户提交任务规避权限问题:
sudo -u flink flink-yarn-session -d
内容的提问来源于stack exchange,提问作者Krish
相关产品推荐
相关产品推荐

