hadoop學習之hadoop完全分布式集群安裝


http://blog.csdn.net/ab198604/article/details/8250461

——————————————————————————————————————————————————

要想深入的學習Hadoop數據分析技術,首要的任務是必須要將hadoop集群環境搭建起來,可以將hadoop簡化地想象成一個小軟件,通過在各個物理節點上安裝這個小軟件,然后將其運行起來,就是一個hadoop分布式集群了。

說來簡單,但是應該怎么做呢?不急,本文的主要目的就是讓新手看了之后也能夠親自動手實施這些過程。由於本人資金不充裕,只能通過虛擬機來實施模擬集群環境,雖然說是虛機模擬,但是在虛機上的hadoop的集群搭建過程也可以使用在實際的物理節點中,思想是一樣的。也如果你有充裕的資金,自己不介意燒錢買諸多電腦設備,這是最好不過的了。

也許有人想知道安裝hadoop集群需要什么樣的電腦配置,這里只針對虛擬機環境,下面介紹下我自己的情況:

CPU:Intel酷睿雙核 2.2Ghz

內存: 4G

硬盤: 320G

系統:xp

 

老實說,我的本本配置顯然不夠好,原配只有2G內存,但是安裝hadoop集群時實在是很讓人崩潰,本人親身體驗過后實在無法容忍,所以后來再擴了2G,雖然說性能還是不夠好,但是學習嘛,目前這種配置還勉強可以滿足學習要求,如果你的硬件配置比這要高是最好不過的了,如果能達到8G,甚至16G內存,學習hadoop表示無任何壓力。

 

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

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系統,就分別實現了第二、三個虛擬機節點。不過這個過程估計會讓你很崩潰,其實還有一個更簡單的方法,就是復制和粘貼,沒錯,就是在你剛安裝好的第一個虛擬機節點,將整個系統目錄進行復制,形成第二和第三個虛擬機節點。簡單吧!~~

很多人也許會問,這三個結點有什么用,原理很簡單,按照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集群的。安裝過程主要有以下幾個步驟:

一、            配置hosts文件

二、            建立hadoop運行帳號

三、            配置ssh免密碼連入

四、            下載並解壓hadoop安裝包

五、            配置namenode,修改site文件

六、            配置hadoop-env.sh文件

七、            配置masters和slaves文件

八、            向各節點復制hadoop

九、            格式化namenode

十、            啟動hadoop

十一、      用jps檢驗各后台進程是否成功啟動

十二、      通過網站查看集群情況

                                                  

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

一、           配置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地址以及相應的主機名完成配置

 

 

二、           建立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運行帳號的建立。

 

三、           配置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免密碼登錄已經配置成功。

 

四、下載並解壓hadoop安裝包

關於安裝包的下載就不多說了,不過可以提一下目前我使用的版本為hadoop-0.20.2,

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

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

 

五、配置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文件:

 

六、配置hadoop-env.sh文件

 

這個需要根據實際情況來配置。

 

七、配置masters和slaves文件

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

於是在masters文件中填入:

    同理,在slaves文件中填入:

 

 

八、向各節點復制hadoop

向node1節點復制hadoop:

 

 

    向node2節點復制hadoop:

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

 

九、格式化namenode

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

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

 

十、啟動hadoop

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

 

 

 

十一、   用jps檢驗各后台進程是否成功啟動

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

如果出現以上進程則表示正確。

 

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

先來node1的情況:

 

 

下面是node2的情況:

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

 

十二、   通過網站查看集群情況

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

 

 

 

 

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

 

 

至此,hadoop的完全分布式集群安裝已經全部完成,可以好好睡個覺了。~~

 

 
25
2
 
 
 

我的同類文章

 
 

參考知識庫

img

Hadoop知識庫

img

.NET知識庫

img

Oracle知識庫

img

Linux知識庫

img

操作系統知識庫

img

Java SE知識庫

img

Java EE知識庫

img

Java 知識庫

img

軟件測試知識庫

img

算法與數據結構知識庫

猜你在找
 
