首先要配置好一台机器的伪分布式,这样方便后面的配置。
关于伪分布式的:请看伪分布式搭建
1. 配置yarn
-
配置yarn-env.sh,
对于3版本的就不用配置了
,因为已经默认从hadoop-env.sh读取了。 -
配置yarn-site.xml文件。
<configuration>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<property>
<name>yarn.resourcemanager.hostnname</name>
<value>你的主机地址可以是localost</value>
</property>
<property>
<name>yarn.nodemanager.aux-services.mapreduce.shuffle.class</name>
<value>org.apache.hadoop.mapred.ShuffleHandler</value>
</property>
<property>
<name>yarn.resourcemanager.address</name>
<value>bigdata:8032</value>
</property>
<property>
<name>yarn.resourcemanager.scheduler.address</name>
<value>bigdata:8030</value>
</property>
<property>
<name>yarn.resourcemanager.resource-tracker.address</name>
<value>bigdata:8035</value>
</property>
<property>
<name>yarn.resourcemanager.admin.address</name>
<value>bigdata:8033</value>
</property>
<property>
<name>yarn.resourcemanager.webapp.address</name>
<value>bigdata:8088</value>
</property>
</configuration>
- 查看是否运行成功:8088(mapReduce进程)
2. 各个主机配置
- 修改
/etc/hosts
文件和/etc/hostname
文件
vim /etc/hosts
主服务器如下
10.104.157.113 node0 # node0的内网ip
119.29.250.47 node1 # node1的外网Ip
119.29.251.99 slave2 # node2的外网ip
从1
10.104.9.181 node1 # node1的内网ip
119.29.186.83 node0 # node0的外网ip
119.29.251.99 node2 # node2的外网ip
注意 本机的hostname与内网ip对应
其他的hostname与外网ip对应
然后依次ping master,ping slave1
vim /etc/hostname
把主机名称修改成对应的名称,比如node0修改成node0, 注意不要有空行。
另外,修改晚名称一般需要重启。
shutdown -r
重启之后,会发现主机名称已经改变了,比如把主机修改成node0重启之后。
这里的ip地址一定,一定要配置好,否则后面启动可能会出现端口绑定失败,从而导致没法启动namenode或者datanode的问题。
- 使用scp将hadoop和java环境配置到另外两台的虚拟机中。
scp -r hadoop root@node0:/对应的文件夹
注意,如果网速太慢的话,拷贝文件夹是很慢的,所以建议先拷贝压缩包,之后每台机器对应位置解压。最后把配置好的/etc文件夹拷贝到对应机器中的/etc文件夹中。
scp -r etc root@node1:/hadoop的位置/
这样就会把原本的etc文件夹覆盖,从而起到了配置效果。
3. 集群的配置
- 集群的部署规划
node0 | node1 | node2 |
---|---|---|
namenode | datanode | nodemanager |
datanode | resoureceManager | secondaryNamenode |
nodenamager | datanode |
-
修改core-site.xml文件
- 将启动的主机地址修改成node0
- 端口号是9000
-
将hdfs中的hdfs-site.xml文件中的
- 第二结点的http地址修改成node2
- 端口号修改按照官网上默认的是:9860
- 2.多版本的端口号是50090
-
配置yarn-site-xml
- 修改ResourceManager到node2
-
修改Map-Reduced程序默认在yarn上,
-
修改文件名(如果没有伪分布式的配置的话)
-
默认的是本地模式
-
-
已经配置完成之后将文件使用
scp
分配到各个服务器上面。 -
删除./tmp文件,各个都删除, 然后重新格式化namenode
#针对 DataNode 没法启动的解决方法 cd /usr/local/hadoop ./sbin/stop-dfs.sh # 关闭 rm -r ./tmp # 删除 tmp 文件,注意这会删除 HDFS 中原有的所有数据 ./bin/hdfs namenode -format # 重新格式化 NameNode
-
群起修改wokers或者slaves文件
node0 node1 node2
注意不要有空行
-
使用
start-dfs.sh
命令群起。- 命令在hadoop/sbin目录下
-
启动yarn
- 一定要在resoureceManager上启动
- 使用start-yarn.sh
- 命令在/hadoop/sbin目录下
-
关闭集群
- 在node0上
- 使用stop-dfs.sh
- 命令所谓位置如上
-
关闭yarn
- 在Node1上
- 使用stop-yarn.sh
-
测试是否成功启动:
- 上传一个小文件, 使用
hdfs dfs -put 文件名称 /
,上传到根目录下面 - 上传一个大文件
- 产看上传的结果
- 上传一个小文件, 使用
14. 查看yarn是否启动成功,使用在浏览器中输入node1主机地址:8088
-
查看第二结点是否启动成功,浏览器中输入
node2的地址地址:50090
-
关于历史服务器,请看文章历史服务器和日志聚集
4.一些问题
- namenode没法启动。需要修改/etc/sysconfig/network中的主机名字。然后让/etc/hosts文件中的本机名称与内网ip对应。让其他的名称与外网ip对应。
- 启动yarn的时候,出现了ip地址warning,这是由于ssh没有更新key导致的。
- 使用hadoop可以,但是下载文件的时候出现了node0:9870这种情况。是什么导致的呢?
- 启动出现
error HADOOP_USER
这中情况,请看参考文章。 - 如果namenode没法启动,先看
/hadoop/logs
中关于namenode的日志记录。之后自行百度。有可能是端口绑定失败。使用netstat -anp | grep 9000
看端口是否被占用。如果没有占用,可能是出现了第一种情况。就是没有把本机的hostsname定义成本机的内网。 - 如果出现了
netstat -anp | grep 50090
发现成功启动了端口,但是却没法在浏览器上访问的情况,看一下防火墙是否关闭了。腾讯云的防火墙是默认开启的,用命令管不了。得去自己设定规则。
5. 强烈推荐的参考文章
还有好多关于错误的参考文章,忘了记录了,下次一定记录下来。