1. 下载 zookeeper-3.4.12

zookeeper download

2 配置Zookeeper

进入 zookeeper 的 conf 目录下,找到 zoo_sample.cfg 文件。首先将 zoo_sample.cfg 文件备份,并重命名为 zoo.cfg

blockchain@Dao:~/zookeeper-3.4.13/conf$ cp zoo_sample.cfg zoo.cfg

# The number of milliseconds of each tick
tickTime=2000
# The number of ticks that the initial
# synchronization phase can take
initLimit=10
# The number of ticks that can pass between
# sending a request and getting an acknowledgement
syncLimit=5
# the directory where the snapshot is stored.
# do not use /tmp for storage, /tmp here is just
# example sakes.
dataDir=/home/blockchain/tmp/zookeeper
#dataDir=/tmp/zookeeper
# the port at which the clients will connect
clientPort=2181
# the maximum number of client connections.
# increase this if you need to handle more clients
#maxClientCnxns=60
#
# Be sure to read the maintenance section of the
# administrator guide before turning on autopurge.
#
# http://zookeeper.apache.org/doc/current/zookeeperAdmin.html#sc_maintenance
#
# The number of snapshots to retain in dataDir
#autopurge.snapRetainCount=3
# Purge task interval in hours
# Set to "0" to disable auto purge feature
#autopurge.purgeInterval=1

其中,
tickTime:zookeeper 服务器之间或客户端与服务器之间心跳的时间间隔。
dataDir:zookeeper 保存数据的目录,默认情况下,Zookeeper 将写数据的日志文件也保存在这个目录里。
clientPort:zookeeper 服务器监听端口,用来接受客户端的访问请求。
maxClientCnxns:zookeeper能够接收的最大客户端连接数。

dataDir 默认是 /tmp/zookeeper,由于 /tmp 是 Ubuntu 的 临时目录,这个路径下的数据不能长久保存,因此需要指定到别的目录。
3. 启动 Zookeeper

blockchain@Dao:~/zookeeper-$
blockchain@Dao:~/zookeeper-$ ./bin/zkServer.sh start
ZooKeeper JMX enabled by default
Using config: /home/blockchain/zookeeper-/bin/../conf/zoo.cfg
Starting zookeeper ... STARTED
blockchain@Dao:~/zookeeper-$
blockchain@Dao:~/zookeeper-$ jps
 Jps
 QuorumPeerMain
blockchain@Dao:~/zookeeper-$ 

使用 status 参数来查看 zookeeper 的状态

blockchain@Dao:~/zookeeper-$ ./bin/zkServer.sh status
ZooKeeper JMX enabled by default
Using config: /home/blockchain/zookeeper-/bin/../conf/zoo.cfg
Mode: standalone
blockchain@Dao:~/zookeeper-$ 

Zookeeper 客户端

./zkCli.sh -server ip:port,默认端口为2181

bin/zkCli.sh -server localhost:2181

测试是否安装成功

telnet localhost 2181

然后输入srvr

下载kafka kafka_2.11-2.1.1.tgz

启动kafka
bin/kafka-server-start.sh ~/kafka/config/server.properties > ~/kafka/kafka.log >& &

停止kafka

bin/kafka-server-stop.sh config/server.properties

3.创建一个主题

首先创建一个名为test的topic,只使用单个分区和一个复本

1
bin/kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 1 --partitions 1 --topic test

现在可以运行list topic命令看到我们的主题

1
bin/kafka-topics.sh --list --zookeeper localhost:2181

4.发送消息

1
2
3
bin/kafka-console-producer.sh --broker-list localhost:9092 --topic test
This is a message
This is another message

如果要批量导入文件数据到kafka,参考:2.1 本地环境下kafka批量导入数据

1
bin/kafka-console-producer.sh --broker-list localhost:9092 --topic test_topic < file_pat

5.启动一个消费者,消费者会接收到消息

旧版消费者

1
bin/kafka-console-consumer.sh --zookeeper localhost:2181 --topic test --from-beginning 2>/dev/null

新版消费者

1
bin/kafka-console-consumer.sh --new-consumer --bootstrap-server localhost:9092 --topic input --from-beginning 2>/dev/null

6.查看指定的topic的offset信息

对于结尾是ZK的消费者,其消费者的信息是存储在Zookeeper中的

对于结尾是KF的消费者,其消费者的信息是存在在Kafka的broker中的

都可以使用下面的命令进行查看

1
bin/kafka-consumer-offset-checker.sh --zookeeper localhost:2181 --group xxx --topic xxx

结果

