安裝hadoop集羣---resourcemanager和NameNode不在同一臺機器上

1、複製虛擬機,搞了5臺。

1:namenode

2:secondardNameNode,resourcemanager

3,4,5:DataNode

 

2、修改了網卡配置,連接上SecureCRT

 

---------root----用戶----------

3、date查看了時間

4、開機啓動了 ntpdate

chkconfig --list

chkconfig --level 12345 ntpdate on

 

5、ntpdate 同步時間

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、每臺配置本機域名

[root@zengmg etc]# vi /etc/sysconfig/network

 

NETWORKING=yes

HOSTNAME=hadoop1

 

9、每臺配置hosts文件

多窗口發送命令

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

//要編寫一個shell腳本,如果集羣裏有幾十臺怎麼辦?

 

10、關閉防火牆

chkconfig iptables off

service iptables stop

 

11、創建 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。無需各臺機器互相ssh免密碼。只要hadoop1能免密訪問其他機器

hadoop1機器上:

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機器上:

ssh-keygen -t rsa

ssh-copy-id hadoop2

ssh-copy-id hadoop3

ssh-copy-id hadoop4

ssh-copy-id hadoop5

 

這個ssh免密登錄是針對hadoop用戶。root用戶沒有配置,不能免密登錄對方。ssh免密是用戶有效

 

1、上傳JDK和hadoop

2、在hadoop的home目錄下建文件夾 application。在/(根目錄下)沒有權限新建,只有root能建立。

[hadoop@hadoop1 /]$ mkdir application

mkdir: cannot create directory `application': Permission denied

3、解壓hadoop,jdk的壓縮包到 application 文件夾

tar -zxvf 壓縮包 -C application

 

4、配置jdk,hadoop的環境變量

[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數據存放路徑

<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 文件配置 數據副本個數,可以不配置的。因爲默認是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運行在yarn平臺上,屬於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獲取數據的方式

<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>

 

這個端口可以修改

 

問題:配置成與主節點namenode不同的機子,resourcemanager運行不起來,什麼原因?

google下,說是Namenode和ResourceManger如果不是同一臺機器,不能在NameNode上啓動 yarn,應該在ResouceManager所在的機器上啓動yarn。現在問題解決了,多謝提醒

懂了:原來,hdfs,yarn,mr是三個獨立的組件。namenode是hdfs的頭,resourcemanager是yarn的頭。兩個不同的頭,在namenode上啓動resourcemanager自然是起不來的。

所以,如果Namenode和ResourceManger如果不是同一臺機器,那要啓動hdfs,再啓動yarn。不能用start-all一步到位。

還是有問題?如果resourcemanager所在節點沒有配置slaves,nodemanager會在本地啓動。

 

 

6)、配置slaves

注意:slaves裏的配置是start-*.sh啓動腳本要讀取集羣的配置文件。如果不配置,就會運行單機版本的。

默認是localhost

hadoop3,4,5是DataNode。也是yarn的NodeManager

hadoop3

hadoop4

hadoop5

----------------------

注意:此時namenode節點已經可以初始化。可以單獨啓動namenode,DataNode每啓動一臺,想namenode註冊一臺。NameNode初始化後,可以不用 start-all.sh【學習下里面的寫法,如何遍歷】或者下面的命令。

可以根據需要,到DataNode節點上去用命令啓動。

hadoop-daemon.sh start namenode

hadoop-daemon.sh start datanode

 

7、scp application文件到其他節點

scp -r application hadoop2:/home/hadoop

.........

 

8、scp /etc/profile 到其他節點

sudo scp /etc/profile hadoop2:/etc/profile

..........

 

9、source /etc/profile 每個節點

source /etc/profile

 

10、格式化namenode(是對namenode進行初始化)

hdfs namenode -format

Storage directory /home/hadoop/hadoop_data/dfs/name has been successfully formatted.

 

11、啓動hadoop

start-dfs.sh

12、啓動YARN

在yarn.resourcemanager.hostname配置的hadoop2上啓動

start-yarn.sh

13、驗證是否成功

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

 

 

網頁訪問:

http://192.168.18.131:50070 (HDFS管理界面--hadoop1)

http://192.168.18.132:8088/ (MR管理界面--hadoop2)

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章