一、说明:
操作系统:linux
kafka版本信息:kafka_2.11-0.8.2.1
二、具体操作:
1、安装kafka之间先检查操作系统中是否装有JDK,若没有点击打开链接有JDK安装步骤。
2、关闭SELINUX、开启防火墙9092端口
2.1、关闭SELINUX
vi /etc/selinux/config
#SELINUX=enforcing #注释掉
#SELINUXTYPE=targeted #注释掉
SELINUX=disabled #增加
:wq! #保存退出
setenforce 0 #使配置立即生效
2.2、配置防火墙,开启9092端口
vi /etc/sysconfig/iptables #编辑防火墙配置文件
# Firewall configuration written by system-config-firewall
# Manual customization of this file is not recommended.
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 9092 -j ACCEPT
-A INPUT -j REJECT --reject-with icmp-host-prohibited
-A FORWARD -j REJECT --reject-with icmp-host-prohibited
COMMIT
:wq! #保存退出
service iptables restart #最后重启防火墙使配置生效
3、安装kafka
3.1、下载kafka
cd /usr/local/src
wget http://archive.apache.org/dist/kafka/0.8.2.1/kafka_2.11-0.8.2.1.tgz
注意,kafka_2.11-0.8.2.1.tgz版本是已经编译好的版本,解压就能使用。
tar -xzvf kafka_2.11-0.8.2.1.tgz #解压
mv kafka_2.11-0.8.2.1 /usr/local/kafka #移动到安装目录
3.2、配置kafka
mkdir /usr/local/kafka/log/kafka #创建kafka日志目录
cd /usr/local/kafka/config #进入配置目录
vi server.properties #编辑修改相应的参数
broker.id=0
port=9092 #端口号
host.name=127.0.0.1 #为本地IP
log.dirs=/usr/local/kafka/log/kafka #日志存放路径,上面创建的目录
zookeeper.connect=localhost:2181 #zookeeper地址和端口,单机配置部署,localhost:2181
:wq! #保存退出
(ps:如若host.name的ip不设置为127.0.0.1,会报一下错误:
Bug:Socket server failed to bind to xxx.xxx.xxx.xxx:9092: Cannot assign requested address.
在ECS上面配置kafka的地址千万不要写外部地址,比如139.225.155.153(我随便写的),这样事绑定不上去的,因为 这个是阿里云内部;它会去内网去寻找他的 地址,所以配成127.0.0.1 会自动识别成本机地址/不然应该使用外网的映射地址。
)
3.3、配置zookeeper
mkdir /usr/local/kafka/zookeeper #创建zookeeper目录
mkdir /usr/local/kafka/log/zookeeper #创建zookeeper日志目录
cd /usr/local/kafka/config #进入配置目录
vi zookeeper.properties #编辑修改相应的参数
dataDir=/usr/local/kafka/zookeeper #zookeeper数据目录
dataLogDir=/usr/local/kafka/log/zookeeper #zookeeper日志目录
clientPort=2181
maxClientCnxns=100
tickTime=2000
initLimit=10
syncLimit=5
:wq! #保存退出
4、创建启动、关闭kafka脚本
cd /usr/local/kafka #进入kafka根目录
#创建kafka启动脚本
vi kafkastart.sh #编辑,添加以下代码
#!/bin/sh
cd /usr/local/kafka/bin/zookeeper-server-start.sh /home/xuqiang/kafka/config/zookeeper.properties &
sleep 3 #等3秒后执行
#启动kafka
cd /usr/local/kafka/bin/kafka-server-start.sh /home/xuqiang/kafka/config/server.properties &
:wq! #强制保存退出
#创建kafka关闭脚本
vi kafkastop.sh #编辑,添加以下代码:
#!/bin/sh
#关闭zookeeper
/usr/local/kafka/bin/zookeeper-server-stop.sh /usr/local/kafka/config/zookeeper.properties &
sleep 3 #等3秒后执行
#关闭kafka
/usr/local/kafka/bin/kafka-server-stop.sh /usr/local/kafka/config/server.properties &
:wq! #保存退出
#添加脚本执行权限
chmod +x kafkastart.sh
chmod +x kafkastop.sh
5、设置脚本开机自动启动
vi /etc/rc.d/rc.local #编辑,在最后添加一行
sh /usr/local/kafka/kafkastart.sh & #设置开机自动在后台运行脚本
:wq! #保存退出
sh /usr/local/kafka/kafkastart.sh #启动kafka
sh /usr/local/kafka/kafkastop.sh #关闭kafka
至此,Linux下Kafka单机安装配置完成。
6、liunx下kafka生产者和消费者模式测试
6.1、启动kafka
sh /usr/local/kafka/kafkastart.sh
6.2、创建topic test
/usr/local/kafka/bin/kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 1 --partitions 1 -- topic test
6.3、查看topic
./usr/local/kafka/bin/kafka-topics.sh --list --zookeeper localhost:2181
6.4、启动producer发布消息
./usr/local/kafka/bin/kafka-console-producer.sh --broker-list localhost:9092 --topic test
(ps:此时在命令行输入: hello world!)
6.5、启动consumer消费消息
./usr/local/kafka/bin/kafka-console-consumer.sh --zookeeper localhost:2181 --topic test --from-beginning
(ps:此时会显示hello world!)
测试结果如下(我开了两个窗口便与测试):
(ps:图1为producer生产者,图2为consumer消费者)