本教程是在三臺(tái)電腦上部署的hadoop正式環(huán)境,沒有建立用戶組,而是在當(dāng)前用戶下直接進(jìn)行集群的部署的,總結(jié)如下:
我們提供的服務(wù)有:成都網(wǎng)站制作、做網(wǎng)站、微信公眾號(hào)開發(fā)、網(wǎng)站優(yōu)化、網(wǎng)站認(rèn)證、臨桂ssl等。為近千家企事業(yè)單位解決了網(wǎng)站和推廣的問題。提供周到的售前咨詢和貼心的售后服務(wù),是有科學(xué)管理、有技術(shù)的臨桂網(wǎng)站制作公司
1、三個(gè)節(jié)點(diǎn)的主機(jī)電腦名為:192.168.11.33 Master,192.168.11.24 Slaver2,192.168.11.4
Slaver1,并且這三臺(tái)主機(jī)用戶名都要設(shè)置一樣,我的都是hadoop的用戶。
因?yàn)楸窘坛淌褂玫氖莢im編輯器,如果沒有vim可以下載一個(gè):sudo apt-get install vim
2、修改hosts文件:切換到root用戶下:sudo -s,然后輸入密碼,vim /etc/hosts,通過vim把三個(gè)電腦的主機(jī)名和ip地址都加進(jìn)去,ip在前,主機(jī)名在后:
192.168.12.32 Master
192.168.12.24 Slaver2
192.168.12.4 Slaver1
3、修改主機(jī)的名稱,也是在root用戶下,vim /etc/hostname,把三個(gè)主機(jī)的名字分別于上面的Master,Slaver1,Slaver2,對(duì)應(yīng),一個(gè)機(jī)器對(duì)應(yīng)一個(gè)主機(jī)名,不能把三個(gè)都放進(jìn)去
4、在Ubuntu中查看ip地址的命令為:ifconfig
5、安裝ssh,在安裝ssh之前,首先要更新下載Ubuntu軟件的源:sudo apt-get update
安裝ssh: sudo apt-get install ssh
查看sshd服務(wù)是否啟動(dòng):ps -e | grep ssh ,如果出現(xiàn) 1019 ?00:00:00 sshd這樣的信息,表 示ssh已經(jīng)啟動(dòng)。如果沒有啟動(dòng),則輸入:/etc/init.d/ssh start或者sudo start ssh,進(jìn)行啟動(dòng)
6、設(shè)置ssh的無秘鑰登錄,這個(gè)不需要再root用戶下進(jìn)行,不然不是在當(dāng)前用戶下,則不能進(jìn)行無秘鑰登錄的設(shè)置
6.1、ssh-keygen -t rsa ,然后一直按回車鍵
6.2、上述操作完畢后,會(huì)在當(dāng)且用戶下有一個(gè)隱藏文件夾.ssh,可以通過:ls -al進(jìn)行查看
里面的文件有:id_rsa,id_rsa.pub
6.3、進(jìn)入.ssh目錄下:cd .ssh,然后執(zhí)行:cat id_rsa.pub >> authorized_keys(此文件剛開始 時(shí)不存在.ssh目錄中的),執(zhí)行完以后,會(huì)自動(dòng)生成一個(gè)authorized_keys文件
6.4、然互在.ssh下直接登錄:ssh localhost,不出意外的話,將成功登錄并且不需要輸入密碼,登錄完成后,在.ssh下會(huì)生成一個(gè)known_hosts的文件
7、上面的三個(gè)主機(jī)都要執(zhí)行6的操作
8、設(shè)置節(jié)點(diǎn)之間的無秘鑰登錄,配置Master對(duì)Slaver1和Slaver2的無秘鑰登錄,把Master的id_rsa.pub復(fù)制到Slaver1和Slaver2節(jié)點(diǎn)上,在Slaver1和Slaver2節(jié)點(diǎn)上的.ssh目錄下分別執(zhí)行如下命令:
scp hadoop@Master:~/.ssh/id_rsa.pub ./master_rsa.pub
cat master_rsa.pub >> authorized_keys
9、完成以上操作時(shí),在Slaver1和Slaver2上分別執(zhí)行這樣的操作,即實(shí)現(xiàn)三個(gè)機(jī)器彼此之間都要實(shí)現(xiàn)無秘鑰登錄,因?yàn)樵趆adoop中,主節(jié)點(diǎn)和從節(jié)點(diǎn)之間要進(jìn)行通訊,namenode需要管理datanode,并且datanode也要想namenode發(fā)送狀態(tài)信息,來告訴namenode自己的狀態(tài),同時(shí)datanode之間也要進(jìn)行通訊,在數(shù)據(jù)的復(fù)制中和存儲(chǔ)中,hadoop的把數(shù)據(jù)分成三個(gè)副本進(jìn)行存儲(chǔ),在復(fù)制中,是從前一個(gè)datanode獲取數(shù)據(jù),放到當(dāng)前的datanode中,所以要實(shí)現(xiàn)三個(gè)節(jié)點(diǎn)之間的相互通訊。
10、完成上面的可以進(jìn)行無秘鑰登錄:ssh Slaver1、ssh Slaver2,ssh Master,退出當(dāng)前用戶可以直接用exit
11、如果在步驟6的6.4需要密碼,則說明無秘鑰登錄設(shè)置失敗,辦法就是卸載ssh,在重新安裝,從6在重新開始,卸載前要先關(guān)閉sshd服務(wù):sudo stop ssh,然后執(zhí)行:
sudo apt-get autoremove openssh-server
sudo apt-get autoremove openssh-client,
同時(shí)要?jiǎng)h除.ssh文件目錄:sudo rm -rf .ssh,最好重啟一下,然后從步驟5重新開始。
12、安裝java jdk,在當(dāng)前用戶下建立一個(gè)目錄:sudo mkdir Java,這樣不是在root用戶下進(jìn)行的,而是在本用戶下進(jìn)行安裝的。
12.1 解壓: tar zxvf jkd名稱 -C(大寫) /Java
12.2 把Java目錄中的文件名改為:jdk8:sudo mv jdk名稱 jdk8
12.3 配置文件java路徑:vim ~/.bashrc 在文件的最后加入下面的內(nèi)容
export JAVA_HOME = /home/hadoop/Java/jdk8
export JRE_HOME =${JAVA_HOME}/jre
export CLASSPATH=.:{JAVA_HOME}/lib:${JRE_HOME}/lib
export PATH=${JAVA_HOME}/bin:$PATH
12.4 退出后,執(zhí)行:source ~/.bashrc使其立即生效
12.5 檢查jdk是否安裝成功:java -version,如果出現(xiàn)java的版本等信息,則說明安裝成功
13、安裝hadoop,在主機(jī)Master進(jìn)行hadoop的安裝和配置,然后把此hadoop復(fù)制到Slaver1和Slaver2上,這樣的一種安裝雖然說不是最優(yōu)的,但是對(duì)于初學(xué)者來說,是最方便的,當(dāng)逐漸深入hadoop的學(xué)習(xí)時(shí),可以在根據(jù)不同的機(jī)器以及性能,對(duì)hadoop進(jìn)行調(diào)優(yōu)。
13.1 把hadoop解壓到用戶的當(dāng)前目錄中:tar -zxvf /Downloads/hadoop壓縮文件,壓縮文件后面沒有跟任何的路徑,就會(huì)在用戶下當(dāng)前目錄建立一個(gè)解壓的hadoop目錄。
13.2 修改hadoop的文件名:mv hadoop名稱 hadoop
13.3 配置profile文件:vim /etc/profile:
export HADOOP_INSTALL =/home/hadoop/hadoop
export PATH = $PATH:${HADOOP_INSTALL}/bin
13.4 進(jìn)入hadoop目錄中:cd hadoop,然后輸入:source /etc/profile 從而使剛才配置的文件生效
14、Hadoop配置文件的配置,由于hadoop1.x和hadoop2.x使用了不同的資源管理,在hadoop2.x增加了yarn來管理hadoop的資源,同時(shí)hadoop的文件目錄hadoop1.x和hadoop2.x還是有比較大的差別的,本教程采用的是hadoop2.7.0,在這里本人多說一句,有很多人建議對(duì)于初學(xué)者而言,最好使用hadoop0.2.0這樣的版本來進(jìn)行學(xué)習(xí);本人建議沒有必要這樣,因?yàn)閔adoop是在不斷發(fā)展,說白了我們學(xué)習(xí)hadoop的目的是為了以后在工作中可以使用,現(xiàn)在公司一般都把自己的hadoop集群升級(jí)到hadoop2.x的穩(wěn)定版本了,而且hadoop0.2.0與現(xiàn)在的hadoop版本有了很大的區(qū)別;對(duì)于理解hadoop的學(xué)習(xí)時(shí)有一定的幫助,但是沒有必要非要從頭開始學(xué)習(xí),可以直接學(xué)習(xí)hadoop2.x,也可以不費(fèi)太大的力氣就可以學(xué)會(huì)的,并且hadoop2.x的書籍中,對(duì)之前的版本是會(huì)有介紹的,而且資料也比較的多。
14.1 進(jìn)入到hadoop的配置文件(這個(gè)是hadoop2.7.0版本的文件組織):
cd /hadoop/etc/hadoop
使用:ls,可以看到很多的配置信息,首先我們配置core-site.xml
14.2 配置hadoop的core-site.xml: vim core-site.xml,
在尾部添加:
在按照上面的配置時(shí),上面的注釋一定要去掉啊
14.3 配置hadoop的hdfs-site.xml:vim hdfs-site.xml
//其中home為根目錄,第一個(gè)hadoop是我建立的hadoop用戶,第二個(gè)hadoop是安裝hadoop時(shí),建立的hadoop文件名,這個(gè)是設(shè)置臨時(shí)文件的地方,當(dāng)在初始化文件系統(tǒng)后,我們會(huì)在我們安裝的hadoop路徑下看見有一個(gè)temp的目錄,這個(gè)路徑的設(shè)置,大家可以根據(jù)各自的喜好進(jìn)行設(shè)置,但是設(shè)置好后,自己以后能找到啊~~
當(dāng)大家在配置時(shí),一定要把//后面的注釋去掉啊~~
14.4 配置mapred-site.xml,這個(gè)文件開始時(shí)不存在的,首先需要從模板中復(fù)制一份:
cp mapred-site.xml.template mapred-site.xml
如果存在這個(gè)文件,就不用使用這個(gè)操作啦
然后進(jìn)行mapred-site.xml的配置:vim mapred-site.xml
14.5 配置yarn-site.xml :vim yarn-site.xml
14.6 配置slaves文件:vim slaves
Slaver1
Slaver2
15、配置hadoop-env.sh文件,在此文件中有一個(gè)導(dǎo)入java的目錄,但是用#給注釋掉啦,去掉后#,然后,把剛才安裝的jdk8目錄放在后面:export JAVA_HOME=/home/hadoop/Java/jdk8
16、復(fù)制hadoop到Slaver1和Slaver2上:
scp -r ./hadoop Slaver1:~
scp -r ./hadoop Slaver2:~
17、由于我們步驟13的配置,把hadoop的bin加入到shell命令中,因此在當(dāng)前目錄下就可以使用hadoop命令了?。?/p>
17.1 格式化文件系統(tǒng):hadoop namenode -formate
會(huì)顯示多行的配置,在倒數(shù)5行左右,如果看到sucessfull等字,說明格式化成功
17.2啟動(dòng)hdfs:start-dfs.sh
17.3 啟動(dòng)yarn:start-yarn.sh
17.4 查看是否啟動(dòng)成功:jps,如果在Master上出現(xiàn)四行提示信息:
5399 Jps
5121 ResourceManager
3975 SecondaryNameNode
4752 NameNode
則表示啟動(dòng)成功,顯示的順序和左邊的數(shù)字可以不一樣,
在Slaver上如果出現(xiàn)三行提示信息:
4645 Jps
4418 DataNode
4531 NodeManager
則表示成功;如果在Slaver上,datanode無法啟動(dòng),可能是因?yàn)橐郧芭溥^偽分布式的hadoop集群,可以試著把剛才配置的temp文件夾給刪除掉,重新進(jìn)行格式化:hadoop namenode -format,在進(jìn)行啟動(dòng),應(yīng)該可以使用啦
17.5 這個(gè)時(shí)候,我們就可以用hadoop的shell命令來進(jìn)行操作了啊:
hadoop dfs -ls
這個(gè)可能會(huì)出現(xiàn)錯(cuò)誤提示’ls’ ‘.’:no file or directiory
這個(gè)時(shí)候我們可以試試:hadoop dfs -ls /,就不會(huì)出現(xiàn)錯(cuò)誤了啊
建立目錄:
hadoop dfs -mkdir /user
hadoop dfs -mkdir /user/hadoop
Hadoop dfs -mkdir /user/hadoop
Hadoop dfs -mkdir /user/hadoop/input
Hadoop dfs -mkdir /user/hadoop/output
完事以后,就會(huì)出現(xiàn)三級(jí)目錄了,然后建立一個(gè)文本,來運(yùn)行一下wordcount程序:
Vim a.txt,在里面隨便寫一下東西:
Hadoop
Hadoop
Aaa
Aaa
Spark
Spark
然后把這個(gè)傳到hdfs上:hadoop dfs -copyFromLocal a.txt /user/hadoop/input/a.txt
運(yùn)行wordcount程序:
hadoop jar hadoop/share/hadoop/mapreduce/hadop-mapreduce-examples-2.7.0.jar wordcount /user/hadoop/input/a.txt /user/hadoop/output/wordcount/
查看運(yùn)行的結(jié)果:hadoop dfs -cat /user/hadoop/output/wordcount/part-r-00000,就可以看到單詞的統(tǒng)計(jì)。
18、靜態(tài)ip的設(shè)置:網(wǎng)上有很多的關(guān)于靜態(tài)ip的設(shè)置,本人找了一個(gè),按照上面的教程方法,結(jié)果把Master主機(jī)上的右上角的上網(wǎng)圖標(biāo)給弄沒有了啊,并且有些還上不了網(wǎng)啊,花費(fèi)了一個(gè)下午的時(shí)間,終于弄明白了啊。設(shè)置永久性的靜態(tài)ip,需要三個(gè)步驟,配置三個(gè)文件即可。
18.1 設(shè)置靜態(tài)ip:sudo vim /etc/network/interfaces,會(huì)有如下信息:
auto lo
iface lo inet loopback
注釋掉:#ifacelo inet loopback
添加:
auto eth0
iface eth0 inet static
address 192.168.12.32 ip地址
netmask 255.255.255.0 子網(wǎng)掩碼
gateway 192.168.12.1 網(wǎng)關(guān)
network 192.168.0.0
broadcast 192.168.11.255 廣播
然后保存退出
18.2 配置DNS服務(wù)器,這個(gè)網(wǎng)上有很多,關(guān)于這個(gè)的配置,但是當(dāng)我們重啟Ubuntu后,又恢復(fù)默認(rèn)的配置,導(dǎo)致無法正常上網(wǎng),因此我們需要設(shè)置永久的DNS服務(wù)器:
sudo vim /etc/resolvconf/resolv.conf/base
在里面添加:nameserver 202.96.128.86 DNS服務(wù)器(這個(gè)是我的DNS地址),如果不知道自己的DNS服務(wù),可以從windows中的網(wǎng)絡(luò)中查看,網(wǎng)上有很多放法,這里就不多說了啊
然后保存退出
18.3 配置Networkmanager.conf文件
sudo vim /etc/NetworkManager/NetworkManager.conf
里面的managed=false,如果是false,則需要把它改為true,否則不加修改,保存退出
18.4 一定要是重新啟動(dòng)機(jī)器,如果啟動(dòng)機(jī)器時(shí),無法上網(wǎng),則需要看18.3,的文件是否是false,需要改過來,再重啟機(jī)器就可以上網(wǎng)了啊。
19、上面是關(guān)于正式環(huán)境的集群,已經(jīng)搭建成功;然后我們一般不會(huì)再M(fèi)aster上進(jìn)行開發(fā)的,我們需要在windows環(huán)境下的eclipse進(jìn)行開發(fā),并在eclipse進(jìn)行測(cè)試,因此,我們下面需要做得就是在windows7+eclipse下構(gòu)建hadoop的開發(fā)環(huán)境;
19.1、下載eclipse的hadoop組件,由于hadoop2.x以后,Apache就不在提供eclipse的hadoop組件,只提供源碼,我們需要自己構(gòu)建。我是從網(wǎng)上下載一個(gè)eclipse的hadoop組件。
如果采用的hadoop是2.7.0版本的,使用hadoop2.6.0的hadoop組件是可以使用的,我的hadoop版本是2.7.0,而eclipse的hadoop組件是hadoop2.6.0,
下載組件地址:
19.2、選擇eclipse的版本,我采用的是spring-tool,它是集成了eclipse的,采用這個(gè)的原因是實(shí)習(xí)的時(shí)候用的就是這個(gè)版本,而且從網(wǎng)上看到好多直接用eclipse的人,需要版本的選擇,以及出現(xiàn)的錯(cuò)誤比較多。
下載地址:http://spring.io/tools,點(diǎn)擊下圖的地方進(jìn)行下載,下載后直接解壓到一個(gè)磁盤上就可以使用啦。
進(jìn)入到sts-3.7.1RELEASE里面,有一個(gè)STL.exe就可以打開了。
19.3、把剛才下載的eclipse的hadoop組件2.6.0放到上圖中plugins里面,就可以重啟STL,然后點(diǎn)擊Window->Preferences,就會(huì)看到
則表示組件安裝成功,然后點(diǎn)擊Window->Perspective->Open Perspectiver->other,就會(huì)在左上角看到:
在正下方會(huì)看到:
右鍵點(diǎn)擊上圖的Location,會(huì)出現(xiàn)這個(gè)三個(gè)選項(xiàng),點(diǎn)擊New Hadoop Location,就會(huì)彈出如下信息:
上面的Location name:可以自己隨便填寫一個(gè)名字我起的是:myhadoop
Host:192.168.12.32,這個(gè)是我們安裝集群的Master的ip地址,而不是直接填寫Master,是因?yàn)楫?dāng)填寫Master時(shí),當(dāng)鏈接hdfs時(shí),會(huì)出現(xiàn)listing folder content錯(cuò)誤,而且,我們?cè)谂渲胏ore-site.xml,文件的時(shí),也是建議大家用ip地址,而不是Master,用意就是在這個(gè)地方。
Port:9001,這個(gè)是和我們?cè)O(shè)置的core-site.xml的配置一樣的,
DFS Master中,Prot:9000,
然后保存退出;
19.4、然后點(diǎn)擊這個(gè)的DFS Locations
會(huì)出現(xiàn)
這個(gè)名字,和剛才我們?cè)O(shè)置的一樣啊,
然后再點(diǎn)擊myhadoop,會(huì)出現(xiàn):
這個(gè)是我建立的hadoop目錄。到這里整個(gè)hadoop的安裝,以及hadoop在windows下的遠(yuǎn)程開發(fā)都已經(jīng)基本介紹完畢。但是真正實(shí)現(xiàn)hadoop的開發(fā),還需要在eclipse中進(jìn)行maven的安裝學(xué)習(xí)。這個(gè)以后再慢慢寫吧