部署Hadoop集羣的步驟

1. Hadoop的三種集羣搭建方式

Hadoop支持以下三種模式的Hadoop集羣:

(1)  單機模式

相當於沒有HDFS文件系統,只是支持MapReduce

(2)  僞分佈式模式

相當於只有一個節點的集羣。主從節點都位於同一主機,從MapReduce層面來看,也就是Jobtracker與TaskTracker位於同一節點;從文件系統的角度來看,也就是NameNode與DataNode位於同一節點;

(3)  完全分佈式模式

主從節點分開的完全分佈式模式。

 

2. 安裝包準備

需要安裝包:

(1)    jdk-6u31-linux-x64-rpm.bin  (JDK至少要求1.5.x以上的版本)

(2)    hadoop-0.20.1.tar.gz  ( Hadoop的版本,建議選擇至少此版本以上的Hadoop版本)

一般的機器上已經安裝了Openssh了,因而不需要再安裝SSH相關的包。這三個組件在所有的節點上都要事先安裝好。

       這裏使用三臺機器搭建Hadoop環境。Name Node節點的主機名爲namenode,Data Node節點的主機名分別爲datanode1和datanode2.
        解釋一下名詞:
NameNode:Hadoop集羣的主節點的俗稱,它是HDFS文件系統的管理者,存儲HDFS文件系統的元數據並管理HDFS文件系統;
DataNode:Hadoop集羣的從節點的俗稱,它是HDFS文件系統存儲的基礎。存儲HDFS文件系統的實際數據;
        關於Hadoop的其他名詞的詳細解釋,我會在後續將陸續發出的博文中詳細說明,敬請各位看官留意!

3. 操作系統配置

1.     新建用戶。在 HDFS 文件系統中的每個節點(包括 namenode 節點和 datanode 節點)上,新建 hdfs 用戶,並保證 hdfs 用戶的當前目錄一致。

(1)    必須使用useradd hdfs –m 創建,否則不會再home目錄下創建對應的用戶目錄;

(2)    Passwd hdfs命令爲hdfs用戶設置密碼;
Hadoop一般推薦不使用Root用戶搭建集羣,但實際上用root搭建集羣也沒多大關係,我後來使用的Hadoop集羣都直接使用root用戶的。如果使用root用戶權限來搭建Hadoop集羣,那這一步就可以省略掉:

2.     HDFS 中的節點配置 在 root 用戶中輸入命令 yast ,使用 yast 工具。 Network Devices  >Network settings — >Hostname/DNS

(1)    namenode 節點。 hostname 修改爲“namenode”,domian name修改爲“hdfs”;

(2)    datanode 節點。 hostname 修改爲“datanodeXXX”,domian name 修改爲“ hdfs ”,其中“ XXX ”最好爲該節點的編號。
使用其他方式修改主機名也是可以的,這裏僅是其中一種方法,但是要確保修改的持久有效性,必須是通過配置文件的修改。

3.     HDFS 中的每個節點添加通訊對方主機名(可以列出包括自己在內的所有節點)。即在/etc/hosts文件中加入如下內容:

127.0.0.1             localhost

128.5.150.159   datanode1     

128.5.150.81    datanode2     

128.5.150.57    namenode         

     

4. 安裝JDK

Hadoop 是基於 Java 編寫的,爲了運行 HDFS 文件系統,同時也爲了後續的開發,需要安裝 JDK,而且版本要求1.5.x以上 

1.     切換到 root 用戶,並將安裝包jdk-6u31-linux-x64-rpm.bin拷貝至 /usr/local/ 目錄, chmod 755 使 root 用戶獲得執行安裝包的權限。

2.     執行./ jdk-6u31-linux-x64-rpm.bin開始安裝,提示輸入Enter時敲回車鍵,安裝結束。
如果使用的安裝包爲rpm,可以直接使用rpm命令安裝,更爲方便。

3.     配置 JAVA 環境在 /etc/profile 文件尾添加三項 :

export JAVA_HOME=/usr/java/jdk1.6.0_31

export CLASSPATH=/use/java/jdk1.6.0_31/lib:/usr/java/jdk1.6.0_31/jre/lib:$CLASSPATH

export PATH=/usr/java/jdk1.6.0_31/bin:/usr/java/jdk1.6.0_31/jre/bin:$PATH

4.     在 root 用戶中, chmod 755 /etc/profile ,使普通用戶獲得對該文件的執行權限。在 hdfs 的登錄會話中,執行“ . /etc/profile”( “ ”與“ ”之間有空格)使修改生效,使用 echo 命令確認這三項設置是否成功。

5. 配置 SSH 服務

注意:以下的操作全部由hdfs用戶進行,非root用戶進行。如果是以root用戶的權限來部署Hadoop,那麼對應的用戶就是root用戶

在 namenode 節點,使用 ssh 工具生成公鑰 私鑰對,並把公鑰分發給 datanode 節點,可以實現 datanode 對來自 namenode 節點網絡通訊請求的認證。

