1. 配置zookeeper单机模式

选择的是zookeeper-3.4.10版本,官网下载链接:http://mirrors.hust.edu.cn/apache/zookeeper/stable/。下载之后将zookeeper-3.4.10.tar.gz解压到指定文件夹。

tar xvzf dl/zookeeper-3.4..tar.gz -C app/

解压之后,将conf/zoo_sample.cfg复制为conf/zoo.cfg。

cp $ZOOKEEPER_HOME/conf/zoo_sample.cfg $ZOOKEEPER_HOME/conf/zoo.cfg

然后编辑zoo.cfg,修改内容如下:

# /home/jason是我的用户主目录
dataDir=/home/jason/app/zookeeper/data

其他参数保持默认,若有特殊需求,也可进行修改。配置好后,手动创建dataDir目录。

mkdir /home/jason/app/zookeeper/data

若系统没有配置java环境变量,则需要在$ZOOKEEPER/bin/zkEnv.sh脚本中配置JAVA_HOME。在zkEnv.sh脚本的JAVA_HOME变量前面加上:

JAVA_HOME="/home/jason/app/jdk"

配置好后就可以启动zookeeper了:

./bin/zkServer.sh start

启动成功的日志如下:

ZooKeeper JMX enabled by default
Using config: /home/jason/app/zookeeper/bin/../conf/zoo.cfg
Starting zookeeper ... STARTED

需要结束服务时,仍在本目录下,执行如下命令即可:

./bin/zkServer.sh stop

如果需要自定义zookeeper的JVM配置,可以修改zkServer.sh脚本的JVMFLAGS参数,例如:

JVMFLAGS="-Xms128m -Xmx256m -Xmn64m -XX:PermSize=65m $JVMFLAGS"

修改后重启zookeeper,使用jmap -heap <pid>查看配置是否生效。

2.配置kafka单机模式

选择的是kafka_2.12-0.10.2.0版本,官网下载链接:http://mirrors.hust.edu.cn/apache/kafka/0.10.2.1/kafka_2.12-0.10.2.1.tgz 。下载之后将kafka_2.12-0.10.2.0.tgz解压到指定文件夹。

tar xvzf dl/kafka_2.12-0.10.2.0.tgz -C app/

配置kafka时需要修改2个配置文件:server.properties、zookeeper.properties,其他配置文件保持默认选项。

2.1. 配置server.properties

需要配置4项,其余保持默认值,如果kafka是部署在IAAS平台的话,后三个参数一定要配置,否则kafka客户端无法通过IAAS公网地址找到broker:

log.dirs=/home/jason/app/kafka/kafka-logs
port=9092
host.name=阿里云或腾讯云内网地址
advertised.host.name=阿里云或腾讯云外网映射地址

然后手动创建log.dirs目录:

mkdir /home/jason/app/kafka/kafka-logs

2.2. 配置zookeeper.properties

只需要配置一项,其余保持默认值:

dataDir=/home/jason/app/kafka/zookeeper/data

然后手动创建dataDir目录:

mkdir /home/jason/app/kafka/zookeeper/data

至此环境配置已经完成,然后可以开始使用kafka了。

3. 使用kafka

若系统没有配置java环境变量,则需要在$KAFKA/bin/kafka-run-class.sh脚本中配置JAVA_HOME。在kafka-run-class.sh脚本的JAVA_HOME变量前面加上:

JAVA_HOME="/home/jason/app/jdk"

3.1. 启动kafka服务(前提是要先启动zookeeper)

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

对于这种启动之后就可以忽略的服务,可以在最前面加上nohup,让其在后台自己运行,或者:

/bin/kafka-server-start.sh -daemon config/server.properties

需要结束服务时,仍在本目录下,执行如下命令即可:

./bin/kafka-server-stop.sh

3.2. 创建话题topic

新开一个命令行窗口,创建一个叫做test的topic:

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

然后可以根据地址和端口号将话题topic展示出来:

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

