CDH集群升级Python3异常问题分析
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了CDH集群升级Python3异常问题分析相关的知识,希望对你有一定的参考价值。
温馨提示:如果使用电脑查看图片不清晰,可以使用手机打开文章单击文中的图片放大查看高清原图。
Fayson的github:
提示:代码块部分可以左右滑动查看噢
1.环境说明
在CDH集群中所有节点/opt/cloudera/anaconda3部署了Python3的安装包,如下描述:
[root@cdh02 ~]# /opt/cloudera/anaconda3/bin/python -V
Python 3.6.5 :: Anaconda, Inc.
[root@cdh02 ~]#
(可左右滑动)
集群配置了Python3的全局变量:
# added by Anaconda3 installer
export PATH="/opt/cloudera/anaconda3/bin:$PATH"
(可左右滑动)
[root@cdh01 ~]# python -V
Python 3.6.5 :: Anaconda, Inc.
(可左右滑动)
集群中为Spark配置了Python3的环境:
export PYSPARK_PYTHON=/opt/cloudera/anaconda3/bin/python
export PYSPARK_DRIVER_PYTHON=/opt/cloudera/anaconda3/bin/python
(可左右滑动)
2.异常描述
为集群配置了Python3的环境后依赖python环境命令使用上出现异常
1.Impala-shell时无法正常连接Impala Daemon节点,报如下错误:
[root@cdh01 ~]# impala-shell -i cdh01.fayson.com:25003
File "/opt/cloudera/parcels/CDH-5.14.2-1.cdh5.14.2.p0.3/bin/../lib/impala-shell/impala_shell.py", line 236
print "Query options (defaults shown in []):"
^
SyntaxError: invalid syntax
[root@cdh01 ~]#
(可左右滑动)
2.Solr命令行创建Collection时异常如下
[root@cdh01 solr-collection]# sh create.sh testcollection
create solr collection
Uploading configs from tmp/testcollection_configs/conf to cdh01.fayson.com:2181/solr. This may take up to a minute.
Error: cant discover Solr URI. Please specify it explicitly via --solr.
[root@cdh01 solr-collection]#
(可左右滑动)
创建Collection脚本如下:
[root@cdh01 solr-test]# more solr-collection/create.sh
#!/bin/sh
ZK="cdh01.fayson.com"
COLLECTION=$1
BASE=`pwd`
SHARD=3
REPLICA=1
echo "create solr collection"
rm -rf tmp/*
solrctl --zk $ZK:2181/solr instancedir --generate tmp/$COLLECTION_configs
cp conf/schema.xml tmp/$COLLECTION_configs/conf/
solrctl --zk $ZK:2181/solr instancedir --create $COLLECTION tmp/$COLLECTION_configs
solrctl --zk $ZK:2181/solr collection --create $COLLECTION -s $SHARD -r $REPLICA
solrctl --zk $ZK:2181/solr collection --list
(可左右滑动)
3.异常分析及处理
1.在Python3环境下使用impala-shell访问Impala Daemon的异常明显提示Python语法问题,在Python3中print输出需要加”()”,而在python2中print输出可以不加“()”,出现python2和python3语法不兼容问题。
2.在python3环境下使用solrctl命令创建Collection时,通过分析solrctl命令实际调用/opt/cloudera/parcels/CDH/lib/solr/bin/solrctl.sh脚本,在该脚本中调用curl命令判断solr server是否可用
在脚本中增加echo输出curl请求地址,将输入的地址在名行执行:
[root@cdh01 solr-collection]# curl -i --retry 5 -s -L -k --negotiate -u : http://cdh02.fayson.com:8983/solr
curl: option --negotiate: the installed libcurl version doesnt support this
curl: try curl --help or curl --manual for more information
[root@cdh01 solr-collection]#
(可左右滑动)
可以看到当前OS安装的libcurl不支持 curl增加--negotiate参数,该问题也是Python版本不兼容问题导致。参https://curl.haxx.se/mail/archive-2013-02/0007.html
3.以上分析均是由于Python3版本与Python2版本不兼容导致,默认impala和Solr命令使用python2版本,所以这里我们需要将Python的全局环境变量删除,不配置python3的全局环境变量即可。
4.修改完成后再次测试上述异常命令,可以正常执行
sorlctl命令正常运行,可以成功的创建Collection
impala-shell命令可以正常访问Impala Daemon节点
4.总结
在CDH集群中需要在我们的应用中使用高版本的Python和Java等环境时,我们尽可能的针对服务进行配置,不要将自己的私有环境变量配置为全局的,因为配置为全局的环境变量,可以能会引发其他服务或命令不可正常运行,在这时又很难发现此类问题。当然我们在使用高版本的环境变量时需要确保相应的服务是支持你需要的版本。
提示:代码块部分可以左右滑动查看噢
为天地立心,为生民立命,为往圣继绝学,为万世开太平。
温馨提示:要看高清无码套图,请使用手机打开并单击图片放大查看。
推荐关注Hadoop实操,第一时间,分享更多Hadoop干货,欢迎转发和分享。
原创文章,欢迎转载,转载请注明:转载自微信公众号Hadoop实操
以上是关于CDH集群升级Python3异常问题分析的主要内容,如果未能解决你的问题,请参考以下文章
spark升级后 集成hbase-1.0.0-cdh5.4.5异常