1
2
3
4
bin/kafka-consumer-offset-checker.sh --zookeeper localhost:2181 --group test-consumer-group --topic xxx
[2018-09-03 20:34:57,595] WARN WARNING: ConsumerOffsetChecker is deprecated and will be dropped in releases following 0.9.0. Use ConsumerGroupCommand instead. (kafka.tools.ConsumerOffsetChecker$)
Group           Topic                          Pid Offset          logSize         Lag             Owner
test-consumer-group xxx              0   509             0               -509            none

或者

1
./bin/kafka-run-class.sh kafka.tools.ConsumerOffsetChecker --zookeeper localhost:2181 --group xxxx --topic xxxx

结果

1
2
3
4
bin/kafka-run-class.sh kafka.tools.ConsumerOffsetChecker --zookeeper localhost:2181 --group test-consumer-group
[2018-09-03 20:45:02,967] WARN WARNING: ConsumerOffsetChecker is deprecated and will be dropped in releases following 0.9.0. Use ConsumerGroupCommand instead. (kafka.tools.ConsumerOffsetChecker$)
Group           Topic                          Pid Offset          logSize         Lag             Owner
test-consumer-group xxx              0   509             509             0               none

lag是负数的原因是 topic中的消息数量过期(超过kafka默认的7天后被删除了),变成了0,所以Lag=logSize减去Offset,所以就变成了负数

7.删除一个topic

需要在 conf/server.properties 文件中设置

1
2
# For delete topic
delete.topic.enable=true

否则在执行了以下删除命令后,再 list 查看所有的topic,还是会看到该topic

1
bin/kafka-topics.sh --zookeeper localhost:2181 --delete --topic topicB

再到 配置文件 中的kafka数据存储地址去删除物理数据了,我的地址为

1
/tmp/kafka-logs

最后需要到zk里删除kafka的元数据

1
2
3
./bin/zkCli.sh #进入zk shell
ls /brokers/topics
rmr /brokers/topics/topicA

参考:kafka 手动删除topic的数据

8.查看某个group的信息

新版

1
bin/kafka-consumer-groups.sh --new-consumer --bootstrap-server localhost:9092 --describe --group xxx

结果

1
2
3
bin/kafka-consumer-groups.sh --new-consumer --bootstrap-server localhost:9092 --describe --group group_id
GROUP          TOPIC           PARTITION  CURRENT-OFFSET  LOG-END-OFFSET   LAG                 OWNER
group_id      xxx              0          509             509             0               consumer-1_/127.0.0.1

如果这时候消费者进程关闭了之后,使用上面的命令和下面的-list命令将不会查出这个group_id,但是当消费者进程重新开启后,这个group_id又能重新查到,且消费的offset不会丢失

旧版

1
bin/kafka-consumer-groups.sh --zookeeper 127.0.0.1:2181 --group xxx --describe

9.查看consumer group的列表

ZK的消费者可以使用下面命令查看,比如上面的例子中的 test-consumer-group

1
bin/kafka-consumer-groups.sh --zookeeper 127.0.0.1:2181 --list

KF的消费者可以使用下面命令查看,比如上面的例子中的 console-consumer-xxx ,但是只会查看到类似于 KMOffsetCache-lintong-B250M-DS3H 的结果,这是由于这种消费者的信息是存放在 __consumer_offsets 中

对于如何查看存储于 __consumer_offsets 中的新版消费者的信息,可以参考huxihx的博文: Kafka 如何读取offset topic内容 (__consumer_offsets)

1
bin/kafka-consumer-groups.sh --new-consumer --bootstrap-server localhost:9092 --list

10.在zk中删除一个consumer group

1
rmr /consumers/test-consumer-group

11.查看topic的offset的最小值

参考:重置kafka的offset

1
2
bin/kafka-run-class.sh kafka.tools.GetOffsetShell --broker-list localhost:9092 -topic xxxx --time -2
xxxx:0:0

12.查看topic的offset的最大值

1
bin/kafka-run-class.sh kafka.tools.GetOffsetShell --broker-list localhost:9092 -topic xxxx --time -1

13.重置topic的某个消费者的offset为0,需要高版本的kafka才有该命令,在高版本的kafka client对低版本的kafka集群执行该命令是会生效的

1
kafka-consumer-groups --bootstrap-server localhost:9092 --group xxx --topic xxx --reset-offsets --to-earliest --execute

 

安装Kafka客户端librdkafka
安装下载https://github.com/edenhill/librdkafka 

预备环境:

The GNU toolchain
GNU make
pthreads
zlib (optional, for gzip compression support)
libssl-dev (optional, for SSL and SASL SCRAM support)
libsasl2-dev (optional, for SASL GSSAPI support)

编译和安装:

./configure
make
sudo make install



ubuntu14安装kafka

