hadoop學習經過虛擬機安裝hadoop徹底分佈式集羣

要想深刻的學習hadoop數據分析技術,首要的任務是必需要將hadoop集羣環境搭建起來,能夠將hadoop簡化地想象成一個小軟件,經過在各個物理節點上安裝這個小軟件,而後將其運行起來,就是一個hadoop分佈式集羣了。html

說來簡單,可是應該怎麼作呢?不急,本文的主要目的就是讓新手看了以後也可以親自動手實施這些過程。因爲本人資金不充裕,只能經過虛擬機來實施模擬集羣環境,雖說是虛機模擬,可是在虛機上的hadoop的集羣搭建過程也可使用在實際的物理節點中,思想是同樣的。java

 

也許有人想知道安裝hadoop集羣須要什麼樣的電腦配置,這裏只針對虛擬機環境,下面介紹下環境:node

CPU:Intel酷睿雙核 2.2Ghzlinux

內存: 4G算法

硬盤: 320Gubuntu

系統:xpwindows

 

說完電腦的硬件配置,下面說說本人安裝hadoop的準備條件:centos

1 安裝Vmware WorkStation軟件瀏覽器

有些人會問,爲什麼要安裝這個軟件,這是一個VM公司提供的虛擬機工做平臺,後面須要在這個平臺上安裝linux操做系統。具體安裝過程網上有不少資料,這裏不做過多的說明。安全

2 在虛擬機上安裝linux操做系統

在前一步的基礎之上安裝linux操做系統,由於hadoop通常是運行在linux平臺之上的,雖然如今也有windows版本,可是在linux上實施比較穩定,也不易出錯,若是在windows安裝hadoop集羣,估計在安裝過程當中面對的各類問題會讓人更加崩潰,其實我還沒在windows上安裝過,呵呵~

在虛擬機上安裝的linux操做系統爲ubuntu10.04,這是我安裝的系統版本,爲何我會使用這個版本呢,很簡單,由於我用的熟^_^其實用哪一個linux系統都是能夠的,好比,你能夠用centos, redhat, fedora等都可,徹底沒有問題。在虛擬機上安裝linux的過程也在此略過,若是不瞭解能夠在網上搜搜,有許多這方面的資料。

3 準備3個虛擬機節點

其實這一步驟很是簡單,若是你已經完成了第2步,此時你已經準備好了第一個虛擬節點,那第二個和第三個虛擬機節點如何準備?可能你已經想明白了,你能夠按第2步的方法,再分別安裝兩遍linux系統,就分別實現了第2、三個虛擬機節點。不過這個過程估計會讓你很崩潰,其實還有一個更簡單的方法,就是複製和粘貼,沒錯,就是在你剛安裝好的第一個虛擬機節點,將整個系統目錄進行復制,造成第二和第三個虛擬機節點。簡單吧!~~

不少人也許會問,這三個結點有什麼用,原理很簡單,按照hadoop集羣的基本要求,其中一個是master結點,主要是用於運行hadoop程序中的namenode、secondorynamenode和jobtracker任務。用外兩個結點均爲slave結點,其中一個是用於冗餘目的,若是沒有冗餘,就不能稱之爲hadoop了,因此模擬hadoop集羣至少要有3個結點,若是電腦配置很是高,能夠考慮增長一些其它的結點。slave結點主要將運行hadoop程序中的datanode和tasktracker任務。

因此,在準備好這3個結點以後,須要分別將linux系統的主機名重命名(由於前面是複製和粘帖操做產生另兩上結點,此時這3個結點的主機名是同樣的),重命名主機名的方法:

Vim /etc/hostname

經過修改hostname文件便可,這三個點結均要修改,以示區分。

如下是我對三個結點的ubuntu系統主機分別命名爲:master, node1, node2

 

基本條件準備好了,後面要幹實事了,心急了吧,呵呵,彆着急,只要跟着本人的思路,一步一個腳印地,必定能成功布署安裝好hadoop集羣的。

