中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

如何實現Sqoop導入報Zookeeper ConnectionException異常的分析

發布時間:2021-12-23 17:03:00 來源:億速云 閱讀:184 作者:柒染 欄目:大數據

本篇文章為大家展示了如何實現Sqoop導入報Zookeeper ConnectionException異常的分析,內容簡明扼要并且容易理解,絕對能使你眼前一亮,通過這篇文章的詳細介紹希望你能有所收獲。

環境:

CDH 6.3.0

已開啟Kerberos

Java 版本: 1.8.0_181


癥狀表現:

在普通用戶edwuser下,在一臺CDH客戶端節點機器上,執行以下sqoop import命令,將MYSQL數據導入HBASE中:

sqoop import \--connectjdbc:mysql://db01:3306/test?characterEncoding=UTF-8 \--username root \--password mysql \--table cust_info \--hbase-tabletest:cust_info \--column-family cf \--hbase-create-table\--hbase-row-key id \-m 1

執行報錯。卡在了連接Zookeeper這部分,連接被拒絕,拋出ConnectionException異常。

如何實現Sqoop導入報Zookeeper ConnectionException異常的分析


 

分析步驟:

通過日志可以看到Zookeeper連接的地址是127.0.0.1,而非集群上的Zookeeper地址,導致執行失敗。

首先懷疑的是CDH相關角色客戶端配置信息未正常下發,在CM界面對該客戶端節點機器添加了Sqoop Gateway角色,重新下發配置;重試之后依然報同樣的錯誤。

在CDH客戶端節點服務器上,瀏覽/etc/hbase/conf.cloudera.hbase,以及/opt/cloudera/parcels/CDH-6.3.0-1.cdh7.3.0.p0.1279813/etc/zookeeper/conf.dist/等可能存放Zookeeper配置文件的目錄。

查看之后發現所有配置文件都是已經正確下發了的,這說明和集群客戶端配置部署沒有關系。


此時只能換個思路前進,既然配置都正常,那么會不會是普通用戶的問題呢?來試試特權用戶?

切換到root用戶,執行命令,發現可以成功導入,Zookeeper連接地址被正確的讀取!!!

如何實現Sqoop導入報Zookeeper ConnectionException異常的分析

既然客戶端配置下發是正常的,那么原因要么就是因為權限不足(平時普通用戶通常報錯的最大可能性),要么這是配置文件讀的不對(比如用戶讀取的zookeeper配置文件在被定位到了非CDH的配置目錄)。有了思路,開始進行下一步的驗證。


要驗證到底是不是普通用戶的問題?很簡單,再弄一個普通用戶試試就好!


接下來,在另外一臺CDH客戶端節點機器上,使用普通用戶登陸,執行同樣的Sqoop命令,發現也能夠成功導入!!!

對比兩臺客戶端節點機器上,edwuser用戶的環境變量(分別執行printenv獲得這些環境變量):

如何實現Sqoop導入報Zookeeper ConnectionException異常的分析

(用戶的環境變量對比,左側為有問題的機器 ,右側為正常的機器)

發現出問題的那臺機器上,edwuser用戶明確定義了一些看起來命名像是hadoop級別的環境變量到.bashprofile文件,比如....HIVE_HOME變量???

通過搜索關鍵字HIVE_HOME,在一篇關于SQOOP的文章中,發現了這樣的描述:

# Licensedto the Apache Software Foundation (ASF) under one or more# contributor license agreements.  Seethe NOTICE file distributed with# this work for additional information regarding copyright ownership.# The ASF licenses this file to You under the Apache License, Version2.0# (the "License"); you may not use this file except in compliancewith# the License.  You may obtain a copy of theLicense at##     http://www.apache.org/licenses/LICENSE-2.0## Unless required by applicable law or agreed to in writing, software# distributed under the License is distributed on an "AS IS"BASIS,# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express orimplied.# See the License for the specific language governing permissions and# limitations under the License.# includedin all the hadoop scripts with source command# should not be executable directly# also should not be passed any arguments, since we need original $*# SetHadoop-specific environment variables here.#Set pathto where bin/hadoop is available#hadoop的環境信息必須export HADOOP_COMM/hadoop#Set pathto where hadoop-*-core.jar is available#hadoop的mr存放目錄的配置信息必須export HADOOP_MAPRED_HOME=/root/hadoop/tmp/mapred#set thepath to where bin/hbase is available#hbase的配置信息非必須export HBASE_HOME=/root/hbase#Set thepath to where bin/hive is available#hive的配置信息非必須export HIVE_HOME=/root/hive#Set thepath for where zookeper config dir is#export ZOOCFGDIR=

如果是社區版的Sqoop,是可以配置這些環境變量的。但是CDH的配置文件都統一由CM管理和下發,并不需要手工去設置到環境變量中。用戶級環境變量出現這些配置,反而覆蓋了CM下發的客戶端配置。

由于出問題的機器上,設置的用戶環境變量是HIVE_HOME=/opt/cloudera/parcels/CDH/ ,熟悉parcels目錄結構的同學都知道,/opt/cloudera/parcels/CDH/這個目錄的直接層次下,是不存在任何配置文件的,只有繼續往下好幾級的子目錄中才會有配置文件。

所以sqoop執行時,會按照用戶環境變量HIVE_HOME的設置,到/opt/cloudera/parcels/CDH/目錄,試圖讀取配置文件,但沒有讀取到任何配置文件。所以Sqoop只能直接使用Zookeeper Server的默認值127.0.0.1。而客戶端機器上當然不會存在Zookeeper Server,自然出現會拒絕連接拋出異常的問題。


解決方法:

由于當時不知道機器上這個用戶環境變量HIVE_HOME,到底是誰出于什么目的設置的。就沒去直接動用戶環境變量文件。

先運行:

unset HIVE_HOME

來臨時屏蔽HIVE_HOME這個環境變量,再執行sqoop import命令,導入成功。

上述內容就是如何實現Sqoop導入報Zookeeper ConnectionException異常的分析,你們學到知識或技能了嗎?如果還想學到更多技能或者豐富自己的知識儲備,歡迎關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

芦溪县| 大兴区| 荆州市| 融水| 会理县| 水城县| 青阳县| 无锡市| 石狮市| 内丘县| 收藏| 重庆市| 桐柏县| 泰来县| 阿拉尔市| 自贡市| 荣昌县| 互助| 洪江市| 庆城县| 精河县| 泗阳县| 金山区| 东乌珠穆沁旗| 秭归县| 濮阳县| 云浮市| 石首市| 石狮市| 山东| 沅陵县| 集贤县| 什邡市| 介休市| 凯里市| 仙居县| 蒲城县| 慈溪市| 年辖:市辖区| 衢州市| 安义县|