Hadoop入门(二)集群安装
一、集群安裝條件前置
在虛擬機上先準備一個機子 ?按用前面【安裝單機hadoop】 已完成安裝jdk,hadoop和ssh、網(wǎng)絡(luò)等配置環(huán)境等。
虛擬機和操作系統(tǒng)
環(huán)境:ubuntu14 + hadoop2.6+jdk1.7+ssh
虛擬機:(vmware10)
?
二、集群安裝環(huán)境設(shè)置
Hadoop的安裝為分布式模式,考慮到實際條件集群機定為3臺(2臺也可以)。
(1)克隆3個ubuntu實例
先關(guān)閉當前虛擬機實例,在虛擬機工具欄上點擊【虛擬機】|【管理】|【克隆】,打開克隆虛擬機向?qū)Т翱邳c擊【下一步】|【下一步】,其中克隆類型選擇【創(chuàng)建完整克隆】,點擊【下一步】,填寫【虛擬機名稱】|【位置】,【完成】克隆。
?
(2)設(shè)置3臺機子的hostname
先正確設(shè)置各虛擬機的hostname 執(zhí)行命令
sudo ? gedit ? /etc/hostname將文件中的名稱改成想要的機器名,如 hadoop01, hadoop02, hadoop03。
?
(3)設(shè)置3臺機子的hosts文件
修改3臺虛擬機hosts文件都是一樣 執(zhí)行命令
sudo ?gedit ?/etc/hosts在hosts文件添加如下內(nèi)容
192.168.150.128 ?hadoop01 192.168.150.129 ?hadoop02 192.168.150.130 ?hadoop03這樣,就不用記IP了。也可以只修改一臺,其他使用scp命令拷貝hosts文件。
?
(4)設(shè)置虛擬機的靜態(tài)ip
修改3臺主機設(shè)置靜態(tài)ip,在hadoop0x上也要參考設(shè)置修改成具體的ip
sudo ?gedit ? /etc/network/interfaces打開文件修改成已下內(nèi)容(hadoop01)
auto lo iface lo inet loopback auto eth0 iface eth0 inet static address 192.168.150.128 netmask 255.255.255.0 network 192.168.150.0 boardcast 192.168.150.255 gateway 192.168.150.2打開文件修改成已下內(nèi)容(hadoop02)
auto lo iface lo inet loopback auto eth0 iface eth0 inet static address 192.168.150.129 netmask 255.255.255.0 network 192.168.150.0 boardcast 192.168.150.255 gateway 192.168.150.2打開文件修改成已下內(nèi)容(hadoop03)
auto lo iface lo inet loopback auto eth0 iface eth0 inet static address 192.168.150.130 netmask 255.255.255.0 network 192.168.150.0 boardcast 192.168.150.255 gateway 192.168.150.2?
(5)配置NAT網(wǎng)絡(luò)
1)虛擬機網(wǎng)絡(luò)設(shè)置
在虛擬機工具欄上點擊【編輯機】|【虛擬機網(wǎng)絡(luò)編輯】,如果沒有NAT模式的網(wǎng)絡(luò)就點擊【添加網(wǎng)絡(luò)】,然后Wnet信息修改為【NAT模式】,設(shè)置子網(wǎng)為【192.168.150.0】,點擊【NAT設(shè)置】按鈕如圖【NAT設(shè)置圖】,點擊【DCHP設(shè)置】按鈕如圖【DCHP設(shè)置圖】,點擊【應(yīng)用】按鈕和【確認】按鈕。
NAT設(shè)置圖:
DCHP設(shè)置圖:
2)設(shè)置虛擬計算機NAT
選擇【我的計算機】的一個虛擬機,鼠標右鍵選擇【設(shè)置】,選擇【網(wǎng)絡(luò)適配器】,在右側(cè)【網(wǎng)絡(luò)連接】點擊【自定義】然后選擇【NAT模式】的網(wǎng)絡(luò),點擊【確定】按鈕保存
?
(6)重啟檢驗網(wǎng)絡(luò)
重啟一次系統(tǒng)生效?
每個虛擬機執(zhí)行命令
ping hadoop01 ping hadoop02 ping hadoop03正常的話,應(yīng)該能ping通 。如果不能ping通,重新設(shè)置NAT網(wǎng)絡(luò)。
?
(7)配置DNS服務(wù)器(虛擬機能上網(wǎng)忽略這個步驟)
如果不能上網(wǎng),需要修改/etc/resolv.conf文件,配置DNS服務(wù)器
執(zhí)行命令
sudo ?gedit ? /etc/resolv.conf修改文件添加如下配置
nameserver ?8.8.8.8 ?8.8.4.4 ? nameserver ?124.172.174.13?
(8)配置ssh免密碼登錄
配置ssh免密碼登錄是讓各節(jié)點能自動通過安全認證,不影響正常通訊。
1)安裝SSH(已安裝的忽略)
安裝ssh有兩種方式:
A.在ubuntu上在線安裝
執(zhí)行命令
sudo ?apt-get ?install ?ssh sudo ?apt-get ?updateB.離線安裝
在網(wǎng)上下載離線包,拷貝到ubuntu中按照離線包中的安裝說明在本地進行安裝
2)配置ssh的實現(xiàn)
配置ssh的實現(xiàn)思路:
在每臺機子上都使用ssh-keygen生成public key,private key 所有機子的public key都拷到一臺機子如hadoop01上
在hadoop01上生成一個授權(quán)key文件authorized_keys 最后把authorized_keys拷給所有集群中的機子,就能保證無密碼登錄
1、在所有虛擬機上,在當前用戶目錄下生成公鑰、私鑰對
執(zhí)行命令
cd ?/home/mk ? ? ? ssh-keygen ?-t ?rsa ?-P ''2、導(dǎo)入公鑰
執(zhí)行hadoop01命令
cat ?.ssh/id_rsa.pub ?> ?.ssh/authorized_keys執(zhí)行完以后,可以在本機上測試下,用ssh連接自己
執(zhí)行命令
ssh hadoop01 #成功登陸則退出 exit如果提示要輸入密碼, 查看authorized_keys文件權(quán)限, 如果是屬于其他用戶的, 需要修改該文件給其他用戶權(quán)限
執(zhí)行命令
chmod ?644 ?.ssh/authorized_keys修改文件權(quán)限,然后再測試下
ssh hadoop01如果不需要輸入密碼,就連接成功,表示ok,一臺機器已經(jīng)搞定了。
?
tip:出現(xiàn)問題嘗試解決
請先檢查SSH服務(wù)是否啟動,如果沒啟動,請啟動!
如果沒有.ssh目錄則創(chuàng)建一個:
執(zhí)行命令
cd??/home/mk mkdir?? .ssh如無權(quán)限,使用命令修改要操作文件夾的owner為當前用戶:
執(zhí)行命令
sudo ?chown ?-R ?mk? /home/mk3、在其它機器上生成公鑰、密鑰,并將公鑰文件復(fù)制到hadoop01
執(zhí)行命令:
#在hadoop0x上: scp ?.ssh/id_rsa.pub ? mk@hadoop01:/home/mk/id_rsa_1.pub#在slave2上: scp ?.ssh/id_rsa.pub ?mk@hadoop01:/home/mk/id_rsa_2.pubhadoop01中,查看下/home/mk目錄,應(yīng)該有二個新文件id_rsa_1.pub、id_rsa_2.pub 在hadoop01上,導(dǎo)入這二個公鑰
執(zhí)行命令
?
這樣,hadoop01這臺機器上,就有所有3臺機器的公鑰了。
4、將hadoop01上的“最全”公鑰,復(fù)制到其它機器
在hadoop01上 執(zhí)行命令
scp .ssh/authorized_keys ?mk@hadoop02:/home/mk/.ssh/authorized_keys scp .ssh/authorized_keys ?mk@hadoop02:/home/mk/.ssh/authorized_keys修改其它機器上authorized_keys文件的權(quán)限 hadoop02以及hadoop03機器上,均執(zhí)行命令
chmod ?600 ?.ssh/authorized_keys5、驗證
在每個虛擬機上,均用命令 ?ssh+其它機器的hostname 都能正常無密碼連接成功 執(zhí)行命令
ssh ?hadoop01 ssh ?hadoop02 ssh ?hadoop036、SSH免密碼設(shè)置失敗解決
A.權(quán)限問題
.ssh目錄,以及/home/當前用戶 需要700權(quán)限,參考以下操作調(diào)整
.ssh目錄下的authorized_keys文件需要600或644權(quán)限,參考以下操作調(diào)整
sudo chmod ? 644 ? ~/.ssh/authorized_keysB.StrictModes問題
sudo gedit /etc/ssh/sshd_config #找到 #StrictModes yes #改成 StrictModes no如果還不行,可以用ssh -vvv 目標機器ip 查看詳情
?
三、配置hadoop集群
一共有7個文件要修改:
hadoop-2.6.0/etc/hadoop/hadoop-env.sh
hadoop-2.6.0/etc/hadoop/yarn-env.sh
hadoop-2.6.0/etc/hadoop/core-site.xml
hadoop-2.6.0/etc/hadoop/hdfs-site.xml
hadoop-2.6.0/etc/hadoop/mapred-site.xml
hadoop-2.6.0/etc/hadoop/yarn-site.xml
hadoop-2.6.0/etc/hadoop/slaves
執(zhí)行命令
(1) hadoop-env.sh 、yarn-env.sh
這二個文件主要是修改JAVA_HOME改成實際本機jdk所在目錄位置
執(zhí)行命令
gedit ?etc/hadoop/hadoop-env.sh
gedit ?etc/hadoop/yarn-env.sh
打開文件找到下面這行的位置,改成(jdk目錄位置,大家根據(jù)實際情況修改)
export JAVA_HOME=/home/mk/soft/jdk1.7.0_80在 hadoop-env.sh中加上這句:
export HADOOP_PREFIX=/home/mk/soft/hadoop-2.6.0(2)core-site.xml
?參考下面的內(nèi)容修改:
<?xml version="1.0" encoding="UTF-8"?> <?xml-stylesheet type="text/xsl" href="configuration.xsl"?> <configuration><property><name>fs.defaultFS</name><value>hdfs://hadoop01:9000</value> ? ? ??</property><property><name>hadoop.tmp.dir</name><value>/home/mk/tmp</value></property>? </configuration>?
注:/home/mk/tmp 目錄如不存在,則先mkdir手動創(chuàng)建
core-site.xml的完整參數(shù)請參考?
http://hadoop.apache.org/docs/r2.6.0/hadoop-project-dist/hadoop-common/core-default.xml
(3)hdfs-site.xml
參考下面的內(nèi)容修改:
<?xml version="1.0" encoding="UTF-8"?><?xml-stylesheet type="text/xsl" href="configuration.xsl"?><configuration><property><name>dfs.datanode.ipc.address</name><value>0.0.0.0:50020</value></property><property><name>dfs.datanode.http.address</name><value>0.0.0.0:50075</value></property> ?<property><name>dfs.namenode.name.dir</name><value>file:/home/mk/data/namenode</value></property><property><name>dfs.datanode.data.dir</name><value>file:/home/mk/data/datanode</value></property><property><name>dfs.namenode.secondary.http-address</name><value>hadoop02:9001</value></property> ? ?<property><name>dfs.replication</name><value>1</value></property><property>?<name>dfs.permissions</name>?<value>false</value>?</property></configuration>hdfs-site.xml的完整參數(shù)請參考
http://hadoop.apache.org/docs/r2.6.0/hadoop-project-dist/hadoop-hdfs/hdfs-default.xml
(4)mapred-site.xml
參考下面的內(nèi)容修改:
<?xml version="1.0"?> <?xml-stylesheet type="text/xsl" href="configuration.xsl"?> <configuration><property><name>mapreduce.framework.name</name><value>yarn</value></property><property><name>mapreduce.jobhistory.address</name><value>hadoop01:10020</value></property><property><name>mapreduce.jobhistory.webapp.address</name><value>hadoop01:19888</value></property> </configuration>mapred-site.xml的完整參數(shù)請參考 http://hadoop.apache.org/docs/r2.6.0/hadoop-mapreduce-client/hadoop-mapreduce-client-core/mapred-default.xml
(5)yarn-site.xml
<?xml version="1.0"?> <configuration>?<property>?<name>yarn.nodemanager.aux-services</name>?<value>mapreduce_shuffle</value>?</property>?<property>?<name>yarn.nodemanager.aux-services.mapreduce.shuffle.class</name>?<value>org.apache.hadoop.mapred.ShuffleHandler</value>?</property>?<property><name>yarn.resourcemanager.scheduler.address</name>?<value>hadoop01:8030</value>?</property>?<property>?<name>yarn.resourcemanager.resource-tracker.address</name>?<value>hadoop01:8025</value>?</property><property>?<name>yarn.resourcemanager.address</name><value>hadoop01:8040</value></property>? </configuration>yarn-site.xml的完整參數(shù)請參考
http://hadoop.apache.org/docs/r2.6.0/hadoop-yarn/hadoop-yarn-common/yarn-default.xml
(6)slaves
執(zhí)行命令
gedit slaves編輯該文件,輸入
hadoop02 hadoop03這樣只有hadoop02,hadoop03上有datanode進程。
hadoop 1.x與2.x相比, 1.x中的很多參數(shù)已經(jīng)被標識為過時,具體可參考 http://hadoop.apache.org/docs/r2.6.0/hadoop-project-dist/hadoop-common/DeprecatedProperties.html
(7)修改/etc/profile設(shè)置環(huán)境變量
執(zhí)行命令
sudo gedit /etc/profile打開/etc/profile,添加hadoop配置內(nèi)容。注意CLASSPATH,PATH是在原來的配置項上添加hadoop的包路徑
export HADOOP_HOME=/home/mk/soft/hadoop-2.6.0 export ?CLASSPATH=.:$JAVA_HOME/lib:$JRE_HOME/lib:$CLASSPATH:$HADOOP_HOME/share/hadoop/common/hadoop-common-2.6.0.jar:$HADOOP_HOME/share/hadoop/mapreduce/hadoop-mapreduce-client-core-2.6.0.jar:$HADOOP_HOME/share/hadoop/common/lib/commons-cli-1.2.jar export PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$HADOOP_HOME/sbin:$HADOOP_HOME/bin:$PATH使profile文件修改配置生效
source /etc/profile(8)分發(fā)到集群的其它機器
把hadoop-2.6.0文件夾連同修改后的配置文件,通過scp拷貝到其它2臺機器上。
執(zhí)行命令
scp -r /home/mk/soft/hadoop-2.6.0/? mk@hadoop02:/home/mk/soft/hadoop-2.6.0 scp -r /home/mk/soft/hadoop-2.6.0/? mk@hadoop03:/home/mk/soft/hadoop-2.6.0hadoop02、hadoop03上的hadoop臨時目錄(tmp)及數(shù)據(jù)目錄(data),仍然要先手動創(chuàng)建。
(9)測試hadoop配置
在hadoop01上啟用 NameNode測試
執(zhí)行命令
先格式化
15/02/12 21:29:53 INFO namenode.FSImage: Allocated new BlockPoolId: BP-85825581-192.168.187.102-1423747793784
15/02/12 21:29:53 INFO common.Storage: Storage directory /home/hadoop/tmp/dfs/name has been successfully formatted.
等看到執(zhí)行信息有has been successfully formatted表示格式化ok
?
四、啟動hadoop集群
(1)啟動HDFS
執(zhí)行命令
HADOOP_HOME/sbin/start-dfs.sh啟動完成后,輸入jps查看進程
執(zhí)行命令
jps
2283? NameNode
如果看到上面NameNode進程,表示hadoop01節(jié)點成功
(2)啟動yarn
執(zhí)行命令
start-yarn.shjps
4363? ResourceManager
2283? NameNode
如果看到上面2個進程,表示 yarn啟動完成。
(3)停止
執(zhí)行命令
stop-dfs.sh stop-yarn.sh保存退出停掉剛才啟動的服務(wù)
?
五、測試Hadoop服務(wù)
(1)hadoop01節(jié)點上,重新啟動
執(zhí)行命令
hadoop01節(jié)點上有幾下2個進程:
3421 ResourceManager
3412 NameNode
hadoop02上有幾下3個進程:
3214 SecondaryNameNode
3243 DataNode
3249 NodeManager
hadoop03上有幾下2個進程:
2324 DataNode
2342 NodeManager
(2)web界面檢查hadoop
hdfs管理界面 ? ?http://hadoop01:50070/
yarn的管理界面不再是原來的50030端口而是8088 ?http://hadoop01:8088/?
?
(3)查看hadoop狀態(tài)
hdfs dfsadmin -report 查看hdfs的狀態(tài)報告
yarn ?node -list ? 查看yarn的基本信息
?
六、其他問題
1.若namenode上的core-site.xml中的fs.defaultFS缺失,則啟動時會報錯。
2.若各機器上的yarn-site.xml中的yarn.resourcemanager.resource-tracker.address缺失,
? ? 雖然resourcemanager與nodemanager進程能夠正常啟動,但是在執(zhí)行yarn node -list會出現(xiàn)node數(shù)量為0的情況。
?
2.若各機器上的yarn-site.xml中的yarn.resourcemanager.scheduler.address或yarn.resourcemanager.address缺失,則在運行job時,
? ? 會卡在INFO mapreduce.Job: Job job_1422695884569_0001 running in uber mode : false
?
七、使用hadoop集群運行例子
同樣的例子比單機模式時間長
(1)運行自帶mapreduce例子grep
執(zhí)行命令
?查看結(jié)果
cat output/*1 dfsadmin ?
得到和單機一樣的結(jié)果,'dfs'只出現(xiàn)一次
(2)運行自帶mapreduce例子wordcount
words.txt?
hello liuchengwu
hello liulao
hello dora
hello liu
hello hadoop
文件拷入/words.txt下
?
執(zhí)行命令
??參考文檔:Hadoop MapReduce Next Generation - Cluster Setup
?
?
總結(jié)
以上是生活随笔為你收集整理的Hadoop入门(二)集群安装的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Hadoop入门(一)概念与单机安装
- 下一篇: Shell入门(一)之简介