本次安装基于阿里云平台。
系统版本:
[root@izbp11qlpa7oecwpwy4cn4z ~]# uname -a
Linux izbp11qlpa7oecwpwy4cn4z 3.10.0-693.2.2.el7.x86_64 #1 SMP Tue Sep 12 22:26:13 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux
[root@izbp11qlpa7oecwpwy4cn4z ~]# cat /etc/redhat-release
CentOS Linux release 7.4.1708 (Core)
本机使用Xshell 6 连接
参考资料
http://kafka.apache.org/quickstart
https://stackoverflow.com/questions/50513744/apache-kafka-2-12-1-1-0-not-working-with-jdk-10-0-1/51145576
软件安装在root目录下:
jdk-10.0.1
kafka_2.11-1.1.0
1. 首先安装 JDK (截止2018.7.16最新版本为jdk-10.0.1)
wget http://download.oracle.com/otn-pub/java/jdk/10.0.1+10/fb4372174a714e6b8c52526dc134031e/jdk-10.0.1_linux-x64_bin.tar.gz?AuthParam=1531730130_ece3ed8d3061f685f58034cb86688d5c
tar -zxvf jdk-10.0.1_linux-x64_bin.tar.gz?AuthParam=1531730130_ece3ed8d3061f685f58034cb86688d5c
yum install lrzsz -y 安装上传下载支持
添加环境变量
/etc/profile文件最前面添加
export JAVA_HOME=/root/jdk-10.0.1
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
export PATH=${JAVA_HOME}/bin:$PATH
source /etc/profile 使配置不用重启即可立即生效。
创建相关目录
[root@izbp11qlpa7oecwpwy4cn4z etc]# mkdir /root/jdk-10.0.1/jre
[root@izbp11qlpa7oecwpwy4cn4z etc]# mkdir /root/jdk-10.0.1/lib
[root@izbp11qlpa7oecwpwy4cn4z etc]# mkdir /root/jdk-10.0.1/jre/lib
[root@izbp11qlpa7oecwpwy4cn4z etc]# mkdir /root/jdk-10.0.1/bin
最后执行
bin/java -version
java version "10.0.1" 2018-04-17
Java(TM) SE Runtime Environment 18.3 (build 10.0.1+10)
Java HotSpot(TM) 64-Bit Server VM 18.3 (build 10.0.1+10, mixed mode)
证明JDK安装成功。
2. kafka安装
wget http://mirror.bit.edu.cn/apache/kafka/1.1.0/kafka_2.11-1.1.0.tgz
tar -xzf kafka_2.11-1.1.0.tgz
cd kafka_2.11-1.1.0
3. 试运行
3.1 bin/zookeeper-server-start.sh config/zookeeper.properties
报错如下:
[root@izbp11qlpa7oecwpwy4cn4z kafka_2.11-1.1.0]# bin/zookeeper-server-start.sh config/zookeeper.properties
/root/kafka_2.11-1.1.0/bin/kafka-run-class.sh: line 252: [[: 10 2018-04-17: syntax error in expression (error token is "2018-04-17")
[0.000s][warning][gc] -Xloggc is deprecated. Will use -Xlog:gc:/root/kafka_2.11-1.1.0/bin/../logs/zookeeper-gc.log instead.
Unrecognized VM option 'PrintGCDateStamps'
Error: Could not create the Java Virtual Machine.
Error: A fatal exception has occurred. Program will exit.
原因分析:
kafka-run-class.sh文件中获取JDK版本出错。
解决:
方法1:修改kafka-run-class.sh文件,将PrintGCDateStamps相关注释
方法2:来源https://stackoverflow.com/questions/36970622/kafka-unrecognized-vm-option-printgcdatestamps
将
JAVA_MAJOR_VERSION=$($JAVA -version 2>&1 | sed -E -n 's/.* version "([^.-]*).*"/\1/p')
修改为
JAVA_MAJOR_VERSION=$($JAVA -version 2>&1 | sed -E -n 's/.* version "([^.-]*).*/\1/p')
然后 chmod +x kafka-run-class.sh 添加执行权限
3.2 bin/zookeeper-server-start.sh config/zookeeper.properties & 后台启动zookeeper
3.3 bin/kafka-server-start.sh config/server.properties & 后台启动kafka服务
3.4 创建test topic
bin/kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 1 --partitions 1 --topic test
3.5 查看topic
bin/kafka-topics.sh --list --zookeeper localhost:2181
3.6 生产者发送消息
bin/kafka-console-producer.sh --broker-list localhost:9092 --topic test
>his is a message
>This is another message
3.7 消费者接收消息
bin/kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic test --from-beginning
3.8 多broker配置(添加(复制修改)多个server.properties,以启动多个broker)
cp config/server.properties config/server-1.properties
cp config/server.properties config/server-2.properties
修改配置文件
config/server-1.properties:
broker.id=1
listeners=PLAINTEXT://:9093 添加
log.dirs=/tmp/kafka-logs-1
config/server-2.properties:
broker.id=2
listeners=PLAINTEXT://:9094 添加
log.dirs=/tmp/kafka-logs-2
3.9 启动新节点
bin/kafka-server-start.sh config/server-1.properties &
bin/kafka-server-start.sh config/server-1.properties &
3.10 创建新topic
bin/kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 3 --partitions 1 --topic my-replicated-topic
3.11 获取topic信息
bin/kafka-topics.sh --describe --zookeeper localhost:2181 --topic test
3.12 发消息
bin/kafka-console-producer.sh --broker-list localhost:9092 --topic my-replicated-topic
3.13 收消息
bin/kafka-console-consumer.sh --bootstrap-server localhost:9092 --from-beginning --topic my-replicated-topic
3.14 停止broker(bin下的sh文件,看名字猜作用)
kafka_2.11-0.10.0.0/bin/kafka-server-stop.sh 停止
至此,基本按照官方的教程,配置启动完毕。