请教一下大家,在本地直接python demo.py是可以运行的,但是提交到集群就会报错
flink 版本:1.11 flink on yarn集群模式部署, per-job模式提交,三台机器 提交命令:flink run -m yarn-cluster -ynm demo -ys 2 -ytm 2048 -p 2 -py demo.py 代码截图地址:https://s3.ax1x.com/2020/12/15/rKIwE6.png 报错截图地址:https://s3.ax1x.com/2020/12/15/rKIlNT.png requestments.txt: IPy==1.0 cache_dir: IPy-1.00.tar.gz 自定义udf代码: @udf(input_types=[DataTypes.STRING()], result_type=DataTypes.STRING()) def judge_ip(ip): import IPy if ip in IPy.IP('192.168.112.0/28'): return 'in' return 'out' 祝好~ |
Hi,
光看报错,不知道是哪一步的权限不足导致的,你要不尝试wheel包传上去试试看吧,tar包源码安装会执行setup.py,可能会读写yarn上某些没有权限的目录啥的。 Best, Xingbo |
In reply to this post by magichuang
我现在看看那个报错,flink是把requirements.txt 和 cached_dir 已经先上传到hdfs上了,因为 /yarn/nm/usercache/root/appcache/application_1608026509770_0001/flink-dist-cache-f2899798-cfd4-42b9-95d3-204e7e34b943/418cd5a449fd6ec4b61a3cc2dca4ea08/requirements.txt
/yarn/nm/usercache/root/appcache/application_1608026509770_0001/flink-dist-cache-f2899798-cfd4-42b9-95d3-204e7e34b943/418cd5a449fd6ec4b61a3cc2dca4ea08/cached_dir 在提交的时候 去看机器上是存在的,只不过等程序挂了,这个 /yarn/nm/usercache/root/appcache/application_1608026509770_0001文件夹就没了,所以有感觉hdfs没有问题。。 现在想请教一下,flink在引入外部 python依赖时,在从离线包里面安装库的时候是安装到了哪里? 我看报错信息: Error [Errno 13] Permission denied: '' while executing command python setup.py egg_info 因为它是在 python setup.py 的时候报的权限问题 求大家给看看~~ 感谢 ------------------ 原始邮件 ------------------ 发 件 人:magichuang <[hidden email]> 发送时间:2020-12-15 14:15:04 收 件 人:user-zh <[hidden email]> 抄 送: 主 题:pyflink 引用第三库的文件出现安装权限的问题 请教一下大家,在本地直接python demo.py是可以运行的,但是提交到集群就会报错 flink 版本:1.11 flink on yarn集群模式部署, per-job模式提交,三台机器 提交命令:flink run -m yarn-cluster -ynm demo -ys 2 -ytm 2048 -p 2 -py demo.py 代码截图地址:https://s3.ax1x.com/2020/12/15/rKIwE6.png 报错截图地址:https://s3.ax1x.com/2020/12/15/rKIlNT.png requestments.txt: IPy==1.0 cache_dir: IPy-1.00.tar.gz 自定义udf代码: @udf(input_types=[DataTypes.STRING()], result_type=DataTypes.STRING()) def judge_ip(ip): import IPy if ip in IPy.IP('192.168.112.0/28'): return 'in' return 'out' 祝好~ |
Hi,
默认就是你每台机器的python指向的环境下,当然你也可以通过-pyexec指定不同的python环境 Best, Xingbo magichuang <[hidden email]> 于2020年12月15日周二 下午8:02写道: > 我现在看看那个报错,flink是把requirements.txt 和 cached_dir 已经先上传到hdfs上了,因为 > /yarn/nm/usercache/root/appcache/application_1608026509770_0001/flink-dist-cache-f2899798-cfd4-42b9-95d3-204e7e34b943/418cd5a449fd6ec4b61a3cc2dca4ea08/requirements.txt > > > /yarn/nm/usercache/root/appcache/application_1608026509770_0001/flink-dist-cache-f2899798-cfd4-42b9-95d3-204e7e34b943/418cd5a449fd6ec4b61a3cc2dca4ea08/cached_dir > 在提交的时候 去看机器上是存在的,只不过等程序挂了,这个 > /yarn/nm/usercache/root/appcache/application_1608026509770_0001文件夹就没了,所以有感觉hdfs没有问题。。 > > 现在想请教一下,flink在引入外部 python依赖时,在从离线包里面安装库的时候是安装到了哪里? > > > > > 我看报错信息: Error [Errno 13] Permission denied: '' while executing command > python setup.py egg_info > > 因为它是在 python setup.py 的时候报的权限问题 > > > > > 求大家给看看~~ 感谢 > > > > > ------------------ 原始邮件 ------------------ > > 发 件 人:magichuang <[hidden email]> > > 发送时间:2020-12-15 14:15:04 > > 收 件 人:user-zh <[hidden email]> > > 抄 送: > > 主 题:pyflink 引用第三库的文件出现安装权限的问题 > > > > > 请教一下大家,在本地直接python demo.py是可以运行的,但是提交到集群就会报错 > > flink 版本:1.11 flink on yarn集群模式部署, per-job模式提交,三台机器 > > > > > 提交命令:flink run -m yarn-cluster -ynm demo -ys 2 -ytm 2048 -p 2 -py demo.py > > > > > 代码截图地址:https://s3.ax1x.com/2020/12/15/rKIwE6.png > > > > > 报错截图地址:https://s3.ax1x.com/2020/12/15/rKIlNT.png > > > > > requestments.txt: IPy==1.0 cache_dir: IPy-1.00.tar.gz > > > > > 自定义udf代码: > > @udf(input_types=[DataTypes.STRING()], result_type=DataTypes.STRING()) > > def judge_ip(ip): > > import IPy > > if ip in IPy.IP('192.168.112.0/28'): > > return 'in' > > return 'out' > > > > > > > > 祝好~ > > > |
Hi,
在使用pyflink 提交任务时,指定 -pyarch venv.zip -pyexec venv.zip/venv/bin/python,任务里面用到了udf IPy是第三方库,之前直接安装报权限错误,不能安装,现在想用虚拟环境的方法来解决 set_python_requirements 图片地址:https://s3.ax1x.com/2020/12/17/r8J6AI.png 之前是使用默认Python环境,会报安装权限被拒绝的问题,我刚才使用指定Python环境的方式提交了一下,里面也加上了 set_python_requirements,没有再报权限的错误,并被提交到了yarn上有applicationid,这是说明已经在虚拟环境中安装成功了吧? 但是出现了新的错误,Caused by: java.net.ConnectException: Connection refused 错误图片地址:https://s3.ax1x.com/2020/12/17/r8YJKg.png 我的cdh环境是,hadoop也是在这三台机器上部署的 cdh001 cdh002 cdh003 flink 版本 1.11 集群配置: master cdh001:8081 cdh002:8081 wokers cdh001 cdh002 cdh003 看报错是在连接 cdh002:31331 的时候出现了问题,当任务被提交到yarn集群时,我在cdh002的机器上查找这个端口,并没有发现有31331存在 netstat -ntlp|grep 31331 是空的 这个是因为什么呀? Best, Magichuang > ------------------ 原始邮件 ------------------ > 发 件 人:"Xingbo Huang" <[hidden email]> > 发送时间:2020-12-16 12:42:48 > 收 件 人:user-zh <[hidden email]> > 抄 送: > 主 题:Re: pyflink 引用第三库的文件出现安装权限的问题 > > Hi, > > 默认就是你每台机器的python指向的环境下,当然你也可以通过-pyexec指定不同的python环境 > > Best, > Xingbo > > magichuang 于2020年12月15日周二 下午8:02写道: > > > 我现在看看那个报错,flink是把requirements.txt 和 cached_dir 已经先上传到hdfs上了,因为 > > /yarn/nm/usercache/root/appcache/application_1608026509770_0001/flink-dist-cache-f2899798-cfd4-42b9-95d3-204e7e34b943/418cd5a449fd6ec4b61a3cc2dca4ea08/requirements.txt > > > > > > /yarn/nm/usercache/root/appcache/application_1608026509770_0001/flink-dist-cache-f2899798-cfd4-42b9-95d3-204e7e34b943/418cd5a449fd6ec4b61a3cc2dca4ea08/cached_dir > > 在提交的时候 去看机器上是存在的,只不过等程序挂了,这个 > > /yarn/nm/usercache/root/appcache/application_1608026509770_0001文件夹就没了,所以有感觉hdfs没有问题。。 > > > > 现在想请教一下,flink在引入外部 python依赖时,在从离线包里面安装库的时候是安装到了哪里? > > > > > > > > > > 我看报错信息: Error [Errno 13] Permission denied: '' while executing command > > python setup.py egg_info > > > > 因为它是在 python setup.py 的时候报的权限问题 > > > > > > > > > > 求大家给看看~~ 感谢 > > > > > > > > > > ------------------ 原始邮件 ------------------ > > > > 发 件 人:magichuang > > > > 发送时间:2020-12-15 14:15:04 > > > > 收 件 人:user-zh > > > > 抄 送: > > > > 主 题:pyflink 引用第三库的文件出现安装权限的问题 > > > > > > > > > > 请教一下大家,在本地直接python demo.py是可以运行的,但是提交到集群就会报错 > > > > flink 版本:1.11 flink on yarn集群模式部署, per-job模式提交,三台机器 > > > > > > > > > > 提交命令:flink run -m yarn-cluster -ynm demo -ys 2 -ytm 2048 -p 2 -py demo.py > > > > > > > > > > 代码截图地址:https://s3.ax1x.com/2020/12/15/rKIwE6.png > > > > > > > > > > 报错截图地址:https://s3.ax1x.com/2020/12/15/rKIlNT.png > > > > > > > > > > requestments.txt: IPy==1.0 cache_dir: IPy-1.00.tar.gz > > > > > > > > > > 自定义udf代码: > > > > @udf(input_types=[DataTypes.STRING()], result_type=DataTypes.STRING()) > > > > def judge_ip(ip): > > > > import IPy > > > > if ip in IPy.IP('192.168.112.0/28'): > > > > return 'in' > > > > return 'out' > > > > > > > > > > > > > > > > 祝好~ > > > > > > -- Best, MagicHuang |
Free forum by Nabble | Edit this page |