Hadoop完全分布式安装

Hadoop完全分布式安装

一、准备工作

1、使用三台主机配置Hadoop集群,修改每台主机的hostname

主机的hostname分别改成:master、slave1、slave2,修改hostname的方法如下:

三台主机都使用root用户操作:

第一台主机:hostname master

第二台主机:hostname slave1

第三台主机:hostname slave2
2、配置Hadoop集群的规划
守护进程master slave1 slave2
Namenode
Datenode
ResourceManager
NodeManager
Journalnode
Zookeeper
3、在三台主机上新建hadoop用户,执行命令如下:

三台主机都使用root用户操作:

useradd -m hadoop

并设置hadoop用户密码为hadoop,命令如下:

passwd hadoop,出现如下界面:

在这里插入图片描述
输入一次hadoop回车之后,再输入一次hadoop,回车,完成设置。
在这里插入图片描述

4、时钟同步

所有节点的系统时间要与当前时间保持一致,三台机器都要操作。

下面命令均在root用户下操作:

(1)查看当前系统时间

date

(2)如果系统时间与当前时间不一致,需要进行以下操作

a、如果虚拟机不能上网,执行如下命令:

三台机器同时执行下面命令:("”里面的时间设置成当前时间,格式只能这么写)

date -s “2019-11-27 20:35:00”

三台机器执行完上面命令之后,再分别执行如下命令,将时间写入系统中。

clock -w

b、如果虚拟机可以上网,三台机器分别执行如下命令:

cp /usr/share/zoneinfo/Asia/Shanghai
/etc/localtime

yum -y install ntp // 在线安装ntp命令

ntpdate pool.ntp.org // 同步日期时间命令

date // 查看当前系统时间,检查是否同步到当前时间

date // 查看当前系统时间,检查是否同步到当前时间

5、配置hosts文件

首先确定三台主机的ip和对应的hostname,比如我的如下:

192.168.42.100 master

192.168.42.101 slave1

192.168.42.102 slave2

然后在三台主机上使用root用户执行如下命令:

vi /etc/hosts

在文件最下面增加三台ip地址和hostname的对应关系,如下图。
在这里插入图片描述
最后保存文件。
注意:原来文件中的内容不要删除。

6、禁用防火墙

三台机器都要操作。

(1)查看防火墙状态

service iptables status

在这里插入图片描述
上图代表主机的防火墙是关闭的。

如果出现下图的状态,代表防火墙是打开的
在这里插入图片描述

需要通过如下命令关闭防火墙:

chkconfig iptables off // 永久关闭防火墙

service iptables stop // 临时关闭防火墙

关闭防火墙之后,再执行如下命令检查一下防火墙是否关闭成功。

service iptables status

7、目录规划

目录需要提前创建,并赋予合理的权限。

名称路径
所有软件目录/home/hadoop/app/
所有数据和日志目录/home/hadoop/data

三台机器都要操作。
创建目录命令如下:
切换到hadoop用户下:su hadoop
切换目录到/home/hadoop:cd~
创建路径:mkdir app
mkdir data

如下所示:
在这里插入图片描述
注意:app和data目录一定在/home/hadoop路径下创建,并且使用hadoop用户创建。

8、配置SSH免密码通信

切换到hadoop用户下进行操作
(1)配置SSH
三台机器都要操作,命令如下:
ssh-keygen -t rsa,输入三次回车。
在这里插入图片描述
cd ~
cd .ssh有如下两个文件:
在这里插入图片描述
cat id_rsa.pub >> authorized keys执行上述命令之后。会有如下三个文件:
在这里插入图片描述
cd … (返回上一级目录)
chmod 700 .ssh/
chmod 600 .ssh/*
然后使用【ssh 主机名】命令测试ssh是否配置成功,比如在master这台机器上输入:ssh master,输入一次yes之后,不提示输入密码,代表ssh免密配置成功。
(2)将每个主机的公钥复制到master认证文件里
三台机器都要操作。
cat ~/.ssh/id_rsa.pub | ssh hadoop@master ‘cat >> ~/.ssh/authorized_keys’
注意:在slave1和slave2上操作需要输入一次yes,并且输入hadoop用户的密码,如下图所示。
在这里插入图片描述
(3)将master中的authorized_keys文件分发到slave1和slave2上面。
在master上操作
scp -r authorized_keys hadoop@slave1:~/.ssh/
scp -r authorized_keys hadoop@slave2:~/.ssh/
操作时需要输入一次yes,并且输入hadoop用户密码。如下所示:
在这里插入图片描述
至此,完成了三台机器SSH免密通信的配置。配置完成后需要进行测试,
在master上输入:
ssh slave1,不提示密码,代表master向slave1免密通信配置成功,如下图所示。
在这里插入图片描述方括号里的主机名由master变成了slave1,代表成功登陆到了slave1上,然后需要输入exit,退出slave1的登陆。退出汁后主机名还是原来的master。(如果不退出,所有的操作都会在slave1机器上进行,所以在操作之前一定要确定自己操作所在的机器是哪台
ssh slave2,同上。
在slave1上输入:
ssh master,不提示输入密码,代表slave1向master免密通信配置成功。然后输入exit。
ssh slave2,不提示输入密码,代表slave1向slave2免密通信配置成功,然后输入exit。
在slave2上输入:
ssh master,不提示输入密码,代表slave2向master免密通信配置成功。然后输入exit。
ssh slave1,不提示输入密码,代表slave2向slave1免密通信配置成功。然后输入exit。

二、安装JDK

三台机器都要操作

1、解压JDK安装包

使用hadoop用户操作,将JDK安装包上传到/home/hadooop/app下面,上传成功后,进入app目录下ll命令查看,如下图所示:
在这里插入图片描述
进行解压: tar -zxvf jdk-8u211-linux-x64.tar.gz(jdk后按Tab键补齐即可)
解压后,创建jdk的软连接:ln -s jdk1.8.0_211 jdk

2、配置环境变量

切换到root用户,su root,输入root用户的密码。
执行命令:vi /etc/profile
注意:这个文件里的内容不要删除!
将光标移到最后
输入a进行编辑,添加如下内容(这里直接把zookeeper和hadoop的环境变量也添加进去):

JAVA_HOME=/home/hadoop/app/jdk
ZOOKEEPER_HOME=/home/hadoop/app/zookeeper
HADOOP_HOME=/home/hadoop/app/hadoop
CLASSPATH=.:JAVA_HOME/lib/dt.jar:JAVA_HOME/lib/tools.jar
PATH=JAVA_HOME/bin:ZOOKEEPER_HOME/bin:HADOOP_HOME/bin:HADOOP_HOME/sbin:$PATH
export JAVA_HOME CLASSPATH PATH
ZOOKEEPER_HOME HADOOP_HOME
(上端代码中有符号失效无法显示,对照下图)
在这里插入图片描述然后输入:source /etc/profile,使配置文件生效。
3、验证JDK是否安装成功
输入java -version,验证jdk是否安装成功。
如图显示出java版本号即可

三、Zookeeper安装包

1、解压Zookeeper安装包

在master机器上,使用hadoop用户操作。
将zookeeper安装包上传到/home/hadoop/app/目录下
解压:tar -zxvf zookeeper-3.4.6.tar.gz
重命名:mv zookeeper-3.4.6 zookeeper

2、修改配置文件

cd /home/hadoop/app/zookeeper/conf
复制一个zoo.cfg文件: cp zoo_sample.cfg zoo.cfg
编辑zoo.cfg: vi zoo.cfg修改如下内容:

dataDir=/home/hadoop/data/zookeeper/zkdata
dataLogDir=/home/hadoop/data/zookeeper/zkdatalog
server.1=master:2888:3888
server.2=slave1:2888:3888
server.3=slave2:2888:3888
在这里插入图片描述

3、将Zookeeper远程发送到slave1和slave2

将zookeeper目录远程发送到slave1和slave2机器上:
cd /home/hadoop/app

scp -r zookeeper hadoop@slave1:/home/hadoop/app/
scp -r zookeeper hadoop@slave2:/home/hadoop/app/

4、创建Zookeeper数据和日志目录

在master、slave1、slave2这三个节点上,分别创建目录:

mkdir -p /home/hadoop/data/zookeeper/zkdata
mkdir -p/home/hadoop/data/zookeeper/zkdatalog
cd /home/hadoop/data/zookeeper/zkdata

创建文件myid,master的myid文件内容为1,slave1的myid文件内容为2,slave2的myid文件内容为3。
以master为例:
vi myid,写入1,退出保存文件。
在这里插入图片描述

5、启动Zookeeper集群

在三台机器上分别启动zookeeper:
cd /home/hadoop/app/zookeeper
bin/zkServer.sh start
启动完之后,用命令bin/zkServer.sh status 检查zookeeper的状态,如下图:
在这里插入图片描述
在这里插入图片描述

四、Hadoop集群环境的搭建

1、解压Hadoop安装包
在master机器上,使用hadoop用户操作。
将hadoop安装包上传到/home/hadoop/app/目录下
解压:tar -zxvf hadoop-2.7.3.tar.gz
2、修改Hadoop配置文件
在master机器上,使用hadoopo用户操作
切换到Hadoop配置文件目录下:
cd /home/hadoop/app/hadoop/etc/hadoop
将该配置文件上传到该目录下,将原来的文件覆盖掉。

3、将hadoop-2.7.3远程发送到slave1和slave2

在master机器上,使用hadoop用户操作。
scp -r hadoop-2.7.3 hadoop@slave1:/home/hadoop/app/
scp -r hadoop-2.7.3 hadoop@slave2:/home/hadoop/app/

4、创建Hadoop软连接

三台机器都要操作
ln -s hadoop-2.7.3 hadoop

5、启动HDFS

(1)启动journalnode
在master机器上执行:
hadooop - daemons.sh start journalnode
(2)格式化namenode
在master机器上执行:
hdfs namenode - format
(3)格式化高可用
在master机器上执行:
hdfs zkfc - formatZK
(4)启动master上的namenode
在master机器上执行:
hadooop - daemon.sh start namenode
(5)在namenode备节点上执行数据同步
在slave1机器上执行:
hdfs namenode - bootstrapStandby
(6)启动HDFS集群
在master机器上执行:
start - dfs.sh
(7)验证HDFS是否启动成功
启动完成后,在master机器上看到如下进程:
在这里插入图片描述
在slave1上看到如下进程:
在这里插入图片描述
在slave2上看到如下进程:
在这里插入图片描述

输入网址:http://192.168.42.100:50070(master ip),通过这个Web界面查看namenode的启动情况,http://192.168.42.101:50070(slave ip),通过这个Web界面查看namenode的启动情况,看一下哪个是active状态,哪个是standby状态。
在这里插入图片描述
在这里插入图片描述

注意:哪个节点处于active状态或standby状态是不一定的,要由Zookeeper选举所得,且某一时刻只能有一个节点处于active状态。

6、上传文件至HDFS进行测试

在master上操作:

本地新建djt.txt文件:vi djt.txt
向文件中写入三行hadoop dajiangtai
退出保存
在hdfs上创建一个目录:hdfs dfs -mkdir /test
将djt.txt上传至/test:hdfs dfs -put djt.txt /test
查看djt.txt是否上传成功:hdfs dfs -ls /test

7、启动YARN

在master上操作:
start -yarn.sh
在slave1上操作:
yarn-daemon.sh start resourcemanager
启动完成后,在master机器上看到如下进程:
在这里插入图片描述
在slave1上看到如下进程:
在这里插入图片描述
在slave2上看到如下进程:

在这里插入图片描述

输入网址:http://192.168.42.100:8088(master ip),通过这个Web界面查看yarn的启动情况

在这里插入图片描述

输入网址http://192.168.42.101:8088(slave ip),通过这个Web界面查看yarn的启动情况,该网址会自动跳转到master机器上yarn界面。

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值