kafka的简单安装与配置

资源类型: 技术文章 语言类型: 编程与开发 发布时间: 2016-06-14 20:26:28

更新时间:2017-07-27 23:07:22 发布者:ykswz(ykswz) 432

说到Kafka,相信很多玩大数据的朋友们一定不陌生了吧。特别在做一些实时计算的时候,我们经常会把数据通过Kafka的接口放在Kafka的消息订阅系统里面,然后另外的程序应用,进行读取Kafka里面的数据,进行一些实时计算等。个人感觉,简单的理解,Kafka就是一个分布式的消息订阅系统。有了它,我们可以方便的进行消息的传递订阅功能。而我们这篇文章并不是给大家深入讲解Kafka方面的内容,我们主要还是先来看一下关于Kafka的安装和简单的配置方面的内容吧。

这里需要说明的是,我们这里有一个前提条件的哦。因为都是基于Java虚拟机开发的,所以jdk必须要安装,然后它是用Scala写的,所以Scala也必须安装哦。至于其它的嘛,没有了,进入正题,我们来开始安装和配置Kafka吧。

1.我们自然是要下载我们的Kafka了哦
根据自己的Scala的版本,下载自己的kafka

wget "http://mirror.bit.edu.cn/apache/kafka/0.8.2.2/kafka_2.10-0.8.2.2.tgz"
mv kafka_2.10-0.8.2.2.tgz /usr/local
tar -xzvf /usr/local/kafka_2.10-0.8.2.2.tgz
chown -R hadoop:hadoop /usr/local/kafka_2.10-0.8.2.2
cd /usr/local/kafka_2.10-0.8.2.2



三台测试服务器,主机名分别是
namenode
datanode1
datanode2

配置zookeeper
进入config目录下,修改zookeeper.properties文件,Kafka之间的相互的通信是基于这个zookeeper的哦,所以我们这里肯定要配置好它

tickTime=2000
dataDir=/home/hadoop/zookeeper/
clientPort=2181
initLimit=5
syncLimit=2
server.1=namenode:2888:3888
server.2=datanode1:2888:3888
server.3=datanode2:2888:3888


#在dataDir目录/home/hadoop/zookeeper/下写一个myid文件,命令如下:

echo 1 >/home/hadoop/zookeeper/myid


注意:这个id是zookeeper的主机标示,每个主机id不同第二台是2 第三台是3。
这里设定为
namenode /home/hadoop/zookeeper/myid是1
datanode1 /home/hadoop/zookeeper/myid是2
datanode2 /home/hadoop/zookeeper/myid是3

然后我们把这个配置分别复制到三台分布式集群上面。

