分布式消息系统 Kafka源码安装

Kafaka是Apache的一个项目,是一款分布式消息发布和订阅的系统,具有高性能和高吞吐率。(官网地址)
我们认为流媒体平台有三个关键功能:
1、它允许您发布和订阅记录流。 在这方面,它类似于消息队列或企业消息系统。
2、它允许您以容错方式存储记录流。
3、当记录流产生时,它允许让您处理记录流。
那么本章安装的 kafka能做什么呢?
它被用于两大类应用程序:
1、构建可在系统或应用程序之间可靠获取数据的实时流数据流水线
2、构建对数据流进行变换或反应的实时流应用程序

安装步骤
安装kafka前,我已经准备了一个名为kafka-test的Centos6.8 4核4G的测试云主机。
kafka安装前,有两个依赖需要安装:gradle2.0版本及以上,java7 或 java8

一、安装jdk8最新版
可以到官网下载,我kafka-test测试机上安装的是jdk1.8.0_60,
直接jdk压缩包解压到/usr/local/java/,

[root@kafka-test ~]# ls /usr/local/java/
bin  COPYRIGHT  db  include  javafx-src.zip  jre  lib  LICENSE  man  README.html  release  src.zip  THIRDPARTYLICENSEREADME-JAVAFX.txt  THIRDPARTYLICENSEREADME.txt

然后将java目录加入环境变量:

[root@kafka-test ~]# echo "export JAVA_HOME=/usr/local/java" >> /etc/profile
[root@kafka-test ~]# echo "export PATH=$JAVA_HOME/bin:$PATH" >> /etc/profile
[root@kafka-test ~]# . /etc/profile

检测jdk是否安装配置成功:

[root@kafka-test ~]# java -version
java version "1.8.0_60"
Java(TM) SE Runtime Environment (build 1.8.0_60-b27)
Java HotSpot(TM) 64-Bit Server VM (build 25.60-b23, mixed mode)

