...
We don’t release the non-read slots properly
- We need to introduce synchronization after every iteration to prevent early releasing
Fifth Approach - Write broadcast data to one blocking subpartition only
This approach writes the broadcast data only to one blocking subpartition. So there is no data redundancy and no unnecessary network traffic. In order to make the broadcast subpartitions blocking we modify the job graph generation accordingly.
This approach currently does not work for native iterations (see https://issues.apache.org/jira/browse/FLINK-1713).
In the case of a simple Map().withBroadcastSet() we achieve the following results on the IBM-cluster:
suite | name | average_time (ms) |
broadcast.ibm-power-1 | broadcast.01 | 6597.33 |
broadcast.ibm-power-1 | broadcast.02 | 5997 |
broadcast.ibm-power-1 | broadcast.04 | 6576.66 |
broadcast.ibm-power-1 | broadcast.08 | 7024.33 |
broadcast.ibm-power-1 | broadcast.16 | 6933.33 |
You can see that the run time stays constant, which is exactly what we want. So the next step is to extend iterations to make it work in general.
Compatibility, Deprecation, and Migration Plan
...