zookeeper+kafka分布式

来源:互联网 发布:淘宝网131458 编辑:程序博客网 时间:2024/05/22 19:28

版本:

CentOS-6.5-x86_64

zookeeper-3.4.6

kafka_2.10-0.10.1.0




一、zookeeper配置

1.下载     $wget http://mirrors.cnnic.cn/apache/zookeeper/zookeeper-3.4.6/zookeeper-3.4.6.tar.gz

2.解压     $tar zxvf  zookeeper-3.4.6.tar.gz

3.配置

$ cd  zookeeper-3.4.6
 $ cp -rf conf/zoo_sample.cfg    conf/zoo.cfg

$ vim   zoo.cfg

#Zookeeper 服务器之间或客户端与服务器之间维持心跳的时间间隔

tickTime=2000             

#Zookeeper接受Follower客户端初始化连接时最长能忍受多少个心跳时间间隔数,总的时间长度就是5*2000=10 秒

 initLimit=5                   

 #标识 LeaderFollower 之间发送消息,请求和应答时间长度,最长不能超过多少个 tickTime的时间长度,总的时间长度就是5*2000=10

syncLimit=5                

#快照日志的存储路径

dataDir=/opt/zookeeper-3.4.6/zkdata                   

#事物日志的存储路径,如果不配置这个那么事物日志会默认存储到dataDir制定的目录,这样会严重影响zk的性能,当zk吞吐量较大的时候,产生的事物日志、快照日志太多

dataLogDir=/opt/zookeeper-3.4.6/zkdatalog      

#端口

clientPort=2181

#这个1是服务器的标识也可以是其他的数字,表示这个是第几号服务器,用来标识服务器,这个标识要写到快照目录下面myid文件里

第一个端口是通信端口,默认是2888,第二个端口是leader选举的端口,集群刚启动的时候选举或者leader挂掉之后进行新的选举的端口

server.1=192.168.61.132:2888:3888

server.2=192.168.61.133:2888:3888

server.3=192.168.61.134:2888:3888     


4.创建myid文件

#server1

echo "1" > /opt/zookeeper-3.4.6/zkdata/myid

#server2

echo "2" > /opt/zookeeper/zkdata/myid

#server3

echo "3" > /opt/zookeeper/zkdata/myid

5.配置环境变量(可选)

PATH=$JAVA_HOME/bin:$ZOOKEEPER_HOME/bin:$PATH

CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$ZOOKEEPER_HOME/lib:

6.启动zookeepers     $  sh  zkServer.sh start

7.注意点

zookeeper不会主动的清除旧的快照和日志文件,这个是操作者的责任。



二、kafka配置

1.下载kafka   wget  http://apache.fayea.com/kafka/0.10.0.1/kafka_2.10-0.10.0.1.tgz

2.解压 tar –zxf  kafka_2.10-0.10.0.1.tgz

3. 配置      进入kafka安装工程根目录编辑config/server.properties

#消息存放的目录,这个目录可以配置为“,”逗号分割的表达式
 
log.Dirs =/opt/kafka_2.10-0.10.1.0/kalog

#当前机器在集群中的唯一标识,和zookeepermyid性质一样

broker.id=0

#kafka对外提供服务的端口默认是9092

port=9092

#默认是关闭的,在0.8.1有个bugDNS解析问题,失败率的问题

host.name=192.168.7.100

#默认的分区数,一个topic默认1个分区数

num.partitions=1

#默认消息的最大持久化时间,168小时,7

log.retention.hours=168

#zookeeper的连接端口

zookeeper.connect=192.168.61.132:2181,192.168.61.133:2181,192.168.61.134:2181

4.启动kafka
$ shbin/kafka-server-start.sh config/server.properties     &

5.新建一个TOPIC

$ sh kafka-topics.sh --create --topic kafkatopic --replication-factor 1--partitions 1 --zookeeper localhost:2181
6.KAFKA的生产者启动起来
$ sh  kafka-console-producer.sh --broker-listlocalhost:9092 --sync --topic kafkatopic
7.另开一个终端,把消费者启动起来
$ sh  kafka-console-consumer.sh --zookeeperlocalhost:2181 --topic kafkatopic --from-beginning

8.使用

在发送消息的终端输入test1,则可以在消费消息的终端显示

9.日志说明

默认kafka的日志是保存在/opt/kafka_2.10-0.10.1.0/logs目录下

#kafka的运行日志

server.logs

#kafka是用zookeeper来保存状态,所以可能会进行切换,切换的日志

state-change.log

#kafka选择一个节点作为“controller”,当发现有节点down掉的时候它负责在游泳分区的所有节点中选择新的leader,这使得Kafka可以批量的高效的管理所有分区节点的主从关系。如果controller down掉了,活着的节点中的一个会备切换为新的controller

controller.log


#使用客户端进入zk

./zkCli.sh -server 127.0.0.1:2181  #默认是不用加’-server‘参数的修改默认端口

#查看目录情况执行“ls /”

[zk: 127.0.0.1:12181(CONNECTED) 0]ls /

#显示结果:[consumers, config, controller,isr_change_notification, admin, brokers, zookeeper,controller_epoch]

上面的显示结果中:只有zookeeper是,zookeeper原生的,其他都是Kafka创建的

#标注一个重要的

[zk: 127.0.0.1:12181(CONNECTED) 1] get/brokers/ids/0

#还有一个是查看partion

[zk: 127.0.0.1:12181(CONNECTED) 7] get/brokers/topics/shuaige/partitions/0



------------------------------------------------------------------------------------------

参考:

http://www.cnblogs.com/luotianshuai/p/5206662.html(集群搭建)

http://blog.csdn.net/lizhitao/article/category/2194509(博客)

http://blog.csdn.net/louisliaoxh/article/details/51577117(Consumer)

http://blog.csdn.net/qq_35799003/article/details/52238744(Producer

0 0