在VMWare中創建Hadoop虛擬集羣的詳細步驟(使用CentOS)

最近在學習Hadoop,因而想使用VMWare創建一個虛擬的集羣環境。網上有不少參考資料,但參照其步驟進行設置時卻仍是遇到了很多問題,因此在這裏詳細寫一下個人配置過程,以及其中遇到的問題及相應的解決方法。一來作個記錄,二來也但願能幫到你們。java

目標

咱們要創建一個具備以下配置的集羣:node

   host name   ip address   os
1  master  192.168.224.100  CentOS
2  slave1  192.168.224.201  CentOS
3  slave2   192.168.224.202   CentOS

其中master爲name node和job tracker節點,slaveN爲data node和task tracker節點。linux

步驟

1. 配置虛擬網絡

若是你對VMWare和網絡配置比較熟悉,能夠忽略這一步,可是後面配置IP地址時具體的參數可能和我說的不同。若是你想經過一步一步操做就能成功的話,就須要這些設置shell

經過VMWare -> Edit -> Virtual Network Editor打開以下對話框:apache

 

在上面的列表中選中VMnet8 NAT那一行,而後按圖設置全部內容,以後點擊NAT Setting按鈕,打開以下對話框,確保各個參數如圖中所示設置。vim

2. 建立虛擬機

虛擬機命名爲master,建立過程當中網絡模式能夠任意選擇,下面假設選擇的是NAT方式。須要額外注意的是去【控制面板/管理工具/服務】中看一下VMWare相關的服務是否都已經啓用,我就曾由於NAT服務沒有啓用,而形成各個虛擬機之間沒法ping通,而浪費了不少時間。windows

到http://www.centos.org/中下去CentOS的iso鏡像,使用minimal版本就能夠,這樣能效的控制虛擬機的大小。centos

而後就是虛擬機安裝的過程了,咱們不須要安裝VMWare Tools。並且這時不須要建立多臺虛擬機,咱們將統一配置一臺虛擬機,而後複製出其它虛擬機,後面的詳細的說明。瀏覽器

後面的步驟中咱們假設使用root登陸虛擬機,密碼假設爲hadoop。bash

2. 配置網絡

關掉SELINUX:vi /etc/selinux/config ,設置SELINUX=disabled,保存退出。

關閉防火牆:/sbin/service iptables stop;chkconfig --level 35 iptables off 

修改IP地址爲靜態地址:vi /etc/sysconfig/network-scripts/ifcfg-eth0,將其內容改成以下圖所示,注意HWADDR那一行,你所建立的虛擬機的值極可能與之不一樣,保持原值,不要修改它!

修改主機名稱: vi /etc/sysconfig/network,將其內容改成以下圖所示:

修改hosts映射:vi /etc/hosts,將其內容改成以下圖所示。咱們在這裏就加入了slave1和slave2的映射項,以簡化後面的步驟。

執行:service network restart 以重啓網絡。

3. 安裝putty

我使用這個工具將windows中的文件傳到虛擬機中,由於使用wget下載相應的軟件包比較困難。

從http://www.putty.org/下載putty套件,解壓到你喜歡的目錄就能夠了,確保裏面有pscp.exe

4. 安裝JDK

從下面的地址下載JDK,文件名是jdk-6u26-linux-i586.bin,若是這個地址已經失效,你能夠在oracle的網站上下載最新的版本。

http://download.oracle.com/otn/java/jdk/6u26-b03/jdk-6u26-linux-i586.bin

我是在windows下用迅雷下載的,假設下載後文件放在 e:\jdk-6u26-linux-i586.bin 這個位置,在虛擬機開機的狀態下從windows中打開命令提示符,運行以下命令(其中的pscp就是putty中的pscp.exe,因此你可能須要到相應的目錄中去執行,或者將其所在的目錄添加到PATH中):

pscp e:\jdk-6u26-linux-i586.bin root@192.168.224.100:~/

若是提示輸入密碼,就輸入虛擬機中root賬戶的密碼(假設爲hadoop)。

而後進入虛擬機,執行以下命令:

mkdir -p ~/bin
mv ~/jdk-6u26-linux-i586.bin ~/bin
cd ~/bin
./jdk-6u26-linux-i586.bin

而後修改環境變量:vi ~/.bash_profile,在最後添加

export JAVA_HOME=/root/bin/jdk1.6.0_26
export PATH=$PATH:$JAVA_HOME/bin

