大数据Hadoop学习(2)-Hadoop分布式集群搭建
前置实验:大数据Hadoop学习(1)-虚拟机准备
完全分布式集群搭建:
node1 | node2 | node3 | |
---|---|---|---|
HDFS | NameNode DataNode | DataNode | SecondaryNameNode DataNode |
YARN | NodeManager | ResourceManager NodeManager | NodeManager |
准备工作:将hadoop-2.7.0.tar.gz上传到/opt/module/,解压到/opt/software/(两个文件夹上个实验已建好)
解压安装包:
[root@node1 module]# tar zxf hadoop-2.7.0.tar.gz -C /opt/software/
1) 修改core-site.xml文件
下面所有的文件在/opt/software/hadoop-2.7.0/etc/hadoop/
在
<configuration>
</configuration>
之间添加
<property>
<!--hdfs地址-->
<name>fs.defaultFS</name>
<value>hdfs://node1:9000</value>
</property>
<!-- 指定hadoop运行时产生文件的存储目录 -->
<property>
<name>hadoop.tmp.dir</name>
<value>/opt/software/hadoop-2.7.0/data/tmp</value>
</property>
2) 修改hadoop-env.sh
末尾添加一行
export JAVA_HOME=/opt/software/jdk1.8.0_161
3) 修改hdfs-site.xml
在
<configuration>
</configuration>
之间添加
<!--副本集个数-->
<property>
<name>dfs.replication</name>
<value>3</value>
</property>
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>node3:50090</value>
</property>
4) 修改yarn-env.sh
export JAVA_HOME=/opt/software/jdk1.8.0_161
5) 修改yarn-site.xml文件
在
<configuration>
</configuration>
之间添加
<!-- reducer获取数据的方式 -->
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<!-- 指定YARN的ResourceManager的地址 -->
<property>
<name>yarn.resourcemanager.hostname</name>
<value>node2</value>
</property>
6) 修改mapred-env.sh文件
末尾添加一行
export JAVA_HOME=/opt/software/jdk1.8.0_161
7) 修改mapred-site.xml文件
这里没有这个文件,可以从模板复制一份
[root@node1 hadoop]# cp mapred-site.xml.template mapred-site.xml
在
<configuration>
</configuration>
之间添加
<!-- 指定mr运行在yarn上 -->
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
8) 修改slaves文件
node1
node2
node3
9) 分发文件到node2 node3
[root@node1 hadoop-2.7.0]# scp -r /opt/software/hadoop-2.7.0/ node2:/opt/software/
[root@node1 hadoop-2.7.0]# scp -r /opt/software/hadoop-2.7.0/ node3:/opt/software/
10) 格式化namenode
[root@node1 hadoop-2.7.0]# bin/hdfs namenode -format
11) 启动集群
[root@node1 hadoop-2.7.0]# sbin/start-dfs.sh
[root@node2 hadoop-2.7.0]# sbin/start-yarn.sh #注意yarn启动/停止都在node2操作
开始是在node1上启动yarn,报错:
-
2020-04-30 19:48:09,999 FATAL org.apache.hadoop.yarn.server.resourcemanager.ResourceManager: Error starting ResourceManager
org.apache.hadoop.yarn.exceptions.YarnRuntimeException: java.net.BindException: Problem binding to [node2:8031] java.net.BindException: Cannot assign requested address; For more details see: http://wiki.apache.org/hadoop/BindException说是地址绑定失败,google下,说是Namenode和ResourceManger如果不是同一台机器,不能在NameNode上启动 yarn,应该在ResouceManager所在的机器上启动yarn。所以这里要在node2上启动。
12) 查看集群是否正常
[root@node1 hadoop-2.7.0]# jps
分别执行的结果
[root@node1 hadoop-2.7.0]# jps
4816 Jps
3346 NameNode
3478 DataNode
4680 NodeManager
[root@node2 hadoop-2.7.0]# jps
1922 DataNode
3028 NodeManager
2904 ResourceManager
3337 Jps
[root@node3 ~]# jps
2691 NodeManager
2134 SecondaryNameNode
2845 Jps
查看hdfs地址:
http://192.168.200.101:50070/ -Utilities
-Browse the file system
可以浏览文件
查看yarn地址:
http://192.168.200.102:8088
查看secondaryNamenode地址:
http://192.168.200.103:50090
13) 停止集群的命令
[root@node1 hadoop-2.7.0]# sbin/stop-dfs.sh
[root@node2 hadoop-2.7.0]# sbin/stop-yarn.sh