萬盛學電腦網

 萬盛學電腦網 >> 服務器教程 >> hadoop多台機器集群的配置

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文件

copyright © 萬盛學電腦網 all rights reserved