安装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)

发布了461 篇原创文章 · 获赞 193 · 访问量 184万+

猜你喜欢

转载自blog.csdn.net/zengmingen/article/details/104583586