集羣環境配置遇到的問題(隨時更新)

公司給分配了3臺新的虛擬機,打算從頭配置一下zookeeper,kafka,storm,hadoop,hbase的環境。html

(之後配置mongodb,spark的時候,在陸續更新,目前(2016/4/21)只接觸這麼多)java

配置的過程當中發生了一些問題。這裏共享一下筆記。固然,我作配置的時候的原則是:node

只配置知道的,不知道的就不去配置。雖然會發生問題,可是在解決問題的過程當中,能達到學習的目的。linux

因此,我在配置的過程當中,才發生了下面這麼多的弱智的問題。略有愧疚。因此,每每前期要比別人花上更多的時間和精力web

 

-----------------------mongodb

軟件版本:(不一樣版本的問題有可能不同,這裏的解決方法僅供參考,出現問題概不負責apache

【zookeeper】:zookeeper-3.4.6.tar.gz分佈式

【kafka】:kafka_2.9.2-0.8.1.1.tgzoop

【storm】:apache-storm-0.9.5.tar.gz學習

【hadoop】:hadoop-2.7.1.tar.gz

【hbase】:hbase-1.2.1-bin.tar.gz

-----------------------

 

(1)查看zookeeper.out的日誌發現了以下錯誤。

後來發現是個人配置文件中,將dataDir的路徑寫錯了,修改以後就再也不出現這個錯誤。

這裏其實只是個人一個最單純的錯誤,留下這個錯誤的目的是:養成查看日誌的習慣。大多數問題經過查看日誌是能夠找到緣由的。

 

(2)查看zookeeper.out的日誌發現了以下錯誤。

日誌中提示是端口發生了衝突,嘗試更換了一下端口。問題解決。

大多數狀況下,咱們都會使用zookeeper自帶的端口號,當集羣中啓動的服務不少的時候,是會發生端口號衝突的。

 

(3)hadoop的配置文件不知道該如何配置。無圖

hadoop的集羣構建的時候,基本上都須要配置下面幾個文件:

hadoop-env.sh、core-site.xml、hdfs-site.xml、mapred-site.xml、yarn-site.xml

可是,根據Hadoop的版本不一樣,有可能配置的內容會有些許區別,網上的配置方法也衆說紛紜。

固然,仍是要感謝網上的人能將配置項加上中文翻譯的。

 

我最初配置的時候,是打算參考正確答案(官網),結果官網上羅列了不少的配置項,

後來諮詢了一些大牛獲得以下結論:(固然,這個結論仍是須要驗證的)

①、官網上的配置項是一個「合集」,每一項都介紹的很詳細。可是,其實大部分都用不上,最低配其實大部分指定點路徑就好了。

②、除開JAVA_HOME等必須配置的項目以外,即便什麼都不配,按理說也能夠啓動起來。

總結來講:配置文件須要按需配置

 

(4)中止hadoop的時候出現"「no datanode to stop"的錯誤

網上大概有三個方法來解決這個問題,我這裏偷懶羅列一下。我此次是用第③種方法解決的。

 

【第一種解決方法】

①、刪除「/usr/hadoop/tmp」裏面的內容:rm -rf /usr/hadoop/tmp

②、從新建立「/usr/hadoop/tmp」文件夾。

③、刪除「/tmp」下以「hadoop」開頭文件。

④、從新格式化hadoop:hadoop namenode -format

⑤、從新啓動hadoop

 

【第二種解決方法】

修改每一個Slave的namespaceID,使其與Master的namespaceID一致。

或者

修改Master的namespaceID使其與Slave的namespaceID一致。

Master的「namespaceID」位於「/usr/hadoop/tmp/dfs/name/current/VERSION」文件裏面,

Slave的「namespaceID」位於「/usr/hadoop/tmp/dfs/data/current/VERSION」文件裏面。

 

【第三種解決方法】

在從新格式化分佈式目錄及對應文件時,須要將NameNode及DataNode上所配置的dfs.name.dir對應的路徑刪掉或移除,不然hadoop沒法正常工做。

根據某資料所說的,這是爲了不因爲格式化而刪掉已有且有用的的hdfs數據,因此格式化前dfs.name.dir對應的路徑應當是不存在的。

 

(5)中止hadoop的時候出現"no nodemanager to stop"的錯誤

網上找到了一篇很牛的博客(不知道是否是原創)

http://www.codeweblog.com/%E8%A7%A3%E5%86%B3%E5%85%B3%E9%97%ADhadoop%E6%97%B6no-namenode-to-stop%E5%BC%82%E5%B8%B8/

看了這篇博客以後,總算知道了PID的意義和配置的必要性。配置一下以後,果然解決了。

我修改了兩個文件的PID的保存位置:

①、hadoop-env.sh

②、yarn-env.sh

須要注意如下兩點:

一、hadoop-env.sh中已經郵PID_DIR的屬性了,修改它的值就能夠,yarn-env.sh須要本身追加屬性

二、記住要先關閉Hadoop再修改,否則你修改完又沒法關閉了。

 

(6)nodemanager啓動後一段時間自動關閉

略有感慨,老是有大牛可以寫出很是透徹的分析。此次也找到了一篇很好的博客:

http://my.oschina.net/u/1451042/blog/223235

按照博客上的說法,若是不在yarn-site.xml中追加yarn.resourcemanager.hostname,

nodemanager啓動後要經過心跳機制按期與RM通訊,不然RM會認爲NM死掉,會中止NM的服務。

以下如所示,修改yarn-site.xml後,問題解決。

 

(7)HBase的regionServer沒法經過Master節點啓動

現象以下圖所示,Master節點到時能夠啓動了,Slave節點未能與Master一同啓動。

下圖中左面是Master節點的進行狀態,右面是Slave節點的進程狀態。

 

緣由是hbase-site.xml中【hbase.cluster.distributed】屬性沒有配置。

若是不設置這個屬性,就不能構成徹底集羣模式。像下圖所示追加屬性以後,ReginServer正常啓動。

 

(8)HBase的RegionServer過會就自動關閉

按照上述問題6中配置完成以後,過了一會我又去看了一下進程狀態,發現Slave節點的RegionServer進行忽然消失了。

經過問題1養成了查看Log的好習慣)將原來的Log日誌所有刪除掉,從新啓動Hbase,嘗試實時監控Slave端的Log日誌,