查看評論
35樓  匋宸 4天前 14:47發表 [回復]
mark
34樓  xudongdong99 2017-02-22 17:53發表 [回復]
寫的很好,很詳細,贊樓主
33樓  wu8983111 2016-11-07 11:05發表 [回復]
看了這么多,樓主這個寫的最詳細清楚,贊!
32樓  thymerh 2016-07-15 10:20發表 [回復]
ssh:localhost,失敗:Host key verification failed.
.ssh里也沒有known_hosts文件,怎么解決呢求救
31樓  ntsjt 2016-06-05 11:10發表 [回復]
zhm@master:~$ hadoop namenode -format/home/zhm/hadoop/bin/hadoop: line 258: /opt/jdk1.7.0_79/bin/java: No such file or directory
我的配置除了下載的jdk版本不一樣(在相應的配置中也改了),其余全部按文章中做的,為什么會出現上述問題,不知如何處理,請教,請教,非常感謝,
30樓  klose 2016-06-02 20:20發表 [回復]
按照樓主的做法,成功將原來的偽分布式弄成正真的分布式了,一次成功開心!!!
29樓  wpzsidis 2016-04-06 20:49發表 [回復]
為什么我的其他都正常,就是沒有JobTracker和taskTracker兩個進程?
28樓  carol123456 2016-02-24 14:38發表 [回復]
感謝大神,終於成功了
27樓  死不了的奧特曼 2016-01-31 11:21發表 [回復]
大神幫我安裝下,給你服務費。我安裝了好幾天都不行快要崩潰了。。。
26樓  firewindyfire 2015-12-18 09:51發表 [回復]
簡直太好了,講得很詳細,馬上實踐一下
25樓  mayfla 2015-12-09 20:00發表 [回復]
24樓  劉佳翰 2015-08-19 09:46發表 [回復]
剛剛開始,過來學習!
23樓  宇辰君 2015-04-16 11:45發表 [回復]
大神,還有一個更簡單的方法,就是復制和粘貼,沒錯,就是在你剛安裝好的第一個虛擬機節點,將整個系統目錄進行復制,形成第二和第三個虛擬機節點,具體是怎么操作的呢?
root權限管理各個節點還是自己的賬戶,需要一個虛擬機三個linux系統運行就行,以后對每個Linux上DataNode做JDK.Hadoop配置,能不能也復制這種子節點的環境呢,不用每個系統都重新配置?
謝謝,最近做這個,Q578645954希望詳細請教您,謝謝!!
22樓  a_Clown__ 2015-03-16 22:52發表 [回復]
樓主你好
請問您的虛擬機分配 了多大的內存呢?
21樓  wyl43381998 2015-02-25 19:11發表 [回復]
部分作為參考吧,有圖有過程,但是少量過程有省略,讓人糊塗不知所措了,而且現在版本已經stable2.6.0.本文有一定的參考價值,但不完全實用了
20樓  wyl43381998 2015-02-24 20:56發表 [回復]
我配置hadoop用戶組的時候 提示group ‘admin’ does not exist

