Hadoop全分佈環境配置過程

一、安裝Linux操作系統

安裝過程略,安裝完後對系統做一下更新:$sudo apt-get update

二、修改機器名,並與IP地址綁定

每當Ubuntu安裝成功時,我們的機器名都默認爲:ubuntu ,但爲了以後集羣中能夠容易分辨各臺服務器,需要給每臺機器取個不同的名字。機器名由 /etc/hostname文件決定。步驟如下:

1$ sudo gedit /etc/hostname,/etc/hostname文件中的ubuntu改爲master。再$ sudo gedit /etc/hosts,將裏面的名字也改爲master,重啓系統後纔會生效,或者$sudo source /etc/hostname更新一下文件。其他節點一樣修改;

2、測試兩臺機器之間是否連通:$ ifconfig 查看機器IP地址,$ping 192.168.160.132並在所有的機器上的"/etc/hosts"文件中都要添加如下內容:

192.168.160.128 master

192.168.160.132 slave

3$Ping slave  看看是否綁定成功;

三、Ubuntu下安裝JDK

1、將jdk-6u25-linux-i586.bin拷貝到/home/jay目錄下:執行命令jay@master:~$ chmod u+x jdk-6u25-linux-i586.bin,將bin文件修改爲可執行文件;

2、運行:$./jdk-6u25-linux-i586.bin,安裝文件;

3、打開文件:$sudo gedit /etc/profile  添加如下信息:
export JAVA_HOME=/home/jay/jdk1.6.0_25

export JRE_HOME=/home/jay/jdk1.6.0_25/jre

export CLASSPATH=.:$JAVA_HOME/lib:$JRE_HOME/lib:$CLASSPATH

export PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$PATH   

4、然後$source /etc/profile,使文件內容生效;

5、重啓,執行命令:$java -version,查看是否安裝成功。若顯示:
java version "1.6.0_25"

Java(TM) SE Runtime Environment (build 1.6.0_25-b06)

Java HotSpot(TM) Client VM (build 20.0-b11, mixed mode, sharing),則安裝成功。

四、安裝ssh服務

ssh可以實現遠程登錄和管理,是主節點master和各個從幾點slave1slave2之間可以互相通信,傳輸數據。

1、驗證SSH安裝,在所有節點上都執行$sudo apt-get install ssh,更新安裝;$which ssh$which sshd$which ssh-keygen,查看這三個文件是否存在;

2、生成SSH密鑰對:使用主節點上的ssh-keygen來生成一個RSA密鑰對,jay@master:~$ssh-keygen -t rsa

3生成授權文件jay@master:~$cp ~/.ssh/id_rsa.pub ~/.ssh/authorized_keys    , $more /home/test/.ssh/id_rsa.pub ,該命令用來查看密鑰(可不執行);

4、將主節點上的公鑰分佈到各從節點:逐一將公鑰複製到每個從節點上,$scp ~/.ssh/id_rsa.pub jay@slave:~/.ssh/192.168.160.128 ;

5手動登錄到從節點,並設置密鑰爲授權密鑰,如下執行[jay@slave2]$ mkdir ~/.ssh$chmod 700 ~/.ssh$mv ~/.ssh/192.168.160.128 ~/.ssh/authorized_keys$chmod 600 ~/.ssh/authorized_keys;生成該密鑰後,可以嘗試從主節點登錄到目標節點來驗證它的準確性:[jay@master]$ ssh 192.168.160.132.或者[jay@master]$ ssh slave

SSH通信原理:namenodedatanode爲例子:Namenode作爲客戶端,要實現無密碼公鑰認證,連接到服務端datanode上時,需要在namenode上生成一個密鑰對,包括一個公鑰和一個私鑰,而後將公鑰發佈到datanode上。當namenode通過ssh連接datanode時,datanode就會生成一個隨機數並用namenode的公鑰對隨機數進行加密,併發送給namenodenamenode收到加密數之後再用私鑰進行解密,並將解密數回傳給datanodedatanode確認解密數無誤之後就允許namenode進行連接了。這就是一個公鑰認證過程,其間不需要用戶手工輸入密碼。重要過程是將客戶端namenode公鑰複製到datanode上。

五、安裝Hadoop

第一步:將hadoop-0.20.1.tar.gz文件拷貝到/home/jay目錄下。

第二步:jay@master:$ tar -xzvf hadoop-0.20.1.tar.gz  //將文件解壓。

第三步:jay@master:$ chown jay:jay hadoop-0.20.1//將文件所有者改成jay

第四步:jay@master:$ sudo gedit /etc/profile進入文件將如下信息加到文件裏:

export HADOOP_HOME=/home/jay/hadoop-0.20.1

export PATH=$HADOOP_HOME/bin:$PATH

第五步:更改conf目錄下的conf/core-site.xml, conf/hdfs-site.xml,conf/mapred-site.xml,conf/hadoop-env.sh,conf/masters,conf/slaves 文件。 

ajay@master:~/home/jay/hadoop-0.20.1/conf/$sudo gedit hadoop-env.sh

進入文件加入如下信息:

export   JAVA_HOME=/home/jay/jdk1.6.0_25

bjay@master:~/home/jay/hadoop-0.20.1/conf/$sudo gedit masters

進入文件加入如下信息:

192.168.160.128

cjay@master:~/home/jay/hadoop-0.20.1/conf/$sudo gedit slaves

進入文件加入如下信息:

192.168.160.132 

djay@master:~/home/jay/hadoop-0.20.1/conf/$sudo gedit core-site.xml 

進入文件加入如下信息:

<configuration>

     <property>

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

      <value>/home/jay/tmp</value>

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

</property>

<!-- file system properties -->

<property>

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

      <value>hdfs://192.168.160.128:9000</value>

</property>

</configuration>

 

ejay@master:~/home/jay/hadoop-0.20.1/conf/$sudo gedit hdfs-site.xml

進入文件加入如下信息:(replication默認是3,如果不修改,datanode少於三臺就會報錯)

<configuration>

     <property>

      <name>dfs.replication</name>

      <value>1</value>

     </property>

</configuration>

 

fjay@master:~/home/jay/hadoop-0.20.1/conf/$sudo gedit mapred-site.xml

進入文件加入如下信息:

<configuration>

<property>

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

      <value>192.168.160.128:9001</value>

</property>

</configuration>  

第六步:執行jay@master:~/$ scp hadoop-0.20.1 jay@slave:/home/jay/hadoop-0.20.1   //將文件hadoop-0.20.1拷貝到其它兩個虛擬機上就可以了。

六、在單機上運行hadoop自帶的wordcount程序

第一步:jay@master:~/hadoop-0.20.1/bin/$ hadoop namenode format   //格式化文件系統,新建一個文件系統;

第二步:jay@master:~/hadoop-0.20.1/$ start-all.sh //啓動hadoop的所有守護進程; 

第三步:jay@master:~/hadoop-0.20.1/$ jps   //查看進程,master虛擬機上的結果。要讓6個守護進程(namenodedatanodejobtrackertasktrackerjps scendarynamenode)全部啓動纔可以;slave2 虛擬機上  jay@slave2:~/hadoop-0.20.1/$ jpsslave節點上啓動3個守護進程; 

第四步:先在本地磁盤建立兩個輸入文件file01 file02:執行命令jsj@master:~$ echo Hello World Bye World” > file01jsj@master:~$ echo Hello Hadoop Goodbye Hadoop” > file02

第五步: 先建立個文件夾jay@master:~/hadoop-0.20.1$ hadoop fs -mkdir input

jay@master:~/hadoop-0.20.1$ bin/hadoop fs -put /home/jay/file1 inputTest//把文件file01file02放到hdfs文件系統中;

jay@master:~/hadoop-0.20.1$ bin/hadoop jar hadoop-0.20.1-examples.jar  wordcount inputTest outputTest   //執行wordcount程序。    

第六步:jsj@master:~/hadoop-0.20.1$ hadoop fs -cat outputTest/*  //查看結果:

Bye 1

Goodbye 1

Hadoop 2

Hello 2

World 2

  至此hadoop運行環境已經全部搭建完成。如果要按照此方法搭建請注意每次運行命令的用戶和路徑。

七、其他說明

1、在eclipse中,我們寫完HadoopJava程序後,將項目打成一個jar包,放到hadoop的安裝目錄下,便可在Hadoop平臺下運行了
2、在Eclipse中編寫程序之前,先將Hadoop包加入到Java工程中,步驟如下:

新建一個工程,右鍵--build path--libraries--add library--user library-next--new--ok。點擊剛建立的library--add external jars,加入Hadoop中的jar包即可。

3Eclipse安裝Hadoop插件方法:

a、在Hadoop-0.20.2包中--contrib--eclipse-plugin--hadoop-0.20.2-eclipse-plugin.jar包放入到Eclipse--plugins中,重啓Eclipse

b、新建一個工程,file--new--project--Java project--project name--finishNew--class--name--finish

c、加入Hadoop自帶的jar包:工程上右鍵--build path--configure build path--libraries--add library--user library--next--user library--new--name--ok--add external JARS--Hadoop-0.20.2中的jar--ok--finish--ok

dEclipse中使用Hadoopwindow--open perspective--other--map/reduce。在下方有個大象圖標--右鍵--edit Hadoop location--主機名、用戶名、端口號(和conf配置中一致即可)、IP地址--ok

e、運行:在項目中run configurations--arguments設置參數--運行,去Javaworkplace查看結果。

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