準備3個虛擬機節點java
其實這一步驟很是簡單,若是你已經完成了第2步,此時你已經準備好了第一個虛擬節點,那第二個和第三個虛擬機節點如何準備?可能你已經想明白了,你能夠按第2步的方法,再分別安裝兩遍linux系統,就分別實現了第2、三個虛擬機節點。不過這個過程估計會讓你很崩潰,其實還有一個更簡單的方法,就是複製和粘貼,沒錯,就是在你剛安裝好的第一個虛擬機節點,將整個系統目錄進行復制,造成第二和第三個虛擬機節點。簡單吧!~~node
不少人也許會問,這三個結點有什麼用,原理很簡單,按照hadoop集羣的基本要求,其中一個是master結點,主要是用於運行hadoop程序中的namenode、secondorynamenode和jobtracker任務。用外兩個結點均爲slave結點,其中一個是用於冗餘目的,若是沒有冗餘,就不能稱之爲hadoop了,因此模擬hadoop集羣至少要有3個結點,若是電腦配置很是高,能夠考慮增長一些其它的結點。slave結點主要將運行hadoop程序中的datanode和tasktracker任務。linux
因此,在準備好這3個結點以後,須要分別將linux系統的主機名重命名(由於前面是複製和粘帖操做產生另兩上結點,此時這3個結點的主機名是同樣的),重命名主機名的方法:web
Vim /etc/hostname算法
經過修改hostname文件便可,這三個點結均要修改,以示區分。apache
如下是我對三個結點的ubuntu系統主機分別命名爲:master, node1, node2ubuntu
基本條件準備好了,後面要幹實事了,心急了吧,呵呵,彆着急,只要跟着本人的思路,一步一個腳印地,必定能成功布署安裝好hadoop集羣的。安裝過程主要有如下幾個步驟:瀏覽器
1、 配置hosts文件安全
2、 創建hadoop運行賬號bash
3、 配置ssh免密碼連入
下面咱們對以上過程,各個擊破吧!~~
1、 配置hosts文件
先簡單說明下配置hosts文件的做用,它主要用於肯定每一個結點的IP地址,方便後續
master結點能快速查到並訪問各個結點。在上述3個虛機結點上均須要配置此文件。因爲須要肯定每一個結點的IP地址,因此在配置hosts文件以前須要先查看當前虛機結點的IP地址是多少,能夠經過ifconfig命令進行查看,如本實驗中,master結點的IP地址爲:
若是IP地址不對,能夠經過ifconfig命令更改結點的物理IP地址,示例以下:
經過上面命令能夠將IP改成192.168.1.100。將每一個結點的IP地址設置完成後,就能夠配置hosts文件了,hosts文件路徑爲;/etc/hosts,個人hosts文件配置以下,你們能夠參考本身的IP地址以及相應的主機名完成配置
2、 創建hadoop運行賬號
即爲hadoop集羣專門設置一個用戶組及用戶,這部分比較簡單,參考示例以下:
sudo groupadd hadoop //設置hadoop用戶組
sudo useradd –s /bin/bash –d /home/zhm –m zhm –g hadoop –G admin //添加一個zhm用戶,此用戶屬於hadoop用戶組,且具備admin權限。
sudo passwd zhm //設置用戶zhm登陸密碼
su zhm //切換到zhm用戶中
上述3個虛機結點均須要進行以上步驟來完成hadoop運行賬號的創建。
3、 配置ssh免密碼連入
這一環節最爲重要,並且也最爲關鍵,由於本人在這一步驟裁了很多跟頭,走了很多彎
路,若是這一步走成功了,後面環節進行的也會比較順利。
SSH主要經過RSA算法來產生公鑰與私鑰,在數據傳輸過程當中對數據進行加密來保障數
據的安全性和可靠性,公鑰部分是公共部分,網絡上任一結點都可以訪問,私鑰主要用於對數據進行加密,以防他人盜取數據。總而言之,這是一種非對稱算法,想要破解仍是很是有難度的。Hadoop集羣的各個結點之間須要進行數據的訪問,被訪問的結點對於訪問用戶結點的可靠性必須進行驗證,hadoop採用的是ssh的方法經過密鑰驗證及數據加解密的方式進行遠程安全登陸操做,固然,若是hadoop對每一個結點的訪問均須要進行驗證,其效率將會大大下降,因此才須要配置SSH免密碼的方法直接遠程連入被訪問結點,這樣將大大提升訪問效率。
OK,廢話就不說了,下面看看如何配置SSH免密碼登陸吧!~~
(1) 每一個結點分別產生公私密鑰。
鍵入命令:(圖中是ubuntu10.04)
centOS系統爲:ssh-keygen -t rsa
以上命令是產生公私密鑰,產生目錄在用戶主目錄下的.ssh目錄中,以下:
Id_dsa.pub爲公鑰,id_dsa爲私鑰,緊接着將公鑰文件複製成authorized_keys文件,這個步驟是必須的,過程以下:
用上述一樣的方法在剩下的兩個結點中如法炮製便可。
(2) 單機迴環ssh免密碼登陸測試
即在單機結點上用ssh進行登陸,看可否登陸成功。登陸成功後註銷退出,過程以下:
注意標紅圈的指示,有以上信息表示操做成功,單點回環SSH登陸及註銷成功,這將爲後續跨子結點SSH遠程免密碼登陸做好準備。
用上述一樣的方法在剩下的兩個結點中如法炮製便可。
(3) 讓主結點(master)能經過SSH免密碼登陸兩個子結點(slave)
爲了實現這個功能,兩個slave結點的公鑰文件中必需要包含主結點的公鑰信息,這樣
當master就能夠順利安全地訪問這兩個slave結點了。操做過程以下:
如上過程顯示了node1結點經過scp命令遠程登陸master結點,並複製master的公鑰文件到當前的目錄下,這一過程須要密碼驗證。接着,將master結點的公鑰文件追加至authorized_keys文件中,經過這步操做,若是不出問題,master結點就能夠經過ssh遠程免密碼鏈接node1結點了。在master結點中操做以下:
由上圖能夠看出,node1結點首次鏈接時須要,「YES」確認鏈接,這意味着master結點鏈接node1結點時須要人工詢問,沒法自動鏈接,輸入yes後成功接入,緊接着註銷退出至master結點。要實現ssh免密碼鏈接至其它結點,還差一步,只須要再執行一遍ssh node1,若是沒有要求你輸入」yes」,就算成功了,過程以下:
如上圖所示,master已經能夠經過ssh免密碼登陸至node1結點了。
對node2結點也能夠用一樣的方法進行,以下圖:
Node2結點複製master結點中的公鑰文件
Master經過ssh免密碼登陸至node2結點測試:
第一次登陸時:
第二次登陸時:
表面上看,這兩個結點的ssh免密碼登陸已經配置成功,可是咱們還須要對主結點master也要進行上面的一樣工做,這一步有點讓人困惑,可是這是有緣由的,具體緣由如今也說不太好,聽說是真實物理結點時須要作這項工做,由於jobtracker有可能會分佈在其它結點上,jobtracker有不存在master結點上的可能性。
對master自身進行ssh免密碼登陸測試工做:
至此,SSH免密碼登陸已經配置成功。
安裝JDK,Hadoop2.7須要JDK7,因爲個人CentOS是最小化安裝,因此沒有OpenJDK,直接解壓下載的JDK並配置變量便可
(1)下載「jdk-7u79-linux-x64.gz」,放到/home/java目錄下
(2)解壓,輸入命令,tar -zxvf jdk-7u79-linux-x64.gz
(3)編輯/etc/profile
export JAVA_HOME=/home/java/jdk1.7.0_79
export CLASSPATH=.:$JAVA_HOME/jre/lib/rt.jar:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export PATH=$PATH:$JAVA_HOME/bin
(4)使配置生效,輸入命令,source /etc/profile
(5)輸入命令,java -version,完成
四、安裝Hadoop2.7,只在Master服務器解壓,再複製到Slave服務器
(1)下載「hadoop-2.7.0.tar.gz」,放到/home/hadoop目錄下
(2)解壓,輸入命令,tar -xzvf hadoop-2.7.0.tar.gz
(3)在/home/hadoop目錄下建立數據存放的文件夾,tmp、hdfs、hdfs/data、hdfs/name
五、配置/home/hadoop/hadoop-2.7.0/etc/hadoop目錄下的core-site.xml
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://master:9000</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>file:/home/hadoop/tmp</value>
</property>
<property>
<name>io.file.buffer.size</name>
<value>131702</value>
</property>
</configuration>
六、配置/home/hadoop/hadoop-2.7.0/etc/hadoop目錄下的hdfs-site.xml
<configuration>
<property>
<name>dfs.namenode.name.dir</name>
<value>file:/home/hadoop/dfs/name</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>file:/home/hadoop/dfs/data</value>
</property>
<property>
<name>dfs.replication</name>
<value>2</value>
</property>
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>master:9001</value>
</property>
<property>
<name>dfs.webhdfs.enabled</name>
<value>true</value>
</property>
</configuration>
七、配置/home/hadoop/hadoop-2.7.0/etc/hadoop目錄下的mapred-site.xml
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
<property>
<name>mapreduce.jobhistory.address</name>
<value>master:10020</value>
</property>
<property>
<name>mapreduce.jobhistory.webapp.address</name>
<value>master:19888</value>
</property>
</configuration>
八、配置/home/hadoop/hadoop-2.7.0/etc/hadoop目錄下的mapred-site.xml
<configuration>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<property>
<name>yarn.nodemanager.auxservices.mapreduce.shuffle.class</name>
<value>org.apache.hadoop.mapred.ShuffleHandler</value>
</property>
<property>
<name>yarn.resourcemanager.address</name>
<value>master:8032</value>
</property>
<property>
<name>yarn.resourcemanager.scheduler.address</name>
<value>master:8030</value>
</property>
<property>
<name>yarn.resourcemanager.resource-tracker.address</name>
<value>master:8031</value>
</property>
<property>
<name>yarn.resourcemanager.admin.address</name>
<value>master:8033</value>
</property>
<property>
<name>yarn.resourcemanager.webapp.address</name>
<value>master:8088</value>
</property>
<property>
<name>yarn.nodemanager.resource.memory-mb</name>
<value>768</value>
</property>
</configuration>
九、配置/home/hadoop/hadoop-2.7.0/etc/hadoop目錄下hadoop-env.sh、yarn-env.sh的JAVA_HOME,不設置的話,啓動不了,
export JAVA_HOME=/home/java/jdk1.7.0_79
十、配置/home/hadoop/hadoop-2.7.0/etc/hadoop目錄下的slaves,刪除默認的localhost,增長2個從節點,
192.168.6.101
192.168.6.102
十一、將配置好的Hadoop複製到各個節點對應位置上,經過scp傳送,
scp -r /home/hadoop node1:/home/
scp -r /home/hadoop node2:/home/
十二、在Master服務器啓動hadoop,從節點會自動啓動,進入/home/hadoop/hadoop-2.7.0目錄
(1)初始化,輸入命令,bin/hdfs namenode -format
(2)所有啓動sbin/start-all.sh,也能夠分開sbin/start-dfs.sh、sbin/start-yarn.sh
(3)中止的話,輸入命令,sbin/stop-all.sh
(4)輸入命令,jps,能夠看到相關信息
1三、Web訪問,要先開放端口或者直接關閉防火牆
(1)輸入命令,systemctl stop firewalld.service
(2)瀏覽器打開http://192.168.6.100:8088/(3)瀏覽器打開http://192.168.6.100:50070/1四、安裝完成。這只是大數據應用的開始,以後的工做就是,結合本身的狀況,編寫程序調用Hadoop的接口,發揮hdfs、mapreduce的做用。