Hadoop 詳細配置步驟

轉自 : http://blog.csdn.net/johnnywsd/article/details/6939520

Hadoop 有三種分佈模式,Standalone-distributemode, Pseudo-distribute mode, Full-distribute.



前期準備工作:

背景:

Fedora 15

兩臺計算機。johnny(10.63.0.230)cloud(10.63.0.17)johnny作爲NamenodeJobTrackercloud作爲DataNodeTaskTracker



1、安裝jdk,配置環境變量



2、安裝Hadoop,配置環境變量



3Hadoop要求集羣計算機上用戶名必須一致,所以現在cloud機上建立一個名爲johnny的用戶。

For hadoop, the accounts should have the same username on all ofthe nodes

但是節點計算機(cloud)無需使用johnny登陸。具體請參考Hadoopin Action第二章。



4、配置SSH(僞分佈、全分佈需要,單機分佈不需要)

(更多關於SSH請看我的博客:http://blog.csdn.net/johnnywsd/article/details/6936069

先對johnny機做如下操作:

修改/etc/hosts 文件

這個文件告訴本主機哪些域名對應那些ip,那些主機名對應哪些

一般情況下hosts文件的每行爲一個主機,每行由三部份組成,每個部份由空格隔開。其中#號開頭的行做說明,不被系統解釋。
第一部份:網絡IP地址;第二部份:主機名或域名;第三部份:主機名別名;

(更多關於/etc/hosts文件請看我的博客http://blog.csdn.net/johnnywsd/article/details/6939217

向此文件中加入:

10.63.0.230 johnny johnny

10.63.0.17 cloud cloud

試一試能否ping通。

$ ping cloud

開啓sshd

#service sshd start

開啓ssh-agent

$ ssh-agent

將私鑰加入到agent

$ ssh-add ~/.ssh/id_sra

(可能需要關閉防火牆 #serviceiptables stop,或者開啓22端口)

生成公鑰:

$ ssh-keygen -t -rsa

一路回車敲到底,不要輸入密碼,否則無法實現免密碼登陸。

生成的公鑰將儲存在~/.ssh/下。有兩個文件id_rsa.pub(公鑰)id_rsa(私鑰)

將公鑰發送給cloud機以便能與其相連:

$ ssh-copy-id johnny@cloud

代碼含義:將自己的公鑰拷貝給cloud(10.63.0.17)上的johnny用戶。(此公鑰內容將寫入cloudjohnny用戶的~/.ssh/authorized_keys中)

在此期間會要求輸入johnny@cloud'spasswordjohnny用戶在cloud這臺機器上的密碼。

(這是一種比較快速的拷貝公鑰的方法,另一種方法請看我的博客http://blog.csdn.net/johnnywsd/article/details/6936069)



試一試能否與其建立鏈接sshjohnny@cloud

斷開鏈接請使用命令:

$ logout



(僞分佈是一臺計算機既當NameNode又當DataNode,既當JobTracker又當TaskTracker,所以僞分佈要求自己能夠ssh連接自己,所以需要將公鑰拷貝給自己,$ssh-copy-idjohnny@localhost,可以試驗一下是否可以登陸自己sshjohnny@localhost,記得logout)



現在可以給 johnny@cloud傳送文件了。使用scp命令(具體使用見下文)。這樣等配置完主機的信息後,可以將整個hadoopjdk目錄傳送給節點計算機(見下文)。



單機分佈模式

無需配置,安裝好Hadoop後默認爲單機分佈模式



僞分佈模式

需要先配置SSH(將自己的公鑰寫入到自己的authorized_keys中)

修改hadoop安裝目錄下conf文件夾中的三個xml文件

core-site.xmlhdfs-site.xmlmapred-site.xml



core-site.xml文件

<configuration>

<property>

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

<value>hdfs://localhost:9000</value>

</property>

</configuration>



hdfs-site.xml文件

<configuration>

<property>

<name>dfs.replication</name>

<value>1</value>

</property>

</configuration>



mapred-site.xml文件

<configuration>

<property>

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

<value>localhost:9001</value>

</property>

</configuration>



修改hadoop安裝目錄下conf文件夾中的masterslaver兩個文件

masters文件(裏面其實表示的是SecondaryNameNode,有點小迷惑性啊)

localhost



slavers文件

localhost

(請參考Hadoop in Action 第二章)


全分佈模式

與僞分佈模式很類似僅做小量的改變



修改hadoop安裝目錄下conf文件夾中的三個xml文件

core-site.xmlhdfs-site.xmlmapred-site.xml

core-site.xml文件

<configuration>

<property>

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

<value>hdfs://johnny:9000</value>

</property>

</configuration>



hdfs-site.xml文件

<configuration>

<property>

<name>dfs.replication</name>

<value>1</value>

</property>

</configuration>



mapred-site.xml文件

<configuration>

<property>

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

<value>johnny:9001</value>

</property>

</configuration>

修改hadoop安裝目錄下conf文件夾中的masterslaver兩個文件

masters文件

johnny



slavers文件

cloud



(這個是最簡單的配置,其實裏面還有很多參數這裏沒有提到,詳細信息請參考官方文檔。)



注:如何快捷的在三種分佈方式切換(參考Hadoopin Action第二章Swithcing betwwenmodes)

Create a separate configuration folder for each of the modes andplace, the appropriate vision of the xml files in the correspondingfolder. Using symbolic links to switch between Hadoop modes.

conf文件夾複製三份,修改文件名爲conf-standalone,conf-pseudo,conf-full,在其中分別配置其內容,最後對要使用的模式的文件夾建立鏈接(快捷方式),將其名稱更改爲conf.

接下來需要把並配置好的Hadoop以及Java傳送給所有的節點計算機。

$ scp -r ~/Software/hadoop-0.20.203.0/ johnny@cloud:~/Software/hadoop-0.20.203.0/

$ scp -r ~/Software/jdk1.6.0_24/ johnny@cloud:~/Software/jdk1.6.0_24/ 


在配置好這些文件後需要格式化NameNode

$ hadoop namenode -format



之後便可啓動hadoop:

$ start-all.sh



測試一下(wordcount):

建立~/temp/test-in目錄,在其中建立a.txt文件,想其中寫入一些英文句子

將 ~/temp/目錄及其中的內容全部拷貝到DataNode中的/目錄下

$ hadoop fs -put ~/temp/ johnny@cloud:/

察看一下拷貝的結果

$ hadoop fs -lsr /

下面運行hadoop自帶的hadoop-examples-0.20.203.0.jar中的wordcount

$ hadoop jar~/Software/hadoop-0.20.203.0/hadoop-examples-0.20.203.0.jar wordcount/temp/test-in /temp/test-out

可以在web頁中察看節點狀態

http://localhost:50030 Hadoop Administration

http://localhost:50070 Hadoop NameNode



參考資料:

Hadoop in Action 第二章

hadoop官方文檔:http://hadoop.apache.org/common/docs/r0.20.203.0

Yahoo HadoopTutorialhttp://developer.yahoo.com/hadoop/tutorial/index.html


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