Hadoop系统基础环境搭建( ssh免密zookeeper.及JDK)(2)

本篇Hadoop系统基础环境搭建是对接上一次更新,之前的步骤链接如下:https://blog.csdn.net/weixin_42588131/article/details/100629196

正文开始

1.5配置SSH免密

(1)配置SSH免密码登陆
SSH主要通过RSA算法来产生公钥与私钥,在数据传输过程中对数据进行加密来保障数据的安全性和可 靠性,公钥部分是公共部分,网络上任一结点均可以访问,私钥主要用于对数据进行加密,以防他人盗取 数据。总而言之,这是一种非对称算法,想要破解还是非常有难度的。Hadoop集群的各个结点之间需要 进行数据的访问,被访问的结点对于访问用户结点的可靠性必须进行验证,hadoop采用的是ssh的方法通 过密钥验证及数据加解密的方式进行远程安全登录操作,当然,如果hadoop对每个结点的访问均需要进行 验证,其效率将会大大降低,所以才需要配置SSH免密码的方法直接远程连入被访问结点,这样将大大提 高访问效率。

每个结点分别产生公私密钥:
ssh-keygen -t dsa -P ‘’ -f ~/.ssh/id_dsa(三台机器)
秘钥产生目录在用户主目录下的.ssh目录中,进入相应目录查看:cd .ssh/
Id_dsa.pub为公钥,id_dsa为私钥,紧接着将公钥文件复制成authorized_keys文件:(仅master) cat id_dsa.pub >> authorized_keys(注意在.ssh/路径下操作)
Hadoop系统基础环境搭建( ssh免密zookeeper.及JDK)(2)_第1张图片

(2)在主机上连接自己
ssh master
Hadoop系统基础环境搭建( ssh免密zookeeper.及JDK)(2)_第2张图片
(3)让主节点master通过SSH免密登陆两个子节点slave (slave 操作)
为了实现这个功能,两个slave结点的公钥文件中必须要包含主结点的公钥信息,这样 当master就可以顺利安全地访问这两个slave结点了。 slave1结点通过scp命令远程登录master结点,并复制master的公钥文件到当前的目录下,且重命名为master_das.pub,这一 过程需要密码验证。

scp master:~/.ssh/id_dsa.pub ./master_das.pub
在这里插入图片描述
将master结点的公钥文件追加至authorized_keys文件。 cat master_dsa.pub >> authorized_keys
在这里插入图片描述
这时,master就可以连接slave1了
Hadoop系统基础环境搭建( ssh免密zookeeper.及JDK)(2)_第3张图片
slave1结点首次连接时需要,“yes”确认连接,这意味着master结点连接slave1结点时需要人 工询问,无法自动连接,输入yes后成功接入,紧接着注销退出至master结点。
同理slave2中也是这么操作。
注意:两个结点的ssh免密码登录已经配置成功,还需要对主结点master也要进行上面的同 样工作,因为jobtracker有可能会分布在其它结点上,jobtracker有不存在master结点上的可能性。 在上一步骤中,我们已经进行过此操作,这里仅做提醒。

1.6 JDK 的安装

(1)首先建立工作路径/user/java

mkdir -p /usr/java tar -zxvf /opt/soft/jdk-8u171-linux-x64.tar.gz -C /usr/java/
在这里插入图片描述
(2)修改环境变量
Hadoop系统基础环境搭建( ssh免密zookeeper.及JDK)(2)_第4张图片
修改环境变量:vi /etc/profile
添加内容如下:
export JAVA_HOME=/usr/java/jdk1.8.0_171 export CLASSPATH= J A V A H O M E / l i b / e x p o r t P A T H = JAVA_HOME/lib/ export PATH= JAVAHOME/lib/exportPATH=PATH:$ JAVA_HOME/bin export PATH JAVA_HOME CLASSPATH
Hadoop系统基础环境搭建( ssh免密zookeeper.及JDK)(2)_第5张图片
生效环境变量:source /etc/profile 查看java版本:java -version
在这里插入图片描述

