基于Linux(最小安装)平台的hadoop完全分布式系统搭建详细搭建过程

简介:本次安装演示是基于虚拟机的服务器(Linux)进行的,分别是:bdc112 bdc113 bdc114。 主要进行了Linux安装环境准备,远程工具:xshell和xftp安装、虚拟机的配置、虚拟机的克隆、虚拟机和我们Windows 10 的网络桥接、免密登录配置、jdk安装,hadoop安装:包括集群规划、分发脚本编写、编写hadoop常用脚本等比较详细完善的安装配置过程。

一、安装环境准备(Linux)

在进行集群的安装前,我们先要进行多台服务器的安装和基础配置,对于虚拟机里安装Linux系统,请大家自己在百度上进行百度自行安装。先安装一个,后面的我们之间克隆就好。我这里先安装好的是bdc111。对它需要进行一下配置:

1、网络配置:

步骤如下:

#1、打开ifcfg-ens33文件进行网络配置
[lqs@bdc111 ~]# vim /etc/sysconfig/network-scripts/ifcfg-ens33

截图
需要将第一个画框的值改为static(原本DHCP),其次在增加第二个框中的内容即可。

2、修改主机名

[lqs@bdc111 ~]# vim /etc/hostname
#打开文件后将主机名改成bdc111即可

3、修改hosts文件

[lqs@bdc111 ~]# vim /etc/hosts

修改成如下的样子即可

127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6

192.168.10.112 bdc112
192.168.10.113 bdc113
192.168.10.114 bdc114
192.168.10.115 bdc115
192.168.10.116 bdc116
192.168.10.117 bdc117
192.168.10.118 bdc118

4、重启服务器

[lqs@bdc111 ~]# reboot

5、修改Windows 10 中的主机映射文件,即hosts文件

路径在:C:\Windows\System32\drivers\etc下,修改成这个样子就可以了,如下

# localhost name resolution is handled within DNS itself.
#	127.0.0.1       localhost
#	::1             localhost

192.168.10.112 bdc112
192.168.10.113 bdc113
192.168.10.114 bdc114
192.168.10.115 bdc115
192.168.10.116 bdc116
192.168.10.117 bdc117
192.168.10.118 bdc118

#修改的时候出现了任何问题,可以评论区问,也可以私信我
ps:记得ping一下百度或者主机(查看主机ip:ipconfig)能否ping通

二、远程工具的安装

免费版点击这里下载安装。

这里下载xshell。
然后按照引导进行安装就可以了
yum install epel-release
安装好后的截图(已连接))

这里下载xftp
按照指引进行安装即可。
安装好后的截图(已连接))

三、bdc111虚拟机需要配置的如下

1、安装一些需要用的软件包

我的是最小安装(Linux)

[lqs@bdc111 ~]# yum install -y epel-release

#安装net工具
[lqs@bdc111 ~]# yum install net-tools

#安装vim工具
[lqs@bdc111 ~]# yum install vim

#安装其它工具
[lqs@bdc111 ~]# yum install -y  psmisc  nc  rsync  lrzsz  ntp libzstd openssl-static tree iotop git
[lqs@bdc111 ~]#

2、关闭防护墙

#临时关闭防火墙
#查看防火墙状态
[lqs@bdc111~]$ systemctl status firewalld

#临时关闭防火墙
[lqs@bdc111~]$ systemctl stop firewalld

#查看防火墙开机启动状态
[lqs@bdc111~]$ 	systemctl enable firewalld.service

#设置开机时关闭防火墙
[lqs@bdc111~]$ systemctl disable firewalld.service

#查看服务是否开机自启
[lqs@bdc111 ~]$ systemctl is-enabled firewalld.service
#disabled 表示开机不自启
#enabled 表示开机自启

详细可以参考我这篇文章:Linux网络配置相关命令

3、配置lqs用户具有root权限,可以在后期执行临时的root命令

配置内容及详细过程如下:

[lqs@bdc112 ~]# vim /etc/sudoers

sudo配置

4、在lqs用户下创建相关文件夹

[lqs@bdc112 ~]# ll                                                                                         
总用量 0                                                                                                      
[lqs@bdc112 ~]# mkdir module                                                                               
[lqs@bdc112 ~]# mkdir software
[lqs@bdc112 ~]# ll
总用量 8                                                                                                      
drwxr-xr-x. 2 root root 4096 12月  6 14:00 module                                                             
drwxr-xr-x. 2 root root 4096 12月  6 14:00 software   

