完全分布式运行模式

完全分布式运行模式

一、虚拟机准备

1.1模板虚拟机环境准备

1.安装模板虚拟机,IP 地址 192.168.10.100、主机名称 hadoop100、内存 4G、硬盘 50G

2.hadoop100 虚拟机配置要求如下(本文 Linux 系统全部以 CentOS-7.5-x86-1804 为例)

(1)使用 yum 安装需要虚拟机可以正常上网,yum 安装前可以先测试下虚拟机联网情况

[root@hadoop100 ~]# ping www.baidu.com
PING www.baidu.com (14.215.177.39) 56(84) bytes of data.
64 bytes from 14.215.177.39 (14.215.177.39): icmp_seq=1 
ttl=128 time=8.60 ms
64 bytes from 14.215.177.39 (14.215.177.39): icmp_seq=2 
ttl=128 time=7.72 ms

(2)安装 epel-release

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

[root@hadoop100 ~]# yum install -y epel-release
  1. 关闭防火墙,关闭防火墙开机自启
[root@hadoop100 ~]# systemctl stop firewalld 
[root@hadoop100 ~]# systemctl disable firewalld.service 

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

4.创建 guochao 用户,并修改 guochao 用户的密码

[root@hadoop100 ~]# useradd guochao
[root@hadoop100 ~]# passwd guochao

5.配置 guochao 用户具有 root 权限,方便后期加 sudo 执行 root 权限的命令

[root@hadoop100 ~]# vim /etc/sudoers

修改 /etc/sudoers 文件,在%wheel 这行下面添加一行,如下所示:

## Allow root to run any commands anywhere
root ALL=(ALL) ALL
## Allows people in group wheel to run all commands
%wheel ALL=(ALL) ALL
guochao ALL=(ALL) NOPASSWD:ALL

注意:guochao 这一行不要直接放到 root 行下面,因为所有用户都属于 wheel 组,你先 配置了 guochao具有免密功能,但是程序执行到%wheel 行时,该功能又被覆盖回需要 密码。所以 guochao 要放到%wheel 这行下面。

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

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

[root@hadoop100 ~]# mkdir /opt/module
[root@hadoop100 ~]# mkdir /opt/software

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

[root@hadoop100 ~]# chown guochao:guochao /opt/module 
[root@hadoop100 ~]# chown guochao:guochao /opt/software

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

[root@hadoop100 ~]# cd /opt/
[root@hadoop100 opt]# ll
总用量 12
drwxr-xr-x. 2 guochao guochao 4096 5 月 28 17:18 module
drwxr-xr-x. 2 root root 4096 9 月 7 2017 rh
drwxr-xr-x. 2 guochao guochao 4096 5 月 28 17:18 software

7.卸载虚拟机自带的 JDK

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

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

rpm -qa:查询所安装的所有 rpm 软件包

grep -i:忽略大小写

xargs -n1:表示每次只传递一个参数

rpm -e –nodeps:强制卸载软件

8.重启虚拟机

[root@hadoop100  ~]#  reboot
1.2 克隆三台虚拟机

1.利用模板机 hadoop100,克隆三台虚拟机:hadoop102 hadoop103 hadoop104

注意:克隆时,要先关闭 hadoop100

2.修改克隆机 IP,以下以 hadoop102 举例说明

(1)修改克隆虚拟机的静态 IP

[root@hadoop102 ~]# vim /etc/sysconfig/network-scripts/ifcfg-ens33

修改 BOOTPROTO=static

​ IPADDR=192.168.10.102
​ GATEWAY=192.168.10.2
​ DNS1=192.168.10.2

DEVICE=ens33
TYPE=Ethernet
ONBOOT=yes
BOOTPROTO=static
NAME="ens33"
PREFIX=24

IPADDR=192.168.10.102
GATEWAY=192.168.10.2
DNS1=192.168.10.2

(2) 配置ip 查看 Linux 虚拟机的虚拟网络编辑器,编辑->虚拟网络编辑器->VMnet8

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-k5mgZTn9-1621835603343)(C:\Users\guochao\Desktop\notes\VMnet8.jpg)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-RMmKSmjk-1621835603346)(C:\Users\guochao\Desktop\notes\VMnet8 1.jpg)]

(3)配置 Windows 系统适配器 VMware Network Adapter VMnet8 的 IP 地址

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-MVfZes1G-1621835603349)(C:\Users\guochao\Desktop\notes\VMnet8 2.jpg)]

(4)保证 Linux 系统 ifcfg-ens33 文件中 IP 地址、虚拟网络编辑器地址和 Windows 系

统 VM8 网络 IP 地址相同。

3.修改克隆机主机名,以下以 hadoop102 举例说明

(1)修改主机名称

[root@hadoop100   ~]#   vim   /etc/hostname
hadoop102

