python连接kafka集群_如何利用pykafka远程消费 zookeeper+kafka集群

首先,申明下版本

zookeeper-3.4.7.tar.gz

kafka_2.10-0.8.2.2.tgz 这个一定要用0.8.2X的版本 经过多次实验验证 切记切记

http://pykafka.readthedocs.org/en/latest/roadmap.html 说的很清楚

Kafka

version pykafka? rdkafka?

0.8.1 No No

0.8.2 Yes Yes

0.9.0 Planned Planned

zookeeper的配置就不多说了 建议大家安装一个ZKUI 包名zkui-2.0-SNAPSHOT-jar-with-dependencies.jar 配置文件可以找我要啊 网上应该也有

kafka的配置我这里就提及下重点 关于host.name这个参数

如果我们想远程消费这个KAFKA 一定要把这个定义成能访问的IP 比如我想在内网消费这个KAFKA 就要用内网IP绑定

host.name=192.168.0.10

启动zookeeper 和 kafka

flume沿用这个配置

#定义agent的名字为statge_nginx

stage_nginx.sources = S1

stage_nginx.channels = M1

stage_nginx.sinks = sink

#定义source的一些设置

stage_nginx.sources.S1.type = exec

stage_nginx.sources.S1.channels = M1

stage_nginx.sources.S1.command = tail -F /logs/nginx/log/www/info.access.log

#定义sink

stage_nginx.sinks.sink.type = org.apache.flume.sink.kafka.KafkaSink

stage_nginx.sinks.sink.topic = t_nginx

stage_nginx.sinks.sink.brokerList = 172.31.9.125:9091

stage_nginx.sinks.sink.requiredAcks = 0

stage_nginx.sinks.sink.batchSize = 20

stage_nginx.sinks.sink.channel = M1

#定义channel

stage_nginx.channels.M1.type = memory

stage_nginx.channels.M1.capacity = 100

我们消费下nginx的日志

下面是在内网远程消费

直接消费KAKFA

#!/usr/bin/python

# -*- coding:utf-8 -*-

from pykafka import KafkaClient

import logging

client = KafkaClient(hosts="192.168.1.10:9092")

topic = client.topics['t_nginx']

consumer = topic.get_simple_consumer(

consumer_group="simplegroup",

# auto_offset_reset=OffsetType.EARLIEST,

reset_offset_on_start=True

)

for message in consumer:

if message is not None:

print message.offset, message.value

从ZOOKEEPER消费

#!/usr/bin/python

# -*- coding:utf-8 -*-

from pykafka import KafkaClient

import logging

client = KafkaClient(hosts="192.168.1.10:2181,192.168.1.10:2182,192.168.1.10:2183")

topic = client.topics['t_nginx']

balanced_consumer= topic.get_balanced_consumer(

consumer_group='group1',

auto_commit_enable=True,

# reset_offset_on_start=True,

zookeeper_connect='192.168.1.10:2181,192.168.1.10:2182,192.168.1.10:2183'

)

for message in balanced_consumer:

if message is not None:

print message.offset, message.value

其他的操作大家自己改啊 比如分析啊 入库啊 什么的

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值