#修改创建两个文件夹的所有者和所属组皆为lqs                                                        
[lqs@bdc112 ~]# chown lqs:lqs ./*
[lqs@bdc112 ~]# ll                                                                                         
总用量 8                                                                                                      
drwxr-xr-x. 2 lqs lqs 4096 12月  6 14:00 module                                                               
drwxr-xr-x. 2 lqs lqs 4096 12月  6 14:00 software

5、卸载jdk

查看Linux自带虚拟机(最小安装的不用管)

[lqs@bdc112 ~]# java -version

如果有出现,则全部卸载

[lqs@bdc112 ~]# rpm -qa | grep -i java | xargs -n1 rpm -e --nodeps 

对命令的解释:

命令解释
rpm -qa查询所安装的所有rpm软件包
grep -i忽略大小写
xargs -n1表示每次只传递一个参数
rpm -e –nodeps强制卸载软件

重启虚拟机

[lqs@bdc112 ~]# reboot

四、克隆虚拟机

点击模型机的名字,右键管理->克隆->创建完整克隆

克隆出来三台,我这里取名为:bdc112 bdc113 bdc114
然后对他们的hosts文件、ifcfg-ens33文件、hostname文件进行对应的更改即可。

注意:必须要在关机的情况下才可以!!!
如有问题,可以私信我,或者评论区问!!!

五、虚拟机桥接到Windows 10 配置

具体配置参考我的另外一篇文章:编辑VMware网络配置和Windows网络配置,进行配置即可。

六、jdk安装

这里自行百度下载相应版本的hadoop-3.1.3.tar.gzJava jdk,我这里使用的是hadoop3.x版本,Java jdk版本是1.828。

1、将jar包解压到我们创建的module文件下

[lqs@bdc112 software]$ tar -zxvf jdk-8u212-linux-x64.tar.gz -C /home/lqs/module/

2、可以查看是否解压成功

[lqs@bdc112 software]$ ll /home/lqs/module/jdk1.8.0_212/

3、配置环境变量

[lqs@bdc112 software]$ sudo vim /etc/profile.d/my_env.sh

#在my_env.sh文件中添加如下内容
#JAVA_HOME
export JAVA_HOME=/home/lqs/module/jdk1.8.0_212
export PATH=$PATH:$JAVA_HOME/bin

4、source一下

[lqs@bdc112 software]$ source /etc/profile

5、查看是否配置成功

[lqs@bdc112 software]$ java -version
java version "1.8.0_212"#出现则表示配置成功
Java(TM) SE Runtime Environment (build 1.8.0_212-b10)
Java HotSpot(TM) 64-Bit Server VM (build 25.212-b10, mixed mode)

七、hadoop安装即配置

1、将jar包解压到我们创建的module文件下

[lqs@bdc112 software]$ tar -zxvf hadoop-3.1.3.tar.gz -C /home/lqs/module/

2、查看是否解压成功

[lqs@bdc112 software]$ ll /home/lqs/module/hadoop-3.1.3/
总用量 208
drwxr-xr-x. 2 lqs lqs   4096 9月  12 2019 bin
drwxrwxr-x. 4 lqs lqs   4096 12月  5 20:43 data
drwxr-xr-x. 3 lqs lqs   4096 9月  12 2019 etc
drwxr-xr-x. 2 lqs lqs   4096 9月  12 2019 include
drwxr-xr-x. 3 lqs lqs   4096 9月  12 2019 lib
drwxr-xr-x. 4 lqs lqs   4096 9月  12 2019 libexec
-rw-rw-r--. 1 lqs lqs 147145 9月   4 2019 LICENSE.txt
drwxrwxr-x. 3 lqs lqs   4096 12月  5 20:43 logs
-rw-rw-r--. 1 lqs lqs  21867 9月   4 2019 NOTICE.txt
-rw-rw-r--. 1 lqs lqs   1366 9月   4 2019 README.txt
drwxr-xr-x. 3 lqs lqs   4096 9月  12 2019 sbin
drwxr-xr-x. 4 lqs lqs   4096 9月  12 2019 share

3、环境变量配置
首先打开/etc/profile.d/my_env.sh 文件

[lqs@bdc112 software]$ vim /etc/profile.d/my_env.sh

并在文件末尾添加如下内容:

#HADOOP_HOME
export HADOOP_HOME=/home/lqs/module/hadoop-3.1.3
export PATH=$PATH:$HADOOP_HOME/bin
export PATH=$PATH:$HADOOP_HOME/sbin

4、source一下文件source /etc/profile

八、分发脚本编写

为了方便我们通过bdc112节点将文件等信息同步到其它节点而编写

过程如下:
1、创建bin文件在/home/lqs/下

[lqs@bdc112 ~]$ mkdir bin
[lqs@bdc112 ~]$ cd bin/
[lqs@bdc112 bin]$ vim xsync

