`
Josh_Persistence
  • 浏览: 1635717 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类

Kafka 集群构建

阅读更多

最近要做实时计算相关的东西,目前每天约100G日志,还在不断增长,高峰时一天400G日志。

考虑过flume+activemq+storm+redis+hadoop, 考虑用kafka做mq的备用方案。

我这里用了公司的三台机器
192.168.197.170
192.168.197.171
192.168.197.172
一. Zookeeper集群构建

ZooKeeper集群中具有两个关键的角色:Leader和Follower。集群中所有的结点作为一个整体对分布式应用提供服务,集群中每个结点之间都互相连接。

ZooKeeper采用一种称为Leader election的选举算法。在整个集群运行过程中,只有一个Leader,其他的都是Follower,如果ZooKeeper集群在运行过程中Leader出了问题,系统会采用该算法重新选出一个Leader。

ZooKeeper集群启动的时候,会首先选出一个Leader,在Leader election过程中,某一个满足选举算的结点就能成为Leader。

可以使用自带的zookeeper.
命令:$nohup bin/zookeeper-server-start.sh config/zookeeper.properties &   
不过我选择了自己搭建zookeeper集群。
 
下载并解压zookeeper.
修改$zookeeper_home/conf 下面的配置文件
 
cp zoo_simple.cfg zoo.cfg
内容修改为
dataDir=/usr/local/tmp/zookeeper
clientPort=2181
server.170=192.168.197.170:2888:3888
server.171=192.168.197.171:2888:3888
server.172=192.168.197.172:2888:3888
 
在我们配置的dataDir指定的目录下面,创建一个myid文件,里面内容为一个数字,用来标识当前主机,conf/zoo.cfg文件中配置的server.X中X为什么数字,则myid文件中就输入这个数字,例如:
  1. $ echo "170" >  /usr/local/tmp/zookeeper/myid
bin/zkServer.sh start 启动zookeeper
 
 
 
二. Kafka集群构建
 
1. 下载并解压Kafka
看官方文档里介绍,先得构建scala环境, 但是我自己没有执行下面的操作,居然也能运行,有点莫名其妙,
> tar xzf kafka-<VERSION>.tgz
> cd kafka-<VERSION>
> ./sbt update
> ./sbt package
> ./sbt assembly-package-dependency
 
2. 修改配置文件
修改 conf/server.properties
 
zookeeper.connect=192.168.197.170:2181,192.168.197.171:2181,192.168.197.172:2181
 
broker.id分别改成
broker.id=170
broker.id=171
broker.id=172
host.name分别改成(如果不改,client访问集群时,如果没在hosts配置对应机器的 hostname,访问将会报错)
host.name=192.168.197.170
host.name=192.168.197.171
host.name=192.168.197.172
可根据需求修改
port: broker节点使用端口号 默认 9092
log.dir: 消息目录位置
 
3. 启动Kafka
cd /usr/local/kafka_2.8.0-0.8.0
JMX_PORT=9999 bin/kafka-server-start.sh config/server.properties &
 
4. 创建Topic并查看
bin/kafka-create-topic.sh --zookeeper 192.168.197.170:2181 --partition 1 --topic leo-test
bin/kafka-list-topic.sh --zookeeper 192.168.197.170:2181
topic: leo-test partition: 0 leader: 171 replicas: 171 isr: 171
说明:
partiton: partion id,由于此处只有一个partition,因此partition id 为0
leader:当前负责读写的lead broker id
relicas:当前partition的所有replication broker list
isr:relicas的子集,只包含出于活动状态的broker
 
bin/kafka-create-topic.sh --zookeeper 192.168.197.170:2181 --replica 2 --partition 2 --topic leo-test2
topic: leo-test partition: 0 leader: 171 replicas: 171 isr: 171
topic: leo-test2 partition: 0 leader: 171 replicas: 171,170 isr: 171,170
topic: leo-test2 partition: 1 leader: 170 replicas: 170,171 isr: 170,171
5.试着干掉一个非leader 的broker,然后在干掉leader broker,看看会有什么情况发生。
命令:
pkill -9 -f server.properties
 
 
 
安装过程遇到的问题:
1. kafka启动后提示
Unrecognized VM option '+UseCompressedOops'
Could not create the Java virtual machine.
开始以为是内存大小的问题, 后来发现不是,是JDK的问题, 我用的32位centos,jdk1.6_24,  换成JDK1.7依然报错。
查看 bin/kafka-run-class.sh 
找到
if [ -z "$KAFKA_JVM_PERFORMANCE_OPTS" ]; then
  KAFKA_JVM_PERFORMANCE_OPTS="-server  -XX:+UseCompressedOops -XX:+UseParNewGC -XX:+UseConcMarkSweepGC -XX:+CMSClassUnloadingEnabled -XX:+CMSScavengeBeforeRemark -XX:+DisableExplicitGC -Djava.awt.headless=true"
fi
去掉-XX:+UseCompressedOops
JMX_PORT=9999 bin/kafka-server-start.sh config/server.properties &
启动成功
 
分享到:
评论

相关推荐

    Kafka集群部署手册1

    Kafka配置构建创建文件在130、131、132服务器rm -rf /opt/deploy/data/kafka && mkdir -p /opt/deplo

    bitnami版本的zookeeper和kafka的docker-compose配置

    这个Docker Compose 文件定义了一个包含Zookeeper和三个Kafka节点的服务集群。通过指定镜像、端口映射、环境变量和依赖关系等配置,实现了Zookeeper和Kafka的快速部署和集成。同时,在定义了一个名为"mynetwork"的...

    kafka-manager-2.0.0.2.zip

    为了简化开发者和服务工程师维护Kafka集群的工作,yahoo构建了一个叫做Kafka管理器的基于Web工具,叫做 Kafka Manager。这个管理工具可以很容易地发现分布在集群中的哪些topic分布不均匀,或者是分区在整个集群分布...

    Java实现Kafka数据生产者

    "Java实现Kafka数据生产者"这个功能可以让你使用Java编程语言创建一个能够连接到指定的Kafka集群(通过bootstrap servers)并向其中发送数据的应用程序。通过这个功能,你可以将数据以消息的形式发送到Kafka主题中,...

    kafka权威指南工具书

    可以完美匹配大数据平台开发,Kafka内部设计详解,用Kafka构建应用的最佳实践,理解在生产中部署Kafka的最佳方式,如何确保Kafka集群的安全。

    kafka 权威指南 (中文,高清)

    本书是关于Kafka的全面教程。 主要内容包括: 1)Kafka相对于其他消息队列系统的优点,主要是它如何匹配...如何确保Kafka集群的安全。 本书适合Java开发人员、大数据平台开发人员以及对分布式系统感兴趣的读者阅读

    Kafka The Definitive Guide.pdf

    负责开发Kafka的CONFLUENT和LinkedIn的工程师解释了如何部署生产Kafka集群,编写可靠的事件驱动的微服务,以及在这个平台上构建可伸缩的流处理应用程序。通过详细的示例,您将了解Kafka的设计原则、可靠性保证、关键...

    Kafka最新Ubuntu安装包

    kafka_2.13-3.5.0.tgz 是Apache Kafka的一个特定版本,针对Scala 2.13构建。Apache Kafka是一个开源的流...部署后,您可以设置Kafka集群,生产和消费消息,以及使用Kafka的其他高级功能,如流处理、连接外部系统等。

    kafka权威指南(中文目录版)

    本书是关于Kafka的全面教程,主要内容包括:Kafka相对于其他消息队列系统的优点,主要是它如何匹配大数据...如何确保Kafka集群的安全。 本书适合Java开发人员、大数据平台开发人员以及对分布式系统感兴趣的读者阅读。

    kafka权威指南2018(中文版、高清、书签)

    Kafka权威指南电子书PDF中文版完整版是关于Kafka的全面教程,主要内容包括:Kafka相对于其他消息队列系统的优点,主要是它如何匹配大数据平台开发;详解Kafka内部设计;...如何确保Kafka集群的安全。

    kafka-权威指南(完整版高清)

    本书是关于Kafka的全面教程,主要内容包括:Kafka相对于其他消息队列系统的优点,主要是它如何完美匹配大数据平台开发;详解Kafka内部设计;用Kafka构建应用的最佳实践;...如何确保Kafka集群的安全。

    BurrowUI:这是用于通过Burrow进行Kafka集群监视的NodeJSAngular 2前端UI

    这是用于使用监视Kafka集群的NodeJS / Angular 6前端UI。 同样,该项目被用作支持工具,以建立在linkedin团队已经完成的艰苦工作之上。 与Docker搭配使用 获取最新的Docker映像 docker pull generalmills/burrowui ...

    kafka-lag-exporter:使用 Kafka Lag Exporter 监控 Kafka 消费者组延迟

    卡夫卡滞后出口商 使用 Kafka Lag Exporter 监控 Kafka 消费者组... 它可以在任何地方运行,但它提供了使用Prometheus和Grafana监控堆栈在Kubernetes集群上针对Strimzi Kafka 集群轻松运行的功能。 Kafka Lag Exporter

    kafka-rest:用于Kafka的融合REST代理

    Kafka REST代理为Kafka集群提供了RESTful接口。 它使生成和使用消息,查看群集状态以及执行管理操作变得很容易,而无需使用本机Kafka协议或客户端。 用例示例包括从使用任何语言构建的任何前端应用向Kafka报告数据,...

    Scaling-Kafka-nodes:该手册用于添加从现有的Zookeeper-经纪人集群中删除kafka代理节点

    使用ANSI缩放KAFKA节点: 该手册用于从现有的zookeeper-kafka集群中添加/删除kafka代理节点。 可以使用构建初始的kafka多节点集群。如何使用: 在此版本中,它假设您在选择运行ansible剧本之前已在云或本地基础结构...

    spring-boot-kafka-websocket:Spring Boot Kafka Websocket演示

    项目介绍一个例子,使用 spring boot 构建一个应用,从 kafka 队列中获取要推送的内容,通过`websocket`将内容推送到`web`端。项目依赖安装项目依赖kafkazookeeperzookeeper 安装解压, 进入 conf将 zoo_sample.cfg ...

    kafka权威指南

    身于LinkedIn的Kafka核心作者和一线技术人员共同执笔,详细介绍了如何部署Kafka集群、开发可靠的基于事件驱动的微服务,以及基于Kafka平台构建可伸缩的流式应用程序.

    kafka 权威指南

    主要是它如何完美匹配大数据平台开发it羊解Kafka 内部设计:用Kafka 构建应用的最佳实践, 理解在生产中部署Kafka 的最佳方式:如何确保Kafka 集群的安全。 本书适合Java 开发人员、大数据平台开发人员以及对分布式...

    kafka概述及原理.pdf

    分布式和容错性:Kafka集群由多个Broker组成,这些Broker可以分布在不同的物理或虚拟机上。每个Broker都是独立的,并且可以处理来自生产者和消费者的请求。这种分布式架构使得Kafka具有高可用性,即使部分Broker发生...

Global site tag (gtag.js) - Google Analytics