(2)配置 Linux 克隆机主机名称映射 hosts 文件,打开/etc/hosts

[root@hadoop102   ~]#   vim   /etc/hosts

添加如下内容

192.168.10.100  hadoop100
192.168.10.101  hadoop101
192.168.10.102  hadoop102
192.168.10.103  hadoop103
192.168.10.104  hadoop104
192.168.10.105  hadoop105
192.168.10.106  hadoop106
192.168.10.107  hadoop107
192.168.10.108  hadoop108

4.重启克隆机 hadoop102

[root@hadoop102   ~]#   reboot

5.修改 windows 的主机映射文件(hosts 文件)

如果操作系统是 window10,先拷贝出来,修改保存以后,再覆盖即可

(a)进入 C:\Windows\System32\drivers\etc 路径

(b)拷贝 hosts 文件到桌面

(c)打开桌面 hosts 文件并添加如下内容

192.168.10.100  hadoop100
192.168.10.101  hadoop101
192.168.10.102  hadoop102
192.168.10.103  hadoop103
192.168.10.104  hadoop104
192.168.10.105  hadoop105
192.168.10.106  hadoop106
192.168.10.107  hadoop107
192.168.10.108  hadoop108

(d)将桌面 hosts 文件覆盖 C:\Windows\System32\drivers\etc 路径 hosts 文件

1.3 在 hadoop102 安装 JDK

1.卸载现有 JDK

注意:安装 JDK 前,一定确保提前删除了虚拟机自带的 JDK。

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

2.用 XShell 传输工具将 JDK 导入到 opt 目录下面的 software 文件夹下面

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-CaFnPMi1-1621835603351)(C:\Users\guochao\Desktop\notes\hadoop102 安装jdk.jpg)]

3.在 Linux 系统下的 opt 目录中查看软件包是否导入成功

[guochao@hadoop102   ~]$   ls   /opt/software/

看到如下结果:

jdk-8u212-linux-x64.tar.gz
  1. 进入/opt/software/路径下解压 JDK 到/opt/module 目录下
[guochao@hadoop102 software]$ tar -zxvf jdk-8u212-linux-x64.tar.gz -C /opt/module/

5.配置 JDK 环境变量

(1)新建/etc/profile.d/my_env.sh 文件

[guochao[guochao@hadoop102 ~]$ cd /etc/profile.d/
[guochao@hadoop102 profile.d]$ sudo vim my_env.sh

添加如下内容

#JAVA_HOME
export JAVA_HOME=/opt/module/jdk1.8.0_212
export PATH=$PATH:$JAVA_HOME/bin

(2)保存后退出 :wq

(3)source 一下/etc/profile 文件,让新的环境变量 PATH 生效

[guochao@hadoop102 profile.d]$ source /etc/profile

6.测试 JDK 是否安装成功

[guochao@hadoop102 ~]$ java -version

如果能看到以下结果,则代表 Java 安装成功。

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)

注意:重启(如果 java -version 可以用就不用重启)

[guochao@hadoop102 ~]$ sudo reboot
1.4 在 hadoop102 安装 Hadoop

Hadoop 下载地址:https://archive.apache.org/dist/hadoop/common/hadoop-3.1.3/

1.用 XShell 文件传输工具将 hadoop-3.1.3.tar.gz 导入到 opt 目录下面的 software 文件夹下 面

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-UEZzi3Fd-1621835603353)(C:\Users\guochao\Desktop\notes\hadoop102 安装hadoop.jpg)]

2.进入到 Hadoop 安装包路径下

[guochao@hadoop102 ~]$ cd /opt/software/

3.解压安装文件到/opt/module 下

[guochao@hadoop102 software]$ tar -zxvf hadoop-3.1.3.tar.gz -C /opt/module/

4.查看是否解压成功

[atguigu@hadoop102 software]$ ls /opt/module/
hadoop-3.1.3

5.将 Hadoop 添加到环境变量

(1)获取 Hadoop 安装路径

[guochao@hadoop102 hadoop-3.1.3]$ pwd
/opt/module/hadoop-3.1.3

(2)打开/etc/profile.d/my_env.sh 文件

[guochao@hadoop102 hadoop-3.1.3]$ sudo vim /etc/profile.d/my_env.sh

在 my_env.sh 文件末尾添加如下内容:(shift+g)

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

保存并退出: :wq

(3)让修改后的文件生效

[guochao@hadoop102 hadoop-3.1.3]$ source /etc/profile

6.测试是否安装成功

[guochao@hadoop102 hadoop-3.1.3]$ hadoop version
Hadoop 3.1.3

7.重启(如果 Hadoop 命令不能用再重启虚拟机)

[guochao@hadoop102 hadoop-3.1.3]$ sudo reboot

