引言:網(wǎng)上有很多介紹如何搭建Hadoop的文章,有的步驟不甚詳細(xì),有的按其方法搭建會(huì)出現(xiàn)莫名其妙的問(wèn)題。本文盡量細(xì)化步驟、簡(jiǎn)化配置,并已將容易導(dǎo)致錯(cuò)誤的部分提前修改,為初學(xué)者學(xué)習(xí)搭建Hadoop完全分布式集群環(huán)境提供方便。
1、VMware Workstation;
2、ubuntu14.04.3桌面版64位操作系統(tǒng)
3、jdk8u 65 64位4、hadoop2.7.1
Windows平臺(tái)下安裝好VMware Workstation虛擬機(jī)軟件。從ubuntu官方網(wǎng)站www.ubuntu.com下 載ubuntu14.04.3桌面版64位操作系統(tǒng),通過(guò)VMware Workstation創(chuàng)建一臺(tái)ubuntu虛擬機(jī)。用戶名 hadoop,口令 hadoop,如圖1所示。
1、安裝jdk和hadoop:
圖1 創(chuàng)建ubuntu虛擬機(jī)
圖2 安裝jdk和ubuntu
圖3 測(cè)試jdk安裝是否成功
2、配置 jdk的環(huán)境變量
3、配置hadoop的環(huán)境量
如果顯示如圖4所示,則表示hadoop安裝成功。
Hadoop集群各節(jié)點(diǎn)信息如下:
圖4 測(cè)試hadoop安裝是否成功
圖5 hosts文件內(nèi)容
修改4臺(tái)ubuntu虛擬機(jī)的主機(jī)名:sudo vim /etc/hostname,hostname均為hadoop。
修改hosts文件,解析主機(jī)名:sudo vim /etc/hosts
hosts文件內(nèi)容如圖5所示。
重啟虛擬機(jī)后主機(jī)名和hosts解析生效。
在4臺(tái)虛擬機(jī)上,安裝openssh-server安全連接軟件
4臺(tái)上均生成密鑰對(duì):ssh-keygen t rsa,其位于家目錄下的隱藏目錄~/.ssh
4個(gè)文件位于/usr/soft/hadoop-2.7.1/etc/hadoop/目錄下
由于每4臺(tái)主機(jī)的xml文件配置必須相同,所以只需在master主機(jī)上修改這4個(gè)xml文件,然后遠(yuǎn)程拷貝到其余3臺(tái)主機(jī)即可。
特別說(shuō)明:默認(rèn)的hadoop集群?jiǎn)?dòng)臨時(shí)文件存放在/tmp/目錄下,每次重新開(kāi)機(jī)就會(huì)被清空,與此同時(shí)namenode的格式化信息就會(huì)丟失。為避免hadoop集群?jiǎn)?dòng)時(shí)出現(xiàn)namenode進(jìn)程丟失故障,需在master主機(jī)上建立一個(gè)永久的臨時(shí)文件存放目錄:mkdir /home/hadoop/hadoop_tmp。
同時(shí)打開(kāi)所有的xml文件:gedit *-site.xml。
1、core-site.xml用于配置namenode節(jié)點(diǎn),修改后內(nèi)容為
3、mapred-site.xml需 從mapred-site.xml.template模板復(fù)制而來(lái),修改后內(nèi)容為
4、yarn-site.xml用于配置resourcemanager,本實(shí)驗(yàn)中resourcemanager由namenode節(jié)點(diǎn)兼任,修改后內(nèi)容為
將上述4個(gè)xml文件從master上copy到其它3個(gè)節(jié)點(diǎn),或者直接拷貝hadoop目錄,使4臺(tái)主機(jī)的xml文件相同。
另 外,需 在master和slave3節(jié)點(diǎn)上配置slaves文件,用于指定集群中的datanode節(jié)點(diǎn)是哪幾個(gè)。slaves文件內(nèi)容如圖6所示。
至此,已完成hadoop集群的所有必需的配置工作。
格式化hdfs文件系統(tǒng):hadoop namenode format
圖6 slaves文件內(nèi)容
圖7 master節(jié)點(diǎn)進(jìn)程信息
圖8 slave1 節(jié)點(diǎn)進(jìn)程信息
圖9 slave1 節(jié)點(diǎn)進(jìn)程信息
圖10 slave3 節(jié)點(diǎn)進(jìn)程信息
提示Storage directory/home/hadoop/hadoop_tmp /dfs/name has been successfully formatted.
表示hdfs格式化成功。
啟 動(dòng)hadoop集 群:start-all.sh
查看各節(jié)點(diǎn)的hadoop進(jìn)程信息,使用命令:jps
master節(jié)點(diǎn)進(jìn)程信息如圖7所示。slave1節(jié)點(diǎn)進(jìn)程信息如 圖8所示。
slave2節(jié)點(diǎn)進(jìn)程信息如圖9所示。
slave3節(jié)點(diǎn)進(jìn)程信息如圖10所示。
如果以上顯示都正常,則表示hadoop集群?jiǎn)?dòng)成功。
本實(shí)驗(yàn)將測(cè)試jdk自帶的wordcount程序。
先在master節(jié)點(diǎn)本地創(chuàng)建測(cè)試用例:vim test.txt
文本內(nèi)容:
在hdfs文件系統(tǒng)下新建 input目 錄:hadoop fs-mkdir /input
查看新建目錄是否成功:hadoop fs ls /
顯示有input目錄了
將test.txt從本機(jī)上傳到hdfs文件系統(tǒng):hadoop fs put test.txt /input
啟動(dòng)java的wordcount程序
上述語(yǔ)句是一條完整的命令。
啟動(dòng)了mapreduce,統(tǒng)計(jì)文本中單詞出現(xiàn)的次數(shù),將結(jié)果輸出至output目錄。
查看結(jié)果:用瀏覽器打開(kāi) http://master:50070,有 了output目 錄,內(nèi) 有2個(gè)文件_SUCCESS和part-r-00000。
圖11 查看wordcount統(tǒng)計(jì)結(jié)果
查看wordcount統(tǒng)計(jì)結(jié)果:hadoop fs cat/output/part-r-00000,如果顯示結(jié)果如圖11所示,則表示mapreduce運(yùn)算正常。
Hadoop集群的resource manager、namenode、secondary namenode、datanode、nodemanager等角色搭配比較靈活,也是經(jīng)常困擾初學(xué)者的地方。
幾種角色要依賴(lài)4個(gè)xml文件和slaves來(lái)配置,弄清楚這個(gè)問(wèn)題將對(duì)進(jìn)一步學(xué)習(xí)Hadoop至關(guān)重要。