准备工作

  Kafka集群是把状态保存在Zookeeper中的,首先要搭建Zookeeper集群。由于我们之前的分布式系统中已经安装zookeeper服务,这里不进行zookeeper安装教程以及应用教程图解。台中超过两台超过半数,允许1台挂掉 ,是否可以用偶数,其实没必要。如果有四台那么挂掉一台还剩下三台服务器,如果在挂掉一个就不行了,这里记住是超过半数。

集群搭建

软件环境

  • linux一台或多台,大于等于2
  • 已经搭建好的zookeeper集群
  • kafka_2.10-0.10.1.0或以上稳定版本

创建目录并下载安装

1.创建目录

cd /usr/fuyou/ #进入服务器目录

mkdir kafka #创建项目目录

cd kafka #进入kafka目录

mkdir kafkalogs #创建kafka消息目录,主要存放kafka消息

2.下载软件

wget  http://apache.opencas.org/kafka/0.9.0.1/kafka_2.10-0.10.1.0.tgz

3.解压软件

tar -zxvf kafka_2.10-0.10.1.0.tgz

修改配置文件

1.进入config目录

cd /usr/fuyou/kafka/kafka_2.11-0.9.0.1/config/

2.主要修改server.properties配置文件

#########################参数解释##############################

broker.id=0  #当前机器在集群中的唯一标识,和zookeeper的myid性质一样

port=9092

host.name=192.168.7.100 #这个参数默认是关闭的,在0.8.1有个bug,DNS解析问题,失败率的问题。

num.network.threads=3 #这个是borker进行网络处理的线程数

num.io.threads=8 #这个是borker进行I/O处理的线程数

log.dirs=/opt/kafka/kafkalogs/ #消息存放的目录,这个目录可以配置为“,”逗号分割的表达式,上面的num.io.threads要大于这个目录的个数这个目录,如果配置多个目录,新创建的topic他把消息持久化的地方是,当前以逗号分割的目录中,那个分区数最少就放那一个

socket.send.buffer.bytes=102400 #发送缓冲区buffer大小,数据不是一下子就发送的,先回存储到缓冲区了到达一定的大小后在发送,能提高性能

socket.receive.buffer.bytes=102400 #kafka接收缓冲区大小,当数据到达一定大小后在序列化到磁盘

socket.request.max.bytes=104857600 #这个参数是向kafka请求消息或者向kafka发送消息的请请求的最大数,这个值不能超过java的堆栈大小

num.partitions=1 个分区数

log.retention.hours=168 小时,7天

message.max.byte=5242880  #消息保存的最大值5M

default.replication.factor=2  #kafka保存消息的副本数,如果一个副本失效了,另一个还可以继续提供服务

replica.fetch.max.bytes=5242880  #取消息的最大直接数

log.segment.bytes=1073741824 #这个参数是:因为kafka的消息是以追加的形式落地到文件,当超过这个值的时候,kafka会新起一个文件

log.retention.check.interval.ms=300000 毫秒去检查上面配置的log失效时间(log.retention.hours=168 ),到目录查看是否有过期的消息如果有,删除

log.cleaner.enable=false #是否启用log压缩,一般不用启用,启用的话可以提高性能

zookeeper.connect=192.168.7.100:12181,192.168.7.101:12181,192.168.7.107:1218 #设置zookeeper的连接端口

#########################参数解释##############################

#########################参数修改##############################

broker.id=0  #每台服务器的broker.id都不能相同

host.name=192.168.7.100 #hostname

#在log.retention.hours=169下面新增下面三项

message.max.byte=5242880

default.replication.factor=2

replica.fetch.max.bytes=5242880

#设置zookeeper的连接端口

zookeeper.connect=192.168.7.100:12181,192.168.7.101:12181,192.168.7.107:12181

#########################参数修改##############################

启动kafka

启动kafka之前要启动对应的zk集群

1.启动服务

台都需要启动)

cd /usr/fuyou/kafka/kafka_2.11-0.9.0.1/bin

#进入到kafka的bin目录

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

2.检查kafka是否启动

#执行命令jps

20348 Jps

4233 QuorumPeerMain

18991 Kafka

3.创建topic来验证是否创建成功

#创建Topic

./kafka-topics.sh --create --zookeeper 192.168.7.100:2181 --replication-factor 2 --partitions 1 --topic shuaige

--replication-factor 2   #复制两份

--partitions 个分区

--topic #主题为shuaige

(以下部分我们在代码部分实现功能)

'''在一台服务器上创建一个发布者'''#创建一个broker,发布者

./kafka-console-producer.sh --broker-list 192.168.7.100:19092 --topic shuaige

'''在一台服务器上创建一个订阅者'''

./kafka-console-consumer.sh --zookeeper localhost:12181 --topic shuaige --from-beginning

4.查看其他命令

4.1 查看topic

./kafka-topics.sh --list --zookeeper localhost:12181

#就会显示我们创建的所有topic

4.2 查看topic状态

./kafka-topics.sh --describe --zookeeper localhost:12181 --topic shuaige

#下面是显示信息

Topic: ssports    PartitionCount:1    ReplicationFactor:2    Configs:

Topic: shuaige    Partition: 0    Leader: 1    Replicas: 0,1    Isr: 1

#分区为为1  复制因子为2   他的  shuaige的分区为0

,1

