IT人生

  • 首页
  • 归档
  • kafka
  • Java
  • Spring
  • Golang
  • SQL
  • Spark
  • ElasticSearch
  • 关于

  • 搜索
Phoenix HBase Kudu ElasticSearch Spring 数据结构 操作系统 Kettle Azkaban Sqoop Hive Yarn Redis Mybatis Impala Cloudera 大数据 HDFS mycat shell Linux 架构 并发 mysql sql golang java 工具 spark kafka 人生

Apache Kafka系列(一) 起步

发表于 2018-12-01 | 分类于 kafka | 0 | 阅读次数 2419

摘要:

  1.Apache Kafka基本概念

  2.Kafka的安装

  3.基本工具创建Topic

 本文基于centos7, Apache Kafka 0.11.0

一、基本概念

  Apache Kafka是一个发布/订阅的消息系统,于2009年源自Linkedin,并与2011年开源。在架构方面,Kafka类似于其他的消息系统(ActiveMQ,RabbitMQ)。但是Kafka有诸多的特性使得越来越流行: 1. Kafka本身支持分布式,很容易横向扩展 2. 高吞吐量,高性能 3. 高容错性,即使宕机 Kafka在实时数据处理方面的应用场景越来越多

二、安装

1.安装jdk

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

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

[root@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目录下

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

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

[root@eb2c2d938924 kafka_2.12-0.11.0.0]# pwd
/opt/kafka_2.12-0.11.0.0
[root@eb2c2d938924 kafka_2.12-0.11.0.0]# ls
LICENSE  NOTICE  bin  config  libs  site-docs
[root@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需要两步:

1. 启动ZooKeeper

Kafka使用ZooKeeper来存储集群元数据和Consumer信息。因此,有两种选项:

  •     第一,独立部署ZooKeeper应用并配置Kafka集群到该ZooKeeper;
  •     第二,使用Kafka自带的ZooKeeper
  •     本文选择使用Kafka自带的ZooKeeper
[root@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)

2. 启动Kafka服务

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

[root@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

创建一个Topic 名称为HelloWorld

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

校验Topic是否创建成功

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

启动一个Producer并发送消息

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

[root@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

启动一个Consumer并接受消息

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

[root@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服务器的消息

  • 本文作者: Randy
  • 本文链接: http://www.itrensheng.com/archives/kafka1
  • 版权声明: 本博客所有文章除特别声明外,均采用CC BY-NC-SA 3.0 许可协议。转载请注明出处!
# Phoenix # HBase # Kudu # ElasticSearch # Spring # 数据结构 # 操作系统 # Kettle # Azkaban # Sqoop # Hive # Yarn # Redis # Mybatis # Impala # Cloudera # 大数据 # HDFS # mycat # shell # Linux # 架构 # 并发 # mysql # sql # golang # java # 工具 # spark # kafka # 人生
基于canal+kafka+spark streaming+kudu的实时数仓搭建
Apache Kafka系列(二) 命令行工具(CLI)
  • 文章目录
  • 站点概览
Randy

Randy

技术可以暂时落后,但任何时候都要有上进的信念

80 日志
27 分类
31 标签
RSS
Github E-mail
Creative Commons
© 2021 备案号:沪ICP备19020689号-1
Randy的个人网站