如果topic分区数需要扩展,可以通过下面命令:

./bin/kafka-topics.sh --zookeeper localhost:  --alter --topic test --partitions 

查看kafka特定topic的详情,使用--topic与--describe参数:

./bin/kafka-topics.sh --zookeeper localhost: --topic test --describe

删除指定Topic:

./bin/kafka-topics.sh --delete --zookeeper localhost: --topic test
Topic test is marked for deletion.
Note: This will have no impact if delete.topic.enable is not set to true.

Note中指出该Topic并没有真正的删除,如果真删除,需要把server.properties中的delete.topic.enable置为true

3.3. 启动生产者producer

新开一个命令行窗口,执行以下命令:

./bin/kafka-console-producer.sh --broker-list localhost: --topic test

然后可以之间在本窗口输入消息,每遇到换行符就认为是一条消息输入完成。

3.4. 启动消费者consumer

./bin/kafka-console-consumer.sh --bootstrap-server localhost: --topic test --from-beginning

然后,每在producer那里输入一条,consumer这里就会显示一条,然后kafka服务那里也会产生日志记录。

在以后启动时,只需要依次启动kafka server,producer和consumer就可以了。

查看consumer group列表,使用--list参数

查看consumer group列表有新、旧两种命令,分别查看新版(信息保存在broker中)consumer列表和老版(信息保存在zookeeper中)consumer列表,因而需要区分指定bootstrap--server和zookeeper参数:

./bin/kafka-consumer-groups.sh --new-consumer --bootstrap-server localhost: --list
test
./bin/kafka-consumer-groups.sh --zookeeper localhost: --list
console-consumer-
console-consumer-

查看特定consumer group 详情,使用--group与--describe参数

同样根据新/旧版本的consumer,分别指定bootstrap-server与zookeeper参数:

./bin/kafka-consumer-groups.sh --new-consumer --bootstrap-server localhost: --group test --describe
GROUP TOPIC PARTITION CURRENT-OFFSET LOG-END-OFFSET LAG OWNER
lx_test test kafka-python-1.3.1_/127.0.0.1
./bin/kafka-consumer-groups.sh --zookeeper localhost: --group console-consumer- --describe
GROUP TOPIC PARTITION CURRENT-OFFSET LOG-END-OFFSET LAG OWNER
Could not fetch offset from zookeeper for group console-consumer- partition [lx_test_topic,] due to missing offset data in zookeeper.
console-consumer- test unknown unknown console-consumer-11967_aws-lx--d3a91f05-

其中依次展示group名称、消费的topic名称、partition id、consumer group最后一次提交的offset、最后提交的生产消息offset、消费offset与生产offset之间的差值、当前消费topic-partition的group成员id(不一定包含hostname)

上面示例中console-consumer-11967是为了测试临时起的一个console consumer,缺少在zookeeper中保存的current_offset信息。

