ubuntu下kafka详细安装指导

kafka是目前非常流行的消息组件,天生支持分布式,这里介绍下如何安装配置

安装kafka之前的准备工作

首先需要安装Java sdk

sudo apt install openjdk-8-jdk #安装特定版本的jdk,这里安装的是jdk1.8
sudo apt install default-jdk #安装默认版本jdk

安装完成后验证

java -version

配置Java环境变量

export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-************/jre
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
export PATH=${JAVA_HOME}/bin:$PATH

**为具体目录

正式安装kafka

cd /opt
sudo wget http://mirrors.hust.edu.cn/apache/kafka/2.4.1/kafka_2.11-2.4.1.tgz

这里注意要下载编译过的压缩包,而不是带src的源码包 否则启动kafka的时候 bin/kafka-server-start.sh config/server.properties, 会出现Classpath is empty. Please build the project first e.g. by running './gradlew jar -PscalaVersion=2.12.8'的提示,启动失败。

sudo tar zxvf kafka_2.11-2.4.1.tgz 
cd kafka-2.4.1-src

启动kafka之前先要启动Zookeeper

sudo bin/zookeeper-server-start.sh -daemon  config/zookeeper.properties   (参数-daemon表示后台守护运行)  

停止zookeeper的命令

sudo bin/zookeeper-server-stop.sh

然后启动kafka

sudo bin/kafka-server-start.sh config/server.properties 
sudo bin/kafka-server-start.sh -daemon config/server.properties  (参数-daemon表示后台运行) 

停止kafka

sudo bin/kafka-server-stop.sh

如果出现 Java HotSpot(TM) 64-Bit Server VM warning: INFO: os::commit_memory(0x00000000c0000000, 1073741824, 0) failed; error='Cannot allocate memory' (errno=12) 则是你的服务器配置过低,需要更改默认配置

进入/mnt/sata1/kafka_2.11-0.10.0.1/bin目录下,修改kafka-server-start.sh文件:

找到这一行export KAFKA_HEAP_OPTS="-Xmx1G -Xms1G" 
改为   export KAFKA_HEAP_OPTS="-Xmx256M -Xms128M" 

如果报错:OpenJDK 64-Bit Server VM warning: If the number of processors is expected to increase from one, then you should configure the number of parallel GC threads appropriately using -XX:ParallelGCThreads=N

测试kafka

创建一个测试的Topic

bin/kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 1 --partitions 1 --topic test

查看Topic:

#连接zookkeeper模式
bin/kafka-topics.sh --list --zookeeper localhost:2181  
#直接kafka模式
bin/kafka-topics.sh --list --bootstrap-server localhost:9092

产生消息

#直接kafka模式
bin/kafka-console-producer.sh --broker-list localhost:9092 --topic log_topic
>hello xingzhu
>hello sindrol

消费消息

#连接zookkeeper模式
bin/kafka-console-consumer.sh --zookeeper 47.103.116.77:2181 --topic log_topic --from-beginning
#直接kafka模式
bin/kafka-console-consumer.sh --bootstrap-server 47.103.116.77:9092 --topic log_topic --from-beginning
xingzhu
sindrol

配置kafaka

配置项 说明
host.name = 127.0.0.1 指定kafka ip
broker.id = 0 指定单点id
port = 9092 指定端口
listeners=PLAINTEXT://网卡内网ip:9092 指定阿里云ecs内网ip
advertised.listeners=PLAINTEXT://网卡外网ip:9092 指定阿里云ecs网卡的外网ip

本文原创于www.7php.cn