近期因为实验需要,调用pyspark,但是原有的ambari2.4+hdp2.7集群默认安装的spark版本为1.0,同时centos7默认安装的python版本为2.7.5,考虑所有人员到使用的需要,spark和python都需要升级,python要到升级到3,spark要升级到2,持续1周的时间,弄得精疲力尽,最后还是安装完整的ambari2.7.3+hdp3.1.40集群,再在centos7(1908)上安装python3,python2和python3同时并存,才解决了问题。
特记录如下:
1、在ambari2.4+hdp2.7的基础上,利用ambari-server升级spark1到spark2非常便利,一次成功;
2、在centos7上安装python3与python2并存,也非常容易;
3、在上述ambari2.4上的spark2集群上修改spark2的默认python版本为python3,无论如何修改(网上资料很多),均未成功;
4、保存原有集群数据,重新安装ambari2.7.3+hdp3.1.40集群(参考链接:https://www.cnblogs.com/echoty/p/11338030.htmlhttps://blog.csdn.net/z3225167/article/details/92803720),官方安装说明(https://docs.cloudera.com/HDPDocuments/Ambari-2.7.3.0/bk_ambari-installation/content/mmsr_max_open_file_reqs.html)也很容易成功;其中因为采用了IIS作为web服务器提供本地源,有两个注意事项需要高度关注,否则中途很容易出错,因为找不到相关安装文件,详见(https://mp.csdn.net/console/editor/html/105588948)
5、在新的集群上只需要修改/etc/spark2/conf/spark-env.sh文件,加上export PYSPARK_PYTHON=/usr/bin/python3,当然前提是已经安装python3,并建立了软连接。或者是在/etc/profile文件后面加上export PYSPARK_PYTHON=/usr/bin/python3(注意要source一下),均能成功。
6、在新的集群上,默认安装hadoop使用hdfs用户,所以运行pyspark时因为要读写hdfs文件,需要切换到hdfs(su hdfs)用户调用pyspark。
集群版本信息如下:
基于python3运行spark2.3成功: