1.hadoop簡介java
Hadoop是Apache軟件基金會旗下的一個開源分佈式計算平臺。以Hadoop分佈式文件系統(HDFS,Hadoop Distributed Filesystem)和MapReduce(Google MapReduce的開源實現)爲核心的Hadoop爲用戶提供了系統底層細節透明的分佈式基礎架構。
對於Hadoop的集羣來說,能夠分紅兩大類角色:Master和Salve。一個HDFS集羣是由一個NameNode和若干個DataNode組成的。其中NameNode做爲主服務器,管理文件系統的命名空間和客戶端對文件系統的訪問操做;集羣中的DataNode管理存儲的數據。MapReduce框架是由一個單獨運行在主節點上的JobTracker和運行在每一個集羣從節點的TaskTracker共同組成的。主節點負責調度構成一個做業的全部任務,這些任務分佈在不一樣的從節點上。主節點監控它們的執行狀況,而且從新執行以前的失敗任務;從節點僅負責由主節點指派的任務。當一個Job被提交時,JobTracker接收到提交做業和配置信息以後,就會將配置信息等分發給從節點,同時調度任務並監控TaskTracker的執行。
從上面的介紹能夠看出,HDFS和MapReduce共同組成了Hadoop分佈式系統體系結構的核心。HDFS在集羣上實現分佈式文件系統,MapReduce在集羣上實現了分佈式計算和任務處理。HDFS在MapReduce任務處理過程當中提供了文件操做和存儲等支持,MapReduce在HDFS的基礎上實現了任務的分發、跟蹤、執行等工做,並收集結果,兩者相互做用,完成了Hadoop分佈式集羣的主要任務。
1.2.環境說明
192.168.253.139 master.hadoop
192.168.253.140 slave.hadoop
兩個節點均是centos系統,而且有一個相同的用戶hadoop,master機器主要配置namenode和jobtracker的角色,負責總管分佈式數據和分解任務的執行,1個slave機器配置datanode和tasktracker的角色,負責分佈式數據存儲以及任務的執行。還應該有對master作高可用。
1.3 網絡配置
能夠配置其master主機名名字爲master.hadoop,ip爲192.168.253.139
配置slave服務器的名字爲slave.hadoop,ip爲192.168.253.140.(爲防止兩個服務器鏈接問題,暫時關閉防火牆 service iptables stop)
1.4下載所須要的軟件(見附件)
2.ssh無密碼驗證設置
hadoop運行過程當中須要管理遠端hadoop守護程序,在hadoop啓動之後,namenode是經過ssh來啓動和中止各個datanode的各類守護進程,這就必須在節點之間執行指令的時候是不須要輸入密碼的形式,故咱們須要配置SSH運用無密碼公鑰認證的形式,這樣NameNode使用SSH無密碼登陸並啓動DataName進程,一樣原理,DataNode上也能使用SSH無密碼登陸到NameNode。
2.1 安裝和啓動ssh協議,實現兩個服務器的雙機互信node
1
2
3
4
5
6
|
192.168
.
253.139
[root@master ~]
# ssh-keygen -t rsa -f ~/.ssh/id_rsa -P ''
[root@master ~]
# ssh-copy-id -i .ssh/id_rsa.pub root@192.168.253.140
192.168
.
253.140
[root@slave ~]
# ssh-keygen -t rsa -f ~/.ssh/id_rsa -P ''
[root@slave ~]
# ssh-copy-id -i .ssh/id_rsa.pub root@192.168.253.139
|
在192.168.253.139主機上測試,能夠實現無密碼登陸192.168.253.140,一樣的方法測試slave服務器python
3.java環境安裝linux
全部的機器都要安裝JDK,如今如今master服務器上安裝,而後其餘服務器按照步驟重複進行便可,安裝jdk配置環境變量,須要以root身份進行, vim
3.1安裝JDKcentos
使JDK得到可執行權限,並進行以下步驟,進行安裝(下載JDK文件到/usr/src)服務器
1
2
3
|
[root@master ~]
# cd /usr/src
[root@master ~]
# chmod +x jdk-6u31-linux-x64-rpm.bin
[root@master ~]
# ./jdk-6u31-linux-x64-rpm.bin
|
3.2添加java環境變量網絡
在"/etc/profile"加入以下行架構
1
2
3
|
export JAVA_HOME=/usr/java/jdk1.
6
.0_31
export CLASSPATH=.:$CLASSPATH:$JAVA_HOME/lib:$JAVA_HOME/jre/lib
export PATH=$PATH:$JAVA_HOME/bin:$JAVA_HOME/jre/bin
|
使定義生效框架
source /etc/profile
3.3 驗證安裝成功
配置完畢而且生效後,經過下面命令判斷是否成功
3.4 使用此種方法安裝剩餘的slave機器,
4.hadoop集羣安裝
全部的機器都要安裝hadoop,先從master服務器安裝,
4.1 安裝hadoop
1
2
3
4
5
6
7
8
|
[root@master ~]
# useradd hadoop
[root@master ~]
# passwd hadoop
hadoop
[root@master ~]
# cd /usr/src/
[root@master src]
# tar xf hadoop-1.0.0.tar.gz
[root@master src]
# mv hadoop-1.0.0 hadoop
[root@master src]
#mv hadoop /usr/
[root@master usr]
# chown -R hadoop:hadoop hadoop
|
創建hadoop環境變量
vim /etc/profile
1
2
|
export HADOOP_HOME
=
/
usr
/
hadoop
export PATH
=
$PATH:$HADOOP_HOME
/
bin
|
使環境變量生效
source /etc/profile
4.2配置hadoop
hadoop配置文件位於/usr/hadoop/conf
1.配置hadoop-env.sh文件,在末尾添加以下兩行
1
2
|
# set java environment
export JAVA_HOME
=
/
usr
/
java
/
jdk1.
6.0_31
|
Hadoop配置文件在conf目錄下,以前的版本的配置文件主要是Hadoop-default.xml和Hadoop-site.xml。因爲Hadoop發展迅速,代碼量急劇增長,代碼開發分爲了core,hdfs和map/reduce三部分,配置文件也被分紅了三個core-site.xml、hdfs-site.xml、mapred-site.xml。core-site.xml和hdfs-site.xml是站在HDFS角度上配置文件;core-site.xml和mapred-site.xml是站在MapReduce角度上配置文件。
配置core-site.xml文件,這裏配置的是HDFS的地址和端口號
如沒有配置hadoop.tmp.dir參數,此時系統默認的臨時目錄爲:/tmp/hadoo-hadoop。而這個目錄在每次重啓後都會被幹掉,必須從新執行format才行,不然會出錯。
配置hdfs-site.xml文件,HDFS的配置,配置的備份方式默認爲3
replication是數據副本數量,默認爲3,slave少於三臺會報錯,此例是1
配置mapred-site.xml文件,配置的JobTracker的地址和端口
配置master文件
去掉localhost,加入192.168.253.139(master服務器)的ip地址
配置slave文件
去掉localhost,加入192.168.253.140(slave服務器)的ip地址
4.3啓動及驗證
格式化HDFS文件系統
在格式化文件系統時,使用普通用戶進行操做
hadoop namenode -format
使用下面命令啓動
/usr/hadoop/bin/start-all.sh
能夠經過如下啓動日誌看出,首先啓動namenode 接着啓動datanode1,datanode2,…,而後啓動secondarynamenode。再啓動jobtracker,而後啓動tasktracker1,tasktracker2,…。
啓動 hadoop成功後,在 Master 中的 tmp 文件夾中生成了 dfs 文件夾,在Slave 中的 tmp 文件夾中均生成了 dfs 文件夾和 mapred 文件夾。