Hadoop 3.1.3 分布式集群搭建,超详细,保姆级教程

Posted 姜之糖

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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

解释字段:

  1. rpm -qa:查询所安装的所有 rpm 软件包
  2. grep -i:忽略大小写
  3. xargs -n1:表示每次只传递一个参数
  4. 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 运行模式包括:
本地模式、伪分布式模式以及完全分布式模式。

  1. 本地模式:单机运行,只是用来演示一下官方案例。生产环境不用。
  2. 伪分布式模式:也是单机运行,但是具备 Hadoop 集群的所有功能,一台服务器模拟一个分布式的环境。个别缺钱的公司用来测试,生产环境不用。
  3. 完全分布式模式:多台服务器组成分布式环境。生产环境使用。

3.4 完全分布式运行模式(开发重点)

安装所需要的条件:
1.准备 3 台客户机(关闭防火墙、静态 IP、主机名称)
2.安装 JDK
3.配置环境变量
4.安装 Hadoop
5.配置环境变量

3.4.1 编写集群分发脚本 xsync

  1. 在/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
  1. 修改脚本 xsync 具有执行权限
[abc@hadoop102 bin]$ chmod +x xsync
  1. 测试脚本
[abc@hadoop102 ~]$ xsync /home/atguigu/bin
  1. 将脚本复制到/bin 中,以便全局调用
[abc@hadoop102 bin]$ sudo cp xsync /bin/
  1. 同步环境变量配置(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 启动集群

  1. 如果集群是第一次启动,需要在 hadoop102 节点格式化 NameNode

注意:格式化 NameNode,会产生新的集群 id,导致 NameNode 和 DataNode 的集群 id 不一致,集群找不到已往数据。如果集群在运行过程中报错,需要重新格式化 NameNode 的话,一定要先停 止 namenode 和 datanode 进程,并且要删除所有机器的 data 和 logs 目录,然后再进行格式化。
格式化命令:

[abc@hadoop102 hadoop-3.1.3]$ hdfs namenode -format
  1. 启动 HDFS
[abc@hadoop102 hadoop-3.1.3]$ sbin/start-dfs.sh
  1. 在配置了 ResourceManager 的节点(hadoop103)启动 YARN
[abc@hadoop103 hadoop-3.1.3]$ sbin/start-yarn.sh
  1. Web 端查看 HDFS 的 NameNode
    (a)浏览器中输入:http://hadoop102:9870
    (b)查看 HDFS 上存储的数据信息

  2. Web 端查看 YARN 的 ResourceManager
    (a)浏览器中输入:http://hadoop103:8088
    (b)查看 YARN 上运行的 Job 信息。

  3. 集群搭建完成。使用jps命令查看进程:jps

[abc@hadoop102 ~]$ jps
[abc@hadoop103 ~]$ jps
[abc@hadoop104 ~]$ jps

hadoop102上进程:
hadoop103进程:
Hadoop104进程:
如果出现这几个进程代表安装完成;恭喜大家

3.5 测试集群:

首先确保集群在启动状态下,在hadoop的当前目录下创建一个文件。请确保一下命令君在hadoop102上运行;

  1. 命令:
vim /opt/module/hadoop-3.1.3/word.txt
  1. 给word.txt中写一些数据。
    举例子写的一下代码:
hadoop yarn
hadoop mapreduce
hello
hello yarn

保存退出;(按 esc 后,按大写ZZ退出)

  1. 将word.txt上传到hdfs中
    命令:
hadoop fs -put /opt/module/hadoop-3.1.3/word.txt /

上hdfs上查看:

  1. 利用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

运行过程截图:
结束时候的运行状况:

  1. 在hdfs网页端查看结果:
    查看输出的内容:(按序号点击就可查看)

3.6 测试集群可能出现的错误:

测试集群可能会出现一下错误,在运行map阶段卡住,然后报错。这个原因是新版本的hadoop的原因。

在集群中的配置文件添加如下命令:

  1. 进入配置文件目录下:
cd /opt/module/hadoop-3.1.3/etc/hadoop/
  1. 打开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退出 )

  1. 分发这个配置文件到3台机器上:
    命令是:
[abc@hadoop102 hadoop]$ xsync mapred-site.xml 
  1. 在重启下hadoop集群
  2. 重新跑下测试;顺利解决

到这里已经安装完成了。如果本篇文章,对大家有帮助,希望大家给点个赞。非常感谢。如果有任何疑问,请评论区提问,感谢大家

以上是关于Hadoop 3.1.3 分布式集群搭建,超详细,保姆级教程的主要内容,如果未能解决你的问题,请参考以下文章

搭建Hadoop集群(超详细版)

超详细!CentOS 7 + Hadoop3.0.0 搭建伪分布式集群

超详细!Apache Hadoop 完全分布式集群,实现 NNRM 的高可用

hadoop2.x单机搭建分布式集群超详细教程

hadoop2.x单机搭建分布式集群超详细教程

HBase 分布式搭建