1、Kafka集群部署

1.1集群部署的基本流程

下载安装包、解压安装包、修改配置文件、分发安装包、启动集群

1.2集群部署的基础环境准备

安装前的准备工作(zk集群已经部署完毕) 
 关闭防火墙

chkconfig iptables off  && setenforce 0

 创建用户

groupadd kafka && useradd kafka && usermod -a -G kafka kafka

 创建工作目录并赋权

mkdir -p /home/tuzq/software/kafka mkdir -p /home/tuzq/software/kafka/servers chmod 755 -R /home/tuzq/software/kafka

 切换到kafka用户下 
su kafka (本次实验,笔者使用root用户,即模拟在root下的安装。实际生产环境安装时请在指定用户下安装)

1.3 Kafka集群部署

1.3.1、下载安装包

http://kafka.apache.org/downloads.html 
在linux中使用wget命令下载

wget http://mirrors.hust.edu.cn/apache/kafka/0.8.2.2/kafka_2.11-0.8.2.2.tgz

1.3.2、解压安装包

tar -zxvf /home/tuzq/software/kafka_2.11-0.9.0.1.tgz -C /home/tuzq/software/kafka/servers/
cd /home/tuzq/software/kafka/servers/
ln -s kafka_2.11-0.9.0.1 kafka

修改kafka的环境变量

vim /etc/profile
在文件的最底部写上:
#set kafka env
export KAFKA_HOME=/home/tuzq/software/kafka/servers/kafka
export PATH=$PATH:$KAFKA_HOME/bin

保存,然后执行:

source /etc/profile

1.3.3、修改配置文件

[root@hadoop1 kafka]# cp /home/tuzq/software/kafka/servers/kafka/config/server.properties
/home/tuzq/software/kafka/servers/kafka/config/server.properties.bak
[root@hadoop1 kafka]# vim /home/tuzq/software/kafka/servers/kafka/config/server.properties

输入以下内容:

#broker的全局唯一编号,不能重复
broker.id=0 ##用来监听链接的端口,producer或consumer将在此端口建立连接
port=9092 # 处理网络请求的线程数量
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=/home/tuzq/software/kafka/servers/logs/kafka # topic在当前broker上的分片个数
num.partitions=2 # 用来恢复和清理data下数据的线程数量
num.recovery.threads.per.data.dir=1 # segment文件保留的最长时间,超时将被删除
log.retention.hours=168 #滚动生成新的segment文件的最大时间
log.roll.hours=168 # 日志文件中每个segment的大小,默认为1G
log.segment.bytes=1073741824 # 周期性检查文件的时间,这里是300秒,即5分钟
log.retention.check.interval.ms=300000 ##日志清理是否打开
log.cleaner.enable=true #broker需要使用zookeeper保存meta数据
zookeeper.connect=hadoop11:2181,hadoop12:2181,hadoop13:2181 # zookeeper链接超时时间
zookeeper.connection.timeout.ms=6000 # partition buffer中,消息的条数达到阈值,将触发flush到磁盘
log.flush.interval.messages=10000 # 消息buffer的时间,达到阈值,将触发flush到磁盘
log.flush.interval.ms=3000 #删除topic需要server.properties中设置delete.topic.enable=true否则只是标记删除
delete.topic.enable=true #此处的host.name为本机IP(重要),如果不改,则客户端会抛出:Producer connection to localhost:9092 unsuccessful 错误! (如果是hadoop2机器,下面配置成hadoop2)
host.name=hadoop1 #外网访问配置(如果是hadoop2的,下面是192.168.106.92)
advertised.host.name=192.168.106.91

1.3.4、分发安装包

将包分发到hadoop2和hadoop3上

[root@hadoop1 software]# pwd
/home/tuzq/software
[root@hadoop1 software]# scp -r kafka root@hadoop2:$PWD
[root@hadoop1 software]# scp -r kafka root@hadoop3:$PWD

然后分别在hadoop1机器上创建软连

[root@hadoop2 software]# cd /home/tuzq/software/kafka/servers/
[root@hadoop2 servers]# ls
kafka kafka_2.11-0.9.0.1
[root@hadoop2 servers]# rm -rf kafka
[root@hadoop2 servers]# ln -s kafka_2.11-0.9.0.1 kafka
[root@hadoop2 servers]#

在hadoop2上修改配置

[root@hadoop3 servers]# cd /home/tuzq/software/kafka/servers/
[root@hadoop3 servers]# ls
kafka kafka_2.11-0.9.0.1
[root@hadoop3 servers]# rm -rf kafka
[root@hadoop3 servers]# ls
kafka_2.11-0.9.0.1
[root@hadoop3 servers]# ln -s kafka_2.11-0.9.0.1 kafka
[root@hadoop3 servers]# ls
kafka kafka_2.11-0.9.0.1
[root@hadoop3 servers]#

修改kafka的环境变量

vim /etc/profile
在文件的最底部写上:
#set kafka env
export KAFKA_HOME=/home/tuzq/software/kafka/servers/kafka
export PATH=$PATH:$KAFKA_HOME/bin

保存,然后执行:

source /etc/profile

1.3.5、再次修改配置文件(重要)

依次修改各服务器上配置文件的的broker.id,分别是0,1,2不得重复。

1.3.6、启动集群(注意在三台服务器上都要执行下面的命令)

依次在各节点上启动kafka 
cd $KAFKA_HOME 
bin/kafka-server-start.sh config/server.properties