Ubuntu16.04配置单机版Zookeeper和Kafka的更多相关文章

  1. Ubuntu16.04配置TOMCAT8

    基于虚拟机Ubuntu16.04配置Tomcat过程 一.安装JDK 首先要确定好要安装的jdk和tomcat版本能对的上,具体如图所示: 版本选择是Jdk1.8,首先上官网http://www.or ...

  2. ubuntu16.04配置java环境(重启后不会失效)

    ubuntu16.04配置java环境(重启后不会失效) 1.jdk的安装包(.tar.gz)拷贝到/opt目录下 mv jdk-8u144-linux-x64.tar.gz /opt 2.解压文件 ...

  3. Ubuntu16.04配置apache+php+mysql

    命令行配置apache input sudo apt-get install apache2 done! 命令行配置mysql 参见: MySQL install and setting 命令行配置p ...

  4. ubuntu16.04配置记录

    新开一篇随笔记录ubuntu16.04配置中遇到的坑 1.安装Bumblebee(大黄蜂) Bumblebee是一款双显卡驱动,可以关闭独显,有效控制笔记本发热 第一步:安装我们的主角Bumblebe ...

  5. ubuntu16.04配置py-faster-rcnn

    在ubuntu16.04下编译安装了py-faster-rcnn. 主要步骤包括:安装cuda/cudnn,换apt源,装开源显卡驱动,装caffe依赖的apt包和python包,下载py-faste ...

  6. 【.net core 跨平台】第一步 在Ubuntu16.04 配置.net core环境

    本次使用VMware10.0.4工具安装Ubuntu16.04系统并配置.net core环境   Ubuntu 16.04 desktop下载地址:http://releases.ubuntu.co ...

  7. Ubuntu16.04配置静态IP地址

    ubuntu如何设置静态IP? 设置静态IP 1.编辑/etc/network/interfaces文件: # This file describes the network interfaces a ...

  8. Ubuntu16.04配置Tomcat的80端口访问

    [问题描述] 在阿里云 ECS 服务器 Ubuntu16.04 下部署 Java Web 应用时,发现配置的 Tomcat 服务启动后 80 端口无法被监听. [问题原因] 出现该问题的主要原因是:非 ...

  9. ubuntu16.04 配置双网卡机器

    本文介绍一台具有双有线网卡的机器在Linux下如何配置双网卡 系统平台:Ubuntu16.04 1:查看机器网卡信息,是否双网卡都能正确被机器pci识别 可以通过以下命令查看设备网卡,若果看到两条网卡 ...

随机推荐

  1. hdu 1251 统计难题 字典树第一题。

    统计难题 Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 131070/65535 K (Java/Others)Total Submi ...

  2. 洛谷P2792 [JSOI2008]小店购物(最小树形图)

    题意 题目链接 Sol 一开始的思路:新建一个虚点向每个点连边,再加上题面中给出的边,边权均为大小*需要购买的数量 然后发现死活都过不去 看了题解才发现题目中有个细节--买了\(A\)就可以买\(B\ ...

  3. parseInt()详解

    主要解释下面的计算方法: parseInt("10"); //返回 10 parseInt("19",10); //返回 19 (10+9) parseInt( ...

  4. Laravel之Ueditor

    1.访问网址http://ueditor.baidu.com/website/download.html下载合适的编辑器版本 2.按照插件包中的index.html样式,布局页面 3.如果需要使用表单 ...

  5. 手动替换WORDPRESS的GOOGLE字体等加速【非插件】

    手动替换WORDPRESS的GOOGLE字体等加速[非插件] 179 看过 | 2015年3月4日 | Linux, 随意Coding | 暂无评论 查找需要替换的地方 Linux下,在网站文件夹中, ...

  6. Manachar算法详解

    求解最长回文串之Manachar算法 问题类型: 输入一个字符串,求出其中最大的回文子串.子串的含义是:在原串中连续出现的字符串片段. 回文的含义是:正着看和倒着看相同,如abba和yyxyy. 这类 ...

  7. c++开源日志log4cplus使用开发文档

    下载地址:http://files.cnblogs.com/files/lizhigang/LOG4CPLUS%E5%BC%80%E5%8F%91%E4%B8%8E%E4%BD%BF%E7%94%A8 ...

  8. Spring3实战第一章 Aop 切面 XML配置

    刚看spring3实战书籍第一章  切面以前没有关注过 现在看到了  随手试验一下 AOP AOP(Aspect Oriented Programming),即面向切面编程,可以说是OOP(Objec ...

  9. 古老的CSS同高列问题

    今日在网页设计时,遇到了希望页面的几列同高需求的实现问题,搜罗了一下google,找到以下文章,感觉不错,翻译过来,同时作为学习加深印象. https://css-tricks.com/fluid-w ...

  10. C# 按位或,按位与, 按位异或

    a != b  ----->  a = a | b  , a 或者 b 只要有一个为 1, 那么,a 的最终结果就为 1 a &= b  ----->  a = a & b ...