2、打开文件后在文件中加入一下内容

#!/bin/bash

#1. 判断参数个数
if [ $# -lt 1 ]
then
    echo Not Enough Arguement!
    exit;
fi

#2. 遍历集群所有机器
for host in bdc112 bdc113 bdc114 #根据自己的主机名来写,我的是bdc112 bdc113 bdc114
do
    echo ====================  $host  ====================
    #3. 遍历所有目录,挨个发送

    for file in $@
    do
        #4. 判断文件是否存在
        if [ -e $file ]
            then
                #5. 获取父目录
                pdir=$(cd -P $(dirname $file); pwd)

                #6. 获取当前文件的名称
                fname=$(basename $file)
                ssh $host "mkdir -p $pdir"
                rsync -av $pdir/$fname $host:$pdir
            else
                echo $file does not exists!
        fi
    done
done

3、赋给xsync执行的权限chmod +x xsync
注意:记得复制一份xsync到root下的bin目录:

[lqs@bdc112 ~]$ sudo cp xsync /bin/
[lqs@bdc112 ~]$ sudo xsync /etc/profile.d/my_env.sh

九、配置免密登录

请参考我的另外一篇博客:Linux操作之多台服务器配置免密登录

十 、hadoop集群配置

配置需求如下表格

projectbdc112bdc113bdc114
HDFSNameNode
DataNode
DataNodeSecondaryNameNode
DataNode
YARNNodeManagerResourceManager
NodeManager
NodeManager

进入到一下hadoop的配置文件夹cd /home/lqs/module/hadoop-3.1.3/etc/hadoop/


注意:
以下配置包括了:
上面表需求的配置
历史服务器配置
日志的聚集配置


1、对core-site.xml进行配置,打开vim core-site.xml,添加如下内容

<configuration>
        <!--指定NameNode的地址-->
        <property>
                <name>fs.defaultFS</name>
                <value>hdfs://bdc112:8020</value>
        </property>
        <!--指定Hadoop数据的存储目录-->
        <property>
                <name>hadoop.tmp.dir</name>
                <value>/home/lqs/module/hadoop-3.1.3/data</value>
        </property>


        <!--配置HDFS网页登录使用的静态用户为lqs-->
        <property>
                <name>hadoop.http.staticuser.user</name>
                <value>lqs</value>
        </property>
        <!-- 配置删除,暂时放在回收站 -->
        <property>
                <name>fs.trash.interval</name>
                <value>1440</value>
        </property>
</configuration>

2、对hdfs-site.xml进行配置,打开hdfs-site.xml,添加如下内容

<configuration>
        <!-- nn web端访问地址-->
        <property>
                <name>dfs.namenode.http-address</name>
                <value>bdc112:9870</value>
        </property>
        <!-- 2nn web端访问地址-->
        <property>
                <name>dfs.namenode.secondary.http-address</name>
                <value>bdc114:9868</value>
        </property>
</configuration>

3、对yarn-site.xml进行配置,打开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>bdc113</value>
        </property>
        <!--环境变量的集成-->
        <property>
                <name>yarn.nodemanager.env-whitelist</name>
                <value>JAVA_HOME,HADOOP_COMMON_HOME,HADOOP_HDFS_HOME,HADOOP_CONF_DIR,CLASSPATH_PREPEND_DISTCACHE,HADOOP_YARN_HOME,HADOOP_MAPRED_HOME</value>
        </property>
                <!--开启日志聚集功能-->
        <property>
                <name>yarn.log-aggregation-enable</name>
                <value>true</value>
        </property>
        <!--设置日志聚集服务器地址-->
        <property>
                <name>yarn.log.server.url</name>
                <value>http://bdc112:19888/jobhistory/logs</value>
        </property>
        <!--设置日志保留时间为7天-->
        <property>
                <name>yarn.log-aggregation.retain-seconds</name>
                <value>604800</value>
        </property>


        <!--Spark相关配置-->
        <!--是否启动一个线程检查每个任务正使用的物理内存量,如果任务超出分配值,则直接          将其杀掉,>默>认是 true -->
        <property>
                 <name>yarn.nodemanager.pmem-check-enabled</name>
                 <value>false</value>
        </property>
        <!--是否启动一个线程检查每个任务正使用的虚拟内存量,如果任务超出分配值,则直接          将其杀掉,>默>认是 true -->
        <property>
                <name>yarn.nodemanager.vmem-check-enabled</name>
                <value>false</value>
        </property>

</configuration>

4、对mapred-site.xml进行配置,打开mapred-site.xml,添加如下内容

<configuration>
        <!--指定MapReduce程序运行在Yarn上-->
        <property>
                <name>mapreduce.framework.name</name>
                <value>yarn</value>
        </property>
        <!--历史服务器端地址-->
        <property>
                <name>mapreduce.jobhistory.address</name>
                <value>bdc112:10020</value>
        </property>
        <!--历史服务器web端地址-->
        <property>
                <name>mapreduce.jobhistory.webapp.address</name>
                <value>bdc112:19888</value>
        </property>

</configuration>

5、配置节点信息:
注意:
在写入时不能有空格等其它符号,否则在运行时会报错!!!

这里添加的内容是自己各个节点服务器的名字!

打开[lqs@bdc112 hadoop]$ vim /home/lqs/module/hadoop-3.1.3/etc/hadoop/workers并添加如下内容:

bdc112
bdc113
bdc114

6、分发到各个节点,包括hadoop、jdk、my_env.sh文件

[lqs@bdc112 ~]$ xsync /home/lqs/module/hadoop-3.1.3/
[lqs@bdc112 ~]$ xsync /home/lqs/module/jdk1.8.0_212/
[lqs@bdc112 ~]$ sudo xsync /etc/profile.d/my_env.sh 

注意:

记得去对应节点检查一下是否分发到位,同时去每个节点source下my_env.sh文件

十一、编写hadoop常用脚本

1、编写启动、停止的脚本

[lqs@bdc112 bin]$ vim myhadoop.sh

写入一下内容:

#!/bin/bash

if [ $# -lt 1 ]
then
         echo "没有输入参数(start or stop)..."
         exit ;
fi
case $1 in
"start")
         echo " =================== 启动 hadoop 集群 ==================="
         echo " --------------- 启动 hdfs ---------------"
         ssh bdc112 "/home/lqs/module/hadoop-3.1.3/sbin/start-dfs.sh"
         echo " --------------- 启动 yarn ---------------"
         ssh bdc113 "/home/lqs/module/hadoop-3.1.3/sbin/start-yarn.sh"
         echo " --------------- 启动 historyserver ---------------"
         ssh bdc112 "/home/lqs/module/hadoop-3.1.3/bin/mapred --daemon start historyserver"
;;
"stop")
         echo " =================== 关闭 hadoop 集群 ==================="
         echo " --------------- 关闭 historyserver ---------------"
         ssh bdc112 "/home/lqs/module/hadoop-3.1.3/bin/mapred --daemon stop historyserver"
         echo " --------------- 关闭 yarn ---------------"
         ssh bdc113 "/home/lqs/module/hadoop-3.1.3/sbin/stop-yarn.sh"
         echo " --------------- 关闭 hdfs ---------------"
         ssh bdc112 "/home/lqs/module/hadoop-3.1.3/sbin/stop-dfs.sh"