好奇怪大神你是怎么成功的,-G 后面我只填了個root。啥都干不了,神奇的ubuntu太神奇了,
19樓  EnterPine 2015-01-20 22:25發表 [回復]
學習了,博主很用心,很佩服。。其實本來很害怕虛擬機裝3遍,樓主直接復制目錄的方法太方便了,受教了~~~~
18樓  擱淺的貝 2015-01-02 11:29發表 [回復]
多謝了,博主好人啊! hadoop不再遙不可及了也。多謝多謝。
17樓  feige1990 2014-09-25 09:21發表 [回復]
樓主你好
請問您的虛擬機分配 了多大的內存呢?
16樓  wangzhe_real 2014-06-09 08:48發表 [回復]
樓主我想問一下,虛擬機和主機能夠互聯是不是必須要在主機用網線連接到一個局域網內?最近剛接觸,很多不是太熟悉,望賜教
15樓  equalrest 2014-05-16 21:11發表 [回復]
大神!!!我配置hadoop用戶組的時候 提示group ‘admin’ does not exist
14樓  lunfangyu 2014-03-30 16:00發表 [回復]
文中的“其實還有一個更簡單的方法,就是復制和粘貼,沒錯,就是在你剛安裝好的第一個虛擬機節點,將整個系統目錄進行復制”這句話很容易讓人誤解成:“在虛擬機下復制整個系統目錄“;我想在這里所要表達的意思應該是說復制兩次虛擬機形成第二、第三個切點吧;最終結果應該是有三個虛擬機的;我初看時認為是在一個虛擬機中復制系統目錄形成三個節點了呢!不知大神認為我的解讀正確否?!
13樓  lunfangyu 2014-03-30 15:41發表 [回復]
大神,請教一個你認為很簡單的問題:文中在第三步:“還有一個更簡單的方法,就是復制和粘貼,沒錯,就是在你剛安裝好的第一個虛擬機節點,將整個系統目錄進行復制,形成第二和第三個虛擬機節點。”這里是指復制虛擬機變成三個虛擬機還是指復制目錄?如果是復制目錄,請問在復制后是直接粘貼在當前目錄下進行目錄重命名嗎?還是說要放到新建文件夾里?
12樓  拖拖記得正能量 2014-03-30 14:33發表 [回復]
您好 有個問題想請教一下 我按照您的步驟安裝成功了 不過只有root用戶才能正常啟動 這是什么問題呢?
11樓  lunfangyu 2014-03-30 12:06發表 [回復]
大神,請教一個你認為很簡單的問題:在第三步准備虛擬機的節點時“還有一個更簡單的方法,就是復制和粘貼,沒錯,就是在你剛安裝好的第一個虛擬機節點,將整個系統目錄進行復制,形成第二和第三個虛擬機節點。”請問在復制后是直接粘貼在當前目錄下進行目錄重命名嗎?還是說要放到新建文件夾里?
10樓  松月 2013-12-10 16:47發表 [回復]
太感謝你了!終於集成成功了!是我看過最詳細的文章了!
9樓  小琴是吃貨 2013-09-12 18:30發表 [回復]
還是我,必須在每個節點上創建自己hadoop賬戶嗎?用root不行嗎
Re:  ab198604 2013-10-14 09:54發表 [回復]
回復小琴是吃貨:最好創建hadoop帳戶來操作
8樓  小琴是吃貨 2013-09-12 18:28發表 [回復]
請問一下,我master和node1都是在root下進行的,目前master沒錯誤,但是node1結點中datanode老是啟動不了,日志文件里的錯誤是:Could not fin or load main class server?求大神回復啊!!
7樓  nianhua1208 2013-08-17 10:43發表 [回復]
我的所有配置和啟動都沒問題了,但是總是只能啟動namenode和secondnamenode,其他的都啟動不了,請問是怎么回事呢??急死了!!
6樓  zerowmx 2013-05-08 11:29發表 [回復]
你好,按照你的方法,在進行到format步驟時,出現了以下錯誤:
ERROR namenode.NameNode: java.io.IOException: Cannot create directory /home/hduser/hadoop/name/current

怎么弄啊~~~
Re:  zasxza123 2013-08-01 15:56發表 [回復]
回復zerowmx:你把臨時文件tmp刪掉 hadoop初始化的時候會自動建立臨時文件系統
5樓  fly2749 2013-05-07 23:07發表 [回復]
先收藏
4樓  lgming888888 2013-05-06 09:37發表 [回復]
若是權限的問題,怎么改啊,大神?

小弟快抓狂了!!!!!!
3樓  lgming888888 2013-05-05 19:21發表 [回復]
大神 
在讓主結點(master)能通過SSH免密碼登錄兩個子結點(slave)這一步時,輸入密碼總是提示
Permission denied, please try again.

可以解釋下為啥嗎?
Re:  ab198604 2013-05-06 09:33發表 [回復]
回復lgming888888:你是在系統的一些目錄下來操作的嗎?應該是權限的問題。
Re:  lgming888888 2013-05-06 09:35發表 [回復]
我是在root下進行操作的
Re:  ab198604 2013-05-06 09:41發表 [回復]
回復lgming888888:對每個節點你有創建hadoop自己的運行帳號嗎?只要在hadoop帳戶下操作即可,也不需要是root的,在創建時已經有admin權限了
2樓  zhangyangshun 2013-03-14 14:24發表 [回復]
非常感謝LZ分享學習經驗!小的學習了!
1樓  liron71 2012-12-04 14:19發表 [回復] [引用] [舉報]
一種實現人工智能程序自進化的概念原理 
http://blog.csdn.net/liron71/article/details/8242670


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM