完全分布式部署Hadoop

任务:
1.配置集群要求:

hadoop201hadoop202hadoop203
HDFSDataNodeDataNode,SecondaryNameNodeDataNode,NameNode
YARNResourceManager,NodeManagerNodeManagerNodeManager

1. 准备 3 台客户机(关闭防火墙、静态 ip、主机名称)(root用户)

新建一台虚拟机,进行简单配置

1.1 新建虚拟机
在这里插入图片描述
在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述
1.2 启动虚拟机
root用户登录,密码为hadoop
1.3 修改网关
右键虚拟机右上方小电脑图标设置网络和IP地址。
在这里插入图片描述在这里插入图片描述在这里插入图片描述
1.4 修改为静态IP
1.4.1 修改虚拟机的MAC地址
在终端命令窗口中输入:

vim /etc/udev/rules.d/70-persistent-net.rules

复制MAC地址
在这里插入图片描述

1.4.2 修改IP地址
执行命令:

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

在这里插入图片描述
1.4.3 重启网卡
执行命令:

service network restart

如果报错reboot重启虚拟机,如果没有就继续。

reboot

在这里插入图片描述
在这里插入图片描述
1.4.4 将hadoop201客户机关闭,然后再克隆两台虚拟机hadoop202、hadoop203。

克隆虚拟机

在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述
1.5 重复克隆步骤再克隆出hadoop203

进行简单配置

1.6 启动虚拟机,在hadoop202和hadoop203上重复操作1.4
注意1.4.1的步骤有变。由于克隆的原因,此时文件中有两行这样的内容,将第一行删除,将第二行的eth1改为eth0即可。
在这里插入图片描述
1.7 修改主机名(3台虚拟机一样的操作)
1.7.1 以root权限修改 Linux 的 hosts 文件

  1. 进入Linux 系统查看本机的主机名。通过 hostname 命令查看。
hostname 

在这里插入图片描述

  1. 如果感觉此主机名不合适,我们可以进行修改。通过编辑 /etc/sysconfig/network 文件。
vim /etc/sysconfig/network

修改文件中主机名称,3台虚拟机名称分别改为hadoop201、hadoop202、hadoop203.
如:HOSTNAME=hadoop201
注意:主机名称不要有“_”下划线

  1. 保存退出。
  2. 打开/etc/hosts
vim /etc/hosts

添加如下内容:
192.168.178.201 hadoop201
192.168.178.202 hadoop202
192.168.178.203 hadoop203

在这里插入图片描述

  1. 并重启设备,重启后,查看主机名,已经修改成功
reboot

1.7.2修改 window7 的 hosts 文件,目的是为了让主机能够识别虚拟机,方便从Windows系统传文件到虚拟机上。
进入 C:\Windows\System32\drivers\etc 路径
打开 hosts 文件并添加如下内容:
192.168.178.201 hadoop201
192.168.178.202 hadoop202
192.168.178.203 hadoop203
在这里插入图片描述

1.8 3个节点关闭防火墙

  1. 查看防火墙开机启动状态
chkconfig iptables --list
  1. 关闭防火墙
chkconfig iptables off

1.9 3个节点在opt目录下创建文件夹

  1. 创建hadoop用户(由于在最初创建虚拟机的时候,我们就使用的是hadoop用户,可省略这一步)
adduser hadooop
passwd hadoop
  1. 设置hadoop用户具有root权限,:wq! 强制保存。
vim /etc/sudoers

在这里插入图片描述

  1. 在/opt目录下创建文件夹
    (1) 在 root 用户下创建 module、software 文件夹
cd /opt
mkdir module
mkdir software

在这里插入图片描述
(2)修改 module、software 文件夹的所有者

chown hadoop:hadoop module 
chown hadoop:hadoop software
ls -al

修改前:
在这里插入图片描述
修改后:
在这里插入图片描述

2. hadoop201上安装 jdk

2.1 安装上传工具lrzsz

yum -y install lrzsz

2.2 卸载现有 jdk
(1)查询是否安装 java 软件:

rpm -qa|grep java

(2)如果安装的版本低于 1.7,卸载该 jdk:

rpm -e 软件包

2.3 上传jdk-8u151-linux-x64.tar到/opt/software目录
在这里插入图片描述
2.4 解压 jdk 到/opt/module 目录下

tar -zxf jdk-8u151-linux-x64.tar.gz -C ../module/

查看是否解压成功:
在这里插入图片描述

3. hadoop201上配置java环境变量

(1)先获取 jdk 路径:

cd /opt/module/jdk1.8.0_162
pwd

复制jdk路径
在这里插入图片描述
(2)打开/etc/profile 文件:

vim /etc/profile 

在 profie 文 件 末 尾 添 加 jdk 路 径 :
##JAVA_HOME
export JAVA_HOME=/opt/module/jdk1.8.0_151
export PATH=$PATH:$JAVA_HOME/bin

在这里插入图片描述
(3)保存后退出
(4)让修改后的文件生效:

source /etc/profile

(5)测试 jdk 安装成功

java -version

在这里插入图片描述

4. hadoop201上安装 hadoop

4.1 上传hadoop-2.7.6.tar.gz到/opt/software目录下
在这里插入图片描述
4.2 解压 hadoop 到/opt/module 目录下

tar -zxf hadoop-2.7.6.tar.gz -C ../module/

查看是否解压成功:
在这里插入图片描述
4.3 在/opt/module/hadoop-2.7.6/etc/hadoop 路径下配置hadoop-env.sh

cd /opt/module/hadoop-2.7.6/etc/hadoop/

获取jdk的安装路径并复制
在这里插入图片描述修改 hadoop-env.sh 文件中 JAVA_HOME 路径:

vim hadoop-env.sh

修改内容如图:
在这里插入图片描述

5. hadoop201上配置hadoop环境变量

(1)获取 hadoop 安装路径:

cd /opt/module/hadoop-2.7.6
pwd

复制hadoop路径
在这里插入图片描述
(2)打开/etc/profile 文件:

vim /etc/profile 

在 profie 文件末尾添加 hadoop 路径:
##HADOOP_HOME
export HADOOP_HOME=/opt/module/hadoop-2.7.6
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
在这里插入图片描述
(3)保存后退出:
:wq
(4)让修改后的文件生效:

source /etc/profile
hadoop version ##检查hadoop是否安装成功

在这里插入图片描述修改/opt 目录下的所有文件所有者为hadoop

chown hadoop:hadoop -R /opt/

切换到hadoop 用户

su hadoop

6. 安装 ssh,SSH免密码登录(hadoop用户)

1.配置 ssh
(1)基本语法
ssh 另一台电脑的ip地址
(2)ssh 连接时出现Host key verification failed 的解决方法
ssh hadoop102
The authenticity of host ‘192.168.1.103 (192.168.1.103)’ can’t be established. RSA key fingerprint is cf:1e??d7:d0:4c:2d:98:60:b4:fd:ae:b1:2d:ad:06.
Are you sure you want to continue connecting (yes/no)? Host key verification failed.
(3)解决方案如下:直接输入 yes
2.无密钥配置
hadoop201(ResourceManager节点)上操作
hadoop203(NameNode节点)上操作
(1)进入到我的 home 目录

cd ~

(2)生成公钥和私钥:

ssh-keygen -t rsa

然后敲(三个回车),就会生成两个文件 id_rsa(私钥)、id_rsa.pub(公钥)
在这里插入图片描述
(3)将公钥拷贝到要免密登录的目标机器上
hadoop203的公钥就拷贝到201和202上。

ssh-copy-id hadoop202 
ssh-copy-id hadoop203

在这里插入图片描述

免密登录原理:在这里插入图片描述

3…ssh 文件夹下的文件功能解释
(1)~/.ssh/known_hosts记录ssh访问过计算机的公钥(public key)
(2)id_rsa生成的私钥
(3)id_rsa.pub生成的公钥
(4)authorized_keys存放授权过得无秘登录服务器公钥

rsync命令讲解

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

  1. 查看rsync 使用说明
    man rsync | more
  2. 基本语法
    rsync -rvl $pdir/$fname $user@hadoop$host:$pdir
    命令 命令参数 要拷贝的文件路径/名称 目的用户@主机:目的路径选项
    -r 递归
    -v 显示复制过程
    -l 拷贝符号连接
  3. 案例实操
    把本机/opt/tmp 目录同步到 hadoop102 服务器的 root 用户下的/opt/tmp 目录
    rsync -rvl /opt/tmp root@hadoop02:/opt/
编写集群分发脚本xsync(root用户)
  1. 需求分析:循环复制文件到所有节点的相同目录下。
    (1)原始拷贝:
rsync -rvl /opt/module root@hadoop102:/opt/