日志说明

  kafka的日志是保存在/usr/fuyou/kafka/kafka_2.10-0.10.1.0/logs目录下的

server.log #kafka的运行日志

state-change.log  #kafka他是用zookeeper来保存状态,所以他可能会进行切换,切换的日志就保存在这里

controller.log #kafka选择一个节点作为“controller”,当发现有节点down掉的时候它负责在游泳分区的所有节点中选择新的leader,这使得Kafka可以批量的高效的管理所有分区节点的主从关系。如果controller down掉了,活着的节点中的一个会备切换为新的controller.

Kafka删除相关

从kafka 0.8.2.1开始可以直接删除topic

步骤如下:
1.在kafka配置文件中添加删除参数
delete.topic.enable=true

2.利用命令删除需要删除的topic
./kafka-topics.sh --delete --zookeeper localhost:2181 --topic mytest

Kafka在Linux环境下搭建过程的更多相关文章

  1. 在Linux 环境下搭建 JDK 和 Tomcat

      在Linux 环境下搭建 JDK 和 Tomcat 参考地址:http://www.cnblogs.com/liulinghua90/p/4661424.html   [JDK安装] 1.首先下载 ...

  2. ​Linux环境下搭建禅道管理工具-包含软件资源

    ​Linux环境下搭建禅道管理工具 1:百度云盘下载: 禅道--链接: https://pan.baidu.com/s/1Stu7nOZVIPO5TnpJWjWtiQ 提取码:dnik CentOs操 ...

  3. Linux环境下搭建Tomcat+mysql+jdk

    Linux环境 1.下载并安装一个VMware workstation, 这个是虚拟机的平台(自行度娘下载~),虚拟机是在后面要在里面搭建Linux系统. 2.下载一个centos安装包,linux版 ...

  4. linux环境下搭建环境发布web项目

    在公司真是学习了一下项目环境在linux下搭建和发布的过程,这是每个程序员都应该掌握的一个技能,将整理下为以后温习用,也乐于和为掌握这些技能的猿分享: 这里主要分为5部分:1.安装jdk,并配置环境变 ...

  5. 在Linux环境下搭建Tomcat+mysql+jdk环境

    按照下面的步骤一步一步来搭建tomcat+jdk+mysql环境.   [Linux环境]------我搭建的是64位centos版本的linux系统 1.下载并安装一个VMware workstat ...

  6. linux环境下搭建jenkins实现自动部署

    写在前面:公司项目初期,环境一切从始.因此,项目的发布环境需要自己搭建.就动手搭建了jenkins,在此把个人的搭建过程以及搭建中碰到的问题一起总结一下. 1. 准备环境. 首先,需要jdk是必须要安 ...

  7. Windows和Linux环境下搭建SVN服务器

    --------------------------Windows下搭建SVN服务器----------------------------- 一.安装SVN服务端 软件包Setup-Subversi ...

  8. linux环境下搭建MySQL

    linux下搭建mysql的方式很多,网上也详解了很多种搭建方式,有直接yum的.有rpm的..总之,“坑”是层出不穷,有相关文件依赖性.权限.GPG keys等等. 本人也在今天搭建了一下.是出“坑 ...

  9. Linux环境下搭建php开发环境的操作步骤

    本文主要记载了通过编译方式进行软件/开发环境的安装过程,其他安装方式忽略! 文章背景: 因为php和Apache等采用编译安装方式进行安装,然而编译安装方式,需要c,c++编译环境, 通过apt方式安 ...

随机推荐

  1. 使用markdown语法撰写csdn博客

    在CSDN之下写blog无疑是一件非常吃力的事情,对于非常多simple爱好者来讲,能用markdown语法来书写代码是最优雅简洁只是的了.本文主要介绍markdown语法和怎样它来撰写csdn下的b ...

  2. js计算日期天数差-2013-9-26

    function daymath(sdate, edate) {             var startdate = sdate;             var enddate = edate; ...

  3. Hibernate自增列保存失败的问题

    author: hiu 更正说明:今天(2014-07-07)才发现的问题,我把@Id设置在了实体类中的id中,@Id是主键,应该设置在实体类的keyjobno中,之前发的文章可能误导了大家,如今更正 ...

  4. JavaScript 之 call apply bind

    关键字 this 绑定的方法 this的动态切换,固然为JavaScript创造了巨大的灵活性,但也使得编程变得困难和模糊.有时,需要把this固定下来,避免出现意想不到的情况.JavaScript提 ...

  5. 【转】Objective-C消息机制的原理

    转自:http://dangpu.sinaapp.com/?p=119 在Objective-C中,message与方法的真正实现是在执行阶段绑定的,而非编译阶段.编译器会将消息发送转换成对objc_ ...

  6. javascript解决for循环中i取值的问题(转载)

    html: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF ...

  7. CentOS 6.5 伪分布式 安装 hadoop 2.6.0

    安装 jdk -openjdk* 检查安装:java -version 创建Hadoop用户,设置Hadoop用户使之可以免密码ssh到localhost su - hadoop ssh-keygen ...

  8. NSArray使用小结

    http://blog.csdn.net/ms2146/article/details/8654263

  9. hdu2588 gcd 欧拉函数

    GCD Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submiss ...

  10. Hbase常见异常

    1. HBase is able to connect to ZooKeeper but the connection closes immediately hbase(main):001:0> ...