kafka是基于scala语言开发,所以需要java运行环境,下载前请先确认是否已经安装并配置java环境
需要的环境
@1.jdk 1.8
@2.zookeeper 3.4.10
@3.kafka 2.11-0.9.0.0
一.安装JDK1.8
1.查看yum库中的Java安装包,可以看到不同版本的java安装包
2.使用yum安装Java环境
安装java-1.8.0版本的所有相关程序
3.查看刚安装的Java版本信息
二.安装zookeeper
从官网或者镜像下载对应的发行包:
http://www.apache.org/dyn/closer.cgi/zookeeper/
2.1 下载Zookeeper
我这里直接使用wget命令下载3.4.10版本:
2.2 解压Zookeeper
下载后的发行包是格式的使用tar命令解压:
2.3 配置Zookeeper
zookeeper支持两种运行模式:独立模式(standalone)和复制模式(replicated)。
真正用于生产环境的Zookeeper肯定都是使用复制模式的,这样做可以避免单点问题。想要使用复制模式,但由于没有富余的机器能够使用,所以可以在单台机器上通过配置来使用复制模式,从而模拟真实的集群环境。
由于Zookeeper集群是通过多数选举的方式产生leader的,因此,集群需要奇数个Zookeeper实例组成,也就是说至少需要3台(1台不能算"群" :-] )。
首先,将zookeeper-3.4.10这个目录copy三份,分别为zookeeper-3.4.10-01、zookeeper-3.4.10-02、zookeeper-3.4.10-03,代表着3个实例。
然后分别创建zoo.cfg配置文件,放在对应实例下的conf/目录下,文件内容如下:
下面说明一下需要注意的几点:
dataDir这个是指定实例数据的存放路径,不同的实例要区分开。并且,注释中提醒不要设置为/tmp目录。比如可以分别设为:
clientPort这个是供客户端连接本实例的端口号,不同的实例也要区分。比如,可以分别指定为:2181、2182、2183。
server.这个X可以取数字,用来标识集群中唯一的一个实例。配置了多少个server.就表示集群中有多少个实例。后面值的格式为: 其中,为实例所在的主机IP,这里由于都在一台机器上,所以都指定为本机地址;是集群中实例之间用于数据通信的端口;是集群中实例进行leader选举时使用的通信端口。对于同一实例和是不可相同的。对于同一台机器部署多个实例的情况,不同实例的同一种端口也是需要区分的。
2.4 配置myid文件
前面提到的server.配置项中的就是一个实例的myid,它需要被写在对应实例的/myid文件中。
下面需要在每一个实例指定的目录下创建一个名为myid的文件,文件的内容就是一个数字,对应server.中的X。
比如,这里是这样配置的:在/var/lib/zookeeper-01/myid文件中写入1;在/var/lib/zookeeper-02/myid文件中写入2;在/var/lib/zookeeper-03/myid文件中写入3。
2.5 创建启动和停止的脚本
对于多个实例,分别启动和停止比较麻烦,可以写一个脚本来自动完成这个工作。start-zk-servers.sh的内容:
stop-zk-servers.sh的内容:
启动集群
运行启动脚本:
启动zookeeper服务
默认地,在用户目录(~/)下面会生成Zookeeper的日志文件。从日志中可以看出leader选举的过程和结果。
运行停止脚本:
连接Zookeeper
四、安装Kafka
下载最新版的kafka软件
wget http://apache.opencas.org/kafka/0.9.0.1/kafka_2.11-0.9.0.1.tgz
解压缩
tar -xzf kafka_2.11-0.9.0.0.tgz
4.1 启动
首先要进入kafka目录
启动kafka server
4.2 使用Kafka
4.2.1 创建一个Topic 名称为HelloWorld
校验Topic是否创建成功
4.2.2 启动一个Producer并发送消息
可以使用Kafka命令行客户端(获取标准命令行输入并一Message形式发出)发送消息到Kafka集群。默认情况下,每行会单独算作一次消息发出。下例通过该命令行终端发送消息到HelloWorld这个Topic,命令如下:
4.2.3 启动一个Consumer并接受消息
跟4.2.2中类似,同样可以使用Kafka命令行终端来启动一个Consumer(格式化消息到标准输出),命令如下
领取专属 10元无门槛券
私享最新 技术干货