保存退出後,執行 source ~/.bash_profile 使配置生效,以後能夠執行java命令以判斷是否已經配置成功。

5. 安裝Hadoop

從http://labs.renren.com/apache-mirror/hadoop/common/hadoop-0.20.2/中下載hadoop-0.20.2.tar.gz,放到~/bin目錄下(若是你是在windows下下載的,就經過上面的方法將其複製到虛擬機中)。執行下列命令:

tar -xzvf hadoop-0.20.2.tar.gz
cd ~/bin/hadoop-0.20.2/conf
vi hadoop-env.sh

將JAVA_HOME一行的註釋去掉,並改成以下設置:

export JAVA_HOME=/root/bin/jdk1.6.0_26

而後添加環境變量 vi ~/.bash_profile ,使其內容以下所示(已經合併了前面關於JAVA的設置)

export JAVA_HOME=/root/bin/jdk1.6.0_26
export HADOOP_HOME=/root/bin/hadoop-0.20.2
export PATH=$PATH:$JAVA_HOME/bin:$HADOOP_HOME/bin

如今就能夠在shell中運行hadoop,以肯定能正常執行了。下面還要對hadoop進行設置,全部要設置的文件都在~/bin/hadoop-0.20.2/conf目錄下。若是你足夠懶的話,能夠在windows下建立這幾個文件,把相應的內容複製到文件中,而後經過pscp.exe複製到虛擬機中去。

core-site.xml的內容:

<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>

<!-- Put site-specific property overrides in this file. -->

<configuration>
  <property>
    <name>fs.default.name</name>
    <value>hdfs://master:9000</value>
  </property>
  <property>
    <name>Hadoop.tmp.dir</name>
    <value>/tmp/hadoop-root</value>
  </property>
</configuration>

hdfs-site.xml

<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>

<!-- Put site-specific property overrides in this file. -->

<configuration>
  <property>
    <name>dfs.replication</name>
    <value>3</value>
  </property>
</configuration>

mapred-site.xml

<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>

<!-- Put site-specific property overrides in this file. -->

<configuration>
  <property>
    <name>mapred.job.tracker</name>
    <value>master:9001</value>
  </property>
</configuration>

slaves

slave1
slave2

masters的內容爲空,此文件用於配置secondary name node,我此次創建的集羣不須要此節點,若是須要的話能夠將其主機名加入此文件中(別忘了在/etc/hosts中加入相應的條目)。

6. 複製虛擬機

使用VMWare中clone功能,複製出另外兩臺虛擬機,分別命名爲slave1和slave2。由於克隆出的虛擬機網卡地址已經改變,因此要分別在複製出的兩臺虛擬機中執行如下操做:

  • 執行:rm -f /etc/udev/rules.d/70-persistent-net.rules
  • 執行:reboot 重啓虛擬機
  • 執行:vim /etc/sysconfig/networking/devices/ifcfg-eth0 將其中的 HWADDR修改成新虛擬機的網卡地址,具體查看方式爲:在虛擬機設置中選中Network Adapter,以下圖所示,選擇Advanced,以下圖紅框中所示即爲網卡地址。


  • 一樣在此文件中將IPADDR改成192.168.224.201(對於slave1)或192.168.224.202(對於slave2)。
  • 修改slave1和slave2的/etc/sysconfig/network文件,將主機名改成slave1或者slave2。

7. 設置SSH

打開三臺虛擬機,登陸到master中,執行以下命令:

ssh-keygen -t dsa -P '' -f ~/.ssh/id_dsa 
cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys
ssh slave1 "mkdir ~/.ssh"
scp ~/.ssh/id_dsa.pub slave1:~/.ssh/authorized_keys
ssh slave2 "mkdir ~/.ssh"
scp ~/.ssh/id_dsa.pub slave2:~/.ssh/authorized_keys

中間可能須要輸入密碼 ,按提示輸入便可。如今分別執行以下命令

ssh localhost
ssh slave1
ssh slave2

不須要再輸入密碼就對了。

8. 啓動Hadoop

執行HDFS格式化命令:hadoop namenode -format

在master虛擬機中進入/root/hadoop-0.20.2/bin目錄,執行 ./start-all.sh 就OK了。

你能夠在宿主機中打開瀏覽器,指向 192.168.224.100:50070 查看HDFS的信息。


若是你是一步一步操做下來的,應該不會遇到什麼問題,若是有問題,歡迎一塊兒來討論。

相關文章
相關標籤/搜索