二、搭建Hadoop集群

一、创建模板机

1.1、修改配置文件中的 IP 设置

vim /etc/sysconfig/network-scripts/ifcfg-ens33

#修改:
ONBOOT=yes
BOOTPROTO=static
IPADDR=192.168.150.211
NETMASK=255.255.255.0
GATEWAY=192.168.150.2
DNS1=192.168.150.2

1.2、修改主机名,改为hadoop01

vim /etc/hostname
e1e583b13d34e9abfabb63be241d166c.png

1.3、重启网络服务

输入“service network restart”,支持 IP 设置完成,接下来就可以使用 xshell连接该节点,操作更加方便。

1.4、连接xshell

(1)、新建会话:输入名称和hadoop01的ip
644d6c529a18f561089af09be03553fd.png
(2)、点击确定即可,然后双击左侧hadoop01,点击接收并保存
59e56d28936e39f9974aab8ae25d4855.png
(3)、输入用户名,点击记住用户名
注意:我这里使用的是root用户,就不用后面切换到root进行配置
693fff3187533c60dfa7713eff78813f.png
(4)、再次双击hadoop01,输入密码,点击记住密码,然后确定
8588057bc044e888a7631427277a1362.png
(5)、连接成功,后续配置操作均在xshell进行
02a7dcdfaad60da4bccfc4231d693462.png

1.5、安装相关软件

1.5.1、ping一下百度检验网络是否畅通

ping www.baidu.com
e3c1bdcbd14473b53433cd7c5413e5ba.png
按Ctrl+C结束ping

1.5.2、安装ssh连接软件

yum -y install ntp openssh-clients openssh-server vim
9dfe5b8249a458aaa3de25cc17073234.png

1.5.3、安装 epel-release

注:Extra Packages for Enterprise Linux 是为“红帽系”的操作系统提供额外的软件包,适用于 RHEL、CentOS 和 Scientific Linux。相当于是一个软件仓库,大多数 rpm 包在官方repository 中是找不到的)
yum install -y epel-release
e61f7e690b79cb29cf3e8cb6b79a1d5e.png

1.5.4、各节点下载rsync

yum -y install rsync
d894c5d9cf890eee098f93f3346a485d.png

1.5.5、注意:如果 Linux 安装的是最小系统版,还需要安装如下工具;如果安装的是 Linux桌面标准版,不需要执行如下操作

➢ net-tool:工具包集合,包含 ifconfig 等命令
yum install -y net-tools
➢ vim:编辑器
yum install -y vim

1.6、关闭防火墙和防火墙开机自启动

systemctl stop firewalld
systemctl disable firewalld.service

979870dab3a0a86ce2afeef80701208e.png
注意:在企业开发时,通常单个服务器的防火墙时关闭的。公司整体对外会设置非常安全的防火墙

1.7、配置 pcz 用户具有 root 权限,方便后期加 sudo 执行 root 权限的命令

vim /etc/sudoers
修改/etc/sudoers 文件,在%wheel 这行下面添加一行,如下所示:
pcz ALL=(ALL) NOPASSWD:ALL
32c9752adf971012af5dbe2761e40002.png
注意:pcz 这一行不要直接放到 root 行下面,因为所有用户都属于 wheel 组,你先配置了 pcz 具有免密功能,但是程序执行到%wheel 行时,该功能又被覆盖回需要密码。所以 pcz 要放到%wheel 这行下面。

1.8、在/opt 目录下创建文件夹,并修改所属主和所属组

mkdir /opt/module
mkdir /opt/software
891be6d4b4cb3c1c87fd0289a57b14bc.png

1.9、修改 module、software 文件夹的所有者和所属组均为 pcz 用户

(1)、在/opt 目录下创建 module、software 文件夹

mkdir /opt/module
mkdir /opt/software

cb7614d324fdcdd3f0268228a78924a6.png
(2)、修改 module、software 文件夹的所有者和所属组均为 pcz 用户

chown pcz:pcz /opt/module
chown pcz:pcz /opt/software

945f606cbff3e610fd510d93ae03c3b4.png
(3)查看 module、software 文件夹的所有者和所属组

ll /opt

d01a928c022f18de1e09d03648ec79c8.png

1.10、卸载虚拟机自带的JDK

注意:如果你的虚拟机是最小化安装不需要执行这一步。

 rpm -qa | grep -i java | xargs -n1 rpm -e --nodeps

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

1.11、重启虚拟机,模板机制作完成

reboot
9945a137c2038241f22ef26fbddbadc7.png

二、 克隆虚拟机

1、利用模板机 hadoop01,克隆三台虚拟机:hadoop02 hadoop03 hadoop04

注意:克隆时,要先关闭 hadoop01
(1)
aef48d954fd30f49958cb7b1d78ccc8c.png
(2)
6b6ed6b6a802ac023c5f4024d08fa225.png
(3)
450391f0a6ffb5827b9d0c23b1dd7b1d.png
(4)
ab285446f2ce0589f61f0056b334ea18.png
(5)
5b4cf6c74e6606eb988cc401ca1e97ef.png
(6)
等待完成 关闭即可
6f46a7ef788850c26151704696e776e7.png
(7)按照上面步骤 完成hadoop03、hadoop04克隆

2、修改各子节点的ip和主机名,这里以hadoop02为例

2.1、修改ip

`[root@hadoop01 pcz]# vim /etc/sysconfig/netwo

rk-scripts/ifcfg-ens33`
34fe19279597b79580df5950566342ad.png

2.2、修改主机名

[root@hadoop01 pcz]# vim /etc/hostname
b4ec781cd35465d265fcf091130ac67f.png

2.3、配置 Linux 克隆机主机名称映射 hosts 文件,打开/etc/hosts

vim /etc/hosts

192.168.150.211 hadoop01
192.168.150.212 hadoop02
192.168.150.213 hadoop03
192.168.150.214 hadoop04

8b97fa90c0a5c2263b1e004942b5a3f1.png

2.4、重启该虚拟机

2.5、同样的方式修改hadoop03、hadoop04

2.6、修改 windows 的主机映射文件(hosts 文件)

操作系统是 window10,先拷贝出来,修改保存以后,再覆盖即可
进入 C:\Windows\System32\drivers\etc 路径,以管理员身份打开hosts文件并添加

192.168.150.211 hadoop01
192.168.150.212 hadoop02
192.168.150.213 hadoop03
192.168.150.214 hadoop04

add70e4d23586e839e8dcc6d6ea33574.png
保存时需注意:按照如下方式保存
7458b9f21b90775c755657d587c789e3.png

3、在主机上创建分发脚本、配置SSH无密码登录、时间同步

3.1、创建分发脚本

(1)、进入/bin目录 在这里面配置脚本是全局可运行
cd /bin
(2)、创建脚本
vim xsync
(3)输入脚本内容,保存退出

#!/bin/bash
#1.判断参数个数
if [ $# -lt 1 ]
then
          echo 参数个数不匹配
          exit;
fi
#2.遍历集群所有机器
for host in hadoop01 hadoop02 hadoop03
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 不存在!
                 fi
        done
done

(4)、修改脚本 xsync 具有执行权限
chmod +x xsync

3.2、创建ssh免密登录

(1)、使用 ssh-keygen 产生公钥与私钥对。输入命令“ssh-keygen -t rsa”,接着按三次 Enter 键。执行后出现如下输出。
ssh-keygen -t rsa
9d1e15991e906e0028aed1be525ab5a0.png
生成私有密钥 id_rsa 和公有密钥 id_rsa.pub 两个文件。ssh-keygen 用来生成 RSA类型的密钥以及管理该密钥,参数“-t”用于指定要创建的 SSH 密钥的类型为RSA。

(2)、用 ssh-copy-id 将公钥复制到远程机器中

ssh-copy-id -i /root/.ssh/id_rsa.pub hadoop01//依次输入 yes,123456(root 用户的密码)
ssh-copy-id -i /root/.ssh/id_rsa.pub hadoop02
ssh-copy-id -i /root/.ssh/id_rsa.pub hadoop03

(3)、 验证是否设置无密码登录
依次输入

ssh hadoop02
exit;
ssh hadoop03
exit;

(4).ssh 文件夹下(~/.ssh)的文件功能解释

名称含义
known_hosts记录 ssh 访问过计算机的公钥(public key)
id_rsa生成的私钥
id_rsa.pub生成的公钥
authorized_keys存放授权过的无密登录服务器公钥

3.3、配置时间同步服务

(1) 安装 NTP 服务。在各节点:
yum -y install ntp
(2) 修改设置
假设 master 节点为 NTP 服务主节点,那么其配置如下。使用命令“vim /etc/ntp.conf”打开/etc/ntp.conf 文件,注释掉以 server 开头的行,并添加:

restrict 192.168.150.2 mask 255.255.255.0 nomodify notrap
server 127.127.1.0
fudge 127.127.1.0 stratum 10

(3) 在 子节点 中配置 NTP
同样修改/etc/ntp.conf 文件,注释掉 server 开头的行,并添加:
server hadoop01
(4) 关闭防火墙
执行命令“systemctl stop firewalld.service & systemctl disable firewalld.service”永久性关闭防火墙,主节点和从节点都要关闭。
(5) 启动 NTP 服务
① 在 hadoop01 节点执行命令“service ntpd start & chkconfig ntpd on
② 在子节点上执行命令“ntpdate hadoop01”即可同步时间
③ 在 子节点上分别执行“service ntpd start & chkconfig ntpd on”即可启动并
永久启动 NTP 服务。

4、各节点安装jdk,主节点安装hadoop

这里以hadoop01为例

4.1、安装jdk

(1)把jdk和hadoop的压缩包放在software目录下

cd /opt/software
sz

fb6cff6bbdefe1ef26606e2341eb24d0.png
等待上传完成
bc484ca63be09914a2c5951ccb50c995.png
检查是否上传成功
8197b7aba68d9ca9be6e6f4f5438f391.png
(2)解压 JDK 到/opt/module 目录下
rpm -i --badreloc --relocate /usr/java=/opt/module jdk-8u221-linux-x64.rpm
9defc296ab62d0e2e99e43b8caaab0a3.png
验证jdk是否安装成功:
java -version
c04de184a950efc5dfadc657fed2665e.png
(3)配置 JDK 环境变量
新建/etc/profile.d/my_env.sh 文件
vim /etc/profile.d/my_env.sh
添加如下内容

#JAVA_HOME
export JAVA_HOME=/opt/module/jdk1.8.0_221-amd64
export PATH=$PATH:$JAVA_HOME/bin

4.2、安装hadoop

(1)解压安装文件到/opt/module 下面
tar -zxvf hadoop-3.1.4.tar.gz -C /opt/module/
bed04a9eb96b9cf36d603a4f5fce7640.png
(2)将 Hadoop 添加到环境变量
vim /etc/profile.d/my_env.sh
添加

#HADOOP_HOME
export HADOOP_HOME=/opt/module/hadoop-3.1.4
export PATH=$PATH:$HADOOP_HOME/bin
export PATH=$PATH:$HADOOP_HOME/sbin

(3)测试Hadoop是否安装成功
hadoop version
eba4cf5857421f130a07ef0441bb4350.png

4.3、Hadoop目录结构

位置:/opt/module/hadoop-3.1.4

a)查看hadoop目录:

[root@hadoop01 hadoop-3.1.4]# ll
total 176
drwxr-xr-x. 2 1001 1002    183 Jul 21  2020 bin
drwxr-xr-x. 3 1001 1002     20 Jul 21  2020 etc
drwxr-xr-x. 2 1001 1002    106 Jul 21  2020 include
drwxr-xr-x. 3 1001 1002     20 Jul 21  2020 lib
drwxr-xr-x. 4 1001 1002    288 Jul 21  2020 libexec
-rw-rw-r--. 1 1001 1002 147145 Jul 20  2020 LICENSE.txt
-rw-rw-r--. 1 1001 1002  21867 Jul 20  2020 NOTICE.txt
-rw-rw-r--. 1 1001 1002   1366 Jul 20  2020 README.txt
drwxr-xr-x. 3 1001 1002   4096 Jul 21  2020 sbin
drwxr-xr-x. 4 1001 1002     31 Jul 21  2020 share

b)重要目录

(1)bin 目录:存放对 Hadoop 相关服务(hdfs,yarn,mapred)进行操作的脚本
(2)etc 目录:Hadoop 的配置文件目录,存放 Hadoop 的配置文件
(3)lib 目录:存放 Hadoop 的本地库(对数据进行压缩解压缩功能)
(4)sbin 目录:存放启动或停止 Hadoop 相关服务的脚本
(5)share 目录:存放 Hadoop 的依赖 jar 包、文档、和官方案例

三、集群配置

3.1、集群部署规划

注意:
➢ NameNode 和 SecondaryNameNode 不要安装在同一台服务器
➢ ResourceManager 也很消耗内存,不要和 NameNode、SecondaryNameNode 配置在同一台机器上。

hadoop01hadoop02hadoop03
HDFSNameNode DataNodeDataNodeSecondaryNameNode DataNode
YARNNodeManagerResourceManager NodeManagerNodeManager

3.2、配置文件说明

Hadoop 配置文件分两类:默认配置文件和自定义配置文件,只有用户想修改某一默认
配置值时,才需要修改自定义配置文件,更改相应属性值。
(1)默认配置文件:
位置:/opt/module/hadoop-3.1.4/share/hadoop

要获取的默认文件文件存放在 Hadoop 的 jar 包中的位置
[core-default.xml]hadoop-common-3.1.4.jar/core-default.xml
[hdfs-default.xml]hadoop-hdfs-3.1.4.jar/hdfs-default.xml
[yarn-default.xml]hadoop-yarn-common-3.1.4.jar/yarn-default.xml
[mapred-default.xml]hadoop-mapreduce-client-core-3.1.4.jar/mapred-default.xml

(2)自定义配置文件:
core-site.xml、hdfs-site.xml、yarn-site.xml、mapred-site.xml 四个配置文件存放在$HADOOP_HOME/etc/hadoop 这个路径上,用户可以根据项目需求重新进行修改配置。

3.3、配置集群

进入配置文件目录:
cd $HADOOP_HOME/etc/hadoop或者cd /opt/module/hadoop-3.1.4/etc/hadoop

(1)核心配置文件

配置core-site.xml
vim core-site.xml

<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
 <!-- 指定 NameNode 的地址 -->
 <property>
 <name>fs.defaultFS</name>
 <value>hdfs://hadoop01:8020</value>
 </property>
 <!-- 指定 hadoop 数据的存储目录 -->
 <property>
 <name>hadoop.tmp.dir</name>
 <value>/opt/module/hadoop-3.1.4/data</value>
 </property>
 <!-- 配置 HDFS 网页登录使用的静态用户为 pcz -->
 <property>
 <name>hadoop.http.staticuser.user</name>
 <value>pcz</value>
 </property>
</configuration>

607b770457b8e8b866fd98ce9c77b911.png

(2)HDFS 配置文件

配置 hdfs-site.xml
[pcz@hadoop01 hadoop]$ vim hdfs-site.xml

<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
<!-- nn web 端访问地址-->
<property>
 <name>dfs.namenode.http-address</name>
 <value>hadoop01:9870</value>
 </property>
<!-- 2nn web 端访问地址-->
 <property>
 <name>dfs.namenode.secondary.http-address</name>
 <value>hadoop03:9868</value>
 </property>
</configuration>

20ded2a544918198e6cea6232845de65.png

(3)YARN 配置文件

配置 yarn-site.xml
[pcz@hadoop01 hadoop]$ 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>hadoop02</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://hadoop1:19888/jobhistory/logs</value>
</property>
<!-- 设置日志保留时间为 7 天 -->
<property>
<name>yarn.log-aggregation.retain-seconds</name>
<value>604800</value>
</property>
<!--是否启动一个线程检查每一个任务正使用的虚拟内存量,如果任务超出分配值,则直接将其杀掉,默认是true-->
<property>
<name>yarn.nodemanager.vmem-check-enabled</name>
<value>false</value>
</property>
</configuration>

1b5c8892503515d03d70bd97ee17f607.png

(4)MapReduce 配置文件

配置 mapred-site.xml
[pcz@hadoop01 hadoop]$ vim mapred-site.xml

<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
<!-- 指定 MapReduce 程序运行在 Yarn 上 -->
 <property>
 <name>mapreduce.framework.name</name>
 <value>yarn</value>
 </property>
</configuration>

7ee0fae73d3e155b683e977f92de1a3b.png

3.4、在集群上分发配置好的 Hadoop 配置文件

[root@hadoop01 opt]# xsync /opt/module/hadoop-3.1.4/etc/hadoop/

3.5、群起集群

1)、配置workers

[root@hadoop01 opt]# vim /opt/module/hadoop-3.1.4/etc/hadoop/workers
f18968bd1fed3fd243ae6c234d3bc984.png
注意:该文件中添加的内容结尾不允许有空格,文件中不允许有空行。
同步所有节点配置文件
[root@hadoop01 opt]# xsync /opt/module/hadoop-3.1.4/etc/
d131f59c55a0287172908f5cd646d1f3.png

2)、启动集群

(1)如果集群是第一次启动,需要在 hadoop01 节点格式化 NameNode(注意:格式化 NameNode,会产生新的集群 id,导致 NameNode 和 DataNode 的集群 id 不一致,集群找不到已往数据。如果集群在运行过程中报错,需要重新格式化 NameNode 的话,一定要先停止 namenode 和 datanode 进程,并且要删除所有机器的 data 和 logs 目录,然后再进行格式化。)
格式化NameNode: hdfs namenode -format
673686439b2481505565b84e40fbbaff.png
(2)启动 HDFS
/opt/module/hadoop-3.1.4
sbin/start-dfs.sh
(3)在配置了 ResourceManager 的节点(hadoop02)启动 YARN
sbin/start-yarn.sh
(4)Web 端查看 HDFS 的 NameNode
(a)浏览器中输入:http://hadoop01:9870
(b)查看 HDFS 上存储的数据信息
(5)Web 端查看 YARN 的 ResourceManager
(a)浏览器中输入:http://hadoop02:8088
(b)查看 YARN 上运行的 Job 信息
(6)查看 JobHistory
http://hadoop01:19888/jobhistory

3.6、集群启动/停止方式总结

1)各个模块分开启动/停止(配置 ssh 是前提)常用

(1)整体启动/停止 HDFS
start-dfs.sh/stop-dfs.sh
(2)整体启动/停止 YARN
start-yarn.sh/stop-yarn.sh

2)各个服务组件逐一启动/停止

(1)分别启动/停止 HDFS 组件
hdfs --daemon start/stop namenode/datanode/secondarynamenode
(2)启动/停止 YARN
yarn --daemon start/stop resourcemanager/nodemanager

3.7、编写hadoop常用脚本

1)Hadoop 集群启停脚本(包含 HDFS,Yarn,Historyserver):pczhd

#!/bin/bash
if [ $# -lt 1 ]
then
 echo "输入的参数有误!"
 exit ;
fi
case $1 in
"start")
 echo " =================== 启动 hadoop 集群 ==================="
 echo "    ================     启动 hdfs     ================ "
 ssh hadoop01 "/opt/module/hadoop-3.1.4/sbin/start-dfs.sh"
 echo "    ================     启动 yarn     ================ "
 ssh hadoop02 "/opt/module/hadoop-3.1.4/sbin/start-yarn.sh"
 echo "    ================ 启动historyserver ================ "
 ssh hadoop01 "/opt/module/hadoop-3.1.4/bin/mapred --daemon start historyserver"
;;
"stop")
 echo " =================== 关闭 hadoop 集群 ==================="
 echo "    ================ 关闭historyserver ================  "
 ssh hadoop01 "/opt/module/hadoop-3.1.4/bin/mapred --daemon stop historyserver"
 echo "    ================     关闭 yarn     ================ "
 ssh hadoop02 "/opt/module/hadoop-3.1.4/sbin/stop-yarn.sh"
 echo "    ================     关闭 hdfs     ================ "
 ssh hadoop01 "/opt/module/hadoop-3.1.4/sbin/stop-dfs.sh"
;;
*)
 echo "输入参数有误!"
;;
esac


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

TryBest_

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

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

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

打赏作者

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

抵扣说明:

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

余额充值