安装hadoop集群---resourcemanager和NameNode不在同一台机器上
1、復(fù)制虛擬機(jī),搞了5臺(tái)。
1:namenode
2:secondardNameNode,resourcemanager
3,4,5:DataNode
?
2、修改了網(wǎng)卡配置,連接上SecureCRT
?
---------root----用戶----------
3、date查看了時(shí)間
4、開機(jī)啟動(dòng)了 ntpdate
chkconfig --list
chkconfig --level 12345 ntpdate on
?
5、ntpdate 同步時(shí)間
service ntpdate restart
?
6、查看JAVA_HOME
echo $JAVA_HOME
?
-rw-r--r--. 2 root root 158 Jan 12 2010 hosts
-rw-r--r--. 1 root root 1796 Oct 2 2013 profile
8、每臺(tái)配置本機(jī)域名
[root@zengmg etc]# vi /etc/sysconfig/network
?
NETWORKING=yes
HOSTNAME=hadoop1
?
9、每臺(tái)配置hosts文件
多窗口發(fā)送命令
vi /etc/hosts
?
192.168.18.131 hadoop1
192.168.18.132 hadoop2
192.168.18.133 hadoop3
192.168.18.134 hadoop4
192.168.18.135 hadoop5
//要編寫一個(gè)shell腳本,如果集群里有幾十臺(tái)怎么辦?
?
10、關(guān)閉防火墻
chkconfig iptables off
service iptables stop
?
11、創(chuàng)建 hadoop 用戶,密碼
adduser hadoop
passwd hadoop
?
12、給hadoop用戶配置root組
vi /etc/sudoers
## Allow root to run any commands anywhere
root ALL=(ALL) ALL
在這里添加
hadoop ALL=(ALL) ALL
?
---------------hadoop----用戶-----------------------------
1、ssh免密碼登錄
hadoop1是NameNode。無需各臺(tái)機(jī)器互相ssh免密碼。只要hadoop1能免密訪問其他機(jī)器
hadoop1機(jī)器上:
ssh-keygen -t rsa
ssh-copy-id hadoop1
ssh-copy-id hadoop2
ssh-copy-id hadoop3
ssh-copy-id hadoop4
ssh-copy-id hadoop5
?
hadoop2機(jī)器上:
ssh-keygen -t rsa
ssh-copy-id hadoop2
ssh-copy-id hadoop3
ssh-copy-id hadoop4
ssh-copy-id hadoop5
?
這個(gè)ssh免密登錄是針對(duì)hadoop用戶。root用戶沒有配置,不能免密登錄對(duì)方。ssh免密是用戶有效
?
1、上傳JDK和hadoop
2、在hadoop的home目錄下建文件夾 application。在/(根目錄下)沒有權(quán)限新建,只有root能建立。
[hadoop@hadoop1 /]$ mkdir application
mkdir: cannot create directory `application': Permission denied
3、解壓hadoop,jdk的壓縮包到 application 文件夾
tar?-zxvf?壓縮包 -C application
?
4、配置jdk,hadoop的環(huán)境變量
[hadoop@hadoop1 etc]$ sudo vi /etc/profile
export JAVA_HOME=/home/hadoop/application/jdk1.8.0_73
export HADOOP_HOME=/home/hadoop/application/hadoop-2.7.3
export PATH=$PATH:$JAVA_HOME/bin:$HADOOP_HOME/bin/:$HADOOP_HOME/sbin
?
5、使配置的變量生效
source /etc/profile
?
6、配置hadoop配置文件
1)、hadoop-env.sh shell文件配置javahome
# The java implementation to use.
export JAVA_HOME=/home/hadoop/application/jdk1.8.0_73
為什么要配置?
不知什么原因,沒有讀到
[hadoop@BD01 sbin]$ start-dfs.sh
Starting namenodes on [BD01]
BD01: Error: JAVA_HOME is not set and could not be found.
BD05: Error: JAVA_HOME is not set and could not be found.
BD04: Error: JAVA_HOME is not set and could not be found.
BD03: Error: JAVA_HOME is not set and could not be found.
?
?
2)、core-site.xml 文件配置 NameNode訪問地址和namenode數(shù)據(jù)存放路徑
<property>
<name>fs.defaultFS</name>
<value>hdfs://hadoop1:9000</value>
</property>
?
<property>
<name>hadoop.tmp.dir</name>
<value>/home/hadoop/hadoop_data</value>
</property>
?
------下面的配置是hive beeline的訪問配置--
hadoop的core-site.xml增加配置
?
<property>
<name>hadoop.proxyuser.root.groups</name>
<value>hadoop</value>
</property>
?
//如果是 <value>*</value> 就是所有用戶
?
<property>
<name>hadoop.proxyuser.root.hosts</name>
<value>*</value>
</property>
?
//這里配置了所有ip都允許代理訪問。如果不允許,則配置IP地址
?
?
?
3)、hdfs-site.xml 文件配置 數(shù)據(jù)副本個(gè)數(shù),可以不配置的。因?yàn)槟J(rèn)是3
此文件還配置 SecondaryNameNode
<property>
<name>dfs.replication</name>
<value>3</value>
</property>
?
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>hadoop2:50090</value>
</property>
?
<property>
<name>dfs.namenode.secondary.https-address</name>
<value>hadoop2:50091</value>
</property>
?
?
4)、 map-site.xml 指定mr運(yùn)行在yarn平臺(tái)上,屬于resourcemanager的配置
mv mapred-site.xml.template mapred-site.xml
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
?
5)、yarn-site.xml 指定YARN的老大(ResourceManager)的地址,reducer獲取數(shù)據(jù)的方式
<property>
<name>yarn.resourcemanager.hostname</name>
<value>hadoop2</value>
</property>
?
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
?
<property>
<name>yarn.resourcemanager.webapp.address</name>
<value>hadoop2:8088</value>
</property>
?
這個(gè)端口可以修改
?
問題:配置成與主節(jié)點(diǎn)namenode不同的機(jī)子,resourcemanager運(yùn)行不起來,什么原因?
google下,說是Namenode和ResourceManger如果不是同一臺(tái)機(jī)器,不能在NameNode上啟動(dòng) yarn,應(yīng)該在ResouceManager所在的機(jī)器上啟動(dòng)yarn。現(xiàn)在問題解決了,多謝提醒
懂了:原來,hdfs,yarn,mr是三個(gè)獨(dú)立的組件。namenode是hdfs的頭,resourcemanager是yarn的頭。兩個(gè)不同的頭,在namenode上啟動(dòng)resourcemanager自然是起不來的。
所以,如果Namenode和ResourceManger如果不是同一臺(tái)機(jī)器,那要啟動(dòng)hdfs,再啟動(dòng)yarn。不能用start-all一步到位。
還是有問題?如果resourcemanager所在節(jié)點(diǎn)沒有配置slaves,nodemanager會(huì)在本地啟動(dòng)。
?
?
6)、配置slaves
注意:slaves里的配置是start-*.sh啟動(dòng)腳本要讀取集群的配置文件。如果不配置,就會(huì)運(yùn)行單機(jī)版本的。
默認(rèn)是localhost
hadoop3,4,5是DataNode。也是yarn的NodeManager
hadoop3
hadoop4
hadoop5
----------------------
注意:此時(shí)namenode節(jié)點(diǎn)已經(jīng)可以初始化。可以單獨(dú)啟動(dòng)namenode,DataNode每啟動(dòng)一臺(tái),想namenode注冊一臺(tái)。NameNode初始化后,可以不用 start-all.sh【學(xué)習(xí)下里面的寫法,如何遍歷】或者下面的命令。
可以根據(jù)需要,到DataNode節(jié)點(diǎn)上去用命令啟動(dòng)。
hadoop-daemon.sh start namenode
hadoop-daemon.sh start datanode
?
7、scp application文件到其他節(jié)點(diǎn)
scp -r application hadoop2:/home/hadoop
.........
?
8、scp /etc/profile 到其他節(jié)點(diǎn)
sudo scp /etc/profile hadoop2:/etc/profile
..........
?
9、source /etc/profile 每個(gè)節(jié)點(diǎn)
source /etc/profile
?
10、格式化namenode(是對(duì)namenode進(jìn)行初始化)
hdfs namenode -format
Storage directory /home/hadoop/hadoop_data/dfs/name has been successfully formatted.
?
11、啟動(dòng)hadoop
start-dfs.sh
12、啟動(dòng)YARN
在yarn.resourcemanager.hostname配置的hadoop2上啟動(dòng)
start-yarn.sh
13、驗(yàn)證是否成功
jps
----------------------------------------
[hadoop@hadoop1 ~]$ jps
2016 NameNode
2266 Jps
?
[hadoop@hadoop2 ~]$ jps
2116 ResourceManager
2379 Jps
1963 SecondaryNameNode
?
[hadoop@hadoop3 ~]$ jps
1968 DataNode
2244 Jps
2123 NodeManager
?
[hadoop@hadoop4 ~]$ jps
1939 DataNode
2216 Jps
2095 NodeManager
?
[hadoop@hadoop5 ~]$ jps
1939 DataNode
2216 Jps
2095 NodeManager
?
?
網(wǎng)頁訪問:
http://192.168.18.131:50070 (HDFS管理界面--hadoop1)
http://192.168.18.132:8088/ (MR管理界面--hadoop2)
?
?
總結(jié)
以上是生活随笔為你收集整理的安装hadoop集群---resourcemanager和NameNode不在同一台机器上的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Java线程的使用及共享协作
- 下一篇: Linux卸载Mysql