Hadoop,簡單理解為HDFS(分布式存儲)+Mapreduce(分布式處理),專為離線和大規模數據分析而設計。
Hadoop可以把很多linux的廉價PC組成分布式結點,然后編程人員也不需要知道分布式算法之類的,只需根據mapreduce的規則定義好的接口方法,剩下的就交給hadoop,它會自動把相關的計算分布到各個結點上去,然后得到結果。
比如,有一個1PB的文件,我們要分析其中的有用的數據,首先我們把1PB的數據文件導入到HDFS中,然后編程人員定義好map和reduce函數,也就是把文件的行定義為key,每行內容定義為value,然后進行匹配,匹配成功把結果通過reduce聚合起來,Hadoop就會把這個程序分別到N個結點去並行操作,縮短時間。
環境軟件准備:VMware10、Cent6.5、JDK1.8.0_65、hadoop-0.20.2
我們在VMware10上安裝三個Cent6.5OS,三個節點,其中一個為服務器master,另外兩個為客戶機slave(node)
安裝的過程可以借助網上的相關文檔:http://wenku.baidu.com/link?url=er-Uo_5unEZGIcyg14wzZydaB5cqaUE-yAQddxCC7rS_rBtBBtsFgtVkVETRWZTsmi46_f7d5MBgPVWvnRdoKPMjuwDLLlpcSwAZRBT10m_
安裝好CentOS后,即可在每台機器上安裝JDK,安裝地址參考:http://jingyan.baidu.com/article/c74d60007b85510f6a595dfa.html
Java JDK安裝好之后就可以正式開始安裝Hadoop了。
第一步:修改主機名稱hostname,修改后可以重啟CentOS
[root@wy ~]$ vi /ect/sysconfig/network
修改其中的HostName=master,修改后可以重啟一下CentOS,以讓其生效。
其余兩個節點也類似方式,分別將HostName修改為node2、node3
第二步:在三個節點上都配置hosts文件,確定每台CentOS的IP和主機名對應上
[root@master ~]$ ifconfig
查看各個節點的IP地址,然后在hosts文件中輸入IP+主機名
[root@master ~]$ vi /etc/hosts
在打開的hosts文件中,輸入i,即可編輯文件,輸入以下內容后,按ESC,后輸入:wq后即可保存退出。
192.168.1.188 master
192.168.1.189 node2
192.168.1.190 node3
第三步:創建hadoop群組和hadoop用戶(三個節點都要做如下配置)
[root@master ~]$ groupadd hadoop --創建hadoop組
[root@master ~]$ useradd hadoop -g hadoop --為hadoop組中添加一個用戶,用戶名為hadoop
[root@master ~]$ passwd hadoop --為hadoop用戶指定密碼
這樣即可完成組和用戶的創建,在創建完后,即可開始進行下面的操作了。
第四步:配置ssh免密碼連入(三個節點都要做如下配置)
系統默認是root用戶登錄的,所以首先是要切換到hadoop用戶,以及導航到根目錄。然后利用命令生成公鑰和私鑰,生成位置在.ssh目錄下,生成后導航到.ssh目錄下,利用ls命令即可查看生成出來的文件,最后將公鑰文件中的內容復制成authorized_keys文件,具體涉及命令如下:
[root@master ~]$ su hadoop
[hadoop@master ~]$ cd ~
[hadoop@master ~]$ ssh-keygen -t dsa -P '' -f ~/.ssh/id_dsa
[hadoop@master ~]$ cd .ssh/
[hadoop@master ~]$ cat id_dsa.pub >> authorized_keys
將公鑰復制到authorized_keys文件之后一定要修改權限,否則無法進行下一步操作,就像上圖中紅色框中的內容.
修改.ssh文件夾以及authorized_keys文件的權限
[hadoop@master ~]$ chmod 700 ~/.ssh
[hadoop@master ~]$ chmod 600 ~/.ssh/authorized_keys
完成以上操作后,可以對各個節點進行自檢測
[hadoop@master ~]$ ssh localhost --第一次連接需要輸入yes
[hadoop@master ~]$ ssh localhost --第一次連接可直接連接,即表示配置成功
下面開始配置主節點master可以通過ssh免密碼登錄兩個子節點(node2、node3),在未做以下操作前,如果你在命令行輸入ssh node2,是需要輸入密碼的.
為了實現這個功能,兩個node節點的公鑰文件中必須要包含主節點的公鑰信息,這樣master就可以順利安全訪問兩個node。
首先在node3上做如下操作:(node2和master上也需要做以下操作)
這時候,在master中用ssh連接node2就不需要輸入密碼了,即表示配置成功。
第五步:下載安裝hadoop
將下載的hadoop文件放在/home/hadoop用戶的根目錄下,接着開始解壓
[hadoop@master ~]$ tar xzvf /root/hadoop-0.20.2.tar.gz
解壓后文件會是/home/hadoop/hadoop-0.20.2,此時為了以后操作方便,修改了文件的名稱,將hadoop-0.20.0修改為hadoop(這步操作其實完全可以不需要做)。
解壓后需要在/etc/porfile文件中配置hadoop的環境變量
[hadoop@master ~]$ vi /etc/profile
export HADOOP_INSTALL=/home/hadoop/hadoop --第一個hadoop是用戶名,第二個是剛才修改的文件名稱
export PATH=$PATH:$HADOOP_INSTALL/bin
接着,就可以修改hadoop的配置文件了,分別是core.site.xml、hdfs-site.xml、mapred-site.xml、hadoop-env.sh、masters、slaves文件(在mater主節點中配置)
core.site.xml
<configuration> <property> <!-- 用於設置Hadoop的文件系統,由URI指定 --> <name>fs.default.name</name> <value>hdfs://mater:9000</value> </property> <property> <!-- 配置Hadoop的臨時目錄,默認在/tmp目錄下,但是/tmp上面可能會被系統自動清理掉。--> <name>hadoop.tmp.dir</name> <!-- 目錄如果不存在,需要手動創建 --> <value>/home/hadoop/hadoop/tmp</value> <description>A base for other temperary directory</description> </property> </configuration>
hdfs-site.xml
<configuration> <property> <name>dfs.name.dir</name> <value>/home/hadoop/hadoop/name</value> </property> <property> <name>dfs.data.dir</name> <value>/home/hadoop/hadoop/data</value> </property> <property> <name>dfs.replication</name> <value>2</value> </property> </configuration>
mapred-site.xml
<configuration> <property> <name>mapred.job.tracker</name> <!-- 主節點IP--> <value>192.168.1.188:9001</value> </property> </configuration>
hadoop-env.sh
<!--在該文件中去掉export JAVA_HOME前面的#,然后根據自己的JDK路徑實際配置--> export JAVA_HOME=/usr/java/jdk1.8.0_65
masters
master
slaves
node2
node3
在主節點中完成以上配置后,就可以將hadoop復制到node2、node3節點中,這樣子節點也就安裝好hadoop。
[hadoop@master ~]$ scp -r ./hadoop node2:~
[hadoop@master ~]$ scp -r ./hadoop node3:~
第六步:關閉防火牆,啟動hadoop
在啟動hadoop之前要先關閉防火牆,否則會失敗。
關閉完防火牆,在啟動hadoop之前,要再做一部格式化主節點master上的namenode(只需要在主節點上操作,子節點中對應只有datanode)
格式化中出現上圖標示的successfully formatted 后即可啟動hadoop。
啟動后,可用JPS命令查看各個節點的各個進程是否啟動成功。(在三個節點都做以下操作)
在node2、node3用JPS輸入后顯示的是:
Jps
DataNode
TaskTracker
這樣,安裝和配置環節終於完成,最后通過web方式驗證hadoop是否安裝成功。
在主節點的centos中打開瀏覽器,默認是火狐,在url地址欄分別輸入以下兩個命令
http://192.168.1.188:50030/jobtracker.jsp
http://192.168.1.188:50070
分別出現以下頁面,即表示安裝成功:
http://192.168.1.188:50030/jobtracker.jsp
http://192.168.1.188:50070