HDP錯誤彙總

前言

上一篇《HDP 2.5安裝搭建部署》主要寫了一些關於安裝的步驟,但不是每次都能順利的安裝成功了,不可避免總是會報很多錯誤,這裏總結一些錯誤的解決方法。

MySQL

mysql數據庫驅動找不到錯誤
以下命令默認以root用戶運行

# yum install mysql-connector-java -y
# ambari-server setup --jdbc-db=mysql --jdbc-driver=/usr/share/java/mysql-connector-java.jar

Sqoop2

使用基於HDP2.5使用sqoop2抽取數據庫表數據到HDFS上面也會遇到很多問題。這裏記錄一下。
啓動報錯
org.apache.sqoop.common.SqoopException: CLIENT_0004:Unable to find valid Kerberos ticket cache (kinit)

這個是因爲sqoopUrl設置的問題,原來設置爲:
http://master:12000/sqoop
需要改爲
http://master:12000/sqoop/
很坑,就差一個斜槓。

mapreduce

啓動報錯
Caused by: java.net.URISyntaxException: Illegal character in path at index 11: /hdp/apps/${hdp.version}/mapreduce/mapreduce.tar.gz#mr-framework

這個是因爲mapreduce框架路徑設置的問題,進入HDP Web控制檯,點擊右邊的
MapReduce2——>Configs——>Advanced展開mapred-site屬性設置,
找到mapreduce.application.framework.path屬性,將其值由/hdp/apps/${hdp.version}/mapreduce/mapreduce.tar.gz#mr-framework
改爲/usr/hdp/${hdp.version}/hadoop/mapreduce.tar.gz#mr-framework
然後將在HDFS上創建對應路徑目錄,如:/usr/hdp/2.6.0.3-8/hadoop/
之後將mapreduce.tar.gz這個文件上傳到該目錄下
最後在重啓服務即可。
如果還不行的話,可以嘗試將hdp.version改爲實際的版本名,並且重啓ambari-server。

yarn

啓動sqoop2報錯
Caused by: org.apache.hadoop.ipc.RemoteException(org.apache.hadoop.security.authorize.AuthorizationException): User: yarn is not allowed to impersonate lu
這個是因爲hadoop2之後的權限問題導致,本地提交的job想要yarn代理來跑,但是yarn又不允許給主機用戶代理,所以就會報這個錯誤了,進入HDP Web控制檯
HDFS——>Configs——>Advanced
在下面找到Custom core-site展開,添加以下屬性配置,然後重啓服務即可

hadoop.proxyuser.yarn.hosts=*
hadoop.proxyuser.yarn.groups=*

Oozie

問題1

使用Oozie調度sqoop的時候需要注意jobTracker的值不一定就是8021或8032,網上和官方文檔有有一定的誤導性,如果使用的是HDP2.5的話,其集成的是Hadoop 2.x,那麼jobTracker的值其實是yarn.resourcemanager.address對應的值,在HDP2.5中它是master:8050,在CDH中默認是8032。master爲hadoop ResourceManager host主機名,在hdp web控制檯可通過
YARN——>Configs——>Advanced——>Advanced yarn-site,然後展開找到
yarn.resourcemanager.address屬性即可。

問題2

Oozie調度Sqoop1的時候mapreduce應用可以成功跑完,但是最後job卻被killed掉了,報錯信息如下:
Launcher ERROR, reason: Main class [org.apache.oozie.action.hadoop.SqoopMain], exit code [1]
很簡短,但是找半天最後很無語。這個問題可能跟MySQL的jdbc驅動版本有關,一開始使用的是5.1.25,如下:
mysql-version
後來全部替換爲5.1.29然後重啓服務就好了。。
替換的地方有如下:

中間數字是hdp的版本,可根據不同的版本號進行調整
/usr/hdp/2.5.3.0/oozie/oozie-server/webapps/oozie/WEB-INF/lib/
/usr/hdp/2.5.3.0/oozie/libext/
/usr/hdp/2.5.3.0/oozie/share/lib/oozie/
/usr/hdp/2.5.3.0/oozie/share/lib/sqoop/
/usr/hdp/2.5.3.0/sqoop/lib/

下面兩個路徑是在hadoop hdfs文件系統上的路徑,需要上傳新的jar包到該路徑
hdfs://e5:8020/user/oozie/share/lib/lib_20170412010303/oozie/
hdfs://e5:8020/user/oozie/share/lib/lib_20170412010303/sqoop/

我這裏jar包是通過Maven來下載的~

問題3

調度啓動sqoop job,出現類找不到異常,報錯信息如下:
Launcher exception: java.lang.ClassNotFoundException: Class org.apache.oozie.action.hadoop.SqoopMain not found

這裏是有一個jar包沒有上傳到hdfs上面,找到下面這個jar包:
/usr/hdp/2.5.3.0/oozie/libserver/oozie-sharelib-sqoop-4.2.0.2.6.0.3-8.jar
然後將其上傳到
hdfs://e5:8020/user/oozie/share/lib/lib_20170412010303/oozie/
然後刷新sharelib或者重啓服務

刷新命令
# oozie admin -oozie http://e5:11000/oozie -sharelibupdate

這裏建議將oozie相關的sharelib jar包都上傳上去,可能後面會有用到,避免再次報這個錯。

HBase

集羣HBase RegionServers服務啓動報錯:

問題1

Caused by: ClassNotFoundException: org.apache.hadoop.fs.FileSystem

這個是因爲沒有將hadoop-common.jar添加到hbase的classpath中,導致的錯誤。
登陸HDP web控制檯,點擊左邊的HBase——>Configs——>Advanced
展開Advanced hbase-env找到# Extra Java CLASSPATH elements. Optional.
在下面添加以下內容:

export HBASE_CLASSPATH=${HBASE_CLASSPATH}:/usr/hdp/current/hadoop-client/hadoop-common.jar

重啓HBase服務即可。

問題2

Caused by: java.lang.ClassNotFoundException: org.apache.hadoop.util.PlatformName

這個問題與上面的類似,同樣是classpath缺少jar包。
步驟如上,添加hadoop-auth.jar即可。

export HBASE_CLASSPATH=${HBASE_CLASSPATH}:/usr/hdp/current/hadoop-client/hadoop-common.jar:/usr/hdp/current/hadoop-client/hadoop-auth.jar

問題3

Caused by: java.io.IOException: No FileSystem for scheme: hdfs

問題原因同上,添加hadoop-hdfs.jar到classpath即可。

export HBASE_CLASSPATH=${HBASE_CLASSPATH}:/usr/hdp/current/hadoop-client/hadoop-common.jar:/usr/hdp/current/hadoop-client/hadoop-auth.jar:/usr/hdp/current/hadoop-hdfs-client/hadoop-hdfs.jar

Hue

hdp集成hue後,oozie Dashboard 打開報錯:
User [hue] not defined as proxyuser
這個需要Oozie添加hue用戶代理,
Oozie——>Configs——>Custom oozie-site
添加以下屬性,重啓Oozie服務即可:

oozie.service.ProxyUserService.proxyuser.hue.groups=*
oozie.service.ProxyUserService.proxyuser.hue.hosts=*

待續,後面再慢慢更新

發佈了84 篇原創文章 · 獲贊 71 · 訪問量 43萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章