這裏面還有問題網絡配置:

虛擬機三種網絡模式該如何上網指導

虛擬機下載地址:

VMware Workstation 10.0.0簡體中文正式版官方下載地址

若是是零基礎能夠參考:

集羣搭建必備,雲技術基礎:Linux及虛擬化知識學習指導(hadoop、openstack)

 

安裝過程主要有如下幾個步驟:

1、            配置hosts文件

2、            創建hadoop運行賬號

3、            配置ssh免密碼連入

4、            下載並解壓hadoop安裝包

5、            配置namenode,修改site文件

6、            配置hadoop-env.sh文件

7、            配置masters和slaves文件

8、            向各節點複製hadoop

9、            格式化namenode

10、            啓動hadoop

11、      用jps檢驗各後臺進程是否成功啓動

12、      經過網站查看集羣狀況

                                                  

下面咱們對以上過程,各個擊破吧!~~

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)     每一個結點分別產生公私密鑰。

鍵入命令:

以上命令是產生公私密鑰,產生目錄在用戶主目錄下的.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免密碼登陸已經配置成功。

4、下載並解壓hadoop安裝包

關於安裝包的下載就很少說了,不過能夠提一下目前我使用的版本爲hadoop-0.20.2,

這個版本不是最新的,不過學習嘛,先入門,後面等熟練了再用其它版本也不急。並且《hadoop權威指南》這本書也是針對這個版本介紹的。

         注:解壓後hadoop軟件目錄在/home/zhm/hadoop下

5、配置namenode,修改site文件

         在配置site文件以前須要做一些準備工做,下載java最新版的JDK軟件,能夠從oracle官網上下載,我使用的jdk軟件版本爲:jdk1.7.0_09,我將java的JDK解壓安裝在/opt/jdk1.7.0_09目錄中,接着配置JAVA_HOME宏變量及hadoop路徑,這是爲了方便後面操做,這部分配置過程主要經過修改/etc/profile文件來完成,在profile文件中添加以下幾行代碼:

而後執行:

讓配置文件馬上生效。上面配置過程每一個結點都要進行一遍。

到目前爲止,準備工做已經完成,下面開始修改hadoop的配置文件了,即各類site文件,文件存放在/hadoop/conf下,主要配置core-site.xml、hdfs-site.xml、mapred-site.xml這三個文件。

Core-site.xml配置以下:

Hdfs-site.xml配置以下:

接着是mapred-site.xml文件:

6、配置hadoop-env.sh文件

 

這個須要根據實際狀況來配置。

7、配置masters和slaves文件

根據實際狀況配置masters的主機名,在本實驗中,masters主結點的主機名爲master,

因而在masters文件中填入:

    同理,在slaves文件中填入:

 

8、向各節點複製hadoop

向node1節點複製hadoop:

 

    向node2節點複製hadoop:

這樣,結點node1和結點node2也安裝了配置好的hadoop軟件了。

9、格式化namenode

這一步在主結點master上進行操做:

注意:上面只要出現「successfully formatted」就表示成功了。

10、啓動hadoop

這一步也在主結點master上進行操做:

 

11、   用jps檢驗各後臺進程是否成功啓動

在主結點master上查看namenode,jobtracker,secondarynamenode進程是否啓動。

若是出現以上進程則表示正確。

在node1和node2結點了查看tasktracker和datanode進程是否啓動。

先來node1的狀況:

 

下面是node2的狀況:

進程都啓動成功了。恭喜~~~

 

12、   經過網站查看集羣狀況

    在瀏覽器中輸入:http://192.168.1.100:50030,網址爲master結點所對應的IP:



 

    在瀏覽器中輸入:http://192.168.1.100:50070,網址爲master結點所對應的IP:

 

至此,hadoop的徹底分佈式集羣安裝已經所有完成,

相關文章
相關標籤/搜索