二、Gradle是一个基于JVM的构建工具,[gradle官网说明],(https://gradle.org/install)安装最新版 gradle(gradle也依赖java):

[root@kafka-test ~]# cd /usr/local/src/
[root@kafka-test ~]#wget https://downloads.gradle.org/distributions/gradle-3.5-all.zip
[root@kafka-test gradle-3.5]# mkdir /usr/local/gradle
[root@kafka-test src]# unzip -d /usr/local/gradle gradle-3.5-all.zip
[root@kafka-test src]# ls /usr/local/gradle/gradle-3.5/
bin  docs  getting-started.html  init.d  lib  LICENSE  media  NOTICE  samples  src 
配置系统环境变量
[root@kafka-test src]# echo "export PATH=$PATH:/usr/local/gradle/gradle-3.5/bin" >> /etc/profile   
[root@kafka-test src]# . /etc/profile

检测gradle安装配置是否成功:

[root@kafka-test src]# gradle -v

------------------------------------------------------------
Gradle 3.5
------------------------------------------------------------

Build time:   2017-04-10 13:37:25 UTC
Revision:     b762622a185d59ce0cfc9cbc6ab5dd22469e18a6

Groovy:       2.4.10
Ant:          Apache Ant(TM) version 1.9.6 compiled on June 29 2015
JVM:          1.8.0_60 (Oracle Corporation 25.60-b23)
OS:           Linux 2.6.32-642.el6.x86_64 amd64

至此,kafka 环境依赖已经安装好,下面安装开始安装kafka,本文采用源码安装,也可以使用二进制包安装。
三、下载kafka最新稳定版
源码包:
wget http://mirrors.hust.edu.cn/apache/kafka/0.10.2.1/kafka-0.10.2.1-src.tgz
二进制安装包:
wget http://mirrors.hust.edu.cn/apache/kafka/0.10.2.1/kafka_2.12-0.10.2.1.tgz

[root@kafka-test ~]# cd /usr/local/src/
[root@kafka-test src]# wget http://mirrors.hust.edu.cn/apache/kafka/0.10.2.1/kafka-0.10.2.1-src.tgz
[root@kafka-test src]# tar zxf kafka-0.10.2.1-src.tgz 
### First bootstrap and download the wrapper ###
[root@kafka-test src]# cd kafka-0.10.2.1-src
# gradle命令执行过程会从maven中央仓库下载很多jar等文件用于构建
[root@kafka-test src]# gradle
### Building a jar and running it ###
# 此过程也会从maven中央仓库下载很多jar等文件用于构建
[root@kafka-test kafka-0.10.2.1-src]# ./gradlew jar
### Building source jar ###
[root@kafka-test kafka-0.10.2.1-src]# ./gradlew srcJar
### Building aggregated javadoc ###
[root@kafka-test kafka-0.10.2.1-src]# ./gradlew aggregatedJavadoc

gradle命令执行过程截图
gradle执行结束后截图,现在一切都会奏效:
gradle执行结束

执行./gradlew jar截图

执行gradlew jar截图
./gradlew jar执行成功后截图:(执行时间蛮久的)
gradlew jar执行成功后截图
./gradlew srcJar执行成功后截图:
gradlew srcJar执行成功后截图
./gradlew aggregatedJavadoc 执行失败报错
No value has been specified for property ‘outputDirectory’
gradlew aggregatedJavadoc 执行失败
四、启动和停止
启动 Zookeeper server,后台执行

[root@kafka-test kafka-0.10.2.1-src]# bin/zookeeper-server-start.sh config/zookeeper.properties &
查看进程:
# jps显示当前用户所有java进程的pid
[root@kafka-test kafka-0.10.2.1-src]# jps -l
1830 org.gradle.launcher.daemon.bootstrap.GradleDaemon
5275 sun.tools.jps.Jps
4367 org.apache.zookeeper.server.quorum.QuorumPeerMain

启动 Kafka server,后台运行

[root@kafka-test kafka-0.10.2.1-src]# bin/kafka-server-start.sh config/server.properties &
查看进程:
# jps显示当前用户所有java进程的pid
[root@kafka-test kafka-0.10.2.1-src]# jps
1830 GradleDaemon
4203 Kafka
5245 Jps
4367 QuorumPeerMain

停止Kafka server 和 Zookeeper server:

[root@kafka-test kafka-0.10.2.1-src]# bin/kafka-server-stop.sh 
[root@kafka-test kafka-0.10.2.1-src]# ps -ef|grep kafkaServer
root      2676  1483  0 15:26 pts/1    00:00:00 grep kafkaServer

[root@kafka-test kafka-0.10.2.1-src]# bin/zookeeper-server-stop.sh 
[root@kafka-test kafka-0.10.2.1-src]# ps -ef|grep zookeeper
root      2689  1483  0 15:26 pts/1    00:00:00 grep zookeeper

五、单机连通性测试
开启 zookeeper server 和 kafka server
Kafka提供了一个生产消息的命令行的工具,运行producer(生产者):

[root@kafka-test kafka-0.10.2.1-src]# bin/kafka-console-producer.sh --broker-list localhost:9092 --topic test

Kafka提供了一个消费消息的命令行的工具,运行consumer(消费者):

bin/kafka-console-consumer.sh --zookeeper localhost:2181 --topic test --from-beginning

在producer端输入字符串并回车,查看consumer端是否显示。
单机连通性测试
图中,producer端输入字符串,在consumer端能正常显示。而consumer端输入的内容,在producer端是显示不了的。
六、修改zookeeper和kafka server的配置文件

[root@kafka-test kafka-0.10.2.1-src]# egrep -v "^$|^#" config/server.properties 
broker.id=0
advertised.listeners=PLAINTEXT://192.168.1.163:9092
num.network.threads=3
num.io.threads=8
socket.send.buffer.bytes=102400
socket.receive.buffer.bytes=102400
socket.request.max.bytes=104857600
log.dirs=/tmp/kafka-logs
num.partitions=1
num.recovery.threads.per.data.dir=1
log.retention.hours=168
log.segment.bytes=1073741824
log.retention.check.interval.ms=300000
zookeeper.connect=192.168.1.163:2181
zookeeper.connection.timeout.ms=6000
[root@kafka-test kafka-0.10.2.1-src]# egrep -v "^$|^#" config/zookeeper.properties 
dataDir=/tmp/zookeeper
clientPort=2181
maxClientCnxns=0

七、分布式连通性测试
Zookeeper Server, Kafka Server, Producer都放在kafka测试服务器上,ip地址为192.168.1.163
Consumer放在服务器vm02上,同时在server上也可放Consumer,ip地址为192.168.1.212 。
在这里有点需要强调下,我直接使用源码包解压到vm02服务器上,导致使用消费者命令行工具的时候一直报错,而且网上也找不到相关资料:

[root@vm02 kafka-0.10.2.1-src]# bin/kafka-console-consumer.sh --zookeeper  192.168.1.163:2181 --topic test 
Unrecognized option: --zookeeper
Error: Could not create the Java Virtual Machine.
Error: A fatal exception has occurred. Program will exit.

后来尝试直接复制整个修改过配置文件后服务端的kafka目录到vm02服务器上,此时使用消费者命令行工具正常。

[root@kafka-test ~]# cd /usr/local/src/
[root@kafka-test src]# scp -r kafka-0.10.2.1-src 192.168.1.212:/usr/local/src/

Consumer在vm02服务器上:

[root@vm02 kafka-0.10.2.1-src]# bin/kafka-console-consumer.sh --zookeeper 192.168.1.163:2181 --topic test --from-beginning 

分布式消费消息测试
至此使用源码安装最新版kafka成功。
另有kafka集群有空后再补上。

———-以下引用自网上
kafka是什么?
记住几个关键点,分布式、高吞吐量 的 订阅、发布 消息系统
kafka有什么?
producer 消息的生成者,即发布消息
consumer 消息的消费者,即订阅消息
broker Kafka以集群的方式运行,可以由一个或多个服务组成,服务即broker
zookeeper 协调转发
kafka的工作图强调内容
kafka的工作图
producers通过网络将消息发送到Kafka集群,集群向消费者提供消息
kafka对消息进行归纳,即topic,也就是说producer发布topic,consumer订阅topic

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值