Kafka集群安装

本文详细介绍了如何构建LinkedIn使用的Kafka分布式消息队列环境,包括环境准备、下载安装、配置、启动和检查步骤。重点在于通过具体实例指导用户搭建Kafka集群,以支持大规模日志数据处理。

Kafka是linkedin用于日志处理的分布式消息队列,linkedin的日志数据容量大,但对可靠性要求不高,其日志数据主要包括用户行为(登录、浏览、点击、分享、喜欢)以及系统运行日志(CPU、内存、磁盘、网络、系统及进程状态)。参考:http://blog.chinaunix.net/uid-20196318-id-2420884.html

一、环境准备

1. 2台zookeeper集群  192.168.36.127:2181,192.168.36.91:2181 参考:http://blog.youkuaiyun.com/zhu_tianwei/article/details/40685251

2.3台kafka集群机器:192.168.36.91   192.168.36.127  192.168.36.136   创建用户kafka,并安装java

如下安装一台机器为例

二、下载安装

1. 下载 wget http://mirrors.cnnic.cn/apache/kafka/0.8.1.1/kafka_2.10-0.8.1.1.tgz

2.解压 tar -zxvf  kafka_2.10-0.8.1.1.tgz

三、配置

1.在/home/kafka/kafka_2.10-0.8.1.1目录下创建kafka存放消息文件的路径

mkdir data

2.修改配置文件config/server.properties

broker.id=91
port=9092
host.name=192.168.36.91
advertised.host.name=192.168.36.91
advertised.port=9092
num.network.threads=3
num.io.threads=8
socket.send.buffer.bytes=1048576
socket.receive.buffer.bytes=1048576
socket.request.max.bytes=104857600
log.dirs=/home/kafka/kafka_2.10-0.8.1.1/data
num.partitions=6
log.retention.hours=168
log.segment.bytes=536870912
log.retention.check.interval.ms=60000
log.cleaner.enable=false
zookeeper.connect=192.168.36.127:2181,192.168.36.91:2181
zookeeper.connection.timeout.ms=10000

broker.id节点的唯一标识

配置说明:

broker.id 整数,建议根据ip区分 ,必须项
log.dirs  kafka存放消息文件的路径,默认/tmp/kafka-logs,必须项
port  broker用于接收producer消息的端口

advertised.host.name 暴露在zk中的服务地址

advertised.port 暴露在zk中的服务端口
zookeeper.connnect  zookeeper连接格式为  ip1:port,ip2:port,ip3:port ,必须项
message.max.bytes 单条消息的最大长度
num.network.threadsbroker 用于处理网络请求的线程数,如不配置默认为3,server.properties默认是2
num.io.threadsbroker 用于执行网络请求的IO线程数,如不配置默认为8,server.properties默认是2可适当增大,
queued.max.requests 排队等候IO线程执行的requests,默认为500
host.name broker的hostname 默认null,建议写主机的ip,不然消费端不配置hosts会有麻烦
num.partitions topic的默认分区数,默认1
log.retention.hours 消息被删除前保存多少小时,默认1周168小时
auto.create.topics.enable 是否可以程序自动创建Topic,默认true,建议false
default.replication.factor 消息备份数目,默认1不做复制,建议修改
num.replica.fetchers 用于复制leader消息到follower的IO线程数.默认1

四、启动

JMX_PORT=9999  nohup  bin/kafka-server-start.sh config/server.properties >/dev/null 2>&1 &

JMX_PORT=9999  做监控使用

五、检查

1、创建topic并查看

./bin/kafka-topics.sh --create --zookeeper 192.168.36.127:2181,192.168.36.91:2181 --replication-factor 3 --partitions 1 --topic demo_test

Created topic "demo_test".


./bin/kafka-topics.sh --list --zookeeper 192.168.36.127:2181,192.168.36.91:2181

demo_test


./bin/kafka-topics.sh  --describe --zookeeper  192.168.36.127:2181,192.168.36.91:2181

Topic:3test     PartitionCount:1        ReplicationFactor:3     Configs:
        Topic: 3test    Partition: 0    Leader: 127     Replicas: 136,91,127    Isr: 127,91,136
Topic:demo_test PartitionCount:1        ReplicationFactor:3     Configs:
        Topic: demo_test        Partition: 0    Leader: 127     Replicas: 127,91,136    Isr: 127,91,136


2.启动consumer & producer,并在producer启动后的console输入一些信息

在一台机子上启动生产者:

./bin/kafka-console-producer.sh --broker-list 192.168.36.91:9092,192.168.36.127:9092,192.168.36.136:9092 --topic demo_test

在另一台机子上启动消费者:

./bin/kafka-console-consumer.sh --zookeeper 192.168.36.127:2181,192.168.36.91:2181 --from-beginning --topic demo_test

在生产者输入字符串,回车,消费者立即收到消息。


注意事项:

1.kafka会用到hostname,所以 需要修改操作系统的hostname,否者后面执行kafka的shell命令时会报 unknownhostname的异常 
centos的hostname修改方式:

root权限修改

修改/etc/hosts,增加:192.168.36.91  zhutianwei

修改/etc/sysconfig/network,HOSTNAME=zhutianwei

2.jvm参数中-XX标识的是实验性参数,kafka用了很多用来优化运行的jvm参数,而你安装的 jdk所带的jvm不一定支持这些参数,比如: -XX:+UseCompressedOops 
如果你遇到Unrecognized VM option '+UseCompressedOops'的错误,请在bin/kafka-run-class.sh中移除相关参数


其他参考官方文档:http://kafka.apache.org/documentation.html


java实例代码参考:http://download.youkuaiyun.com/detail/tianwei7518/8112121


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值