scp -r /usr/local/kafka_2.10-0.8.2.2/* datanode1:/usr/local/kafka_2.10-0.8.2.2/
scp -r /usr/local/kafka_2.10-0.8.2.2/* datanode2:/usr/local/kafka_2.10-0.8.2.2/


逐次启动3台机器的zookeeper 构成一个集群:

bin/zookeeper-server-start.sh config/zookeeper.properties &


注意:使用& 会打印出启动日志,但如果使用secure ssh直接退出,有可能会让zookeeper退出,建议使用命令检查一下:

netstat -apn | grep 2181


其实,这里我们只是看看,对应的端口是否被开启了而已哦,如果正常有输出,通常说明我们的服务就启动成功了呢。

我启动的顺序是
namenode
datanode1
datanode2

由于ZooKeeper集群启动的时候,每个结点都试图去连接集群中的其它结点,先启动的肯定连不上后面还没启动的,所以打印出来的部分的异常是可以忽略的。集群在选出一个Leader后,最后稳定了。其他结点可能也出现类似问题,属于正常,等你集群上所有服务器都启动zookeeper-server-start.sh了,就可以正常了。至此,zookeeper集群搭建完成。然后你可以分别在集群中,使用jps进行查看。

搭建kafka broker集群
进入config目录,修改server.properties

broker.id=0
port=9092
host.name=namenode
zookeeper.connect=namenode:2181,datanode1:2181,datanode2:2181
log.dirs=/home/www/kafka-logs


配置还是非常的简单的呢,这里就是要注意一点,不同集群broker.id 和host.name 不一样,根据实际情况配置。
修改生产者配置config/producer.properties

#metadata.broker.list=localhost:9092
metadata.broker.list=namenode:9092,datanode1:9092,datanode2:9092
producer.type=async


刚刚弄的是生产者的配置信息,说白了,生产者在我看来就是产生我们消息的程序。有了生产者,自然有消费者了哈,下面我们来配置消费者。修改消费者配置config/consumer.properties

#zookeeper.connect=127.0.0.1:2181
zookeeper.connect=namenode:2181,datanode1:2181,datanode2:2181



好了,我们配置的东西总不可能仅仅在一台上面吧,我们把代码同步到其它集群上去哦。通过下面的方式。
#同步config/consumer.properties
config/producer.properties到datanode1和datanode2

[hadoop@namenode config]$ scp producer.properties datanode1:/usr/local/kafka_2.10-0.8.2.2/config/
producer.properties                                                           100% 2258     2.2KB/s   00:00    
[hadoop@namenode config]$ scp producer.properties datanode2:/usr/local/kafka_2.10-0.8.2.2/config/
producer.properties                                                           100% 2258     2.2KB/s   00:00    
[hadoop@namenode config]$ scp consumer.properties datanode1:/usr/local/kafka_2.10-0.8.2.2/config/
consumer.properties                                                           100% 1228     1.2KB/s   00:00    
[hadoop@namenode config]$ scp consumer.properties datanode2:/usr/local/kafka_2.10-0.8.2.2/config/
consumer.properties                                                           100% 1228     1.2KB/s   00:00


#分别在datanode1和datanode2主机上,进行修改server.properties
#datanode1服务器的配置
进入config目录,修改server.properties

broker.id=1
port=9092
host.name=datanode1
zookeeper.connect=namenode:2181,datanode1:2181,datanode2:2181
log.dirs=/home/www/kafka-logs



#datanode2服务器的配置
进入config目录,修改server.properties

broker.id=2
port=9092
host.name=datanode2
zookeeper.connect=namenode:2181,datanode1:2181,datanode2:2181
log.dirs=/home/www/kafka-logs


#启动每台服务器的kafka

bin/kafka-server-start.sh config/server.properties &


我启动的顺序是
namenode
datanode1
datanode2

#启动之后,每台服务器上,你将看到如下的类似的输出

[hadoop@namenode kafka_2.10-0.8.2.2]$ jps
2716 QuorumPeerMain
3899 Jps
3848 Kafka


#其他的说明
#停止Kafka server

bin/kafka-server-stop.sh
#停止Zookeeper server
bin/zookeeper-server-stop.sh


测试集群
创建一个topic

bin/kafka-topics.sh --create --zookeeper namenode:2181 --replication-factor 2 --partitions 1 --topic newkafka


查看创建的topic

bin/kafka-topics.sh --describe --zookeeper namenode:2181 --topic newkafka
bin/kafka-topics.sh --describe --zookeeper datanode1:2181 --topic newkafka
bin/kafka-topics.sh --describe --zookeeper datanode2:2181 --topic newkafka


发现都能看到newkafka
#删除topic

And finally deleting a topic:
bin/kafka-topics.sh --zookeeper namenode:2181 --delete --topic newkafka
Topic deletion option is disabled by default. To enable it set the server config
delete.topic.enable=true



简简单单的安装配置,我感觉对于有一定的基础的朋友们一定可以快速的学习和掌握了哦。特别正在弄分布式的朋友们,这个安装配置,希望对对于大家有所帮助哦。

最新评论

封面图片

封面图片

简介

说到Kafka,相信很多玩大数据的朋友们一定不陌生了吧。特别在做一些实时计算的时候,我们经常会把数据通过Kafka的接口放在Kafka的消息订阅系统里面,然后另外的程序应用,进行读取Kafka里面的数据,进行一些实时计算等。个人感觉,简单的理解,Kafka就是一个分布式的消息订阅系统。有了它,我们可以方便的进行消息的传递订阅功能。而我们这篇文章并不是给大家深入讲解Kafka方面的内容,我们主要还是先来看一下关于Kafka的安装和简单的配置方面的内容吧。