Kafka 安装和测试

  • 博客分类:
  • middleware
kafkazookeeperscalajvm 
1. 简介

kafka (官网地址:http://kafka.apache.org)是一款分布式消息发布和订阅的系统,具有高性能和高吞吐率。

i. 消息的发布(publish)称作producer,消息的订阅(subscribe)称作consumer,中间的存储阵列称作broker。

ii. 多个broker协同合作,producer、consumer和broker三者之间通过zookeeper来协调请求和转发。

iii. producer产生和推送(push)数据到broker,consumer从broker拉取(pull)数据并进行处理。

iv. broker端不维护数据的消费状态,提升了性能。

v. 直接使用磁盘进行存储,线性读写,速度快:避免了数据在JVM内存和系统内存之间的复制,减少耗性能的创建对象和垃圾回收。

vi. Kafka使用scala编写,可以运行在JVM上。

2. 安装:

a. 首先安装JRE/JDK

Linux安装JDK

b. 下载kafka

进入下载页面:http://kafka.apache.org/downloads.html

选择Binary downloads下载 (Source download需要编译才能使用)

也可以直接在linux终端下载:

Shell代码  
  1. wget -q http://apache.fayea.com/apache-mirror/kafka/0.8.1/kafka_2.8.0-0.8.1.tgz

c. 解压

Shell代码  
  1. tar -xzvf kafka_2.8.0-0.8.1.tgz
  2. rm kafka_2.8.0-0.8.1.tgz
  3. cd kafka_2.8.0-0.8.1

目录:


/bin 启动和停止命令等。 
/config 配置文件 
/libs 类库

d. 修改配置 
Kafka默认开启JVM压缩指针,但只是在64位的HotSpot VM受支持,如果安装了32位的HotSpot VM,需要修改/bin/kafka-run-class.sh文件

Shell代码  
  1. vi bin/kafka-run-class.sh

找到如下行:

Sh代码  
  1. KAFKA_JVM_PERFORMANCE_OPTS="-server -XX:+UseCompressedOops -XX:+UseParNewGC -XX:+UseConcMarkSweepGC -XX:+CMSClassUnloadingEnabled -XX:+CMSScavengeBeforeRemark -XX:+DisableExplicitGC -Djava.awt.headless=true"

去除-XX:+UseCompressedOops参数

3. 启动和停止

启动Zookeeper server:

Shell代码  
  1. bin/zookeeper-server-start.sh config/zookeeper.properties &

&是为了能退出命令行

启动Kafka server:

Shell代码  
  1. bin/kafka-server-start.sh config/server.properties &

停止Kafka server

Shell代码  
  1. bin/kafka-server-stop.sh

停止Zookeeper server:

Shell代码  
  1. bin/zookeeper-server-stop.sh

4. 单机连通性测试

运行producer:

Shell代码  
  1. bin/kafka-console-producer.sh --broker-list localhost:9092 --topic test

早版本的Kafka,--broker-list localhost:9092需改为--zookeeper localhost:2181

运行consumer:

Shell代码  
  1. bin/kafka-console-consumer.sh --zookeeper localhost:2181 --topic test --from-beginning

在producer端输入字符串并回车,查看consumer端是否显示。

5. 分布式连通性测试

Zookeeper Server, Kafka Server, Producer都放在服务器server1上,ip地址为192.168.1.10 
Consumer放在服务器server2上,ip地址为192.168.1.12。

分别运行server1的producer和server2的consumer,

Shell代码  
  1. bin/kafka-console-producer.sh --broker-list 192.168.1.10:9092 --topic test
Shell代码  
  1. bin/kafka-console-consumer.sh --zookeeper 192.168.1.10:2181 --topic test --from-beginning

在producer的console端输入字符串,consumer报Connection refused错误: 

broker, producer和consumer都注册到zookeeper上,producer和consumer的参数明确指定。问题出在broker的配置文件server.properties上:

Properties代码  
  1. # Hostname the broker will bind to. If not set, the server will bind to all interfaces
  2. #host.name=localhost

host名称没有指定,就是127.0.0.1,consumer去broker拿数据就有问题。设置为192.168.1.10,重启服务就好了。

====================================================================================================
注意:配置的时候一定要把host.name这项打开,写上真是IP,所有的配置项最好都写真是IP,不要写localhost或者127.0.0.1容易出幺蛾子.
还有一个值得注意的问题是,按照上面的说的做,实际操作中发现,consumer消费消息的时候总是出错,我弄了一边又一遍,把zookeeper和kafka的版本换了又换弄了两天才发现需要在系统下配置点东西才行,具体错误就是 
InetAddress.getLocalHost() java.net.UnknownHostException 异常 
java.net.InetAddress.getLocalHost会抛出java.net.UnknownHostException异常.
之类的,Java异常,
解决办法:
在/etc/hosts 文件中添加如下(znskftc是主机名)
127.0.0.1   znskftc
==================================================================
多个broker时,shell版的producer应该链接哪个broker呢(producer和broker没有负载均衡,consumer和broker的负载均衡有zookeeper来负责)?
链接哪个broker都可以的(实测),但是建立topic的时候replication-factor后面的数字要不能小于broker的数目 
bin/kafka-topics.sh --create --zookeeper 172.16.6.78:2181 --replication-factor 1 --partitions 1 --topic test
==================================================================
后记:
若果看了上面的博客搭建还是失败的话,建议看看下面这些视频
kafka 消息处理过程与集群维护:
http://www.jikexueyuan.com/course/2238.html

Kafka 核心源码剖析:
http://www.jikexueyuan.com/course/2362.html

Kafka 基础实战 :消费者和生产者实例:
http://www.jikexueyuan.com/course/2036.html

kafka的初认识
http://www.jikexueyuan.com/course/1716.html

kafka官方说明文档(英文版,网上大多博客都是翻译这篇文章的):
http://kafka.apache.org/documentation.html#quickstart

Kafka 安装和搭建 (一)相关推荐

  1. java kafka搭建,Apache Kafka 安装步骤

    概览 安装过程总共分为 3 大块,第一 Java 环境不必多说,第二 Zookeeper 安装,第三 Kafka 安装. 概念了解 Kafka 有几个重要的概念需要先了解一下 名词 解释 broker ...

  2. ELK+kafka日志系统搭建-实战

    日志主要包括系统日志.应用程序日志和安全日志.系统运维和开发人员可以通过日志了解服务器软硬件信息.检查配置过程中的错误及错误发生的原因.经常分析日志可以了解服务器的负荷,性能安全性,从而及时采取措施纠 ...

  3. 转-Kafka【第一篇】Kafka集群搭建

    转自: https://www.cnblogs.com/luotianshuai/p/5206662.html Kafka[第一篇]Kafka集群搭建 Kafka初识 1.Kafka使用背景 在我们大 ...

  4. kafka集群搭建(消息)

    1.Kafka使用背景 在我们大量使用分布式数据库.分布式计算集群的时候,是否会遇到这样的一些问题: 我们想分析下用户行为(pageviews),以便我们设计出更好的广告位 我想对用户的搜索关键词进行 ...

  5. zookeeper 和 kafka 集群搭建

    Kafka初识 1.Kafka使用背景 在我们大量使用分布式数据库.分布式计算集群的时候,是否会遇到这样的一些问题: 我们想分析下用户行为(pageviews),以便我们设计出更好的广告位 我想对用户 ...

  6. Kafka安装及部署

    阅读目录 一.环境配置 二.操作过程 Kafka介绍 安装及部署 回到顶部 一.环境配置 操作系统:Cent OS 7 Kafka版本:0.9.0.0 Kafka官网下载:请点击 JDK版本:1.7. ...

  7. Zookeeper+Kafka集群搭建

    Zookeeper集群搭建 Kafka集群是把状态保存在Zookeeper中的,首先要搭建Zookeeper集群. 1.软件环境 (3台服务器-我的测试) 192.168.30.204 server1 ...

  8. Kafka 安装、使用

    目录 Kafka安装 概念 简单使用 创建topic 发送消息 消费消息 消息的细节 单播消息 多播消息 查看消费组的详细信息 主题和分区的概念 1.主题topic 2.分区partition 创建多 ...

  9. 【kafka】二、kafka安装

    kafka安装 集群方式安装,非单机模式 下载kafka download kafka (apache.org) 本次使用版本是:kafka_2.11-0.11.0.0.tgz 准备工作 由于本次使用 ...

最新文章

  1. 记录由Equal基础知识引起的内存泄露
  2. php运算符的关键字,PHP 运算符
  3. [js] flash如何与js交互?
  4. 9203-1117-实现数据库的查询功能
  5. Linux内核网络参数的意义及应用
  6. 到底该如何理解 Unix/Linux 的文件系统?看这篇就知道了
  7. 前端开发_开发软件Hbuilder简介
  8. 《数值计算》学习笔记(上)
  9. 小米原装系统镜像列表
  10. 编译优化之 - 通用循环优化
  11. Xcode8使用出现bundleid: com.xxx.xxx, enable_level: 0, persist_level: 0, propagate_with_acti
  12. 云计算的认识和看法_我的关于云计算的看法和认识
  13. 大数据在医疗领域应用有哪些挑战?
  14. centos 7 安装极点五笔中文输入法
  15. 四川子苗电商:抖音直播安心购怎么解约?
  16. http协议详解及htt面试题目,常见的http状态码
  17. Shell 编程入门(一)
  18. 雕刻机简单加工G指令生成器
  19. PHP入党积极分子服务平台 计算机毕设源码12485
  20. lorenz系统simulink仿真_直驱永磁同步风机并网仿真(二)

热门文章

  1. 反射获取有参数的构造方法并运行
  2. SaaS权限控制:设计思路和表分析
  3. notepad++ 远程连接阿里云服务器
  4. 摩根斯坦利面试题库_经验 | 金融公司摩根士丹利从笔试到实习的全程经验
  5. 为什么用 php widget,ThinkPHP的Widget扩展实例
  6. 【报错笔记】项目中使用ArrayList<>报错:‘<>’operator is not allowed for source level below 1.7
  7. 【转】strcpy溢出的攻击示例
  8. 面试篇---1 如何区分深拷贝与浅拷贝
  9. 快递鸟电子面单打印功能基于java
  10. 剑指offer 回溯法 面试题12 矩阵中的路径 面试题13 机器人的运动范围