让kafka后台运行:

[root@hadoop1 kafka]# bin/kafka-server-start.sh config/server.properties 1>/dev/null 2>&1 &
[1] 9412
[root@hadoop1 kafka]# jps
4624 DataNode
4241 DFSZKFailoverController
9475 Jps
9412 Kafka
5093 NodeManager
3981 JournalNode
4974 ResourceManager
4095 NameNode
[root@hadoop1 kafka]#

从上面可以看出有一个kafka进程 9412 Kafka

停止kafka的命令:

[root@hadoop1 kafka]# bin/kafka-server-stop.sh config/server.properties

kafka-broker配置文件

kafka-producer配置文件

kafka-consumer配置文件

Kafka集群部署 (守护进程启动)的更多相关文章

  1. 分布式消息系统之Kafka集群部署

    一.kafka简介 kafka是基于发布/订阅模式的一个分布式消息队列系统,用java语言研发,是ASF旗下的一个开源项目:类似的消息队列服务还有rabbitmq.activemq.zeromq:ka ...

  2. zookeeper集群+kafka集群 部署

    zookeeper集群 +kafka 集群部署 1.Zookeeper 概述: Zookeeper 定义 zookeeper是一个开源的分布式的,为分布式框架提供协调服务的Apache项目 Zooke ...

  3. kafka 集群部署 多机多broker模式

    kafka 集群部署 多机多broker模式 环境IP : 172.16.1.35   zookeeper   kafka 172.16.1.36   zookeeper   kafka 172.16 ...

  4. Zookeeper+Kafka集群部署(转)

    Zookeeper+Kafka集群部署 主机规划: 10.200.3.85  Kafka+ZooKeeper 10.200.3.86  Kafka+ZooKeeper 10.200.3.87  Kaf ...

  5. 3、Kafka集群部署

    Kafka集群部署 1)解压安装包 [ip101]$ tar -zxvf kafka_2.11-0.11.0.0.tgz -C /opt/app/ 2)修改解压后的文件名称 [ip101]$ mv k ...

  6. Zookeeper+Kafka集群部署

    Zookeeper+Kafka集群部署 主机规划: 10.200.3.85  Kafka+ZooKeeper 10.200.3.86  Kafka+ZooKeeper 10.200.3.87  Kaf ...

  7. Kafka集群部署以及使用

    Kafka集群部署 部署步骤 hadoop102 hadoop103 hadoop104 zk zk zk kafka kafka kafka http://kafka.apache.org/down ...

  8. 4 kafka集群部署及kafka生产者java客户端编程 + kafka消费者java客户端编程

    本博文的主要内容有   kafka的单机模式部署 kafka的分布式模式部署 生产者java客户端编程 消费者java客户端编程 运行kafka ,需要依赖 zookeeper,你可以使用已有的 zo ...

  9. 基于Centos7xELK+Kafka集群部署方案

    本次集群部署使用ELK版本统一为6.8.10,kafka为2.12-2.51 均可在官网下载 elasticsearch下载地址:https://www.elastic.co/cn/downloads ...

随机推荐

  1. 关于lockkeyword

    线程同步对象keywordlock,是以lock相应的object对象为准,即随意线程lock住lockObj对象之后,其它线程不管在其它不论什么代码段使用lock(lockObj)去进行线程同步时, ...

  2. Unity3d之Perfab

    对于重复使用的游戏体可以将其制作成Perfab.首先在Project窗口中选择[Create]-[Prefab]创建一个空的Perfab.然后将该重复使用的游戏体拖到这个空的Perfab上就OK了. ...

  3. 【Java集合的详细研究7】Set和List 的关系与区别

    两个接口都是继承自Collection. List (inteface) 次序是List 的最重要特点,它确保维护元素特定的顺序. --ArrayList 允许对元素快速随机访问. --LinkedL ...

  4. php HTML安全过滤

    /*HTML安全过滤*/ function _htmtocode($content) { $content = str_replace('%','%‎',$content); $content = s ...

  5. Hyperic-Sigar简介

    Hyperic-Sigar是一个收集系统各项底层信息的工具集.他有如下特点:1. 收集信息全面收集CPU,MEM,NETWORK,PROCESS,IOSTAT等使用Sigar,你完全可以模仿出cpui ...

  6. .net cs后台刷新aspx页面的四种方式

    一:Response.Redirect(Request.Url.ToString()); 二:Response.Write("<script language=javascript&g ...

  7. jQuery对象的链式操作用法分析

    可以使用下面的原则判断一个函数返回的时候是jQuery对象,即是否可以用于链式操作. 除了获取某些数据的函数,比如获取属性值"attr(name)",获取集合大小"siz ...

  8. Java精选笔记_EL表达式

    EL表达式 初始EL EL是一种可以简化JSP页面的表达式,EL表达式的语法非常简单都是以"${"符号开始,以"}"符号结束的 EL表达式是一种简单的数据&qu ...

  9. python使用sqlalchemy连接pymysql数据库

    python使用sqlalchemy连接mysql数据库 字数833 阅读461 评论0 喜欢1 sqlalchemy是python当中比较出名的orm程序. 什么是orm? orm英文全称objec ...

  10. Gamma编码及Delta编码概述

    一.Elias Gamma Coding 即Gamma编码,是一种对正整数进行编码的统一编码,由Peter Elias发明.适用于预先无法获知最大编码整数的情况,而且小整数出现频率高,大整数出现频率低 ...