二、编写集群分发脚本 xsync

2.1 scp(secure copy)安全拷贝

1.scp 定义

scp 可以实现服务器与服务器之间的数据拷贝。(from server1 to server2)

2.基本语法

scp -r p d i r / pdir/ pdir/fname u s e r @ user@ user@host: p d i r / pdir/ pdir/fname

命令 递归 要拷贝的文件路径/名称 目的地用户@主机:目的地路径/名称

3.案例实操

前提:在 hadoop102、hadoop103、hadoop104 都已经创建好的/opt/module、

/opt/software 两个目录,并且已经把这两个目录修改为 guochao:guochao

[guochao@hadoop102	~]$	sudo	chown	guochao:guochao	-R /opt/module

(a)在 hadoop102 上,将 hadoop102 中/opt/module/jdk1.8.0_212 目录拷贝到

hadoop103 上。

[guochao@hadoop102	~]$	scp	-r	/opt/module/jdk1.8.0_212 guochao@hadoop103:/opt/module

(b)在 hadoop103 上,将 hadoop102 中/opt/module/hadoop-3.1.3 目录拷贝到

hadoop103 上。

[guochao@hadoop103	~]$	scp	-r guochao@hadoop102:/opt/module/hadoop-3.1.3   /opt/module/

(c)在 hadoop103 上操作,将 hadoop102 中/opt/module 目录下所有目录拷贝到

hadoop104 上。

