天天看點

Cloudera Manager搭建叢集環境過程中部分錯誤解決

Cloudera Manager搭建叢集環境過程中部分錯誤解決

前一陣子在公司的幾台測試機上搭建cdh的叢集環境,過程中遇見了不少問題,這裡記錄一下:

一、版本資訊:

版本 安裝方式
伺服器 5台(1master, 4slave) * CentOS Linux release 7.3.1611 (Core) \
Cloudera Manager Cloudera Express 5.7.4 .parcel 檔案離線安裝
Java jdk 1.8.0_60 .tar.gz 二進制檔案解壓安裝
MySQL mysql 5.7.17 .tar.gz 二進制檔案解壓安裝
NTP ntp-4.2.6p5 yum安裝

二、安裝過程

參考網上的教程,這裡不複制粘貼了,給出幾個連結參考一下:

https://blog.csdn.net/myself_way/article/details/54864651

https://blog.csdn.net/a921122/article/details/51939692

https://blog.csdn.net/mao_2110901055/article/details/65629532

https://blog.csdn.net/it_taojingzhan/article/details/51537258

這裡說一下,有些教程上會說要修改/etc/sysconfig/network這個檔案,但是我這裡是沒有修改的,隻在/etc/hosts檔案中配置了主機名和ip的映射。其實一開始也編輯了network檔案,在裡面修改了主機名,但是導緻一台測試機上的gitlab無法使用,于是5台上就都不再修改network檔案了,是以關于網絡配置這塊還是要看自己的情況具體配置,多嘗試吧(做為一隻linux菜鳥,其實某些配置為什麼要配我也不是很清楚(..•˘_˘•..),各種教程裡說的也不一樣…)。

三、錯誤問題

由于這篇文章是安裝過後一陣子寫的,是以當時有些錯誤自己并沒有截圖,以下部分截圖來自其他部落格

1、安裝時錯誤

1. 分發parcels到各個節點時,進度卡住,檢視日志,client_configs.py檔案報錯
問題描述:

參考連結貼上,錯誤就不複制粘貼了:https://www.jianshu.com/p/0d70a67b66b2、http://www.aboutyun.com/thread-21557-1-1.html,具體報錯檔案是client_configs.py,詳細路徑在路徑裡有記錄,我的路徑為/opt/cm-5.7.4/lib64/cmf/agent/build/env/lib/python2.7/site-packages/cmf-5.7.4-py2.7.egg/cmf/client_configs.py,

解決方案:

備份一下原檔案,正确的檔案我上傳了,這裡可以下載下傳:https://download.csdn.net/download/sy793314598/10424485

2. 安裝界面中,安裝到spark時報錯,spark安裝找不到JAVA_HOME
Cloudera Manager搭建叢集環境過程中部分錯誤解決
問題描述:

在安裝界面中點開那些下拉箭頭,直接可以打開并檢視對應的日志資訊,日志資訊裡的報錯資訊很明确,如下:

Error: JAVA_HOME is not set and could not be found.

java的環境變量沒有找到,這就很奇怪了,明明配置了,再檢查一下:

echo $JAVA_HOME

,輸出

/usr/lib/java/jdk1.8.0_60

,沒問題啊,于是開始利用搜尋引擎,大緻是說spark在安裝的時候不會去你主機上配置的JAVA_HOME裡去找jdk的環境變量,而是遵循它自己的一個預設路徑,是以如果剛好你配置jdk環境變量是它的預設尋找路徑,那就不會報這個錯,那現在怎麼解決呢,難不成要移動jdk的安裝路徑,這就太繁瑣了。這裡在網上也找到了這個問題,參考連結:https://my.oschina.net/cjun/blog/698250,文章裡面說是用建立軟連接配接的方式,我嘗試了一下,不知道是對這個概念了解的不太對還是哪裡搞錯了,并沒有解決,但是文章裡提供了一個cloudera官網論壇的位址,https://community.cloudera.com/t5/Cloudera-Manager-Installation/Deploy-Client-Configuration-failed-HDFS-YARN/td-p/30089(需要科學上網)這裡面提供了最友善的解決方式。

解決方案:

spark安裝找不到JAVA_HOME,在cdh管理界面中手動指定jdk的安裝路徑即可,截圖如下:

Cloudera Manager搭建叢集環境過程中部分錯誤解決

在右上角的搜尋框裡搜尋,找到Java主目錄的設定項,在裡面添加自己機器上的JAVA_HOME:

Cloudera Manager搭建叢集環境過程中部分錯誤解決

儲存即可。如果是在安裝過程中,建議使用浏覽器的在建立标簽中打開頁面進行設定,免得回不到安裝界面。。。

這裡設定完以後點選重試,會發現之前的錯誤沒了,而換了另一個錯誤,這個就沒有截圖了。。解決方案還是在上面的連結裡,再完成一部操作即可,編輯機器中的/etc/sudoers檔案,在root ALL=(ALL) ALL 這一行的下一行,加入cloudera-scm ALL=(ALL) NOPASSWD: ALL,每台機器都加了,如下:

Cloudera Manager搭建叢集環境過程中部分錯誤解決

再次點選重試,spark成功安裝~

2、在安裝成功後,管理界面中的錯誤

1. DNS解析錯誤的問題
問題描述:

