Kafka安装及配置 单击版
Kafka的使用场景:
- 日志收集:一个公司可以用Kafka可以收集各种服务的log,通过kafka以统一接口服务的方式开放给各种consumer,例如hadoop、Hbase、Solr等。
- 消息系统:解耦和生产者和消费者、缓存消息等。
- 用户活动跟踪:Kafka经常被用来记录web用户或者app用户的各种活动,如浏览网页、搜索、点击等活动,这些活动信息被各个服务器发布到kafka的topic中,然后订阅者通过订阅这些topic来做实时的监控分析,或者装载到hadoop、数据仓库中做离线分析和挖掘。
- 运营指标:Kafka也经常用来记录运营监控数据。包括收集各种分布式应用的数据,生产各种操作的集中反馈,比如报警和报告。
- 流式处理:比如spark streaming和storm
- 事件源
Kafka场景比喻
接下来我大概比喻下Kafka的使用场景
消息中间件:生产者和消费者
妈妈:生产者
你:消费者
馒头:数据流、消息
正常情况下: 生产一个 消费一个
其他情况:
1) 一直生产,你吃到某一个馒头(数据)时,你卡主(机器故障), 馒头就丢失了
2) 一直生产,做馒头速度快,你来不及吃,馒头也就丢失了
3) 一直生产, 但你不想吃了(主动关闭),或者你吃不下了(被动关闭)
为了防止其他生产情况的出现,我们可以拿个碗/篮子,馒头做好以后先放到篮子里,你要吃的时候去篮子里面取出来吃,
而这篮子/框就可以为:Kafka。当篮子满了,馒头就装不下了,怎么办? 多准备几个篮子-即Kafka的扩容
kafka的安装及配置 (单击)
安装之前的准备:
1.JDK1.80以上
2.zookeepeer的安装及配着
Jdk的安装配置
1.jdk 下载地址wget --no-check-certificate --no-cookies --header “Cookie: oraclelicense=accept-securebackup-cookie” https://download.oracle.com/otn-pub/java/jdk/8u202-b08/1961070e4c9b4e26a04e7f5a083f551e/jdk-8u202-linux-x64.tar.gz (可以去官网下载)
tisp :–no-check-certificate --no-cookies --header “Cookie: oraclelicense=accept-securebackup-cookie” 这段是为了避开用户验证用的
下载的tar包后缀是有乱码的,记得删掉。
- 创建安装目录mkdir …并解压到安装目录。
- 配置环境变量vi /etc/profile
在文末最后加上
JAVA_HOME=/app/mtlsa/jdk-8u202
PATH=$ JAVA_HOME/bin:$ PATH
CLASSPATH=.: $ JAVA_HOME/lib:$JAVA_HOME/lib ( 注意 $前后没有空格,格式有问题,我这里才有空格 )
export JAVA_HOME
export PATH
export CLASSPATH 保存退出! - 更新环境变量 source /etc/profile
检查安装 java -version
Zookeeper的安装及配置
5. zookeeper 下载地址 wget http://archive.apache.org/dist/zookeeper/zookeeper-3.4.9/zookeeper-3.4.9.tar.gz
6. 创建安装目录mkdir/自己ding并解压
7. 在zookeeper的主目录下创建data和logs两个目录用于存储数据和日志:
cd …/zookeeper-3.4.9
mkdir logs
mkdir data
8. 在conf目录下新建zoo.cfg文件,写入以下内容保存:
vi zoo.cfg
tickTime=2000
dataDir=…/zookeeper-3.4.9/data
dataLogDir=…/zookeeper-3.4.9/logs (注意目录位置)
clientPort=2181
4.启动和停止
进入bin目录,启动、停止、重启分和查看当前节点状态
./zkServer.sh start
./zkServer.sh stop
./zkServer.sh restart
./zkServer.sh status
到此处单击的zookeeper 安装结束
3.Kafka的安装及配置(单击)
kafka下载地址 wget https://archive.apache.org/dist/kafka/2.1.0/kafka_2.12-2.1.0.tgz
- 创建安装目录并解压 mkdir/自己定
- 在主目录创建存放日志的目录mkdir … kafka_2.12-2.1.0/logs
- 进入config目录 配置 vi server.properties 下面是一些简单配置
1. broker.id=1(节点唯一)
port=9092 端口
host.name=10.164.25.38 本机ip
num.network.threads=3
num.io.threads=8
socket.send.buffer.bytes=102400
socket.receive.buffer.bytes=102400
socket.request.max.bytes=104857600
log.dirs=/app/kafka/kafka_2.12-2.1.0/logs
num.partitions=2
log.retention.hours=168
log.segment.bytes=1073741824
log.retention.check.interval.ms=30000
log.cleaner.enable=false
zookeeper.connect=10.164.25.38:2181
zookeeper.connection.timeout.ms=6000
4. 启动 进入bin
常规模式启动kafka ./kafka-server-start.sh …/config/server.properties
进程守护模式启动kafka
nohup ./kafka-server-start.sh …/config/server.properties >/dev/null 2>&1 &
停止的话就用kill 命令吧
5.创建topic (Topic是Kafka数据写入操作的基本单元,可以指定副本 。一个Topic包含一个或多个Partition,建Topic的时候可以手动指定Partition个数,个数与服务器个数相当,每条消息属于且仅属于一个Topic。Producer发布数据时,必须指定将该消息发布到哪个Topic)
./kafka-topics.sh --create --topic topic_1 --partitions 1 --replication-factor 1 --zookeeper localhost:2181
验证topic是否创建成功
./kafka-topics.sh --list --zookeeper localhost:2181
localhost为设置zookeeper的ip地址 (单击配置可以不管,有需求可以修改)
6.单击测试链路
在克隆的新窗口执行消费者发送端
进入kafka bin目录
./kafka-console-producer.sh --broker-list 10.164.25.38:9092 --topic test
可以随便敲几个命令
ka
再克隆一个窗口执行消费者接收端
./kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic test --from-beginning (localhost:可以指定消费者,单击可以不管)
ka