第二次 Flinkx任务资源分配测试

第一次测试分析那些参数不生效,第二次测试已经生效的参数

第一次 Flinkx任务资源分配测试

测试版本为FlinkX1.10 

最终的测试结果:

设置parallelism并行度,在json文件的speed.channel里配置

设置taskmanger内存,在flink-conf.yaml的taskmanager.memory.process.size里配置

设置slot个数,在flinkx-conf.yaml的taskmanager.numberOfTaskSlots里配置

-confProp只有配置jobmanager.memory.mb才有生效,其他配置都不生效


yarn 配置

yarn.scheduler.minimum-allocation-mb=1G 
yarn.scheduler.minimum-allocation-vcores=1 
yarn.scheduler.maximum-allocation-mb=12G 
yarn.scheduler.maximum-allocation-vcores=12

Flink配置

jobmanager.rpc.address: server001 
jobmanager.rpc.port: 6123 
jobmanager.heap.size: 1024m 
taskmanager.memory.process.size: 1024m 
taskmanager.numberOfTaskSlots: 1 
parallelism.default: 2

测试一

mysql2hive.json配置

"splitPk": "id" 

"channel": 2

flinkx任务执行脚本

/usr/local/src/flinkx-1.10/bin/flinkx \ 
    -mode yarnPer \ 
    -job /usr/local/src/flinkx-1.10/job/mysql2hive.json \ 
    -queue root.default

正确,由于mysql2hive任务设置了2个通道读写,也就是开启了2个parallelism,由于slot=1,所以是2个taskmanager,3个container,3核CPU,3G内存

com/dtstack/flinkx/reader/BaseDataReader.java

protected BaseDataReader(DataTransferConfig config, StreamExecutionEnvironment env) {
        this.env = env;
        this.dataTransferConfig = config;
        this.numPartitions = Math.max(config.getJob().getSetting().getSpeed().getChannel(),
                config.getJob().getSetting().getSpeed().getReaderChannel());

启发:难道flinkx需要设置指定的分隔符,才能使parallelism并发度生效呢?走去看下一个测试


测试二,stream_stream.json

{
  "job" : {
    "content" : [ {
      "reader" : {
        "parameter" : {
          "column" : [ {
            "name": "id",
            "type" : "id"
          }, {
            "name": "string",
            "type" : "string"
          } ],
          "sliceRecordCount" : [ "10000"]
        },
        "name" : "streamreader"
      },
      "writer" : {
        "parameter" : {
          "print" : true
        },
        "name" : "streamwriter"
      }
    } ],
    "setting" : {
      "speed" : {
        "channel" : 2
      }
    }
  }
}

flinkx启动脚本

/usr/local/src/flinkx-1.10/bin/flinkx \ 
    -mode yarnPer \ 
    -job /usr/local/src/flinkx-1.10/docs/example/stream_stream.json \ 
    -queue root.default

之前还以为只有关系型数据库才能设置并行度读取数据,其实不然

parallelism正常,taskmanager数 = parallelism/slot=2/1=2个


测试三,接着上面的配置,修改flink-conf.yaml的parallelism.default: 1 和 taskmanager.numberOfTaskSlots: 2

flinkx启动脚本

Flink配置
parallelism.default: 1 
taskmanager.numberOfTaskSlots: 2
jobmanager.heap.size: 1024m 
taskmanager.memory.process.size: 1024m

FlinkX的json配置
"speed" : { "channel" : 2 } 

/usr/local/src/flinkx-1.10/bin/flinkx \ 
    -mode yarnPer \ 
    -job /usr/local/src/flinkx-1.10/docs/example/stream_stream.json \ 
    -queue root.default

预计是taskmanager数=parallelism / slot = 2 / 2 = 1,也就是2个container,CPU数=taskmanger数 * slot + 1 = 1*2+1=3核,2G内存。

正常


测试四,接着上面的配置,修改json.speed.channel=4

Flink配置
    parallelism.default: 1 
    taskmanager.numberOfTaskSlots: 2
    jobmanager.heap.size: 1024m 
    taskmanager.memory.process.size: 1024m

FlinkX的json配置
"speed" : { "channel" : 4 } 

/usr/local/src/flinkx-1.10/bin/flinkx \ 
    -mode yarnPer \ 
    -job /usr/local/src/flinkx-1.10/docs/example/stream_stream.json \ 
    -queue root.default

预计taskmanager数= 4/2 =2,3个container,CPU数=taskmanger数 * slot + 1 = 2*2+1=5G,使用内存=jobmanager.heap+taskmanager数*taskmanager.memory=1024+2*1024=3G

正常


测试五,接着上面的配置测试,修改taskmanager.memory.process.size: 2048m

Flink的配置
    parallelism.default: 1 
    taskmanager.numberOfTaskSlots: 2
    jobmanager.heap.size: 1024m
    taskmanager.memory.process.size: 2048m

Flinkx的json配置
"speed" : { "channel" : 4 } 

/usr/local/src/flinkx-1.10/bin/flinkx \
	-mode yarnPer \
	-job /usr/local/src/flinkx-1.10/docs/example/stream_stream.json \
    -queue root.default

预计taskmanager数=parallelism/slot=4/2=2,3个container,CPU数=taskmanger数*slot+1=2*2+1=5核,使用内存=jobmanager.heap+taskmanager数*taskmanager.memory=1024+2*2048=5G

正常


最终需要着手测试是,如何使-confProp的taskmanger内存和slot能够生效

注:如果哪有问题,欢迎评论区留言。你的提问就是对我最大的支持

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

secretWHD

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值