天天看點

hadoop分布式叢集搭建

終于要開始玩大資料了,之前對haoop生态幾乎沒有太多的了解,現在趕鴨子上架,需要完全使用它來做資料中心,這是我的haoop第一篇文章,以後估計會寫很多大資料相關的文章。另外有大資料實踐經驗的網友請聯系我,有問題請教謝謝!

Hadoop的搭建有三種方式,單機版适合開發調試;僞分布式版,适合模拟叢集學習;完全分布式,生産使用的模式。這篇檔案介紹如何搭建完全分布式的hadoop叢集,一個主節點,三個資料節點為例來講解。

1、軟體版本

四台伺服器配置,系統:centos6.5、記憶體:1G、硬碟:20G

四台伺服器配置設定的IP位址:192.168.0.71/72/73/74

規劃:71用作主節點用作hadoop-master,其它三台為資料節點72、73、74用作hadoop-salve1~3

jdk和生成保持一緻使用1.7版本

2、host配置和主機名(四台)

修改四台伺服器的hosts檔案

<code>vim /etc/hosts</code>

分别斯塔伺服器的主機名:HOSTNAME,master為例說明

<code>vi /etc/sysconfig/network</code>

執行<code>reboot</code>後生效,完成之後依次修改其它salve伺服器為: hadoop-slave1~3。

3、伺服器安裝jdk(四台)

建議使用yum安裝jdk,也可以自行下載下傳安裝

配置環境變量,修改配置檔案<code>vim /etc/profile</code>

使用souce指令讓立刻生效

一、首先關閉四台伺服器的防火牆和SELINUX

檢視防火牆狀态

關閉防火牆

關閉SELINUX後,需要重新開機伺服器

二、免密碼登入本機

下面以配置hadoop-master本機無密碼登入為例進行講解,使用者需參照下面步驟完成h-salve1~3三台子節點機器的本機無密碼登入;

1)生産秘鑰

2)将公鑰追加到”authorized_keys”檔案

3)賦予權限

4)驗證本機能無密碼通路

最後,依次配置h-salve1~3無密碼通路

二、hadoop-master本機無密碼登入hadoop-slave1、hadoop-slave2、hadoop-slave3,以hadoop-master無密碼登入hadoop-slave1為例進行講解:

1)登入hadoop-slave1 ,複制hadoop-master伺服器的公鑰”id_rsa.pub”到hadoop-slave1伺服器的”root”目錄下。

2)将hadoop-master的公鑰(id_rsa.pub)追加到hadoop-slave1的authorized_keys中

3)在 hadoop-master上面測試

三、配置hadoop-slave1~hadoop-slave3本機無密碼登入hadoop-master

下面以hadoop-slave1無密碼登入hadoop-master為例進行講解,使用者需參照下面步驟完成hadoop-slave2~hadoop-slave3無密碼登入hadoop-master。

1)登入hadoop-master,複制hadoop-slave1伺服器的公鑰”id_rsa.pub”到hadoop-master伺服器的”/root/”目錄下。

2)将hadoop-slave1的公鑰(id_rsa.pub)追加到hadoop-master的authorized_keys中。

3)在 hadoop-slave1上面測試

依次配置 hadoop-slave2、hadoop-slave3

到此主從的無密登入已經完成了。

1、hadoop-master上 解壓縮安裝包及建立基本目錄

2、 配置hadoop-master的hadoop環境變量

1)配置環境變量,修改配置檔案<code>vi /etc/profile</code>

使得hadoop指令在目前終端立即生效

下面配置,檔案都在:<code>/usr/local/hadoop/etc/hadoop</code>路徑下

2、配置core-site.xml

修改Hadoop核心配置檔案<code>/usr/local/hadoop/etc/hadoop/core-site.xml</code>,通過<code>fs.default.name</code>指定NameNode的IP位址和端口号,通過<code>hadoop.tmp.dir</code>指定hadoop資料存儲的臨時檔案夾。

特别注意:如沒有配置<code>hadoop.tmp.dir</code>參數,此時系統預設的臨時目錄為:<code>/tmp/hadoo-hadoop</code>。而這個目錄在每次重新開機後都會被删除,必須重新執行format才行,否則會出錯。

3、配置hdfs-site.xml:

修改HDFS核心配置檔案<code>/usr/local/hadoop/etc/hadoop/hdfs-site.xml</code>,通過<code>dfs.replication</code>指定HDFS的備份因子為3,通過<code>dfs.name.dir</code>指定namenode節點的檔案存儲目錄,通過<code>dfs.data.dir</code>指定datanode節點的檔案存儲目錄。

4、配置mapred-site.xml

拷貝mapred-site.xml.template為mapred-site.xml,在進行修改

5、配置yarn-site.xml

6、配置masters檔案

修改<code>/usr/local/hadoop/etc/hadoop/masters</code>檔案,該檔案指定namenode節點所在的伺服器機器。删除localhost,添加namenode節點的主機名hadoop-master;不建議使用IP位址,因為IP位址可能會變化,但是主機名一般不會變化。

7、配置slaves檔案(Master主機特有)

修改<code>/usr/local/hadoop/etc/hadoop/slaves</code>檔案,該檔案指定哪些伺服器節點是datanode節點。删除locahost,添加所有datanode節點的主機名,如下所示。

下面以配置hadoop-slave1的hadoop為例進行示範,使用者需參照以下步驟完成其他hadoop-slave2~3伺服器的配置。

1)複制hadoop到hadoop-slave1節點

登入hadoop-slave1伺服器,删除slaves内容

2)配置環境變量

使得hadoop指令在目前終端立即生效;

依次配置其它slave服務

1、格式化HDFS檔案系統

進入master的~/hadoop目錄,執行以下操作

格式化namenode,第一次啟動服務前執行的操作,以後不需要執行。

2、然後啟動hadoop:

3、使用jps指令檢視運作情況

4、指令檢視Hadoop叢集的狀态

通過簡單的jps指令雖然可以檢視HDFS檔案管理系統、MapReduce服務是否啟動成功,但是無法檢視到Hadoop整個叢集的運作狀态。我們可以通過<code>hadoop dfsadmin -report</code>進行檢視。用該指令可以快速定位出哪些節點挂掉了,HDFS的容量以及使用了多少,以及每個節點的硬碟使用情況。

輸出結果:

5、hadoop 重新開機

在搭建完成啟動的時候,發生過兩個錯誤:

1、 xxx: Error: JAVA_HOME is not set and could not be found

這個錯誤意思沒有找到jdk的環境變量,需要在hadoop-env.sh配置。

2、The authenticity of host '0.0.0.0 (0.0.0.0)' can't be established.

解決方案關閉SELINUX

參考:

<a href="http://www.linuxidc.com/Linux/2015-03/114669p4.htm">Hadoop之完全分布式環境搭建</a>