hadoop多臺機器集羣的配置

以前也配置過hadoop集羣,但是很久沒有重新去倒騰配置的細節,導致這次走了不少彎路。爲了讓後來的人少走彎路,也給我自己留個提醒,於是就有了這篇文章。

首先配置這個集羣主要包括三個部分。三個部分各自都有自己的milestone,可以在配置完之後運行相關的測試來校驗是否配置成功。


1.準備工作

這之前最好是預先有了幾臺相同用戶名(要特別注意,對於用戶名不同的話ssh的時候還需要用戶名的信息。)的VM或者主機。我用的三臺VM用戶名都是hzm 機器的ip分別爲192.168.28.130,192.168.28.132,192.168.28.133. 爲了省去每次都輸入IP的煩惱,可以先把一臺機器的/etc/hosts文件添加以下幾行:
192.168.28.130 master
192.168.28.132 slave1
192.168.28.133 slave2

添加完之後,把這個文件scp到其餘的兩臺機器的/etc/目錄下。這樣從ip到機器名的映射就可以了。這裏簡單說下scp命令。scp命令是用來在多臺機器之間傳送文件的,主要是從本地傳文件到遠程機器。用法如下:
scp filename username@ip:~/   注,ip之後的目錄接着的是遠程的目錄(例:scp test.txt [email protected]:~ 是把text.txt 從本地傳輸到遠程的主目錄)  如果要傳輸目錄到遠程,則用scp -r foldername username@ip:~/  .   這樣準備工作就做好了。

2.配置java


配置java的過程比較簡單。而且每臺機器的配置都一樣,可以只配一臺機器,之後scp到其他的機器即可。先在網上下載對應的java壓縮包,用tar -xzvf jre***.tar 解壓縮到一個目錄(我是解壓到home目錄)。解壓之後還需要配置下/etc/profile 文件,是爲了系統能夠找到你所配置的java。
在/etc/profile的文件開始處添加以下三行
export JAVA_HOME=/home/hzm/jre1.7.0_17
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=$JAVA_HOME/lib/rt.jar:$JAVA_HOME/lib/tools.jar

配置完之後把/etc/profile 和java的目錄 分別用scp傳輸到其他的主機上。完成之後三臺機器上都可以運行java -version了就表示配置成功了。

3. 配置ssh

這個步驟算是比較麻煩的步驟,沒辦法在一臺機器上完成然後scp到其他的機器。
先每臺機器都運行ssh-keygen ,這樣就會在每臺機器的用戶主目錄生成.ssh 文件夾。ssh配置的目標是不用密碼就可以ping 通其他的機器。達到這一個目的需要有一個包括所有機器的id_rsa.pub的名爲authorized_keys的文件,並放置在.ssh 目錄中。
具體的步驟如下:
1.先在每臺機器上分別運行ssh-keygen
2.從第一個機器開始,先 cat .ssh/id_rsa.pub>>authorized_keys   然後scp authorized_keys文件到第二臺機器
3.然後在第二臺機器上接收到了authorized_keys文件後,再用cat .ssh/id_rsa.pub>>authorized_keys 把本機的id_rsa.pub內容追加到authorized_keys文件中。
4. 依次方法做下去,直到authorized_keys包含了所有機器中的id_rsa.pub的內容。用scp 把這個文件複製到所有的機器。放在.ssh 目錄下。
5. 這個時候就應該配置完成了。可以在每臺機器上試試,ssh ip 是不是可以無密碼登陸了。用exit可以退出登陸。如果每臺機器都可以不需要密碼ssh 到其他的機器就表示這一步完成了。

4.配置hadoop

這次我配置的hadoop的版本是hadoop-1.1.2 。配置一點幾的版本基本上都差不多。注意,配置hadoop在一臺機器上配置好整個hadoop目錄的內容,之後只需要將hadoop整個文件夾scp到其他的機器就可以了。
主要配置六個配置文件
1. hadoop-env.sh
將java home的目錄配置好,這步不用多說。
2. core-site.xml

<configuration>

     <property>

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

         <value>hdfs://master:49000</value>

     </property>

<property>

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

 <value>/home/hadooper/hadooptmp</value>

     </property>

</configuration>

3.hdfs-site.xml

<configuration>

     <property>

         <name>dfs.replication</name>

         <value>2</value>

     </property>

</configuration>



4.mapred-site.xml

<configuration>

     <property>

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

         <value>localhost:49001</value>

     </property>

</configuration>


5. masters 文件
我的文件內容爲

master 

因爲此前已經配置好hosts文件,把ip和機器名對應了起來。如果沒有配置hosts文件,此處用對應的ip代替。

6. slaves 文件
我的文件內容爲

slave1
slave2

同上

這樣在一個機器上的hadoop文件夾就配置好了。現在就可以將這個文件夾用
scp -r hadoop-1.1.2 [email protected]:~    來把整個hadoop文件夾複製到其他機器的用戶主目錄了。

複製完成之後,可以從master機器上啓動hadoop。命令爲
bin/hadoop namenode -format     #格式化dfs
bin/start-all.sh     #啓動namenode datanode  Jobstracker Taskstracker

不出意外的話,可以從 用瀏覽器master:50030 和master:50070上查看dfs和mapreduce的狀態了。


5.其他

在配置的過程中,ssh的過程可能會遇到比較多的問題。這個時候除了以上介紹的方法外,可以去試着改變一下.ssh文件的目錄。好像在一些系統下這個會導致.ssh 配置出現問題。如果在添加用戶或者之類的文件出現了linux系統的問題,可以用recovery模式下更改權限等。另外儘量不要去直接編輯/etc/sudoers文件。之後我會嘗試着寫腳本來簡化所有的配置過程。大家有問題可以留言裏回覆。謝謝。











發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章