一、kafka安装部署及常用命令行操作

Kafka 概述

   Kafka最初是是由 LinkedIn 开发的一个基于发布订阅的分布式的消息系统,由 Scala 编写,并于 2011 年初开源,Kafka 是一个分布式的基于发布/订阅模式的消息队列(Message Queue),主要应用于大数据实时处理领域。

Kafka安装

安装前置环境
 1、安装 JDK 1.8
 2、安装 zookeeper 集群(也可以使用自带 ZooKeeper)

开始安装
 1.下载kafka安装包:点击链接去kafka官网下载kafka安装包

 2.集群规划安装
  我的zk集群是三台,kafka也规划配置三台,分别部署在hadoop01、hadoop02、hadoop03三台节点上,集群规划不多赘述,各人根据自己需求安装即可
 1)解压安装包
       [hadoop@hadoop01 package]$ tar -zxvf kafka_2.11-1.1.0.tgz -C /home/hadoop/core/
 2)在/home/hadoop/data 目录下创建 kafka文件夹,用于存储kafka的broker节点的topic及各种落盘数据
      [hadoop@hadoop01 kafka_2.11-1.1.0]$ mkdir -p /home/hadoop/data/kafka
 3)修改配置文件
      [hadoop@hadoop01 ~]$ cd /home/hadoop/core/kafka_2.11-1.1.0/config
      [hadoop@hadoop01 config]$ vim server.properties

修改配置以下属性:

broker.id=1                # kafka的broker节点的标识id,必须保证全局唯一

delete.topic.enable=true              #表示开启topic删除功能,因为kafka topic默认是标记删除

auto.create.topics.enable=false  #关闭kafka自动创建topic功能,为了配合delete.topic.enable参数,彻底删除topic

这两个参数同时开启才能保证topic被彻底删除,如果不开启这个参数只开启delete.topic.enable,那么当我们执行delete topic命令后,当有producer向删除的topic继续push消息时,kafka会根据默认配置再次创建我们已经删除掉的topic。如果执行命令删除topic失败,我们想手动彻底删除某个topic,需要做下面两个操作:

  1. 删除kafka存储目录(server.properties文件log.dirs配置,默认为"/tmp/kafka-logs")相关对应的某个topic目录
  2. 如果配置了delete.topic.enable=true直接通过命令删除,如果命令删除不掉,直接通过zkCli.sh登陆zk客户端窗口,执行 rmr /brokers/topics/[待删除的topic_name] 手动删除掉topic即可

host.name=hadoop01           # 指定当前节点主机名
listeners=PLAINTEXT://hadoop01:9092  # 配置这两个参数是为了将host主机和port端口告知给producers和consumers,方便producers和consumers远程连接监听,如果没有配置会return java.net.InetAddress.getCanonicalHostName()解析值

# A comma separated list of directories under which to store log files
log.dirs=/home/hadoop/data/kafka       # kafka 运行日志存放的路径

# The default number of log partitions per topic. More partitions allow greater
num.partitions=4     #当前broker节点每个topic的分区数量,默认为1

num.recovery.threads.per.data.dir=1     # 用来恢复和清理 data 下数据的线程数量
 
log.retention.hours=168     #segment 文件保留的最长时间,默认超过7天数据将被删除
 
zookeeper.connect= hadoop01:2181,hadoop02:2181,hadoop03:2181          #配置连接 Zookeeper 集群地址

zookeeper.connection.timeout.ms=60000   # Timeout in ms for connecting to zookeeper
 
 4 )分发安装包
 
      [hadoop@hadoop01 config]$ scp -r /home/hadoop/core/kafka_2.11-1.1.0/ hadoop02:/home/hadoop/core
 
      [hadoop@hadoop01 config]$ scp -r /home/hadoop/core/kafka_2.11-1.1.0/ hadoop03:/home/hadoop/core
      
       注意:要修改$KAFKA_HOME/config/server.properties 文件中的对应 broker 节点的信息,主要是以下三个:

broker.id=your broker id

host.name= your broker hostname 

advertised.listeners=PLAINTEXT:// your broker hostname:9092
 
5)配置环境变量(kafka所有安装节点都需配置环境变量)
 
      [hadoop@hadoop01 config]$ vim ~/.bashrc
export KAFKA_HOME=/home/hadoop/core/kafka_2.11-1.1.0
export PATH=$PATH:$KAFKA_HOME/bin

      [hadoop@hadoop01 config]$ source ~/.bashrc

 6)启动集群

  • 先启动zookeeper集群
  • 顺序启动kafka集群
#启动kafka集群
nohup kafka-server-start.sh -daemon \
/home/hadoop/core/kafka_2.11-1.1.0/config/server.properties \
1>/home/hadoop/logs/kafka/kafka_std.log \
2>/home/hadoop/logs/kafka/kafka_err.log &

#关闭kafka集群
kafka-server-stop.sh stop

Kafka 的各种 Shell 操作

1、启动集群每个节点的进程

nohup kafka-server-start.sh \
/home/hadoop/core/kafka_2.11-1.1.0/config/server.properties \
1>~/logs/kafka/kafka_std.log \
2>~/logs/kafka/kafka_err.log &

2、创建 topic

kafka-topics.sh \
--create \
--zookeeper hadoop01:2181,hadoop02:2181,hadoop03:2181 \
--replication-factor 3 \
--partitions 10 \
--topic kafka_test

  参数解释: 

  • --create 创建kafka topic 
  • --zookeeper hadoop01:2181,hadoop02:2181,hadoop03:2181 指定kafka的zookeeper地址 
  • --partitions 指定分区的个数 
  • --replication-factor 指定每个分区的副本个数

3、查看kafka已经创建的所有topic

kafka-topics.sh \
--list \
--zookeeper hadoop01:2181,hadoop02:2181,hadoop03:2181

4、查看某个指定的 kafka topic 的详细信息

kafka-topics.sh \
--zookeeper hadoop01:2181,hadoop02:2181,hadoop03:2181 \
--describe \
--topic kafka_test

 

5、开启生产者模拟生成数据

kafka-console-producer.sh \
--broker-list hadoop01:9092,hadoop02:9092,hadoop03:9092 \
--topic kafka_test

6、开启消费者模拟消费数据

kafka-console-consumer.sh \
--zookeeper hadoop01:2181,hadoop02:2181,hadoop03:2181 \
--from-beginning \
--topic kafka_test

  

注意:出现上面的提示是因为,Kafka 从 2.2 版本开始将 kafka-topic.sh 脚本中的 −−zookeeper 参数标注为 “过时”,推荐使用 −−bootstrap-server 参数,所以建议将 --zookeeper 参数及其值手动替换为--bootstrap-server,一定要注意两者参数值所指向的集群地址是不同的,−−zookeeper指向的是zk集群地址,而--bootstrap-server指向的是kafka集群地址

kafka-console-consumer.sh \
--bootstrap-server hadoop01:9092,hadoop02:9092,hadoop03:9092 \
--from-beginning \
--topic kafka_test

7、查看某 topic 某个分区的偏移量最大值和最小值

kafka-run-class.sh \
kafka.tools.GetOffsetShell \
--topic kafka_test \
--time -1 \
--broker-list hadoop01:9092,hadoop02:9092,hadoop03:9092 \
--partitions 1

 

8、增加 topic 分区数

kafka-topics.sh \
--alter \
--zookeeper hadoop01:2181,hadoop02:2181,hadoop03:2181 \
--topic kafka_test \
--partitions 20

9、删除 Topic

kafka-topics.sh \
--delete \
--zookeeper hadoop01:2181,hadoop02:2181,hadoop03:2181 \
--topic kafka_test

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值