Hadoop 3.1.3 分布式集群搭建,超详细,保姆级教程
Posted 姜之糖
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Hadoop 3.1.3 分布式集群搭建,超详细,保姆级教程相关的知识,希望对你有一定的参考价值。
Hadoop 3.1.3 分布式集群搭建,超详细,保姆级教程
在学习的时候,碰到过很多同学,因为安装集群遇到过各种稀奇古怪的问题,导致很多人的兴趣大大降低。并且本人同学也有很多问题,在安装过程中。所有写一篇安装教程。分享给大家如何搭建。
1.环境准备
大家可以根据自己的需要,进行下载。
需要用的环境是:
1.VMware 15
2.CentOS-7.5
3.Xshell 6 Xftp 6
4.jdk 1.8
5.hadoop-3.1.3 jar包 hadoop下载链接
2 jdk1.8安装
2.1 卸载虚拟机自带的JDK
注意:如果虚拟机时安装的桌面版本的linux。需要卸载虚拟机中的JDK。这是安装桌面版本自带的。如果你的虚拟机是最小化安装不需要执行这一步。
[root@hadoop100 ~]# rpm -qa | grep -i java | xargs -n1 rpm -e
--nodeps
重启虚拟机:
[root@hadoop100 ~]# reboot
解释字段:
- rpm -qa:查询所安装的所有 rpm 软件包
- grep -i:忽略大小写
- xargs -n1:表示每次只传递一个参数
- rpm -e –nodeps:强制卸载软件
2.2 安装JDK1.8
0.用 XShell 传输工具将 JDK 导入到虚拟机中的文件夹下面
我个人习惯在当前用户下建立二个文件夹,一个用来存放安装包,一个是安装软件。
1.将JDK安装包上传到存放安装包路径中:
2.在Linux目录下查看是否上传成功:
[abc@hadoop102 ~]$ ls /opt/software/
3. 解压 JDK 到/opt/module 目录下
[abc@hadoop102 software]$ tar -zxvf jdk-8u212-linux-x64.tar.gz -C /opt/module/
4.配置 JDK 环境变量
(1)新建/etc/profile.d/my_env.sh 文件
[abc@hadoop102 ~]$ sudo vim /etc/profile.d/my_env.sh
(2)添加如下内容
#JAVA_HOME
export JAVA_HOME=/opt/module/jdk1.8.0_212
export PATH=$PATH:$JAVA_HOME/bin
(3)保存后退出
:wq
(4)source 一下/etc/profile 文件,让新的环境变量 PATH 生效
[abc@hadoop102 ~]$ source /etc/profile
5.测试 JDK 是否安装成功
[abc@hadoop102 ~]$ java -version
出现以下结果表示安装成功:
3.在 hadoop102 安装Hadoop集群
3.1集群安装准备
注意:安装前,请确保自己有3台虚拟机,并且没有问题。jdk都存在。可以直接将hadoop102上的虚拟机复制也可以。需要更改下主机名和主机ip
注意:克隆时,要先关闭 hadoop102
1.修改克隆机 IP,以下以 hadoop103 举例说明
修改克隆虚拟机的静态 IP。确保横线部分和配置网络ip一致
[root@hadoop100 ~]# vim /etc/sysconfig/network-scripts/ifcfg-ens33
改成
2.修改克隆机主机名,以下以 hadoop102 举例说明
(1)修改主机名称
[root@hadoop100 ~]# vim /etc/hostname
3.重启虚拟机
[root@hadoop100 ~]# reboot
3.2 安装hadoop
Hadoop 下载地址:
链接地址:hadoop3.1.3下载地址
https://archive.apache.org/dist/hadoop/common/hadoop-3.1.3/
1.用 XShell 文件传输工具将 hadoop-3.1.3.tar.gz 导入到 opt 目录下面的 software 文件夹下面
2.在Linux目录下查看:
命令:/opt/software
3.将hadoop-3.1.3解压到module目录下:
[abc@hadoop102 software]$ tar -zxvf hadoop-3.1.3.tar.gz -C /opt/module/
4.查看是否解压成功
[abc@hadoop102 software]$ ls /opt/module/hadoop-3.1.3
5.将 Hadoop 添加到环境变量
(1)获取 Hadoop 安装路径
[abc@hadoop102 hadoop-3.1.3]$ pwd
(2)打开/etc/profile.d/my_env.sh 文件
[abc@hadoop102 hadoop-3.1.3]$ sudo vim/etc/profile.d/my_env.sh
(3)将一下内容添加文件中
#HADOOP_HOME
export HADOOP_HOME=/opt/module/hadoop-3.1.3
export PATH=$PATH:$HADOOP_HOME/bin
export PATH=$PATH:$HADOOP_HOME/sbin
(4) 查看结果
(5)让修改后的文件生效
[abc@hadoop102 hadoop-3.1.3]$ source /etc/profile
(6)测试是否安装成功
[abc@hadoop102 hadoop-3.1.3]$ hadoop version
3.3 hadoop运行模式
1.Hadoop 官方网站:官方地址
http://hadoop.apache.org/
2.Hadoop 运行模式包括:
本地模式、伪分布式模式以及完全分布式模式。
- 本地模式:单机运行,只是用来演示一下官方案例。生产环境不用。
- 伪分布式模式:也是单机运行,但是具备 Hadoop 集群的所有功能,一台服务器模拟一个分布式的环境。个别缺钱的公司用来测试,生产环境不用。
- 完全分布式模式:多台服务器组成分布式环境。生产环境使用。
3.4 完全分布式运行模式(开发重点)
安装所需要的条件:
1.准备 3 台客户机(关闭防火墙、静态 IP、主机名称)
2.安装 JDK
3.配置环境变量
4.安装 Hadoop
5.配置环境变量
3.4.1 编写集群分发脚本 xsync
- 在/home/atguigu/bin 目录下创建 xsync 文件
[abc@hadoop102 opt]$ cd /home/atguigu
[abc@hadoop102 ~]$ mkdir bin
[abc@hadoop102 ~]$ cd bin
[abc@hadoop102 bin]$ vim xsync
在文件中编写以下内容:
#!/bin/bash
if [ $# -lt 1 ]
then
echo "No Args Input..." exit ;
fi
case $1 in
"start")
echo " =================== 启动 hadoop 集群 ==================="
echo " --------------- 启动 hdfs ---------------"
ssh hadoop102 "/opt/module/hadoop-3.1.3/sbin/start-dfs.sh"
echo " --------------- 启动 yarn ---------------"
ssh hadoop103 "/opt/module/hadoop-3.1.3/sbin/start-yarn.sh"
echo " --------------- 启动 historyserver ---------------"
ssh hadoop102 "/opt/module/hadoop-3.1.3/bin/mapred --daemon start historyserver"
;;
"stop")
echo " =================== 关闭 hadoop 集群 ==================="
echo " --------------- 关闭 historyserver ---------------"
ssh hadoop102 "/opt/module/hadoop-3.1.3/bin/mapred --daemon stop historyserver"
echo " --------------- 关闭 yarn ---------------"
ssh hadoop103 "/opt/module/hadoop-3.1.3/sbin/stop-yarn.sh"
echo " --------------- 关闭 hdfs ---------------"
ssh hadoop102 "/opt/module/hadoop-3.1.3/sbin/stop-dfs.sh"
;;
*)
echo "Input Args Error. "
;;
esac
- 修改脚本 xsync 具有执行权限
[abc@hadoop102 bin]$ chmod +x xsync
- 测试脚本
[abc@hadoop102 ~]$ xsync /home/atguigu/bin
- 将脚本复制到/bin 中,以便全局调用
[abc@hadoop102 bin]$ sudo cp xsync /bin/
- 同步环境变量配置(root 所有者)
[abc@hadoop102 ~]$ sudo ./bin/xsync /etc/profile.d/my_env.sh
注意:如果用了 sudo,那么 xsync 一定要给它的路径补全。
让环境变量生效
[abc@hadoop103 bin]$ source /etc/profile
[abc@hadoop104 opt]$ source /etc/profile
3.4.2 ssh免密配置
1.生产密钥命令:ssh-keygen -t rsa
出现一下情况一直按回车就解决:
生产密钥结束:
2.将密钥拷贝到hadoop103 hadoop104:
[abc@hadoop102 .ssh]$ ssh-copy-id hadoop102
[abc@hadoop102 .ssh]$ ssh-copy-id hadoop103
[abc@hadoop102 .ssh]$ ssh-copy-id hadoop104
注意:
还需要在 hadoop103 上采用 atguigu 账号配置一下无密登录hadoop102、hadoop103、hadoop104 服务器上。
还需要在 hadoop104 上采用 atguigu 账号配置一下无密登录hadoop102、hadoop103、hadoop104 服务器上。
还需要在 hadoop102 上采用 root 账号,配置一下无密登录到hadoop102、hadoop103、hadoop104;
3.4.3 集群配置
注意:
NameNode 和 SecondaryNameNode 不要安装在同一台服务器
ResourceManager 也很消耗内存,不要和 NameNode\\SecondaryNameNode 配置在同一台机器上。
1.配置文件说明
Hadoop 配置文件分两类:默认配置文件和自定义配置文件,只有用户想修改某一默认配置值时,才需要修改自定义配置文件,更改相应属性值。
(1)默认配置文件:
要获取的默认文件 文件存放在 Hadoop 的 jar 包中的位置
(2)自定义配置文件:
core-site.xml、hdfs-site.xml、yarn-site.xml、mapred-site.xml 四个配置文件存放在$HADOOP_HOME/etc/hadoop 这个路径上,用户可以根据项目需求重新进行修改配置。
2.配置集群
(1)核心配置文件 vim core-site.xml
<configuration>
<!-- 指定 NameNode 的地址 -->
<property>
<name>fs.defaultFS</name>
<value>hdfs://hadoop102:8020</value>
</property>
<!-- 指定 hadoop 数据的存储目录 -->
<property>
<name>hadoop.tmp.dir</name>
<value>/opt/module/hadoop-3.1.3/data</value>
</property>
<!-- 配置 HDFS 网页登录使用的静态用户为 atguigu -->
<property>
<name>hadoop.http.staticuser.user</name>
<value>abc</value>
</property>
</configuration>
(2)HDFS 配置文件vim hdfs-site.xml
<configuration>
<!-- nn web 端访问地址-->
<property>
<name>dfs.namenode.http-address</name>
<value>hadoop102:9870</value>
</property>
<!-- 2nn web 端访问地址-->
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>hadoop104:9868</value>
</property>
</configuration>
(3)YARN 配置文件vim yarn-site.xml
<configuration>
<!-- 指定 MR 走 shuffle -->
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<!-- 指定 ResourceManager 的地址-->
<property>
<name>yarn.resourcemanager.hostname</name>
<value>hadoop103</value>
</property>
<!-- 环境变量的继承 -->
<property>
<name>yarn.nodemanager.env-whitelist</name>
<value>JAVA_HOME,HADOOP_COMMON_HOME,HADOOP_HDFS_HOME,HADOOP_CO
NF_DIR,CLASSPATH_PREPEND_DISTCACHE,HADOOP_YARN_HOME,HADOOP_MAP
RED_HOME</value>
</property>
</configuration>
(4)MapReduce 配置文件vim mapred-site.xml
<configuration>
<!-- 指定 MapReduce 程序运行在 Yarn 上 -->
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
</configuration>
(5)配置 workers vim workers
注意:不能有空行
hadoop102
hadoop103
hadoop104
3.在集群上分发配置好的 Hadoop 配置文件
[abc@hadoop102 hadoop]$ xsync /opt/module/hadoop-3.1.3/etc/hadoop/
4.去 103 和 104 上查看文件分发情况
[atguigu@hadoop103 ~]$ cat /opt/module/hadoop-3.1.3/etc/hadoop/core-site.xml
[atguigu@hadoop104 ~]$ cat /opt/module/hadoop-3.1.3/etc/hadoop/core-site.xml
3.4.4 启动集群
- 如果集群是第一次启动,需要在 hadoop102 节点格式化 NameNode
注意:格式化 NameNode,会产生新的集群 id,导致 NameNode 和 DataNode 的集群 id 不一致,集群找不到已往数据。如果集群在运行过程中报错,需要重新格式化 NameNode 的话,一定要先停 止 namenode 和 datanode 进程,并且要删除所有机器的 data 和 logs 目录,然后再进行格式化。
格式化命令:
[abc@hadoop102 hadoop-3.1.3]$ hdfs namenode -format
- 启动 HDFS
[abc@hadoop102 hadoop-3.1.3]$ sbin/start-dfs.sh
- 在配置了 ResourceManager 的节点(hadoop103)启动 YARN
[abc@hadoop103 hadoop-3.1.3]$ sbin/start-yarn.sh
-
Web 端查看 HDFS 的 NameNode
(a)浏览器中输入:http://hadoop102:9870
(b)查看 HDFS 上存储的数据信息 -
Web 端查看 YARN 的 ResourceManager
(a)浏览器中输入:http://hadoop103:8088
(b)查看 YARN 上运行的 Job 信息。 -
集群搭建完成。使用jps命令查看进程:
jps
[abc@hadoop102 ~]$ jps
[abc@hadoop103 ~]$ jps
[abc@hadoop104 ~]$ jps
hadoop102上进程:
hadoop103进程:
Hadoop104进程:
如果出现这几个进程代表安装完成;恭喜大家
3.5 测试集群:
首先确保集群在启动状态下,在hadoop的当前目录下创建一个文件。请确保一下命令君在hadoop102上运行;
- 命令:
vim /opt/module/hadoop-3.1.3/word.txt
- 给word.txt中写一些数据。
举例子写的一下代码:
hadoop yarn
hadoop mapreduce
hello
hello yarn
保存退出;(按 esc 后,按大写ZZ退出)
- 将word.txt上传到hdfs中
命令:
hadoop fs -put /opt/module/hadoop-3.1.3/word.txt /
上hdfs上查看:
- 利用hadoop自带的测试类运行:
解释:运行wordcount程序,将hdfs跟目录下的word.txt运行,并分类,然后输出到dhfs根目录下的output文件夹
hadoop jar /opt/module/hadoop-3.1.3/share/hadoop/mapreduce/hadoop-mapreduce-examples-3.1.3.jar wordcount /word.txt /output
运行过程截图:
结束时候的运行状况:
- 在hdfs网页端查看结果:
查看输出的内容:(按序号点击就可查看)
3.6 测试集群可能出现的错误:
测试集群可能会出现一下错误,在运行map阶段卡住,然后报错。这个原因是新版本的hadoop的原因。
在集群中的配置文件添加如下命令:
- 进入配置文件目录下:
cd /opt/module/hadoop-3.1.3/etc/hadoop/
- 打开mapred-site.xml
vim mapred-site.xml
将以下内容添加到配置文件中(确保内容在<configuration>
标签中):
<property>
<name>yarn.app.mapreduce.am.env</name>
<value>HADOOP_MAPRED_HOME=/opt/module/hadoop-3.1.3</value>
</property>
<property>
<name>mapreduce.map.env</name>
<value>HADOOP_MAPRED_HOME=/opt/module/hadoop-3.1.3</value>
</property>
<property>
<name>mapreduce.reduce.env</name>
<value>HADOOP_MAPRED_HOME=/opt/module/hadoop-3.1.3</value>
</property>
保存退出(按 esc 大写ZZ退出 )
- 分发这个配置文件到3台机器上:
命令是:
[abc@hadoop102 hadoop]$ xsync mapred-site.xml
- 在重启下hadoop集群
- 重新跑下测试;顺利解决
到这里已经安装完成了。如果本篇文章,对大家有帮助,希望大家给点个赞。非常感谢。如果有任何疑问,请评论区提问,感谢大家
以上是关于Hadoop 3.1.3 分布式集群搭建,超详细,保姆级教程的主要内容,如果未能解决你的问题,请参考以下文章
超详细!CentOS 7 + Hadoop3.0.0 搭建伪分布式集群