1.     首先,在 namenode 節點生成公鑰 私鑰對 :

hdfs@namenode:~> ssh-keygen  -t  dsa  -P  ’’

ssh-keygen 代表生成密鑰 ;-t(注意區分大小寫)表示指定生成的密鑰類型 ;

dsa 是 dsa 密鑰認證的意思,即密鑰類型 ;-P 用於提供密語

Generating public/private rsa key pair.

Enter file in which to save the key (/home/hdfs/.ssh/id_rsa): 按回車

Enter passphrase (empty for no passphrase): 輸入 hdfs 登錄密碼

Enter same passphrase again: 再次輸入 hdfs 登錄密碼

Your identification has been saved in /home/hdfs/.ssh/id_rsa.

Your public key has been saved in /home/hdfs/.ssh/id_rsa.pub.

注:其中 id_dsa 存放了產生的私鑰, id_dsa.pub 存放了公鑰。

2.     接着,分發 namenode 節點的公鑰。將 namenode 節點 id_rsa.pub 文件中的內容複製到所有節點的 /home/h/.ssh/authorized_keys 文件中。

·         namenode 節點:

o    authorized_keys 不存在。執行命令 cp id_rsa.pub authorized_keys 

o    authorized_keys 存在。執行命令 cat  id_rsa.pub >> authorized_keys 

·         datanode 節點:

o    在 namenode 節點中,對每一臺 datanode 節點,執行命令 scp id_dsa.pub datanode205:/home/hdfs/.ssh/

o    在 datanode 節點,仿照 namenode 節點的處理方法,將 namenode 節點的公鑰拷貝到 authorized_keys 文件中。

3.     在每臺機器上chmod 644 authorized_keys。這一步非常關鍵,必須保證authorized_keys只對其所有者有讀寫權限,其他人不允許有寫的權限,否則SSH可能不會工作的。

4.     ssh 驗證。 在 namenode 節點執行 ssh datanode1. ,如果能不輸入密碼能登錄到 datanode1 ,則說明安裝成功。

6. 安裝與配置Hadoop

6.1 安裝Hadoop

在 namenode 節點 中,將 hadoop-0.20.1.tar.gz ,解壓到 /home/hdfs/ 目錄下即可。

6.2 namenode 節點配置

 namenode 節點的 hadoopconf 目錄下 。

6.2.1   hadoop-env.sh文件配置

在文件中加入:

export JAVA_HOME=“你的Java 安裝地址”,我這裏是/usr/java/jdk1.6.0_31

export JAVA_HOME=/usr/java/jdk1.6.0_31

6.2.2 core-site.xml 文件配置

core-site.xml文件中的兩個<configuration>中添加以下兩段:

1.文件系統的名稱。配置 HDFS 文件系統外部訪問地址,即 namenode 節點 IP 以及訪問端口號。

<property>

  <name>fs.default.name</name>

  <value>hdfs://namenode:9100</value>

 </property>

2.配置Hadoop數據塊存儲目錄:

<property>

  <name>hadoop.tmp.dir</name>

  <value>/home/hdfs/hadoopdatastore</value>

  <description>A base for other temporary directories.</description>

</property>



6.2.3 hdfs-site.xml 文件配置。

配置上傳文件備份的份數,不能超過 datanode 節點個數,默認爲 3 個。  <name>dfs.replication</name>

<value>3</value>

<description>Default block replication. The actual number of replications can be specified when the file is created. The default is used if replication is not specified in create time.</description>

</property>



6.2.4 mapred-site.xml文件配置

在文件中配置如下內容:

<property>

    <name>mapred.job.tracker</name>

   <value>namenode:9200</value>

</property>



6.2.5 masters 文件配置

修改文件中的localhostnamenode節點的主機名“ namenode ”。


6.2.6 slaves 文件配置

修改文件中的localhostdatanode節點的主機名“datanode1”“datanode2”,每行一個主機名。

6.3 Datanode節點配置

在 namenode 節點,依次執行命令 scp -r hadoop-0.21.0/  datanodeX:/home/hdfs/ ,將 namenode 節點的安裝文件複製到每一個datanode 節點。

7. 啓動與停止 Hadoop

1.先格式化namenode節點,在Namenode節點執行如下命令:

bin/Hadoop NameNode -format

2.然後簡單啓動所有守護:

bin/start-all.sh

3.查看集羣狀態,驗證安裝部署Hadoop成功

Hadoop dfsadmin -report

或者通過 以下的方式產看集羣狀態。在集羣中的任意節點上打開瀏覽器,分別輸入網址:

http://namenode:50030 (MapReduceWeb頁面)

http://namenode:50070 (HDFSWeb頁面)

如果都能查看,說明 Hadoop 已經安裝成功。

4. 停止Hadoop:

bin/stop-all.sh


原文地址:http://blog.chinaunix.net/uid-28989651-id-3842966.html
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章