数据仓库 — 04_Zookeeper的安装与配置(Zookeeper简介与应用场景、安装与部署、登陆Shell与非登录Shell环境变量的加载区别)


欢迎访问笔者个人技术博客: http://rukihuang.xyz/

学习视频来源于尚硅谷,视频链接:尚硅谷大数据项目数据仓库,电商数仓V1.2新版,Respect!

1 Zookeeper概述

1.1 简介

  • Zookeeper 是一个开源的分布式的,为分布式应用提供协调服务的 Apache 项目
  • 从设计模式来理解:Zookeeper是一个基于观察者模式设计的分布式服务管理框架,负责存储和管理大家都关心的数据,然后接手观察者的注册,一旦这些数据的状态发生变化,Zookeeper就将负责通知已经在Zookeeper上注册的那些观察者做出相关的反应。
  • Zookeeper=文件系统+通知机制

在这里插入图片描述

1.2 特点

  1. 1个领导者leader,多个跟随着follower
  2. 集群中只要有半数以上的节点存活,集群就能正常服务
  3. 全局数据一致:每个server保存一份相同的数据副本,Client无论连接到哪个server,数据都是一致的
  4. 更新请求顺序进行,来自同一个Client的更新请求按其发送顺序依次执行
  5. 数据更新原子性,一次数据更新要么成功,要么失败
  6. 实时性,在一定事件范围内,Client能读到最新数据

在这里插入图片描述

1.3 数据结构

  • Zookeeper数据模型的结构与Unix文件系统很类似,整体上可以看作一棵树,每个节点乘坐一个ZNode。每个ZNode默认能够存储1MB的数据,每个ZNode都可以通过其路径唯一标识

在这里插入图片描述

1.4 应用场景

1.4.1 统一命名服务

  • 在分布式环境下,经常需要对应用/服务进行统一命名,便于识别

在这里插入图片描述

1.4.2 统一配置管理

  1. 分布式环境下,配置文件同步非常常见
    1. 一般要求一个集群中,所有节点的配置信息是一致的,如kafka
    2. 对配置文件修改后,希望能够快速同步 到各个节点上
  2. 配置管理可由Zookeeper实现
    1. 可将配置信息写入Zookeeper上的一个ZNode
    2. 各个客户端服务器监听这个ZNode
    3. 一旦ZNode中的数据被修改,Zookeeper将通知各个客户端服务器

在这里插入图片描述

1.4.3 统一集群管理

  1. 分布式环境中,实时掌握每个节点的状态是必要的
    1. 可根据节点实时状态做出一些调整
  2. Zookeeper可以实现实时监控节点状态变化
    1. 可将节点信息写入Zookeeper上的一个Znode
    2. 监听这个Znode可获取它的实时状态变化

在这里插入图片描述

1.4.4 服务器动态上限

  • 客户端能够实时洞察到服务器上下线的变化

在这里插入图片描述

1.4.5 软负载均衡

  • 在Zookeeper中记录每台服务器的访问数,让访问最少的服务器去处理最新的客户端请求

在这里插入图片描述

2 Zookeeper的安装

2.1 分布式安装部署

2.1.1 集群规划

  1. 在hadoop102、hadoop103、hadoop104上部署Zookeeper

2.1.2 解压安装

  1. 解压安装(102机器)
tar -zxvf zookeeper-3.4.10.tar.gz -C /opt/module/
  1. 分发同步至其他两台机器(/opt/module/)
xsync zookeeper-3.4.10/

2.1.3 配置服务器编号

  1. 配置服务器编号 (/opt/module/zookeeper-3.4.10/),在此目录下创建zkData文件夹
mkdir -p zkData
  1. /opt/module/zookeeper-3.4.10/zkData中创建myid文件,并编辑内容为2,此为server编号
vi myid
  1. 分发至其他服务器中(/opt/module/zookeeper-3.4.10/zaData),修改myid内容分别为3和4
xsync myid

2.1.4 配置zoo.cfg文件

  1. 重命名 /opt/module/zookeeper-3.4.10/conf目录下的zoo_sample.cfgzoo.cfg
mv zoo_sample.cfg zoo.cfg
  1. 修改zoo.cfg中的数据存储路径配置
dataDir=/opt/module/zookeeper-3.4.10/zkData
  1. 增加配置
#######################cluster########################## 
server.2=hadoop102:2888:3888 
server.3=hadoop103:2888:3888 
server.4=hadoop104:2888:3888
  1. 同步至其他两台机器
xsync zoo.cfg

2.1.5 ‘server.A=B:C:D’ 配置解读

  1. A:是一个数字,表示这个是第几号服务器;集群模式下配置一个文件 myid,这个文件在 dataDir 目录下,这个文件里面有一个数据 就是 A 的值,Zookeeper 启动时读取此文件,拿到里面的数据与 zoo.cfg里面的配置信息比 较从而判断到底是哪个 server。

  2. B:这个服务器的 ip 地址

  3. C:这个服务器与集群中的 Leader 服务器交换信息的端口

  4. D:万一集群中的 Leader 服务器挂了,需要一个端口来重新进行选举,选出一个新的 Leader,而这个端口就是用来执行选举时服务器相互通信的端口

2.2 ZK集群启动停止脚本

  1. /home/ruki/bin目录下创建脚本
vim zk.sh
  1. 内容如下
#!/bin/bash

case $1 in 
"start"){
	for i in hadoop102 hadoop103 hadoop104
	do
		ssh $i "/opt/module/zookeeper-3.4.10/bin/zkServer.sh start "
	done
	
};;
"stop"){
	for i in hadoop102 hadoop103 hadoop104
	do
		ssh $i "/opt/module/zookeeper-3.4.10/bin/zkServer.sh stop "
	done

};;
"status"){
	for i in hadoop102 hadoop103 hadoop104
	do
		ssh $i "/opt/module/zookeeper-3.4.10/bin/zkServer.sh status "
	done
};;
esac
  1. 增加运行权限
chmod 777 zk.sh	
  1. 启动停止命令
#启动
zk.sh start
#停止
zk.sh stop
#查看状态
zk.sh status

3 项目经验之Linux环境变量

  1. 修改/etc/profile文件:用来设置系统环境参数,比如$PATH. 这里面的环境变量是对系统内所有用户生效
#使配置文件生效
source /etc/profile
  1. 修改~/.bashrc 文件:针对某一个特定的用户,环境变量的设置只对该用户自己有效。 使用 bash 命令,只要以该用户身份运行命令行就会读取该文件
  2. /etc/profile 里面的环境变量追加到~/.bashrc 目录
cat /etc/profile >> ~/.bashrc
  1. 注意:
    1. 登录式 Shell,采用用户名比如 ruki 登录,会自动加载/etc/profile
    2. 非登录式 Shell,采用 ssh 比如 ssh hadoop103 登录,不会自动加载/etc/profile,会自动 加载~/.bashrc

在这里插入图片描述

在这里插入图片描述

  1. 因此,我们先前创建的/etc/profile.d/env.sh用以配置环境变量是为ssh非登录shell提供便利的
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值