linux-zookeeper-kafka入门
公告:版权所有,违者必究
###1.zookeeper安装
**前提:**先安装jdk,zookeeper运行依赖于java环境。
(1.)下载安装包
```
http://mirror.bit.edu.cn/apache/zookeeper
https://zookeeper.aphache.org
```
(2.)解压文件
```
tar -zxvf zookeeper-3.4.13.tar.gz -C /usr/local/
mv /usr/local/zookeeper-3.4.13.tar.gz /usr/local/zookeeper //便于记忆,重命名
```
(3.)编辑配置文件
```
cd zookeeper-3.4.13/conf
cp zoo_sample.cfg zoo.cfg
vim zoo.cfg
dataDir=/tmp/zookeeper/data //修改为自己创建的目录,临时目录存放数据不安全
dataLogDir=/tmp/zookeeper/log
```
**集群场景配置**
>如果想配置集群的话,请zoo.cfg文件的clientPort下面添加服务器的ip。如
server.1=192.168.180.132:2888:3888 //这里是1,2,3 就是myid的对应的服务器编号,前面的2888端口用于和leader交换数据的,用于同步副本通信的端口
server.2=192.168.180.133:2888:3888 // 后面这个3888端口用于选举的,在选主的时候用这个端口进行通信
server.3=192.168.180.134:2888:3888
如果电脑内存比较小,zookeeper还可以设置成伪集群。也就是全部服务器采用同一个ip,但是使用不同的端口。
如果是配置集群,还需要在前面配置过的dataDir路径下新增myid文件,在data目录下创建文件,文件名为“myid”, 编辑该“myid”文件,并在对应的IP的机器上输入对应的编号。
如在192.168.180.132上,“myid”文件内容就是1。在192.168.180.133上,内容就是2。
cd /tmp/zookeeper/data
touch myid
vim myid
(4.)设置环境变量
vi /etc/profiel
ZOOKEEPER_HOME=/usr/local/zookeeper/
PATH=$PATH:$ZOOKEEPER_HOME/bin
source /etc/profile
(5.)zookeeper启动
zkServer.sh start //单机模式
zkServer.sh start zoo1.cfg //伪集群分布式模式
zkServer.sh status //查看状态
【问题记录】:
集群场景下,有一个节点启动正常,但是查询状态有问题:
./zkServer.sh status
JMX enabled by default
Using config: /usr/local/zookeeper/bin/../conf/zoo.cfg
Error contacting service. It is probably not running.
【解决办法】:
(a.)关闭防火墙,centos7:
systemctl stop firewalld.service #停止firewall
systemctl disable firewalld.service #禁止firewall开机启动
(b.)查看zoo.cfg中这两个文件夹是否已经创建,目录是否正确
dataDir=/opt/zookeeper/zkdata
dataLogDir=/opt/zookeeper/zkdatalog
(c.)myid文件是否存在,是否在dataDir目录下,是否编号为1,2,3...内容是否有空格回车符,认真检查!!!
(d.) 用以下命令启动,查看启动日志:
zkServer.sh start-foreground //linux
./zkServer.sh print-cmd //windows
(6.)进程查看
jps
(7.)客户端的启动
zkcli.sh //启动客户端
ls /path //查看当前节点中所包含的内容
ls2 / //查看详情
create /path "xxx" //创建普通节点
create -e /path1/path2/xxx "xxx" //创建临时节点
create -s /path1/path2 "xxx" //创建带序列号的节点,即自增节点
get /path //获取数据
set /path1/path2 "yyy" //修改数据
get /path1/path2 watch //节点值变化监听
ls /path1 watch //路径变化监听,注册时执行一次,即只执行一次
quit //退出
2. zookeeper的选举机制
(1.) 半数机制:半数以上工作正常,适合奇数安装。初始化时的选举,就采用该种方式。
(2.) 选举时先投自己,不能成为master后,再投给节点数比自己大的节点。
3.节点类型
(1.)持久型:client与server断开连接后,创建的节点不删除,序列号顺序编号,单调递增。
(2.)临时型:clent与Server断开连接后,创建的节点自己删除,节点顺序编号。
4.内容同步到其他节点
xsync zookeeper/xxx //同步后,其他节点也有该文件夹
5.zookeeper应用场景
(1.)统一配置管理:
分布式环境下,配置文件同步:
a. 集群中所有节点的配置信息一致,如kafka集群
b. 对配置文件修改后,可以快速的同步到其他各个节点上。
配置管理可交给zookeeper实现:
c. 可将配置信息写入zookeeper的一个节点上。
d. 各个客户端监听这个节点,一旦节点中的数据被修改,zookeeper将通知各个客户端,同步数据
(2.) 统一命名服务:
域名 --> 多个IP
(3.)统一集群管理
a.分布式环境中,实现掌握各个节点的状态,可根据节点的实施状态,做出一些调整
b.zookeeper 可以实现实时监控节点状态变化,可将节点信息写入zookeeper的一个节点,监听这个节点可获取它的实时状态变化。
(4.)服务器动态上下线
客户端实时洞察服务器上下线变化,如果该节点挂掉则访问其他节点
(5.)软负载均衡
在zookeeper中记录每台服务器的访问数,让访问数最少的服务器去处理最新的客户端请求。
6.zookeeper数据结构
(1.)树状存储
(2.)默认每个节点只能存储1M数据
(3.)按路径访问
7.zookeeper特性
(1.)zookeeper = 文件系统 + 通知机制
(2.)zookeeper 一个leader,N个follower
(3.)集群中只要有半数 以上节点存活,则zookeeper集群可以正常服务
(4.)全局数据一致:每个server保存一份相同的数据的副本,客户端无论连到哪个服务端,数据都是一致的。
(5.)数据更新的原子性,一次数据更新要么成功,要么失败
(6.)实时性,在一定时间内可以获取最新的数据
(7.)zookeeper监听服务端下线原理:
服务端启动时,去注册信息到zookeeper,客户端获取在线服务列表,并注册监听。当服务器节点下线时,zookeeper推送服务端下线的事件给客户端,客户端接收到通知后,重新获取服务器列表,并注册监听。
———————————————————————————————————————————————————————————
———————————————————————————————————————————————————————————
kafka入门
1.下载安装包
http://kafka.apache.org/downloads.html
2.解压文件
tar -zxvf kafka_2.11-2.0.0.tgz -C /usr/local/
3.进入bin目录启动
./kafka-server-start.sh …/config/server.properties //启动Kafka,需指定配置文件
----------------------------------【喜欢打赏】-------------------------------------------
小主,辛苦啦!文章棒棒哒,赏杯咖啡吧...
----------------------------------【喜欢打赏】-------------------------------------------
linux-zookeeper-kafka入门的更多相关文章
- 转 Kafka入门经典教程
Kafka入门经典教程 http://www.aboutyun.com/thread-12882-1-1.html 问题导读 1.Kafka独特设计在什么地方?2.Kafka如何搭建及创建topic. ...
- _00017 Kafka的体系结构介绍以及Kafka入门案例(0基础案例+Java API的使用)
博文作者:妳那伊抹微笑 itdog8 地址链接 : http://www.itdog8.com(个人链接) 博客地址:http://blog.csdn.net/u012185296 博文标题:_000 ...
- Linux下Kafka单机安装配置方法(图文)
Kafka是一个分布式的.可分区的.可复制的消息系统.它提供了普通消息系统的功能,但具有自己独特的设计.这个独特的设计是什么样的呢 介绍 Kafka是一个分布式的.可分区的.可复制的消息系统.它提供了 ...
- 《OD大数据实战》Kafka入门实例
官网: 参考文档: Kafka入门经典教程 Kafka工作原理详解 一.安装zookeeper 1. 下载zookeeper-3.4.5-cdh5.3.6.tar.gz 下载地址为: http://a ...
- kafka 入门笔记 #1
kafka 入门笔记(#1) 单机测试 下载版本,解压 tar -xzf kafka_2.11-0.10.1.1.tgz cd kafka_2.11-0.10.1.1 启动服务 Kafka用到了Zoo ...
- Kafka入门 --安装和简单实用
一.安装Zookeeper 参考: Zookeeper的下载.安装和启动 Zookeeper 集群搭建--单机伪分布式集群 二.下载Kafka 进入http://kafka.apache.org/do ...
- Redis&MongoDB&Zookeeper&Kafka
目录 Redis MongoDB Zookeeper Kafka Redis 概念 Redis是NoSQL中比较常典型的一个非关系型数据库,在日常工作中也是最为常见的.Redis是一个由C语言编写的开 ...
- Linux下Kafka单机安装配置方法
Kafka是一个分布式的.可分区的.可复制的消息系统.它提供了普通消息系统的功能,但具有自己独特的设计.这个独特的设计是什么样的呢? 首先让我们看几个基本的消息系统术语: •Kafka将消息以topi ...
- Kafka入门之生产者消费者
一.Kafka安装与使用 ( kafka介绍 ) 1. 下载Kafka 官网 http://kafka.apache.org/ 以及各个版本的下载地址 http://archive.ap ...
- Kafka 入门和 Spring Boot 集成
目录 Kafka 入门和 Spring Boot 集成 标签:博客 概述 应用场景 基本概念 基本结构 和Spring Boot 集成 集成概述 集成环境 kafka 环境搭建 Spring Boot ...
随机推荐
- Young and Beautiful 新红楼剪辑(by up)
up剪辑的新红楼视频,配上Young and Beautiful 这首英文歌,很优美^_^
- Golang 入门 : channel(通道)
笔者在<Golang 入门 : 竞争条件>一文中介绍了 Golang 并发编程中需要面对的竞争条件.本文我们就介绍如何使用 Golang 提供的 channel(通道) 消除竞争条件. C ...
- 手动创建分区以及软硬raid的问题
本文章旨在介绍安装centos7时手动分区问题,及其所对应的软硬raid问题.在新建centos7系统时,需要手动分区时,提供给我们三个选项: 在上图中,默认选项为“Standard Partitio ...
- 曾Python培训讲师-2年Python开发无包装简历-20191217-可公开
目录 个人介绍 技能介绍 项目经历 自我评价 简历非完整版,需要完整版看下述信息,禁止任何一切私人用途.转发 我生日是27号,那就27元一份,有需求的来购买!只会涨价不会降价,大概卖10份涨1元:曾P ...
- 有了faker,再也不用为了构造测试数据而烦恼啦!
在软件需求.开发.测试过程中,有时候需要使用一些测试数据,针对这种情况,我们一般要么使用已有的系统数据,要么需要手动制造一些数据.在手动制造数据的过程中,可能需要花费大量精力和工作量,此时可以借助Py ...
- 跟着高淇学Python——第一到第三章总结
2019/10/26 第一章:Python介绍 Python是一种解释型,面向对象的语言.特点是: 可读性强 简洁,简洁 面向对象 免费开源 可移植性和跨平台性 丰富的库 可扩展性 应用范围:1.人工 ...
- 关于WIN7下IE8IE7浏览器无法安装微信支付商户证书的解决方案
关于WIN7下IE8IE7浏览器无法安装微信支付商户证书的解决方案 解决方案就是使用 chrome浏览器 默认的chorme浏览器 打开微信商户平台 会提示让安装控件 然后反复安装 其实要解决这个 ...
- .net core使用NLog日志
前言:NLog日志对.net core web项目最新的支持在官网上有最新的介绍: 官网介绍地址:https://github.com/NLog/NLog/wiki/Getting-started-w ...
- Web前端基础(7):JavaScript(一)
1. JavaScript概述 1.1 JavaScript历史背景介绍 布兰登 • 艾奇(Brendan Eich,1961年-),1995年在网景公司,发明的JavaScript. 一开始Java ...
- python基础(33):线程(一)
1. 线程概念的引入背景 1.1 进程 之前我们已经了解了操作系统中进程的概念,程序并不能单独运行,只有将程序装载到内存中,系统为它分配资源才能运行,而这种执行的程序就称之为进程.程序和进程的区别就在 ...