Kafka之入门级安装部署


1. 下载Kafka安装包

Apache所有项目历史版本镜像地址

Apache Kafka下载地址


2. 解压到指定路径下

本次安装的Kafka为2.1.1版本,注意:压缩包前面的版本号为Scala版本号,而后面的才是Kafka版本号

tar -xzvf kafka_2.11-2.1.1.tgz -C /opt/module/

3. 配置环境变量

通过修改/etc/profile文件设置KAFKA_HOME环境变量,并将bin目录增加到PATH环境变量中

sudo vim /etc/profile

添加以下内容

# Set $KAFKA_HOME
export KAFKA_HOME=/opt/module/kafka_2.11-2.1.1
# Add $KAFKA_HOME/bin to PATH
export PATH=$PATH:$KAFKA_HOME/bin

重新加载profile文件,验证环境变量

source /etc/profile
echo $KAFKA_HOME

4. 修改配置文件config/server.properties

1)设置Broker ID

Kafka集群中每个主机即Broker的ID必须不同

# The id of the broker. This must be set to a unique integer for each broker.
broker.id=0

2)设置Kafka日志以及数据存放路径

此路径设置的日志和数据的共同存储路径,即各种Partition的数据也存储在此路径下

log.dirs=/opt/module/kafka_2.11-2.1.1/logs

3)开启管理工具的删除Topic功能

如果不开启开启此功能,那么使用命令行删除Topic时只会是标记删除,实际上并未删除,当再次创建同名Topic时就会报错无法创建

delete.topic.enable=true

4)配置Zookeeper集群

Zookeeper服务器集群的客户端端口要与Zookeeper中配置的端口一致

zookeeper.connect=zkServer1:2181,zkServer2.2181,zkServer3.2181

5)具体配置

#broker的全局唯一编号,不能重复
broker.id=1
#删除topic功能使能
delete.topic.enable=true
#处理网络请求的线程数量
num.network.threads=3
#用来处理磁盘IO的现成数量
num.io.threads=8
#发送套接字的缓冲区大小
socket.send.buffer.bytes=102400
#接收套接字的缓冲区大小
socket.receive.buffer.bytes=102400
#请求套接字的缓冲区大小
socket.request.max.bytes=104857600
#kafka运行日志存放的路径	
log.dirs=/opt/module/kafka_2.11-2.1.1/logs
#topic在当前broker上的分区个数
num.partitions=1
#用来恢复和清理data下数据的线程数量
num.recovery.threads.per.data.dir=1
#segment文件保留的最长时间,超时将被删除
log.retention.hours=168
#log segment滚动条件:文件大小
log.segment.bytes=1073741824
#周期性检查log segment文件是否可以删除
log.retention.check.interval.ms=300000
#配置连接Zookeeper集群地址
zookeeper.connect=hadoop102:2181,hadoop103:2181,hadoop104:2181
#zookeeper连接认定超时时间
zookeeper.connection.timeout.ms=6000
#设置rebalance的延迟时间
group.initial.rebalance.delay.ms=0

6)测试

启动当前主机Kafka

bin/kafka-server-start.sh config/server.properties

关闭当前主机Kafka

bin/kafka-server-stop.sh

7)将Kafka分发给其他主机并修改对应的Broker ID即可

scp -r /opt/module/kafka_2.11-2.1.1 hadoop102:/opt/module/
scp -r /opt/module/kafka_2.11-2.1.1 hadoop103:/opt/module/

8)编写脚本控制Kafka集群

编写Kafka群起脚本,通过脚本控制Kafka集群。此处提供脚本模板,仅供参考,具体使用之前记得更改其中Kafka安装路径,以及实现主机间ssh免密登录或者更改ssh命令指定每次连接时使用的私钥

# 此脚本用于启动/停止Kafka集群
# 输入的参数只能为start/stop

# 判断参数个数
if (($# > 1)); then
    echo "Wrongs parameters!"
    exit 1
fi

# 获取当前时间(相对时间)
start_time=$(date +%s)
# 获取操作方式
operation=$1
# 设置Kafka集群
cluster=${KAFKA_CLUSTER:-"hadoop101 hadoop102 hadoop103"}

# 对kafka集群进行对应的操作
case "$operation" in
start)
    echo "----------Starting kafka cluster----------"
    for host in $cluster; do
        echo "----------Starting kafka in [$host]----------"
        ssh $host "source /etc/profile;
        KAFKA_HOME=\${KAFKA_HOME:-'/opt/module/kafka_2.11-2.1.1'};
        cd \$KAFKA_HOME;
        nohup ./bin/kafka-server-start.sh config/server.properties > /dev/null 2>&1 &
        "
    done
    ;;
stop)
    echo "----------Stopping kafka cluster----------"
    for host in $cluster; do
        echo "----------Starting kafka in [$host]----------"
        ssh $host "source /etc/profile;
        KAFKA_HOME=\${KAFKA_HOME:-'/opt/module/kafka_2.11-2.1.1'};
        cd \$KAFKA_HOME;
        ./bin/kafka-server-stop.sh
        "
    done
    ;;
*)
    echo "Worong Parameter!"
    exit 1
    ;;
esac

# 获取结束时间
end_time=$(date +%s)
execution_time=$((${end_time} - ${start_time}))
echo -e "\n----------$operation kafka in [$cluster] takes ${execution_time} seconds----------\n"

End~

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值