(2)期望脚本:
xsync 要同步的文件名称
(3)在 /usr/local/bin 这个目录下存放的脚本,可以在系统任何地方直接执行。

  1. 案例实操:
    (1)在 /usr/local/bin 目录下创建 xsync 文件,文件内容如下:
touch xsync 
vim xsync 

内容如下:
在这里插入图片描述
(2)修改脚本 xsync 具有执行权限

chmod 777 xsync 
chown hadoop:hadoop -R xsync

(3)调用脚本形式:xsync 文件名称

xsync temp
编写集群操作脚本xcall(root用户)
  1. 需求分析:在所有主机上同时执行相同的命令xcall +命令
  2. 具体实现
    (1)在/usr/local/bin 目录下创建 xcall 文件,文件内容如下:
cd /usr/local/bin
touch xcall 
vim xcall

内容如下:
在这里插入图片描述
(2)修改脚本 xcall 具有执行权限

chmod 777 xcall 
chown hadoop:hadoop xcall

(3)调用脚本形式: xcall 操作命令

xcall rm -rf /opt/tmp/

7. 配置集群

  1. 集群部署计划:
hadoop201hadoop202hadoop203
HDFSDataNodeDataNode,SecondaryNameNodeDataNode,NameNode
YARNResourceManager,NodeManagerNodeManagerNodeManager
  1. 配置文件
cd /opt/module/hadoop-2.7.6/etc/hadoop/

(1) core-site.xml

vim core-site.xml

在这里插入图片描述
(2) hdfs(hadoop-env.sh、hdfs-site.xml、slaves)

vim hadoop-env.sh

在这里插入图片描述

vim hdfs-site.xml

在这里插入图片描述

vim slaves

在这里插入图片描述

(3) yarn(yarn-env.sh、yarn-site.xml)

vim yarn-env.sh

在这里插入图片描述

vim yarn-site.xml

在这里插入图片描述
(4) mapreduce (mapred-env.sh、mapred-site.xml)

vim mapred-env.sh

在这里插入图片描述修改mapred-site.xml.template 文件后缀为 mapred-site.xml

mv mapred-site.xml.template mapred-site.xml
vim mapred-site.xml

在这里插入图片描述

8. 文件传送

将hadoop201的module、software目录,/etc/profile 文件同步到hadoop202和hadoop203上

xsync module/ 
xsync software/
xsync /etc/profile

在hadoop202和hadoop203上分别执行source,以使配置文件生效。

source /etc/profile

检查环境是否配置成功

java -version
hadoop version

如果都成功说明文件同步成功。

9. Hadoop启动停止方式(hadoop用户)

1.各个服务组件逐一启动
(1)分别启动 hdfs 组件
hadoop-daemon.sh start|stop namenode|datanode|secondarynamenode
(2)启动 yarn
yarn-daemon.sh start|stop resourcemanager|nodemanager
2.各个模块分开启动(配置 ssh 是前提)常用
(1)整体启动/停止 hdfs
start-dfs.sh
stop-dfs.sh
(2)整体启动/停止 yarn
start-yarn.sh
stop-yarn.sh
3.全部启动(不建议使用)
start-all.sh
stop-all.sh

10. 测试集群是否配置成功(hadoop用户)

hadoop203(Namenode节点)上执行

start-dfs.sh

在这里插入图片描述
hadoop201(resourcemanager节点)上执行

start-yarn.sh

在这里插入图片描述xcall同时查看进程

xcall /opt/module/jdk1.8.0_151/bin/jps

在这里插入图片描述
执行到以上内容说明完全分布式环境部署成功。

11.总结

在部署环境中都会出现很多问题,尤其是细节问题,有可能就是哪个小的步骤出错,都会导致最终结果出错,还可能使你找不到问题所在。所以在操作时切勿急躁,一步一步来,就会避免一些细节错误。这里我例出一些我遇到的问题:
权限使用问题:在环境部署过程中,我们会多次切换用户,这也难免出现用户混乱情况,注意,我们在启动集群时用的是hadoop用户,所以如果你在期间使用过root用户启动集群,在重新使用hadoop用户启动时,最好把root用户产生文件统统删除,这样就不会影响集群启动与关闭。
文件发送问题:在使用xsync同步文件后,一定要在另外两台机子上检查文件是否传送成功,配置文件是否生效。在一切检查完毕后,方能进行下一步骤。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值