CDH集群升级Python3异常问题分析

温馨提示:如果使用电脑查看图片不清晰,可以使用手机打开文章单击文中的图片放大查看高清原图。

Fayson的github: https://github.com/fayson/cdhproject

提示:代码块部分可以左右滑动查看噢

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: can't 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 doesn't 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实操(gh_c4c535955d0f)

原文发表时间:2018-07-20

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏ytkah

wordpress无法安装这个包。: PCLZIP_ERR_MISSING_FILE (-4) : Missing archive file 'C:\WINDOWS\TEMP/wordpress-4.

朋友的wp博客好久没管理了,让ytkah帮忙打理一下,进到后台发现版本还是3.9的,那是比较早以前的版本了,早该升级了。 在升级wordpress时出现以下错误...

3548
来自专栏芋道源码1024

分布式作业 Elastic-Job-Lite 源码分析 —— 注册中心监听器

在《Elastic-Job-Lite 源码分析 —— 作业初始化》「3.2.4」注册作业启动信息,我们看到作业初始化时,会开启所有注册中心监听器:

1914
来自专栏依乐祝

Net Core集成Exceptionless分布式日志功能以及全局异常过滤

这篇文章有一部分内容翻译自官方文档,[点我阅读][https://github.com/exceptionless/Exceptionless.Net/wiki...

1012
来自专栏张善友的专栏

在 Windows 上安装Rabbit MQ 指南

rabbitMQ是一个在AMQP协议标准基础上完整的,可服用的企业消息系统。他遵循Mozilla Public License开源协议。采用 Erlang 实现...

2209
来自专栏智能大石头

NewLife.Net——开始网络编程

1333
来自专栏编程思想之路

Android四大组件完全解析(一)---Activity

本文参考\android\android\frameworks\base\core\java\android\app\Activity.java文件中的类注释,...

44910
来自专栏互联网技术栈

分布式任务调度组件 LTS 用户文档

LTS(light-task-scheduler)主要用于解决分布式任务调度问题,支持实时任务,定时任务和Cron任务。有较好的伸缩性,扩展性,健壮稳定性而被多...

2237
来自专栏柠檬先生

vue-cli#2.0 webpack 配置分析

目录结构: ├── README.md ├── build │ ├── build.js │ ├── check-versions.js │ ├── dev-c...

4005
来自专栏Albert陈凯

Hadoop、Hbase、Hive版本兼容性

当我们想整合hadoop,hbase,hive,zookeeper的时候,如果刚入门,可能认为这是比较简单的问题。但是当你自己真正想整合的时候,却会遇到很多的问...

1.2K7
来自专栏NetCore

Identity Service - 解析微软微服务架构eShopOnContainers(二)

接上一篇,众所周知一个网站的用户登录是非常重要,一站式的登录(SSO)也成了大家讨论的热点。微软在这个Demo中,把登录单独拉了出来,形成了一个Service,...

2625

扫码关注云+社区

领取腾讯云代金券