;;
*)
         echo "输入参数错误..."
;;
esac

注意:
然后保存并chmod +x myhadoop一下

2、编写jpsall脚本

[lqs@bdc112 bin]$ vim jpsall

添加以下代码:

#!/bin/bash
for host in bdc112 bdc113 bdc114
do
         echo =============== $host ===============
         ssh $host jps $1 | grep -v Jps
done

注意:
然后保存并chmod +x jpsall一下

十二、启动hadoop集群

注意:
第一次启动hadoop记得格式一下bdc112
节点格式化NameNode

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

[lqs@nwh120 hadoop-3.1.3]$ bin/hdfs namenode -format

输入以下启动命令

[lqs@bdc112 ~]$ myhadoop.sh start
 =================== 启动 hadoop 集群 ===================
 --------------- 启动 hdfs ---------------
Starting namenodes on [bdc112]
Starting datanodes
Starting secondary namenodes [bdc114]
 --------------- 启动 yarn ---------------
Starting resourcemanager
Starting nodemanagers
 --------------- 启动 historyserver ---------------

十三、验证是否配置成功

1、查看是否启动成功:

[lqs@bdc112 ~]$ jpsall 
=============== bdc112 ===============
2466 NodeManager
2549 JobHistoryServer
2119 DataNode
1994 NameNode
2730 Jps
=============== bdc113 ===============
1728 NodeManager
1409 DataNode
2115 Jps
1604 ResourceManager
=============== bdc114 ===============
1761 Jps
1409 DataNode
1619 NodeManager
1514 SecondaryNameNode

2、进入网页进行验证:
分别输入以下地址进行查看:
hdfs:http://bdc112:9870/
cluster:http://bdc113:8088/
jobhistory:http://bdc112:19888/

如果您输入jpsall后的内容和我一样,和您看到和我下面截图类似,那基本上就没有问题了。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小雏菊的成长

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值