發現Log中出現大量的下面的日誌:

 

從Log中能看出來,貌似一直在嘗試與ZK集羣建創建鏈接,但是鏈接不上。因而乎,想到了配置文件中的須要追加zookeeper的配置。

向下面這樣修改以後,再次監控上面的Log,發現不在出現這個問題了。

注意:在配置zookeeper的地址的時候,若是不寫明後面的端口號,默認爲2181,因爲我修改過默認端口號,因此必須寫明。

若是沒有修改過端口號,value中寫[master,slave1,slave2]或者[192.168.1.179,192.168.1.180,192.168.1.181]均可以。

 

另外有一點也須要注意,若是須要zookeeper和hbase分別單獨啓動,不須要Hbase啓動的時候自動去啓動zookeeper時,

須要在hbase-env.sh的屬性【HBASE_MANAGES_ZK】設置爲false。默認是true的。修改後以下:

 

(9)啓動hadoop的時候,老是提示下面的警告

在公司的時候,使用的版本是2.7.1沒有出現這個問題,週末在家搞的時候,使用的是本身機器上的虛擬機,

hadoop的版本爲2.5.1,就會出現這個問題。

在網上查看了一下相關信息,說是因爲本地庫沒有加載成功的緣由,使用hadoop checknative查看了一下,確實是有問題。

比較蛋疼的是,在網上找到的文章中,都是說在hadoop-env.sh中加入如下下面配置就能夠解決。

export HADOOP_OPTS="-Djava.library.path=${HADOOP_HOME}/lib/"

結果嘗試了幾回以後沒有效果。開啓hadoop的debug模式以後,檢測了一下啓動Log。有以下提示:

說明系統中的glibc的版本和libhadoop.so須要的版本不一致致使。查看一下系統的libc版本。顯示版本爲2.12

*後來在網上找到一個與我同樣的問題的博客:http://blog.sina.com.cn/s/blog_4eca88390102vn86.html

到網站【http://ftp.gnu.org/gnu/glibc/】上下載【glibc-2.14.tar.bz2】和【glibc-linuxthreads-2.5.tar.bz2】上傳到Linux上。

(待更新)

 

--END--

相關文章
相關標籤/搜索