Hadoop安裝部署簡明步驟詳解
本節(jié)向大家介紹一下Hadoop安裝部署方面的知識(shí),這是我們在學(xué)習(xí)Hadoop時(shí)必須要掌握的內(nèi)容,本節(jié)主要包括硬件環(huán)境,目錄結(jié)構(gòu)和SSH配置等內(nèi)容,希望通過本節(jié)的學(xué)習(xí)大家能夠掌握Hadoop安裝部署的步驟。
Hadoop安裝部署
1.硬件環(huán)境
共有3臺(tái)機(jī)器,均使用的FC5系統(tǒng),Java使用的是jdk1.6.0。IP配置如下:
dbrg-1:202.197.18.72
dbrg-2:202.197.18.73
dbrg-3:202.197.18.74
這里有一點(diǎn)需要強(qiáng)調(diào)的就是,務(wù)必要確保每臺(tái)機(jī)器的主機(jī)名和IP地址之間能正確解析。
一個(gè)很簡單的測試辦法就是ping一下主機(jī)名,比如在dbrg-1上pingdbrg-2,如果能ping通就OK!若不能正確解析,可以修改/etc/hosts文件,如果該臺(tái)機(jī)器作Namenode用,則需要在hosts文件中加上集群中所有機(jī)器的IP地址及其對(duì)應(yīng)的主機(jī)名;如果該臺(tái)機(jī)器作Datanode用,則只需要在hosts文件中加上本機(jī)IP地址和Namenode機(jī)器的IP地址。
以本文為例,dbrg-1中的/etc/hosts文件看起來就應(yīng)該是這樣的:
127.0.0.0localhostlocalhost
202.197.18.72dbrg-1dbrg-1
202.197.18.73dbrg-2dbrg-2
202.197.18.74dbrg-3dbrg-3
dbrg-2中的/etc/hosts文件看起來就應(yīng)該是這樣的:
127.0.0.0localhostlocalhost
202.197.18.72dbrg-1dbrg-1
202.197.18.73dbrg-2dbrg-2
在上一篇學(xué)習(xí)筆記中提到過,對(duì)于Hadoop來說,在HDFS看來,節(jié)點(diǎn)分為Namenode和Datanode,其中Namenode只有一個(gè),Datanode可以是很多;在MapReduce看來,節(jié)點(diǎn)又分為Jobtracker和Tasktracker,其中Jobtracker只有一個(gè),Tasktracker可以是很多。
我是將namenode和jobtracker部署在dbrg-1上,dbrg-2,dbrg-3作為datanode和tasktracker。當(dāng)然你也可以將namenode,datanode,jobtracker,tasktracker全部部署在一臺(tái)機(jī)器上
2.目錄結(jié)構(gòu)
由于Hadoop要求所有機(jī)器上hadoop安裝部署目錄結(jié)構(gòu)要相同,并且都有一個(gè)相同的用戶名的帳戶。
我的三臺(tái)機(jī)器上是這樣的:都有一個(gè)dbrg的帳戶,主目錄是/home/dbrg
Hadoop部署目錄結(jié)構(gòu)如下:/home/dbrg/HadoopInstall,所有的hadoop版本放在這個(gè)目錄中。
將hadoop0.12.0壓縮包解壓至HadoopInstall中,為了方便以后升級(jí),建議建立一個(gè)鏈接指向要使用的hadoop版本,不妨設(shè)為hadoop
[dbrg@dbrg-1:HadoopInstall]$ln-shadoop0.12.0hadoop
這樣一來,所有的配置文件都在/hadoop/conf/目錄中,所有執(zhí)行程序都在/hadoop/bin目錄中。
但是由于上述目錄中hadoop的配置文件和hadoop的安裝目錄是放在一起的,這樣一旦日后升級(jí)hadoop版本的時(shí)候所有的配置文件都會(huì)被覆蓋,因此建議將配置文件與安裝目錄分離,一種比較好的方法就是建立一個(gè)存放配置文件的目錄,/home/dbrg/HadoopInstall/hadoop-config/,然后將/hadoop/conf/目錄中的hadoop_site.xml,slaves,hadoop_env.sh三個(gè)文件拷貝到hadoop-config/目錄中(這個(gè)問題很奇怪,在官網(wǎng)上的GettingStartedWithHadoop中說是只需要拷貝這個(gè)三個(gè)文件到自己創(chuàng)建的目錄就可以了,但我在實(shí)際配置的時(shí)候發(fā)現(xiàn)還必須把masters這個(gè)文件也拷貝到hadoop-conf/目錄中才行,不然啟動(dòng)Hadoop的時(shí)候就會(huì)報(bào)錯(cuò)說找不到masters這個(gè)文件),并指定環(huán)境變量$HADOOP_CONF_DIR指向該目錄。環(huán)境變量在/home/dbrg/.bashrc和/etc/profile中設(shè)定。
綜上所述,為了方便以后升級(jí)版本,我們需要做到配置文件與安裝目錄分離,并通過設(shè)定一個(gè)指向我們要使用的版本的hadoop的鏈接,這樣可以減少我們對(duì)配置文件的維護(hù)。在下面的部分,你就會(huì)體會(huì)到這樣分離以及鏈接的好處了。
3.SSH設(shè)置
我們再來看一下Hadoop安裝部署中SSH如何設(shè)置。在Hadoop啟動(dòng)以后,Namenode是通過SSH(SecureShell)來啟動(dòng)和停止各個(gè)節(jié)點(diǎn)上的各種守護(hù)進(jìn)程的,這就需要在節(jié)點(diǎn)之間執(zhí)行指令的時(shí)候是不需要輸入密碼的方式,故我們需要配置SSH使用無密碼公鑰認(rèn)證的方式。
首先要保證每臺(tái)機(jī)器上都裝了SSH服務(wù)器,且都正常啟動(dòng)。實(shí)際中我們用的都是OpenSSH,這是SSH協(xié)議的一個(gè)免費(fèi)開源實(shí)現(xiàn)。FC5中默認(rèn)安裝的OpenSSH版本是OpenSSH4.3P2。
以本文中的三臺(tái)機(jī)器為例,現(xiàn)在dbrg-1是主節(jié)點(diǎn),它需要主動(dòng)發(fā)起SSH連接到dbrg-2和dbrg-3,對(duì)于SSH服務(wù)來說,dbrg-1就是SSH客戶端,而dbrg-2、dbrg-3則是SSH服務(wù)端,因此在dbrg-2,dbrg-3上需要確定sshd服務(wù)已經(jīng)啟動(dòng)。簡單的說,在dbrg-1上需要生成一個(gè)密鑰對(duì),即一個(gè)私鑰,一個(gè)公鑰。將公鑰拷貝到dbrg-2,dbrg-3上,這樣,比如當(dāng)dbrg-1向dbrg-2發(fā)起ssh連接的時(shí)候,dbrg-2上就會(huì)生成一個(gè)隨機(jī)數(shù)并用dbrg-1的公鑰對(duì)這個(gè)隨機(jī)數(shù)進(jìn)行加密,并發(fā)送給dbrg-1;dbrg-1收到這個(gè)加密的數(shù)以后用私鑰進(jìn)行解密,并將解密后的數(shù)發(fā)送回dbrg-2,dbrg-2確認(rèn)解密的數(shù)無誤后就允許dbrg-1進(jìn)行連接了。這就完成了一次公鑰認(rèn)證過程。
對(duì)于本文中的三臺(tái)機(jī)器,首先在dbrg-1上生成密鑰對(duì):
[dbrg@dbrg-1:~]$ssh-keygen-trsa
這個(gè)命令將為dbrg-1上的用戶dbrg生成其密鑰對(duì),詢問其保存路徑時(shí)直接回車采用默認(rèn)路徑,當(dāng)提示要為生成的密鑰輸入passphrase的時(shí)候,直接回車,也就是將其設(shè)定為空密碼。生成的密鑰對(duì)id_rsa,id_rsa.pub,默認(rèn)存儲(chǔ)在/home/dbrg/.ssh目錄下。然后將id_rsa.pub的內(nèi)容復(fù)制到每個(gè)機(jī)器(也包括本機(jī))的/home/dbrg/.ssh/authorized_keys文件中,如果機(jī)器上已經(jīng)有authorized_keys這個(gè)文件了,就在文件末尾加上id_rsa.pub中的內(nèi)容,如果沒有authorized_keys這個(gè)文件,直接cp或者scp就好了,下面的操作假設(shè)各個(gè)機(jī)器上都沒有authorized_keys文件。
對(duì)于dbrg-1
[dbrg@dbrg-1:.ssh]$cpid_rsa.pubauthorized_keys
對(duì)于dbrg-2(dbrg-3同dbrg-2的方法)
[dbrg@dbrg-2:~]$mkdir.ssh
[dbrg@dbrg-1:.ssh]$scpauthorized_keysdbrg-2:/home/dbrg/.ssh/
此處的scp就是通過ssh進(jìn)行遠(yuǎn)程copy,此處需要輸入遠(yuǎn)程主機(jī)的密碼,即dbrg-2機(jī)器上dbrg帳戶的密碼,當(dāng)然,你也可以用其他方法將authorized_keys文件拷貝到其他機(jī)器上
[dbrg@dbrg-2:.ssh]$chmod644authorized_keys
這一步非常關(guān)鍵,必須保證authorized_keys只對(duì)其所有者有讀寫權(quán)限,其他人不允許有寫的權(quán)限,否則SSH是不會(huì)工作的。
[dbrg@dbrg-2:.ssh]ls-la
drwx------2dbrgdbrg.
drwx------3dbrgdbrg..
-rw-r--r--1dbrgdbrgauthorized_keys
注意每個(gè)機(jī)器上的.ssh目錄的ls-la都應(yīng)該和上面是一樣的
接著,在三臺(tái)機(jī)器上都需要對(duì)sshd服務(wù)進(jìn)行配置(其實(shí)是可以不用配置的,完成了上面的那些操作了以后SSH就已經(jīng)可以工作了),在三臺(tái)機(jī)器上修改文件/etc/ssh/sshd_config
#去除密碼認(rèn)證
PasswordAuthenticationno
AuthorizedKeyFile.ssh/authorized_keys
至此Hadoop安裝部署過程中各個(gè)機(jī)器上的SSH配置已經(jīng)完成,可以測試一下了,比如dbrg-1向dbrg-2發(fā)起ssh連接
[dbrg@dbrg-1:~]$sshdbrg-2
如果ssh配置好了,就會(huì)出現(xiàn)以下提示信息
Theauthenticityofhost[dbrg-2]can'tbeestablished.
Keyfingerprintis10245f:a0:0b:65:d3:82:df:ab:44:62:6d:98:9c:fe:e9:52.
Areyousureyouwanttocontinueconnecting(yes/no)?
OpenSSH告訴你它不知道這臺(tái)主機(jī),但是你不用擔(dān)心這個(gè)問題,因?yàn)槟闶堑谝淮蔚卿涍@臺(tái)主機(jī)。鍵入“yes”。這將把這臺(tái)主機(jī)的“識(shí)別標(biāo)記”加到“~/.ssh/know_hosts”文件中。第二次訪問這臺(tái)主機(jī)的時(shí)候就不會(huì)再顯示這條提示信息了。然后你會(huì)發(fā)現(xiàn)不需要輸入密碼就可以建立ssh連接了,恭喜你,Hadoop安裝部署成功了,不過,別忘了測試本機(jī)sshdbrg-1
【編輯推薦】
- Hadoop安裝手冊新手必備
- Hadoop安裝與使用如何進(jìn)行?
- Hadoop集群與Hadoop性能優(yōu)化
- Hadoop 從Yahoo向Google的技術(shù)轉(zhuǎn)折
- Yahoo公布Hadoop的源代碼