[guochao@hadoop103	opt]$	scp	-r guochao@hadoop102:/opt/module/* guochao@hadoop104:/opt/module
2.2 rsync 远程同步工具

rsync 主要用于备份和镜像。具有速度快、避免复制相同内容和支持符号链接的优点。rsync 和 scp 区别:用 rsync 做文件的复制要比 scp 的速度快,rsync 只对差异文件做更新。scp 是把所有文件都复制过去。

(1)基本语法

rsync -av p d i r / pdir/ pdir/fname u s e r @ user@ user@host: p d i r / pdir/ pdir/fname

命令 选项参数 要拷贝的文件路径/名称 目的地用户@主机:目的地路径/名称

选项参数说明

选项 功能

-a 归档拷贝

-v 显示复制过程

(2)案例实操

(a)删除 hadoop103 中/opt/module/hadoop-3.1.3/wcinput

[atguigu@hadoop103 hadoop-3.1.3]$ rm -rf wcinput/

(b)同步 hadoop102 中的/opt/module/hadoop-3.1.3 到 hadoop103

[atguigu@hadoop102 module]$ rsync -av hadoop-3.1.3/ 
atguigu@hadoop103:/opt/module/hadoop-3.1.3/
2.3 xsync 集群分发脚本

1.需求:循环复制文件到所有节点的相同目录下

2.需求分析:

(a)rsync 命令原始拷贝:

rsync -av /opt/module atguigu@hadoop103:/opt/

(b)期望脚本: xsync 要同步的文件名称

(c)期望脚本在任何路径都能使用(脚本放在声明了全局环境变量的路径)

/home/guochao/bin

[guochao@hadoop102 ~]$ echo $PATH
/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/home/atgu
igu/.local/bin:/home/guochao/bin:/opt/module/jdk1.8.0_212/bi
n

3.脚本实现

(a)在/home/atguigu/bin 目录下创建 xsync 文件

[guochao@hadoop102 opt]$ cd /home/guochao
[guochao@hadoop102 ~]$ mkdir bin
[guochao@hadoop102 ~]$ cd bin
[guochao@hadoop102 bin]$ vim xsync

在该文件中编写如下代码

#!/bin/bash
#1. 判断参数个数
if [ $# -lt 1 ]
then
 echo Not Enough Arguement!
 exit;
fi
#2. 遍历集群所有机器
for host in hadoop102 hadoop103 hadoop104
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

(b)修改脚本 xsync 具有执行权限

[guochao@hadoop102 bin]$ chmod +x xsync

(c)测试脚本

[guochao@hadoop102 ~]$ xsync /home/guochao/bin

(d)将脚本复制到/bin 中,以便全局调用

[guochao@hadoop102 bin]$ sudo cp xsync /bin/

(e)同步环境变量配置(root 所有者)

[guochao@hadoop102 ~]$ sudo ./bin/xsync /etc/profile.d/my_env.sh

注意:如果用了 sudo,那么 xsync 一定要给它的路径补全。

让环境变量生效

[guochao@hadoop103 bin]$ source /etc/profile
[guochao@hadoop104 opt]$ source /etc/profile

三、SSH 无密登录配置

3.1 配置 ssh

(1)基本语法

ssh 另一台电脑的 IP 地址

(2)ssh 连接时出现 Host key verification failed 的解决方法

[guochao@hadoop102 ~]$ ssh hadoop103

如果出现如下内容

Are you sure you want to continue connecting (yes/no)?

输入 yes,并回车

(3)退回到 hadoop102

[guochao@hadoop103 ~]$ exit
3.2 无密钥配置

1.生成公钥和私钥

[guochao@hadoop102 .ssh]$ pwd
/home/guochao/.ssh
[guochao@hadoop102 .ssh]$ ssh-keygen -t rsa

然后敲(三个回车),就会生成两个文件 id_rsa(私钥)、id_rsa.pub(公钥)

2.将公钥拷贝到要免密登录的目标机器上

[guochao@hadoop102 .ssh]$ ssh-copy-id hadoop102
[guochao@hadoop102 .ssh]$ ssh-copy-id hadoop103
[guochao@hadoop102 .ssh]$ ssh-copy-id hadoop104

注意: 还需要在 hadoop103 上采用 guochao账号配置一下无密登录到 hadoop102、hadoop103、 hadoop104 服务器上。

还需要在 hadoop104 上采用 guochao 账号配置一下无密登录到 hadoop102、hadoop103、 hadoop104 服务器上。

还需要在 hadoop102 上采用 root 账号,配置一下无密登录到 hadoop102、hadoop103、 hadoop104;

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

known_hosts 记录 ssh 访问过计算机的公钥(public key)

id_rsa 生成的私钥

id_rsa.pub 生成的公钥

authorized_keys 存放授权过的无密登录服务器公钥

四、集群配置

4.1 集群部署规划

注意: NameNode 和 SecondaryNameNode 不要安装在同一台服务器

ResourceManager 也很消耗内存,不要和 NameNode、SecondaryNameNode 配置在 同一台机器上。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-j8kUFixt-1621835603354)(C:\Users\guochao\Desktop\notes\hadoop 集群分布.jpg)]

4.2 配置文件说明

Hadoop 配置文件分两类:默认配置文件和自定义配置文件,只有用户想修改某一默认 配置值时,才需要修改自定义配置文件,更改相应属性值。

1.默认配置文件:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-OW6vcyxW-1621835603355)(C:\Users\guochao\Desktop\notes\集群.jpg)]

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

4.3 配置集群

1.核心配置文件

配置 core-site.xml

[guochao@hadoop102 ~]$ cd $HADOOP_HOME/etc/hadoop
[guochao@hadoop102 hadoop]$ 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 网页登录使用的静态用户为 guochao -->
 <property>
 <name>hadoop.http.staticuser.user</name>
 <value>guochao</value>
 </property>
</configuration>

2.HDFS 配置文件

配置 hdfs-site.xml

[guochao@hadoop102 hadoop]$ 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 配置文件

配置 yarn-site.xml

[guochao@hadoop102 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>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 配置文件

配置 mapred-site.xml

[guochao@hadoop102 hadoop]$ vim mapred-site.xml

文件内容如下:

<configuration>
<!-- 指定 MapReduce 程序运行在 Yarn 上 -->
 <property>
 <name>mapreduce.framework.name</name>
 <value>yarn</value>
 </property>
</configuration>
4.4 在集群上分发配置好的 Hadoop 配置文件
[guochao@hadoop102 hadoop]$ xsync /opt/module/hadoop-3.1.3/etc/hadoop/
4.5 去 103 和 104 上查看文件分发情况
[guochao@hadoop103 ~]$ cat /opt/module/hadoop-3.1.3/etc/hadoop/core-site.xml
[guochao@hadoop104 ~]$ cat /opt/module/hadoop-3.1.3/etc/hadoop/core-site.xml

五、群起集群

5.1 配置 workers
[atguigu@hadoop102 hadoop]$ vim /opt/module/hadoop-3.1.3/etc/hadoop/workers

在该文件中增加如下内容:

hadoop102
hadoop103
hadoop104

注意:该文件中添加的内容结尾不允许有空格,文件中不允许有空行。

同步所有节点配置文件

[guochao@hadoop102 hadoop]$ xsync /opt/module/hadoop-3.1.3/etc
5.2 启动集群

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

[guochao@hadoop102 hadoop-3.1.3]$ hdfs namenode -format

2.启动 HDFS

[guochao@hadoop102 hadoop-3.1.3]$ sbin/start-dfs.sh

3.在配置了 ResourceManager 的节点(hadoop103)启动 YARN

[guochao@hadoop103 hadoop-3.1.3]$ sbin/start-yarn.sh

4.Web 端查看 HDFS 的 NameNode

(a)浏览器中输入:http://hadoop102:9870

(b)查看 HDFS 上存储的数据信息

5.Web 端查看 YARN 的 ResourceManager

(a)浏览器中输入:http://hadoop103:8088

(b)查看 YARN 上运行的 Job 信息

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值