安裝成功後,有一台機器一直報DNS解析錯誤,同時主機名稱顯示為

localhost.localdomain

,但是檢視/etc/hosts檔案,發現配置并沒有錯:

Cloudera Manager搭建叢集環境過程中部分錯誤解決

但是這台機器的主機名在cdh的管理界面中就是顯示不正确。

解決方案:

這裡涉及到的問題其實是centos系統的多個類型的主機名問題,centos中一共有3個類型的主機名:靜态的(static)、瞬态的(transient)、靈活的(pretty),使用hostnamectl指令可以檢視機器的主機名資訊,在正常的機器上檢視:

Cloudera Manager搭建叢集環境過程中部分錯誤解決

而在那台主機名顯示錯誤的機器上檢視,是沒有

Transient hostname:

這一項的,這個可能是同僚進行了什麼設定,導緻這台沒有瞬态主機名,于是cdh中直接讀取了

static hostname

(靜态主機名是在/etc/hostname配置的),是以顯示為

localhost.localdomain

,是以這裡可以使用

hostnamectl --transient set-hostname <host-name>

指令再次設定一下該台機器的主機名,然後重新開機這台節點的cdh服務,等待一會,就會發現管理界面中的所有節點都可以正常解析了。

關于centos中設定主機名,可以參考幾個連結:https://blog.csdn.net/summer_huan/article/details/76104611、http://www.361way.com/centos7-hostnamectl/3816.html

2. hive建表失敗問題
問題描述:

在安裝前的準備工作中,有一步是在mysql中建立了一個hive資料庫,但是在安裝完後,發現hive資料庫中并沒有任何表,此時cdh的管理界面中存在的幾個錯誤包括:

1. This Impala Daemon is not connected to its StateStore…

2. Fail to Inspect Monitor Host…

按照這些錯誤去搜尋引擎裡查,并沒有得出什麼好的解決方案,點開hive的錯誤日志,發現幾個主要的錯誤如下:

1.

org.datanucleus.store.rdbms.exceptions.MissingTableException:Required table missing : "

VERSION

" in Catalog "" Schema"". DataNucleus requires this table to perform its persistenceoperations. Either your MetaData is incorrect, or you need to enable"datanucleus.autoCreateTables"

2.

Required table missing : "

DBS

" in Catalog "" Schema ""...

從錯誤資訊看還是比較明顯,就是找不到需要的資料表,同時提示了可以嘗試開啟autoCreateTables屬性,于是參考:https://blog.csdn.net/nevergiveup54/article/details/50612252 也進行了相應的設定,但是還是沒有效果。

解決方案:

這個問題到最後才發現是個很stupid的問題,在整個安裝過程執行完畢後,cdh的hive的配置裡指向的資料庫是cm,而不是之前建立好的hive庫,這裡不知道是不是在之前的安裝過程中遺漏了什麼設定的地方,冏,将配置裡的資料庫手動改成hive即可:

Cloudera Manager搭建叢集環境過程中部分錯誤解決
Cloudera Manager搭建叢集環境過程中部分錯誤解決

然後可以在管理界面中直接點選重新建立hive的資料表:

Cloudera Manager搭建叢集環境過程中部分錯誤解決

建表成功,等待一小會,就發現上面的幾個錯誤就都消失了,可見一個錯誤引起了多個不同的錯誤。

3. 時間不同步問題

這個問題比較好解決,仔細檢查安裝前是否在全部機器上都安裝并開啟了ntp時間同步服務,并確定配置正确

注:ntp服務需要叢集中的每台機器都開啟

4. 重裝問題

安裝過程中因為一些原因,經曆了删除重裝的過程,重裝的過程中有遇到了兩個錯誤,日志裡的報錯提示比較清晰,大概是file already exist之類的,記不太清了。。。就是原來的一些檔案沒有被清理幹淨,這個删掉就好了,問題不大。

四、tips

1. 使用hadoop api操作hdfs時連接配接的端口号問題

如果單獨安裝apache hadoop,hdfs的namenode服務的端口号預設是9000,而cdh的namenode服務預設的端口号是8022

Cloudera Manager搭建叢集環境過程中部分錯誤解決
2. cdh內建的hadoop的HADOOP_HOME問題

官方論壇上的答案:With CDH4 and CDH5 there’s no longer a ‘HADOOP_HOME’ env-var. It has been instead renamed to ‘HADOOP_PREFIX’, which for a default parcel environment can be set to /opt/cloudera/parcels/CDH/lib/hadoop.

參考連結:http://community.cloudera.com/t5/Cloudera-Manager-Installation/Where-is-HADOOP-HOME-lib-on-CDH-5-0-1-Parcels/td-p/13748

3. 叢集的配置更改後生效時間問題

由于網絡、電腦組態或者一些其他的原因,當調整某些錯誤時,比如前面出現的ntp時間同步問題,在正确啟動了ntp服務後,可能cdh的界面中還是會報紅色的錯誤,這個可能是因為生效有延遲,不要一定認為是解決方案不對,可以稍等一會,再看看錯誤會不會消失。

4. 其他

對于有些報錯,比如上面hive建表失敗的問題,一個錯誤可能會帶來許多其他的錯誤,而直接去搜尋那些錯誤,網上的解決方案可能并不一定是你的問題所在,是以關鍵還是要找到那個最基本的錯誤。

繼續閱讀