同理slave节点,相同安装步骤。 注意:如果在slave节点中安装较慢,可以使用scp命令,将相同的文件从master中复制过来。 在master中将JDK复制到slave2中。
在这里插入图片描述

1.7zookeeper的安装

安装之前大家要理解它的工作原理,简单来说你要知道的如下:
Zookeeper字面上理解就是动物管理员,Hadoop生态圈中很多开源项目使用动物命名,例如:Hive(蜜蜂)、Pig(小猪)。这就需要一个管理员来管理这些“动物”。在集群的管理中Zookeeper起到非常重要的角色负责分布式应用程序协调的工作——它包含一个简单的原语集,分布式应用程序可以基于它实现同步服务,配置维护和命名服务等。
Zookeeper服务自身组成一个集群(2n+1个服务允许n个失效)。Zookeeper服务有两个角色,一个是leader,负责写服务和数据同步,剩下的是follower,提供读服务,leader失效后会在follower中重新选举新的leader。
1.客户端可以连接到每个server,每个server的数据完全相同。
2.每个follower都和leader有连接,接受leader的数据更新操作。
3.Server记录事务日志和快照到持久存储。
4.大多数server可用,整体服务就可用
Zookeeper的核心是原子广播,这个机制保证了各个Server之间的同步。实现这个机制的协议叫
做Zab协议。Zab协议有两种模式,它们分别是恢复模式(选主)和广播模式(同步)。当服务启动
或者在领导者崩溃后,Zab就进入了恢复模式,当领导者被选举出来,且大多数Server完成了和
Leader的状态同步以后,恢复模式就结束了。状态同步保证了Leader和Server具有相同的系统状态。
为了保证事务的顺序一致性,Zookeeper采用了递增的事务ID号(zxid)来标识事务。所有的提
议(proposal)都在被提出的时候加上了zxid。zxid是一个64位的数字,它高32位是epoch用来标识
Leader关系是否改变,每次一个Leader被选出来,它都会有一个新的epoch,标识当前属于那个
Leader的统治时期。低32位用于递增计数。
每个Server在工作过程中有三种状态:
 LOOKING:当前Server不知道Leader是谁,正在搜寻;
 LEADING:当前Server即为选举出来的Leader;

  这个过程产生了leader后,Zookeeper就可以开始工作了,工作的过程中,理论上每个Zookeeper的数据都是一致的,如 果某一个节点出了问题,只要还有超过半数的节点正常,那整个集群就可以正常工作,所以Zookeeper首先实现了自己的高可 用,然后Zookeeper还可以保存数据,协调控制数据..
  
(2.)安装Zookeeper
1. 修改主机名称到IP地址映射配置。 vi /etc/hosts 

192.168.15.104 (master IP)master master.root
192.168.15.127 (同理)slave1 slave1.root
192.168.15.124 (同理)slave2 slave2.root
Hadoop系统基础环境搭建( ssh免密zookeeper.及JDK)(2)_第6张图片
2. 修改ZooKeeper配置文件。在其中一台机器(master)上,用 tar -zxvf
命令解压缩zookeeper-3.4.6.tar.gz
在这里插入图片描述
3. 配置文件zoo.cfg 进入zookeeper配置文件夹conf,将zoo_sample.cfg文件拷贝一份命名为zoo.cfg,Zookeeper 在启 动时会找这个文件作为默认配置文件。
cd /usr/zookeeper/zookeeper-3.4.10/conf/ scp zoo_sample.cfg zoo.cfg
对zoo.cfg文件配置如下:
tickTime=2000 #基本事件单元,以毫秒为单位。它用来指示心跳,最小的session过期 时间为两倍的tickTime
initLimit=10 syncLimit=5 dataDir=/usr/zookeeper/zookeeper-3.4.10/zkdata #dataDir 为存储内存中数据库快照的位置,如果不设置参数,更新事务 日志将被存储到默认位置。这里使用我们自己设定位置。
clientPort=2181 dataLogDir=/usr/zookeeper/zookeeper-3.4.10/zkdatalog #指定zookeeper产生日志村放目录路径
server.1=master:2888:3888
server.2=slave1:2888:3888
server.3=slave2:2888:3888

