问题一、kafka和flink是否可以动态扩容?

答:可以的。

问题二、扩容之后修改的配置是什么?扩容方法?

Kafka修改:

  1. 1)拷贝线上配置到本地kafka目录。 2)需要注意的是server.properties里broker和ip的指定,必须要唯一。
    3)server.properties中log.dirs必须要手动指定。此配置项是kafka接收日志的存储目录
    4)zookeeper的指定可以是下面这种形式,手动定制zookeeper的目录,并且用逗号分隔ip
    zookeeper.connect=1.1.1.1:2181,1.1.1.2:2181,1.1.1.3:2181
    5)默认分区和备份数分别为10和3(num.partitions=10 /
    default.replication.factor=3)当然这也可以在创建topic时手动指定。

Kafka扩容:

  • 1.部署环境,保证所有机器上运行环境相同。
    2.JMX_PORT=9997 bin/kafka-server-start.sh config/server.properties >/dev/null 2>&1 & 部署新节点,然后通过命令启动kafka,JMX_PORT是为了打开kafka的可管理端口(默认不启用)。
    3.根据"配置修改"修改配置,然后启动集群,确保新节点为可用状态。

    4.生成扩容使用的json文件: cat topics-to-move.json {“topics”: [{“topic”: “topic1”}], //加粗部分是要手动指定的topic名称 “version”:1 }

    5.通过上一步写好的json文件,使用kafka命令生成数据迁移配置 bin/kafka-reassign-partitions.sh --topics-to-move-json-file topics-to-move.json --zookeeper 1.1.1.99:2181/kafka-0.8.1 --broker-list “0,1,2,3,4” --generate //加粗部分是指定数据迁移到那些broker。

    6.将第一部分保存留作回退备份(即Proposed partition reassignment configuration上面的json串),下面json串为扩容将要使用的到的配置,将其保存为expand-cluster-reassignment.json

    7.执行扩容命令: bin/kafka-reassign-partitions.sh --zookeeper 1.1.1.99:2181/kafka-0.8.1 --reassignment-json-file expand-cluster-reassignment.json --execute
    正常执行的话会生成同上图类似的json串,表示原始状态和目标状态

    8.查询执行状态: bin/kafka-reassign-partitions.sh --zookeeper 1.1.1.99:2181/kafka-0.8.1 --reassignment-json-file expand-cluster-reassignment.json --verify 正常执行后会返回当前数据迁移的不用partion的

    9.注: 数据迁移一旦开始无法停止,也不要强行停止集群,这样会造成数据不一致,带来无法挽回的后果。 kafka数据迁移的原理是先拷贝数据到目标节点,然后再删除原节点的数据。这样的话如果集群原节点空间不足,不要继续指定其为迁移broker,这样将造成原节点空间用尽,例如原节点是broker为0,1,2,3,4就不要这样指定
    –broker-list “0,1,2,3,4”,应该这样 --broker-list “5,6”。 另外数据迁移也可以通过手工定制。

Flink:
1.添加机器是,必须修改内容:

  1. 每个JobManager的可用内存量(jobmanager.heap.mb),
    每个TaskManager(taskmanager.heap.mb)的可用内存量,
    每台计算机可用的CPU数(taskmanager.numberOfTaskSlots),
    集群中的CPU总数(parallelism.default)和 临时目录(taskmanager.tmp.dirs)

  2. 2.以下脚本在本地节点上启动JobManager,并通过SSH连接到slaves文件中列出的所有辅助节点,以在每个节点上启动TaskManager。
    #bin/start-cluster.sh

    3.可以使用bin/jobmanager.sh和bin/taskmanager.sh脚本将JobManager和TaskManager实例都添加到正在运行的集群中。

    4.添加JobManager bin/jobmanager.sh ((start|start-foreground) cluster)|stop|stop-all 添加任务管理器 bin/taskmanager.sh
    start|start-foreground|stop|stop-all 确保在要启动/停止相应实例的主机上调用这些脚本。

注:

  • 最大并行度必须满足以下条件: 0<parallelism<=max parallelism <=2^15
    可以通过设置最大并行度setMaxParallelism(int
    maxparallelism)。默认情况下,首次启动作业时,Flink将根据并行度选择最大并行度: 128 :对于所有并行度<= 128。
    MIN(nextPowerOfTwo(parallelism + (parallelism / 2)), 2^15) :对于所有并行度>128的情况。

问题三、脚本编写方法,方向:

Flink:
1.实际需要修改参数:集群中的CPU总数(parallelism.default)
注:要小于cpu总数一点
2.修改脚本里参数:slave ip

Kafka:
1)拷贝线上配置到本地kafka目录。
2)需要注意的是server.properties里broker和ip的指定,必须要唯一。
3)server.properties中log.dirs必须要手动指定。此配置项是kafka接收日志的存储目录
4)zookeeper的指定可以是下面这种形式,手动定制zookeeper的目录,并且用逗号分隔ip
zookeeper.connect=1.1.1.1:2181,1.1.1.2:2181,1.1.1.3:2181

