jdk
linux上安装jdk其实很简单,下载jdk的bin文件,解压,配置好环境就ok了
坑爹的是oracle现在必须登陆才能下载了 ,建议还是注册一下,下载速度杠杆的
本机是window10,kafka的资料linux更加多一些,这里就使用了虚拟机
- 安装虚拟机
- 安装系统
- oracle官网下载jdk,这里用的是jdk1.8.0_211
- 配置环境
- vi /etc/profile
-
底部加入下面内容
-
JAVA_HOME=/usr/local/java/jdk1.8.0_201
PATH=$JAVA_HOME/bin:$PATH
CLASSPATH=$JAVA_HOME/jre/lib/ext:$JAVA_HOME/lib/tools.jar
export PATH JAVA_HOME CLASSPATH
-
source /etc/profile 使配置文件生效
-
java -version 查看是否安装成功
安装的时候遇到如下问题
- 本机使用winscp来传输数据,在配置好jdk环境之后,发现无法传输数据,网上教程也无法解决;tab 的时候提示无法为立即文档创建临时文件,如果有人知道还请告知
- 只能重新安装一次虚拟机,可是securesrc又无法连接,发现是ssh-server的问题,apt安装之后解决
zookeeper
下载,解压,配置
#tar -zxf zookeeper-3.4.14.tar.gz
#mv zookeeper-3.4.14 /usr/local/zookeeper
#mkdir -p /var/lib/zookeeper
#cat > /usr/local/zookeeper/conf/zoo.cfg <<EOF
>tickTime=2000
>dataDir=/var/lib/zookeeper
>clientPort=2181
>EOF
#/usr/local/zookeeper/bin/zkServer.sh start
上述命令就可以开启zookeeper服务器
可以利用
#/usr/local/zookeeper/bin/zkServer.sh status
查看运行状态,可是发现报错,process may not run
网上查询发现应该是jdk的问题,并且~/zookeeper/bin/zookeeper.out中也提示是java命令找不到
但是jdk的确是正确安装的,不管,在sh脚本中加入下面两行
export JAVA_HOME=/usr/local/java/jdk1.8.0_211
export PATH=$JAVA_HOME:$PATH
成功
kafka
同样,下载,解压
tar -zxf kafka_2.11-2.2.1.tgz
mv kafka_2.11-2.2.1 /usr/local/kafka
mkdir /tmp/kafka-logs
/usr/local/kafka/bin/kafka-server-start.sh /usr/local/kafka/config/server.properties
再执行如下创建主题
/usr/local/kafka/bin/kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 1 --partitions 1 --topic test
不出意外,报错
replication factor: 1 larger than available brokers: 0
也就是broker根本没有启动
查看kafka.out中发现如下
can not allocate memory
所以怀疑是分配的内存不够,因为是虚拟机嘛,没有那么多内存,果断修改kafka-server-start.sh
将-Xmx1G -Xms1G 改为256M,256M
得以成功;by the way, 一开始修改为128,不行,会报内存溢出错误。后来将分配给虚拟机的内存改为2g,这里改为256才顺利通过
启动发布和消费
/usr/local/kafka/bin/kafka-console-producer.sh --broker-list localhost:9092 --topic test
/usr/local/kafka/bin/kafka-console-consumer.sh --zookeeper localhost:2181 --topic test --from-beginning
发现这种消费方式是不支持的(kafka的版本较高,废除了这种方式)
/usr/local/kafka/bin/kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic test --from-beginning
这种方式是可以的