Linux下搭建kafka
一、kafka是什么?
Kafka是最初由Linkedin公司开发,是一个分布式、分区的、多副本的、多订阅者,基于zookeeper协调的分布式日志系统(也可以当做MQ系统),常见可以用于web/nginx日志、访问日志,消息服务等等,Linkedin于2010年贡献给了Apache基金会并成为顶级开源项目。
主要术语:
- Broker:Kafka集群包含一个或多个服务器,这种服务器被称为broker
- Producer:生产者,负责发布消息到Kafka broker
- Consumer:消费者:从Kafka broker读取消息的客户端。
- Consumer Group:消费者组:每个Consumer属于一个特定的Consumer Group(可为每个Consumer指定group name,若不指定group name则属于默认的group)。
- 主要应用场景是:日志收集系统和消息系统。
负载均衡原理: - 一个topic对应一种消息格式,因此消息用topic分类
- 一个topic代表的消息有1个或者多个patition(s)组成
- 一个partition应该存放在一到多个server上,如果只有一个server,就没有冗余备份,是单机而不是集群;如果有多个server,一个server为leader(领导者),其他servers为followers(跟随者),leader需要接受读写请求,followers仅作冗余备份,leader出现故障,会自动选举一个follower作为leader,保证服务不中断;每个server都可能扮演一些partitions的leader和其它partitions的follower角色,这样整个集群就会达到负载均衡的效果
二、使用步骤
1.安装相关包
安装jdk、zookeeper、kafka包,想要的话访问以下链接:
链接: https://pan.baidu.com/s/1F5Z08R4Xcgw01iHBYjhkPg
提取码: mpjc
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
import warnings
warnings.filterwarnings('ignore')
import ssl
ssl._create_default_https_context = ssl._create_unverified_context
2.依次启动服务
启动zookeeper:
sh zookeeper-server-start.sh ../config/zookeeper.properties
启动kafka:
sh kafka-server-start.sh ../config/server.properties
启动完毕后使用命令:jps查看是否启动成功
启动kafka:
jps
启动成功如下图:
3.安装过程中遇到了问题
提示:这里对文章进行总结:
1、配置静态ip
放假前在虚拟机中已经配置好ip了,将虚拟机挂起了,今天打开之后,使用ip addr命令后发现ip没有了,只有一个本地ip:127.0.0.1,通过查阅资料后,使用命令:
启动kafka:
systemctl stop NetworkManager
systemctl disable NetworkManager
service network restart
成功!
2、使用jps查看当前运行的进程
报:权限不够 解决方法
解决方法:在jdk目录下添加一个权限就可以了:
chmod +x /usr/local/java/jdk1.8/bin/jps
3、
解决方法:修改kafka下的config/server.properties为:
advertised.listeners=PLAINTEXT://10.1.192.196:9092
advertised.listeners=PLAINTEXT://10.1.192.196:9092
4、配置java_home、zookeeper、kafka
vi /etc/profile
三、运行
.进入kafka安装目录,创建一个名为helloWorld的topic。
bin/kafka-topics.sh --create --bootstrap-server localhost:9092 --replication-factor 1 --partitions 1 --topic helloWorld
./kafka-console-producer.sh --broker-list localhost:9092 --topic helloWorld
输入要传递的消息:向名为helloWorld的topic发送消息,例如 hello kafka
消费者已经输出了刚才发送的消息,hello world实例搭建完成。
./kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic helloWorld --from-beginning
结果如下图:
生产者:./kafka-console-producer.sh --broker-list localhost:9092 --topic helloWorld
消费者:./kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic helloWorld --from-beginning