单机简单搭建一个kafka集群(没有进行内核参数和JVM的调优)

1.JDK安装

  在我的部署单节点kafka的博客里有相关的方法。(https://www.cnblogs.com/ToBeExpert/p/9789486.html )zookeeper和kafka的压缩包下载地址也在单节点部署的这篇博客里。

1.zookeeper集群的搭建

  将zookeeper.tar.gz解压为三个目录,例如:

  以上图中的目录结构为例,进入./zookeeper-1/conf。找到zoo.cfg文件,如果没有就复制一份zoo_sample.cfg并将其改名为zoo.cfg,zoo.cfg是zookeeper的配置文件。如下:

  在部署zookeeper集群之前,一定要记得将已经运行的zookeeper节点停止。现在修改zoo.cfg的配置。

# The number of milliseconds of each tick
tickTime=2000
# The number of ticks that the initial 
# synchronization phase can take
initLimit=10
# The number of ticks that can pass between 
# sending a request and getting an acknowledgement
syncLimit=5
# the directory where the snapshot is stored.
# do not use /tmp for storage, /tmp here is just 
# example sakes.
dataDir=/usr/zookeeper/zookeeper-1/zkData
dataLogDir=/usr/zookeeper/zookeeper-1/zkLogs
# the port at which the clients will connect
clientPort=2181# the maximum number of client connections.
# increase this if you need to handle more clients
#maxClientCnxns=60
#
# Be sure to read the maintenance section of the 
# administrator guide before turning on autopurge.
#
# http://zookeeper.apache.org/doc/current/zookeeperAdmin.html#sc_maintenance
#
# The number of snapshots to retain in dataDir
#autopurge.snapRetainCount=3
# Purge task interval in hours
# Set to "0" to disable auto purge feature
#autopurge.purgeInterval=1server.0=172.20.25.100:2890:3890
zoo.cfg

  配置项含义:

tickTime:
这个时间是作为 Zookeeper 服务器之间或客户端与服务器之间维持心跳的时间间隔,也就是每个tickTime时间就会发送一个心跳。
initLimit:
这个配置项是用来配置 Zookeeper 接受客户端(这里所说的客户端不是用户连接 Zookeeper 服务器的客户端,而是 Zookeeper 服务器集群中连接到 Leader 的 Follower 服务器)初始化连接时最长能忍受多少个心跳时间间隔数。当已经超过 5个心跳的时间(也就是tickTime)长度后 Zookeeper 服务器还没有收到客户端的返回信息,那么表明这个客户端连接失败。总的时间长度就是 5*2000=10 秒
syncLimit:
这个配置项标识 Leader 与Follower 之间发送消息,请求和应答时间长度,最长不能超过多少个tickTime的时间长度,总的时间长度就是5*2000=10秒
dataDir:
快照日志的存储路径
dataLogDir:
事物日志的存储路径,如果不配置这个那么事物日志会默认存储到dataDir制定的目录,这样会严重影响zk的性能,当zk吞吐量较大的时候,产生的事物日志、快照日志太多
clientPort:
这个端口就是客户端连接 Zookeeper 服务器的端口,Zookeeper 会监听这个端口,接受客户端的访问请求。如果是单机部署zookeeper集群(伪集群),每一个zookeeper节点的zoo.cfg中的clientPort都要互不相同。server.id=ip:port1:port2:
server.id中的id是一个数字,同一个集群中的id不能重复,它代表这这个节点在集群中的身份,具体的使用方法是,要在dataDir配置所指定的目录下(这个目录必须要存在)创建一个名为myid的文件,假设集群的id为{id1,id2,id3},那么我们可以使用命令:echo "id1">myid,将id1分配给当前的结点,注意这里的{id1,id2,id3}必须是server.id中出现过的id,每个节点被分配的id不能重复。ip指的是集群所在服务器的ip地址,假如是在A、B、C三台物理机上部署集群,其ip分别为ipA、ipB、ipC,那么部署方法是:
server.1=ipA:port1:port2
server.2=ipB:port1:port2
server.3=ipC:port1:port2
在ip的后面紧跟着两个端口,第一个端口是master和slave之间的通信端口,默认是2888,第二个端口是leader选举的端口,集群刚启动的时候选举或者leader挂掉之后进行新的选举的端口默认是3888。单机部署的时候,集群节点列表中的port1、port2互不相同。(你可以把上面的server.1、server.2、server.3视为一个节点列表)

  接下来,进入每个节点的bin目录,例如./zookeeper-1/bin/。然后使用命令:

sh zkServer.sh start

  zookeeper的运行日志保存在bin目录下的zookeeper.out中。如果运行失败,可以查看此文件,找到出错的问题再想办法解决。

  zookeeper集群搭建时不能马上使用sh zkServer.sh status来查看节点的命令,因为zookeeper节点之间还有一系列的工作需要做。你需要在三个结点都启动之后再等一会儿才能使用该命令来检查各个zookeeper节点是否成功启动。

  如上图,Mode:follower表示这是一个从结点,这代表该节点已经启动成功。

  Zookeeper集群搭建完毕之后,可以通过客户端脚本连接到zookeeper集群上面,对客户端来说,zookeeper集群是一个整体,连接到zookeeper集群实际上感觉在独享整个集群的服务。

  在节点1进行测试:执行命令sh zkCli.sh -server IP:port  IP和port是你要连接的目标节点的IP地址和clientport。

  如上图表示已经成功连接到zookeeper集群了,要退出客户端只需要输入quit,回车即可。

3.kafka集群搭建

  下载项目的压缩包,在服务器上创建三个文件夹(单机),每个目录里包含的内容都是一样的,只有配置上会有所不同,如下:

  上面一共有3个目录,依次进入,修改config子目录下broker的配置文件:server.properties。修改完成后,依次进入三个目录的子目录bin目录执行命令:

sh ./bin/kafka-server-start.sh -daemon ./config/server.properties 
#具体的命令执行要看你当时所处的位置

  然后使用jps命令可以查看你的kafka集群是否启动成功。

   搭建kafka集群的操作主要是配置的问题,一个是zookeeper的相关配置,另一个是logs存储路径的配置。其它没什么了。

转载于:https://www.cnblogs.com/ToBeExpert/p/10469253.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/248420.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

[翻译]三张卡片帮你记住TDD的基本原则

原文地址:http://blog.briandicroce.com/2008/03/14/three-index-cards-to-easily-remember-the-essence-of-test-driven-development/ 当我浏览ObjectMentor的博客的时候,其中一篇Tim Ottinger的“TDD on Three Index Cards”引起了我的注意。他回忆了他…

异常 try catch finally return 执行关系 MD

Markdown版本笔记我的GitHub首页我的博客我的微信我的邮箱MyAndroidBlogsbaiqiantaobaiqiantaobqt20094baiqiantaosina.com异常 try catch finally return 执行关系 MD 目录 目录探讨finally语句的执行与return的关系探讨finally语句的执行与return的关系 Java异常捕获机制try.…

Java数据结构之线性表(2)

从这里开始将要进行Java数据结构的相关讲解,Are you ready?Lets go~~ java中的数据结构模型可以分为一下几部分: 1.线性结构 2.树形结构 3.图形或者网状结构 接下来的几张,我们将会分别讲解这几种数据结构,主要也是通过Java代码的…

凉哥核心圈程序员必备十大图书推荐(一)

写在前面 凉哥核心圈程序员必备十大图书推荐(一),各位伙伴应该一目了然了哈,没错凉哥准备出一系列图书推荐的文章,其实很多朋友在私下问凉哥除了大学的课程外自己要不要读一些技术类的书籍呢,答案当时要的…

了解大数据的特点、来源与数据呈现方式

本次作业来源于:https://edu.cnblogs.com/campus/gzcc/GZCC-16SE1/homework/2639 1.浏览2019春节各种大数据分析报告,例如: 这世间,再无第二个国家有能力承载如此庞大的人流量。http://www.sohu.com/a/290025769_313993春节人口迁…

MYSQL中只知表名查询属于哪个SCHEMA

只知道表名XXX查该表属于哪个schema、以及该表有哪些列等信息SELECT * from information_schema.columns WHERE table_name xxx; 只知道列名XXX查哪个schema有该列、以及有列名为XXX的表有哪些等SELECT * from information_schema.columns WHERE column_name XXX;参考链接&am…

ACCESS SQL语法参考

ACCESS SQL语法参考 一. 基础概念 可以使用的数据类型如下: 1. TEXT:文本型(指定长度时),备注型(不指定长度时); 2. CHAR,NCHAR,VARCHAR&#xff0…

强大而优雅,API 研发管理 EOLINKER 新版正式发布!

EOLINKER 于2019年3月3日正式发布新版本!该版本大幅强化各个产品的功能、着重优化了全站的用户交互体验,并且EOLINKER AMS 产品正式更名为 EOLINKER API Studio ——API 工作室,旨在为您提供API文档管理、自动化测试以及开发协作等全方位服务…

关注视聊效果!中星微摄像头对比测试

不知不觉中,一种小型的数码产品不声不响的潜入了大多数网民的家庭——摄像头,这种令网络世界变得活泼、生动、直观的小东西给我们带来了一阵视频的风,它的背后隐藏着什么?让我们揭开背后的秘密,撩起那视频的面纱。 现今…

MarkDown语法-使用博客园的markDown编辑

一个是一个大标题 两个是一个小标题 是三级标题 最高阶标题加下划线 高阶标题加双下划线 是二阶标题二阶标题区块引用blockquotes 换行也是没有关系的啦啦啦啦啦啦啦啦绿绿绿绿绿绿绿绿绿绿绿绿绿绿绿绿绿绿绿绿绿绿啦啦啦啦啦啦啦啦绿绿了 区块引用可以嵌套 嵌套 标题区块引用…

版本控制--搭建 GitLab 服务器

GitLab 简介 GitLab 是利用 Ruby On Rails 一个开源的版本管理系统,实现一个自托管的 Git 项目仓库,可通过 Web 界面进行访问公开的或者私人项目。它拥有与 GitHub 类似的功能,能够浏览源代码,管理缺陷和注释。可以管理团队对仓库…

MATLAB 与 Excel 接口

MATLAB 与 Excel 接口MATLAB 与 Excel 有两种接口方式:一种是通过 MATLAB 提供的 Excel 生成器,生成220 MATLAB 实用教程DLL 组件和 VBA 代码,实现 Excel 对 MATLAB 的调用;另一种是利用 MATLAB 提供的 Excellink 插件&#xff0c…

计算 1+2!+3!+4!+...20!=?

package algs.factorial;import java.math.BigInteger;/*** Author: areful* Date: 2019/3/6* 计算 sum(n!), n1,2, ... 20*/ public class NFactorial {public static void main(String[] args) {System.out.println(calcFactorial0(3));System.out.println(calcFactorial1(3)…

转大学毕业后拉开差距的原因

原文 有人工作,有人继续上学,大家千万不要错过这篇文章,能看到这篇文章也是一种幸运,真的受益匪浅,对我有很大启迪,这篇文章将会改变我的一生,真的太好了,希望与有缘人分享&…

用户态和内核态的理解和区别

1、linux进程有4GB地址空间,如图所示:3G-4G大部分是共享的,是内核态的地址空间。这里存放整个内核的代码和所有的内核模块以及内核所维护的数据。2、特权级的概念:对于任何操作系统来说,创建一个进程是核心功能。创建进…

面经-多益网络

面试时间:2019.07.22 QQ视频面试 面试岗位:人工智能及大数据/一面 面试时长:35分钟 面试内容: 自我介绍项目-视频召回实际场景题-怎么通过数学公式查找相似的数学公式对加班怎么看对比实习公司的特点主动询问落地方向面试评价&…

区块链基础语言(三)——Go语言开发工具

一、在Windows系统安装Goland 1.1 下载 官网地址&#xff1a;https://www.jetbrains.com/go/download/#sectionwindows 1.2 安装 a. 双击“goland-2018.1.5.exe”&#xff0c;单击“运行”&#xff0c;如图1所示&#xff1b; <图1> b. 如图2所示&#xff0c;单击“next”…

最小的K个数

最小的K个数 题目描述 输入n个整数&#xff0c;找出其中最小的K个数。例如输入4,5,1,6,2,7,3,8这8个数字&#xff0c;则最小的4个数字是1,2,3,4,。 未完, 待续, 好像设计堆排序 先排序在遍历, 此处使用插曲排序 class Solution { public:void insertSort(vector<int> &am…

准备重新开始写了

工作很忙,而且前一段时间项目组由于方向和人员调整一直很动荡,所以就没有心情和时间来整理技术.准备重新开张了,好好写,争取每个月出一到两篇说得过去的文章.转载于:https://www.cnblogs.com/sun/archive/2008/06/12/1218220.html

Georgia and Bob POJ - 1704 阶梯Nim

$ \color{#0066ff}{ 题目描述 }$ Georgia and Bob decide to play a self-invented game. They draw a row of grids on paper, number the grids from left to right by 1, 2, 3, ..., and place N chessmen on different grids, as shown in the following figure for exampl…