Hadoop系统基础环境搭建( ssh免密zookeeper.及JDK)(2)_第7张图片
4.server.A=B:C:D
A:是一个数字(机器重启默认从0开始),表示这个是第几号服务器;
B:是这个服务器的ip地址,zookeeper是在hosts中映射了本机的IP,因此也可以写为服务器的映射名;
C:表示的是这个服务器与集群中的Leader服务器交换信息的端口;
D:表示的是万一集群中的Leader服务器挂了,需要一个端口来重新进行选举,选出一个新的Leader, 而这个端口就是用来执行选举时服务器相互通信的端口。 2888端口号是服务之间通信的端口,而3888是zookeeper与其他应用程序通信的端口。
在zookeeper的目录中,创建配置中所需的zkdata和zkdatalog两个文件夹。
mkdir zkdata
mkdir zkdatalog

server.A=B:C:D A:是一个数字(机器重启默认从0开始),表示这个是第几号服务器; B:是这个服务器的ip地址,zookeeper是在hosts中映射了本机的IP,因此也可以写为服务器的映射名; C:表示的是这个服务器与集群中的Leader服务器交换信息的端口; D:表示的是万一集群中的Leader服务器挂了,需要一个端口来重新进行选举,选出一个新的Leader, 而这个端口就是用来执行选举时服务器相互通信的端口。 2888端口号是服务之间通信的端口,而3888是zookeeper与其他应用程序通信的端口。

在zookeeper的目录中,创建配置中所需的zkdata和zkdatalog两个文件夹。

mkdir zkdata mkdir zkdatalog
在这里插入图片描述
5. 进入zkdata文件夹,创建文件myid,用于表示是几号服务器。master主机中,设置服务器id为1。
Hadoop系统基础环境搭建( ssh免密zookeeper.及JDK)(2)_第8张图片
6.远程复制分发安装文件。 以上已经在主节点master上配置完成ZooKeeper,现在可以将该配置好的安装文件远程拷贝到集群 中的各个结点对应的目录下(这时候子节点):
scp -r /usr/zookeeper root@slave1:/usr/
scp -r /usr/zookeeper root@slave2:/usr/

在这里插入图片描述
7. 设置myid。在我们配置的dataDir指定的目录下面,创建一个myid文件,里面内容为一个数字,用来 标识当前主机,conf/zoo.cfg文件中配置的server.X中X为什么数字,则myid文件中就输入这个数字。 cd /usr/zookeeper/zookeeper-3.4.10/zkdata 实验中设置slave1中为2;
Hadoop系统基础环境搭建( ssh免密zookeeper.及JDK)(2)_第9张图片
slave中为3
在这里插入图片描述
8. 修改/etc/profile文件,配置zookeeper环境变量。

vi /etc/profile
#set zookeeper environment
export ZOOKEEPER_HOME=/usr/zookeeper/zookeeper-3.4.10
PATH= P A T H : PATH: PATH:ZOOKEEPER_HOME/bin

Hadoop系统基础环境搭建( ssh免密zookeeper.及JDK)(2)_第10张图片
9. 启动ZooKeeper集群。在ZooKeeper集群的每个结点上,执行启动ZooKeeper服务的脚本。
注意在 zookeeper目录下:
bin/zkServer.sh start
bin/zkServer.sh status

Hadoop系统基础环境搭建( ssh免密zookeeper.及JDK)(2)_第11张图片
Hadoop系统基础环境搭建( ssh免密zookeeper.及JDK)(2)_第12张图片
Hadoop系统基础环境搭建( ssh免密zookeeper.及JDK)(2)_第13张图片
通过上面状态查询结果可见,一个节点是Leader,其余的结点是Follower。
至此,zookeeper安装成功。

你可能感兴趣的:(Hadoop系统基础环境搭建( ssh免密zookeeper.及JDK)(2))