发送自 Windows 10 版邮件<https://go.microsoft.com/fwlink/?LinkId=550986>应用
发件人: guanyq<mailto:[email protected]> 发送时间: 2020年5月25日 13:51 收件人: [email protected]<mailto:[email protected]> 主题: Re:Re: RichMapFunction的问题 >> 1、这个RichMapFunction的并发度上不去,只能整到4,并发度上去后各种问题,但从主机内存以及分配给taskmanager的内存足够; -- 能粘贴下代码么 ``` //xxxSink 为StreamingFileSink.withMaxPartSize.withMaxPartSize(128M).withInactivityInterval(1 minutes). withRolloverInterval(30minutes) //并发度4死活挑上不去 xxxSteam.map(item -> item.record()).setParallelism(4).startNewChain().addSink(xxxSink).setParallelism(4).name(xxxx + "-Sink"); XXXRichMapFunction.java //pre-load dimension policy ``` open() { //全量通过全部分布式文件加载多个维度数据 //getRuntimeContext().getDistributedCache() //数据量不大,200W,单条记录的字段数量和数据类型,其实也很简单 } ``` ``` -- 还有提交的命令 ``` nohup ./bin/flink run -p 200 xxx1.0.0.jar ``` >> 2、这个RichMapFunction的所有slot都分配到同一个taskmanager上,即同一个主机。没有找到接口可以分散到不同的taskmanager上; -- 什么模式提交的job(yarn session,yarn,还是stand alone模式) ``` 集群是stand alone 还未尝试 蒋佳成(Jiacheng Jiang) 说的 flink 1.10支持将slot在tm上平均分配。cluster.evenly-spread-out-slots: true flink 1.10缺省是分配在同一个task,这样效率高,避免了跨网络的数据交换,提高速度处理效率 ``` 在 2020-05-25 11:47:48,"tison" <[email protected]> 写道: >关于第一个问题,最好细化一下【各种问题】是什么问题。 > >关于第二个问题,我印象中目前 Flink 不支持按并发(SubTask)级别指定调度的位置,绕过方案可以是设置每个 TM 仅持有一个 >Slot。这方面我抄送 Xintong,或许他的工作能帮到你。 > >Best, >tison. > > >[email protected] <[email protected]> 于2020年5月25日周一 上午11:29写道: > >> 遇到两个问题: >> 背景:flink v1.10集群,几十台主机,每台CPU 16,内存 50G,整个job的并发是200 >> 比如我的一个RichMapFunction在open中会加载存量数据。 >> 因维度数据和主数据是非常离散的,因此这些维度数据都需要加载到内存 >> >> 1、这个RichMapFunction的并发度上不去,只能整到4,并发度上去后各种问题,但从主机内存以及分配给taskmanager的内存足够; >> >> >> 2、这个RichMapFunction的所有slot都分配到同一个taskmanager上,即同一个主机。没有找到接口可以分散到不同的taskmanager上; >> >> 说简单点: >> >> 1、 对于RichMapFunction的open中需要加载大量维度数据,并发度上不去受什么影响; >> >> 2、 对于一个算子如何干预使其分散到不同的taskmanager上; >> >> >> >> >> 发送自 Windows 10 版邮件<https://go.microsoft.com/fwlink/?LinkId=550986>应用 >> >>
