kafka分布式消息队列----安装篇

本文主要翻译自官网安装部分,并配上自己运行是截图~~~图文结合,看起来方便些!


kafka是由LinkedIn开发,主要是用来处理Linkedin的大面积活跃数据流处理(activity stream). 


        此类的数据经常用来反映网站的一些有用的信息,比如PV,页面展示给哪些用户访问,用户搜索什么关键字最多,这类信息经常被log到文件里,然后线下且周期性的去分析这些数据。现在这种用户活跃数据已经成为互联网公司重要的一部分,所以必须构建一个更轻量且更精炼的基础架构



好的,下面进入正题~~~


第一步:下载

去管网下载最新版的kafka包~~

在这里我们下载 最新版

kafka_2.10-0.8.1.1.tgz

之后运行命令,解压:

> tar -xzf kafka_2.10-0.8.1.1.tgz
> cd kafka_2.10-0.8.1.1


第二步:启动服务

        这里需要说一下,因为kafka是运行在zookeeper之上的,所以需要提前安装zookeeper,如果你没有安装呢,也无所谓,在单机环境下,可以用kafka自带的zookeeper脚本运行~~~

> bin/zookeeper-server-start.sh config/zookeeper.properties
[2013-04-22 15:01:37,495] INFO Reading configuration from: config/zookeeper.properties (org.apache.zookeeper.server.quorum.QuorumPeerConfig)
...
     注意:这里需要说一下,这里可能出现一个错误 Unrecognized VM option '+UseCompressedOops'   ,  可以去 bin/kafka-run-class.sh中移除相关参数

这是因为 jvm参数中-XX标识的是实验性参数,kafka用了很多用来优化运行的jvm参数,而你安装的 jdk所带的jvm不一定支持这些参数,比如:-XX:+UseCompressedOops

所以,下图中的参数删掉~~~



OK~~~之后就可以了!!

现在启动kafka服务:


 bin/kafka-server-start.sh config/server.properties
[2013-04-22 15:01:47,028] INFO Verifying properties (kafka.utils.VerifiableProperties)
[2013-04-22 15:01:47,051] INFO Property socket.send.buffer.bytes is overridden to 1048576 (kafka.utils.VerifiableProperties)
...


不出错的话,说明启动成功!


第三步:创建一个topic


让我们创建一个topic,名字为test,1个partition,1个replica

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

我们运行以下命令查看是否创建成功:

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

好的,创建成功!

我们在这里是手动创建的topic,我们也可以通过配置brokers去发布消息时,不存在topic时,自动创建tiopic!!


第四步:发布消息

现在我们可以向kafka集群发送消息了,kafka自带有客户端命令,可以将文件或者标准输入流作为消息输入。默认一行作为一条单独的消息发送!

我们通过运行producter来通过控制台向服务器发送消息:

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

好的,我们已经成功向kafka服务器发送了两条消息

第五步:启动消费者consumer


> bin/kafka-console-consumer.sh --zookeeper localhost:2181 --topic test --from-beginning
This is a message
This is another message

看到了吧,命令成功运行后,马上就接到了来自kafka服务器的消息。

如下图:




第六步:建立多个broker集群

        到第五步,我们只是建立了单个节点,但是这并不能满足我们!!我们接下来再建立另外两个节点,当然,这些节点目前都是在一台电脑上完成的!!


> cp config/server.properties config/server-1.properties 
> cp config/server.properties config/server-2.properties

编辑配置文件如下:


config/server-1.properties:
    broker.id=1
    port=9093
    log.dir=/tmp/kafka-logs-1
 
config/server-2.properties:
    broker.id=2
    port=9094
    log.dir=/tmp/kafka-logs-2

其中,broker-id是每个节点的惟一的标示~~~


前面,我们已经启动了,zookeeper服务和server-0节点

接下来,我们就启动刚刚配置好的两个节点就好!!


> bin/kafka-server-start.sh config/server-1.properties &
...
> bin/kafka-server-start.sh config/server-2.properties &
...


& 符号的意思是让服务在后台运行,但是我们在这里不用 &  为了方便调试!!


我运行的截图如下:




好的,我们接下来开始,创建topic

> bin/kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 3 --partitions 1 --topic my-replicated-topic

接下来,查看以下:

> bin/kafka-topics.sh --describe --zookeeper localhost:2181 --topic my-replicated-topic
Topic:my-replicated-topic	PartitionCount:1	ReplicationFactor:3	Configs:
	Topic: my-replicated-topic	Partition: 0	Leader: 1	Replicas: 1,2,0	Isr: 1,2,0
可以看到,节点1是leader , 总共启动了1,2,0这三个节点~~~


接下来,我们来发送消息:

> bin/kafka-console-producer.sh --broker-list localhost:9092 --topic my-replicated-topic











ok~~~~~

kafka分布式消息队列,安装篇就到此为止拉~~~以后,我们会讲解相关的API,利用java进行相关的开发!!!


大家,慢慢体会吧~~










  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Kafka是一个分布式消息队列系统,最初由LinkedIn开发,现在由Apache维护。它支持高可用性、高吞吐量、分布式存储和分布式消费等特性。Kafka的设计目标是能够处理大规模的实时数据流,例如日志处理、用户活动跟踪、流式ETL等场景。 Kafka的架构包括生产者、主题、分区、消费者和ZooKeeper等组件。生产者将消息发布到主题,主题被分为多个分区,每个分区可以在多个服务器上进行复制。消费者可以订阅一个或多个主题,消费主题中的消息。ZooKeeper则用于协调Kafka集群中的各个组件,例如发现新的Broker、管理分区分配等。 Kafka的优点包括: - 高吞吐量:Kafka能够处理每秒数百万条消息,适用于高流量场景。 - 可扩展性:Kafka能够水平扩展,通过增加Broker来增加容量。 - 持久化存储:Kafka将消息存储在磁盘上,确保消息不会丢失。 - 多租户支持:Kafka支持多个生产者和消费者,每个生产者和消费者都可以独立地访问主题。 - 实时性:Kafka能够实时地处理消息,支持实时数据处理和流式计算。 Kafka的缺点包括: - 复杂性:Kafka的架构比较复杂,需要一定的学习成本。 - 配置:Kafka的配置比较复杂,需要针对具体的应用场景进行调整。 - 功能不完整:Kafka并不是一个完整的流处理框架,如果需要进行流处理,需要使用Kafka Streams或其他框架。 总之,Kafka是一个可靠、高性能的分布式消息队列系统,适用于处理大规模的实时数据流。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值