增加broker数量

新添加的Kafka节点并不会自动地分配数据,所以无法分担集群的负载,除非我们新建一个topic。但是现在我们想手动将部分分区移到新添加的Kafka节点上,Kafka内部提供了相关的工具来重新分布某个topic的分区。在重新分布topic分区之前,我们先来看看现在topic的各个分区的分布位置:
./bin/kafka-topics.sh --topic iteblog --describe --zookeeper zookeeper:2181
Topic:iteblog PartitionCount:7 ReplicationFactor:2 Configs:

由于查看到的分区是4个,所以现在我们需要将原先分布在broker 1-4节点上的分区重新分布到broker 1-5节点上,借助kafka-reassign-partitions.sh工具生成reassign plan,不过我们先得按照要求定义一个文件,里面说明哪些topic需要重新分区,文件内容如下:

#bin/kafka-reassign-partitions.sh --zookeeper zookeeper:2181 --topics-to-move-json-file topics-to-move.json --broker-list “1,2,3,4,5” --generate

自动生成执行文件
#cat topics-to-move.json
{“topics”: [{“topic”: “iteblog”}],
“version”:1
}

这个文件也可以自己手动添加:
{
“version”: 1,
“partitions”: [
{
“topic”: “iteblog”,
“partition”: 0,
“replicas”: [
1,
2
]
},
{
“topic”: “iteblog”,
“partition”: 1,
“replicas”: [
2,
3
]
},
{
“topic”: “iteblog”,
“partition”: 2,
“replicas”: [
3,
4
]
},
{
“topic”: “iteblog”,
“partition”: 3,
“replicas”: [
4,
5
]
},
{
“topic”: “iteblog”,
“partition”: 4,
“replicas”: [
5,
1
]
},
{
“topic”: “iteblog”,
“partition”: 5,
“replicas”: [
1,
3
]
},
{
“topic”: “iteblog”,
“partition”: 6,
“replicas”: [
2,
4
]
}
]
}

#bin/kafka-reassign-partitions.sh --zookeeper zookeeper:2181 --reassignment-json-file result.json --execute

验证:
#bin/kafka-reassign-partitions.sh --zookeeper zookeeper:2181 --reassignment-json-file result.json --verify

最后再查一下分区状况
#./bin/kafka-topics.sh --topic iteblog --describe --zookeeper zookeeper:2181

Topic扩容:
#./bin/kafka-topics.sh --zookeeper 192.168.2.225:2183 --alter --partitions 15 --topic push-token-topic

#./bin/kafka-reassign-partitions.sh --zookeeper 192.168.2.225:2183
–reassignment-json-file partitions-extension-push-token-topic.json --execute

脚本partitions-extension-push-token-topic.json内容:
{
“partitions”:
[
{
“topic”: “push-token-topic”,
“partition”: 12,
“replicas”: [101,102]
},
{
“topic”: “push-token-topic”,
“partition”: 13,
“replicas”: [103,104]
},
{
“topic”: “push-token-topic”,
“partition”: 14,
“replicas”: [105,106]
}
],
“version”:1
}