ubuntu14.0.4安装kafka的更多相关文章

  1. Ubuntu14.0下安装Zend Framework 2

    Ubuntu14.0下安装Zend Framework 2为了安装这个东西,忙活了快一天了,参考中文博客一直没有安装成功,有些博客的时间也是已经很早了,后来google看英文版的才安装成功,这里记录一 ...

  2. Linux—Ubuntu14.0.5安装Redis

    1.前言 Redis是常用基于内存的Key-Value数据库,比Memcache更先进,支持多种数据结构,高效,快速.用Redis可以很轻松解决高并发的数据访问问题:做为时时监控信号处理也非常不错. ...

  3. Linux—Ubuntu14.0.5安装mongo

    1.安装mongo sudo apt-get install mongo 2.如果遇到找不到安装包运行,那就更新资源列表 sudo apt-get update 3.安装成功会自动运行mongo pg ...

  4. Linux—Ubuntu14.0.5安装MySQL

    1.更新资援列表 sudo apt-get update 2.安装mysql的操作命令(下一步选中“Y”) sudo apt-get install mysql-server 3.输入MySQLroo ...

  5. UBUNTU14.0.4安装eclipse

    jdk工具下载地址 http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html 点击这个下载 ...

  6. Linux—Ubuntu14.0.5安装gitlab

    1.下载gitlab-ce,到该连接选择版本   https://mirror.tuna.tsinghua.edu.cn/gitlab-ce/ubuntu/pool/trusty/main/g/git ...

  7. ubuntu14.0 (arm平台)源码安装 VLC播放器

    环境 ubuntu14.0  arm开发板 源 deb http://mirrors.ustc.edu.cn/ubuntu-ports/ trusty main multiverse restrict ...

  8. 二、Ubuntu14.04下安装Hadoop2.4.0 (伪分布模式)

    在Ubuntu14.04下安装Hadoop2.4.0 (单机模式)基础上配置 一.配置core-site.xml /usr/local/hadoop/etc/hadoop/core-site.xml ...

  9. ubuntu14.04 64bit 安装 &amp;&amp; 破解quartus13.0 记录

    安装文件:Quartus-13.0.0.156-linux.iso             Quartus-13.0.0.156-devices-1.iso 1.挂载:sudo mount -o lo ...

随机推荐

  1. H3CNE学习1 课程简介

    一.认证对比 二.企业网架构

  2. ELK实践

    一.ElasticSearch+FileBeat+Kibana搭建平台 在C# 里面运行程序,输出日志(xxx.log 文本文件)到FileBeat配置的路径下面. 平台搭建,参考之前的随笔. Fil ...

  3. docker使(二)—发布node应用镜像和容器

    应用在本地是已经ok的了,现在将node应用放进docker容器里面 获取node镜像 docker pull node 编写Dokerfile # 根据node镜像开始创建新的镜像(可以加上:tag ...

  4. [golang][vue] 前后端分离、微服务架构等等---通用后台权限管理系统001

    emmm暂未开源,先上图.其实有很多东东都未完成,一步一步来吧 这里是大图 这里会有二维码的,暂未写完哈 注册界面 后台 测试地址 测试地址al.landv.pw:88 测试账号:admin 测试密码 ...

  5. MAC OS 10.15 挂载ntfs文件系统并设置自动挂载RW模式.

    解决方案 花钱的,省心的 https://www.paragon-software.com/home/ntfs-mac/ 免费的 开源的 https://github.com/osxfuse/osxf ...

  6. Java枚举类接口实战

    枚举类可以实现一个或多个接口.与普通类实现接口完全一样,枚举类实现接口时,需要实现该接口所包含的方法. 如果需要每个枚举值在调用同一个方法时呈现不同的行为,则可以让每个枚举值在{...}匿名块中实现自 ...

  7. Linux文件与文件夹的权限问题

    0x01 修改文件可读写属性的方法 例如:把index.htm 文件修改为可写可读可执行: chmod 777 index.htm 要修改目录下所有文件属性可写可读可执行: chmod 777 *.* ...

  8. 在mybtis的映射文件中判断集合大小

    <if test="groupIds != null and groupIds.size>0"> and (group_id in<foreach coll ...

  9. 机器不学习:CNN入门讲解-为什么要有最后一层全连接

    哈哈哈,又到了讲段子的时间 准备好了吗? 今天要说的是CNN最后一层了,CNN入门就要讲完啦..... 先来一段官方的语言介绍全连接层(Fully Connected Layer) 全连接层常简称为 ...

  10. 巧用 CSS 实现酷炫的充电动画

    循序渐进,看看只使用 CSS ,可以鼓捣出什么样的充电动画效果. 画个电池 当然,电池充电,首先得用 CSS 画一个电池,这个不难,随便整一个: 欧了,勉强就是它了.有了电池,那接下来直接充电吧.最最 ...