设为首页 收藏本站
查看: 1413|回复: 0

[经验分享] Apache Kafka系列(一) 起步

[复制链接]

尚未签到

发表于 2017-12-24 09:42:41 | 显示全部楼层 |阅读模式

  • Apache Kafka系列(一) 起步
  • Apache Kafka系列(二) 命令行工具(CLI)
  • Apache Kafka系列(三) Java API使用
  • Apache Kafka系列(四) 多线程Consumer方案
  • Apache Kafka系列(五) Kafka Connect及FileConnector示例
摘要:
  1.Apache Kafka基本概念
  2.Kafka的安装
  3.基本工具创建Topic
  本文基于centos7, Apache Kafka 0.11.0

一、基本概念
  Apache Kafka是一个发布/订阅的消息系统,于2009年源自Linkedin,并与2011年开源。在架构方面,Kafka类似于其他的消息系统(ActiveMQ,RabbitMQ)。但是Kafka有诸多的特性使得越来越流行:


  • Kafka本身支持分布式,很容易横向扩展
  • 高吞吐量,高性能
  • 高容错性,即使宕机
  Kafka在实时数据处理方面的应用场景越来越多

二、安装
  1.安装jdk
  

[iyunv@eb2c2d938924 /]# yum install java-1.8.0-openjdk.x86_64  

  2.下载kafka_2.12-0.11.0.0.tgz到/tmp下
  

[iyunv@eb2c2d938924 /]# wget http://mirrors.tuna.tsinghua.edu.cn/apache/kafka/0.11.0.0/kafka_2.12-0.11.0.0.tgz  -P /tmp  

  3.解压压缩文件到/opt目录下
  

[iyunv@eb2c2d938924 /]# tar -xvzf /tmp/kafka_2.12-0.11.0.0.tgz -C /opt/  

  4.解压后的目录结构如下
  

[iyunv@eb2c2d938924 kafka_2.12-0.11.0.0]# pwd  
/opt/kafka_2.12-0.11.0.0
  
[iyunv@eb2c2d938924 kafka_2.12-0.11.0.0]# ls
  
LICENSE  NOTICE  bin  config  libs  site-docs
  
[iyunv@eb2c2d938924 kafka_2.12-0.11.0.0]#
  



  • bin:包含Kafka运行的所有脚本,如:start/stop Zookeeper,start/stop Kafka
  • libs:Kafka运行的依赖库
  • config:zookeeper,Logger,Kafka等相关配置文件
  • sit-docs:Kafka相关文档
三、启动Kafka服务器
  Kafka能够以3种方式部署集群


  • 单节点-单Broker集群:只在一个节点上部署一个Broker
  • 单节点-多Broker集群:在一个节点上部署多个Broker,只不过各个Broker以不同的端口启动
  • 多节点-多Broker集群:以上两种的组合,每个节点上部署一到多个Broker,且各个节点连接起来
  本次仅以第一种方式部署。启动Kafka需要两步:


  • 启动ZooKeeper
  Kafka使用ZooKeeper来存储集群元数据和Consumer信息。因此,有两种选项:
  第一,独立部署ZooKeeper应用并配置Kafka集群到该ZooKeeper;
  第二,使用Kafka自带的ZooKeeper
  本文选择使用Kafka自带的ZooKeeper


  • 启动Kafka服务
  3.1 启动ZooKeeper
  

[iyunv@eb2c2d938924 kafka_2.12-0.11.0.0]# bin/zookeeper-server-start.sh config/zookeeper.properties  
OpenJDK
64-Bit Server VM warning: If the number of processors is expected to increase from one, then you should configure the number of parallel GC threads appropriately using -XX:ParallelGCThreads=N  
[
2017-08-10 14:02:29,426] INFO Reading configuration from: config/zookeeper.properties (org.apache.zookeeper.server.quorum.QuorumPeerConfig)  
...
[2017-08-10 14:02:29,491] INFO minSessionTimeout set to -1 (org.apache.zookeeper.server.ZooKeeperServer)  
[
2017-08-10 14:02:29,491] INFO maxSessionTimeout set to -1 (org.apache.zookeeper.server.ZooKeeperServer)  
[
2017-08-10 14:02:29,501] INFO binding to port 0.0.0.0/0.0.0.0:2181 (org.apache.zookeeper.server.NIOServerCnxnFactory)  

  ZooKeeper成功启动,并绑定到端口2181。该端口是ZooKeeper的默认端口,可以通过编辑文件config/zookeeper.properties 中的clientPort来修改监听端口。
  3.2 启动Kafka Broker
  

[iyunv@eb2c2d938924 kafka_2.12-0.11.0.0]# bin/kafka-server-start.sh config/server.properties  
OpenJDK
64-Bit Server VM warning: If the number of processors is expected to increase from one, then you should configure the number of parallel GC threads appropriately using -XX:ParallelGCThreads=N  
[
2017-08-10 14:11:58,741] INFO KafkaConfig values:  .....
  
[
2017-08-10 14:12:00,385] INFO Kafka version : 0.11.0.0 (org.apache.kafka.common.utils.AppInfoParser)  
[
2017-08-10 14:12:00,385] INFO Kafka commitId : cb8625948210849f (org.apache.kafka.common.utils.AppInfoParser)  
[
2017-08-10 14:12:00,386] INFO [Kafka Server 0], started (kafka.server.KafkaServer)  


四、使用Kafka
  4.1 创建一个Topic 名称为HelloWorld
  

[iyunv@eb2c2d938924 kafka_2.12-0.11.0.0]# bin/kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 1 \  

> --partitions 1 --topic HelloWorld  

  校验Topic是否创建成功
  

[iyunv@Server1 kafka_2.12-0.11.0.0]# bin/kafka-topics.sh --list --zookeeper localhost:2181  
HelloWorld
  

  4.2 启动一个Producer并发送消息
  可以使用Kafka命令行客户端(获取标准命令行输入并一Message形式发出)发送消息到Kafka集群。默认情况下,每行会单独算作一次消息发出。下例通过该命令行终端发送消息到HelloWorld这个Topic,命令如下:
  

[iyunv@Server1 kafka_2.12-0.11.0.0]# bin/kafka-console-producer.sh --broker-list localhost:9092 --topic HelloWorld  

>hello world!  
>this is the first greating
  
>
  

  4.3 启动一个Consumer并接受消息
  跟4.2中类似,同样可以使用Kafka命令行终端来启动一个Consumer(格式化消息到标准输出),命令如下
  

[iyunv@Server1 kafka_2.12-0.11.0.0]# bin/kafka-console-consumer.sh --bootstrap-server localhost:9092 --topicelloWorld --from-beginning  
hello world
!  
this is the first greating
  


五、结论
  本文展示了如何一步一步安装Kafka到Linux,涵盖如何下载,启动ZooKeeper/Kafka,发送和接受来自Kafka服务器的消息

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-427459-1-1.html 上篇帖子: Apache Kafka系列(五) Kafka Connect及FileConnector示例 下篇帖子: Apache Kafka 0.11版本新功能简介
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表