安装hadoop集群---resourcemanager和NameNode不在同一台机器上
1、复制虚拟机,搞了5台。1:namenode2:secondardNameNode,resourcemanager3,4,5:DataNode2、修改了网卡配置,连接上SecureCRT---------root----用户----------3、date查看了时间4、开机启动了 ntpdatechkconfig --listchkconfig -...
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)
更多推荐
所有评论(0)