kafka和flink的动态扩容相关推荐

  1. RocketMQ如何动态扩容和缩容

    本文来说下RocketMQ如何动态扩容和缩容 文章目录 整体思路 Rocketmq与kafka副本机制的区别 Rocketmq单机版本中如何增加吞吐量 整体思路 RocketMQ如何动态扩容和缩容 a ...

  2. kafka 重新分配节点_kafka扩容节点和partitions迁移

    kafka的扩容难点: 1)主要在于增加机器之后,数据需要rebalance到新增的空闲节点,即把partitions迁移到空闲机器上. kafka提供了bin/kafka-reassign-part ...

  3. Flink cep动态模板+cep规则动态修改实践

    私信之前请一键三连,请给一点动力!谢谢 目录 Flink CEP 概念以及使用场景 1.什么是CEP? 2.Flink CEP 应用场景 3.Flink CEP 原理(只做简单了解) 规则条件遵循参考 ...

  4. JDK容器学习之ArrayList:底层存储和动态扩容

    2019独角兽企业重金招聘Python工程师标准>>> ArrayList 底层存储和动态扩容逻辑 ArrayList 作为最常用的容器之一,通常用来存储一系列的数据对象,O(1)级 ...

  5. 贴一段数组动态扩容的代码

    贴一段数组动态扩容的代码 public static Object arrayGrow(Object obj,int addlength){Class c = obj.getClass(); if(! ...

  6. 3306端口_Spring Boot随机端口你都不会,怎么动态扩容?

    一般情况下每个spring boot工程启动都有固定的端口,但是固定端口不利用服务的动态扩容,如果在一台服务器上需要对同一个服务进行多实例部署,很容易出现端口冲突,那么怎么解决这个问题呢? rando ...

  7. Redis Cluster 集群模式原理和动态扩容

    Redis Cluster原理 详细参考 Redis cluster集群模式的原理, 在这里补充下要点 16384个slot, 平均分布在各个master, key-value 对存储在slot中; ...

  8. 数据库面试 - 如何设计可以动态扩容缩容的分库分表方案?

    数据库面试 - 如何设计可以动态扩容缩容的分库分表方案? 面试题 如何设计可以动态扩容缩容的分库分表方案? 面试官心理分析 对于分库分表来说,主要是面对以下问题: 选择一个数据库中间件,调研.学习.测 ...

  9. redis专题:redis集群的动态扩容缩容,水平扩展

    文章目录 1. 扩容背景介绍 2. redis集群扩容 2.1 增加redis实例 2.2 配置8007为master节点 2.3 配置8008为8007的从节点 3. redis集群缩容 3.1 先 ...

  10. 动手Lab|利用CSI和Kubernetes实现动态扩容

    简介 随着我们对客户的关注,尤其是对金融领域的客户,我们可以发现容器编排技术具有很大的发展空间.开发者们希望能通过开源解决方案来重新设计运行在虚拟化基础设施和裸金属上的独立应用程序. 对于可扩展性和技 ...

最新文章

  1. NOIp 2014 #4 无线网络发射器选址 Label:模拟
  2. Quartz.NET在ASP.NET 中使用
  3. 跟小静读CLR via C#(02)-基元类型、引用类型、值类型
  4. 再见了微服务!全面拥抱 DDD 思想真正的价值!
  5. 自己写一个轻量的JqueryGrid组件
  6. 文巾解题 167. 两数之和 II - 输入有序数组
  7. JavaWeb学习之路——SSM框架之Mybatis(三)
  8. C++初学者必看的50个建议 绝对经典
  9. python装饰器setter_第7.27节 Python案例详解: @property装饰器定义属性访问方法getter、setter、deleter...
  10. 百年GE濒临破产,传奇霸业何以衰亡?
  11. STM32驱动WS2811
  12. Microsemi Libero系列教程(六)——Identify片上逻辑分析仪的使用
  13. SQL语句——处理函数
  14. 开发人员新常态:和云原生相爱相杀
  15. mas机 mysql_移动MAS机开发相关
  16. Javascript:ES6-ES11(1)
  17. 练习:排序数组中查找元素的第一个和最后一个位置
  18. QQ邮箱取消免费扩容;苹果搜索引擎“胎死腹中”,核心成员已回归谷歌麾下;Xcode 14导致应用体积大增|极客头条
  19. 开发中国最好的视频推荐系统
  20. 2008年威客网站发展观察(排名分析)

热门文章

  1. 360路由器v2刷第三方固件_斐讯K2P MTK版简单几步刷入breed教程,附刷第三方固件方法...
  2. 自然语言处理的会议、论文集下载
  3. 12.学习Camera之——android binder 机制架构
  4. PIC单片机入门教程(一)—— 准备工作
  5. 多媒体教室建设方案综述
  6. 转:战略思维的五个要素,你都具备了吗?
  7. GNSS螺旋天线高精度定位
  8. ExtJS中的renderTo何applyTo的差别
  9. 浅谈存储之SAN基本概念
  10. 解决 vscode 登录微软账户同步设置 出现“vscode.dev 关闭了连接“ 问题