Hi Aljoscha,Thanks for your kind response.- We are really benchmarking Beam & its Runners and it happened that we started with Flink.therefore, any change we make to the approach must be a Beam code change that automatically affects the underlying runner.- I changed the TextIO() back to KafkaIO() reading from a Kafka cluster instead of a single node. Its behaving fine except that I am getting out of disk space by Kafka broker& am working around it as we speak.- I removed Redis as per your recommendation & replaced it with Java Concurrenthashmaps...Started to be a lot faster than before for sure.I cannot use a FLink specific solution for this. Must be either an external something or a Beam solution or just JVM solution. I picked Concurrenthashmaps for now.If I get by the Kafka broker disk space issue, and dont get an out of memory by the flink servers in 3 hrs of runtime, I should be starting seeing the light :)) Pls keep your fingers crossed as testing is underway for 10 express ways of linear road and thats 9 GB of tuples expected to be processed in 3.5 hrs.- Kafka partitions in the kafka topic = total number of slots available in flink servers. Should I alter that for better performance? Thanks Aljoscha & have a great weekend.Amir-
From: Aljoscha Krettek <aljos...@apache.org> To: Amir Bahmanyari <amirto...@yahoo.com>; user <user@flink.apache.org> Sent: Sunday, September 18, 2016 1:48 AM Subject: Re: Flink Cluster Load Distribution Question This is not related to Flink, but in Beam you can read from a directory containing many files using something like this (from MinimalWordCount.java in Beam): TextIO.Read.from("gs://apache-beam-samples/shakespeare/*") This will read all the files in the directory in parallel. For reading from Kafka I wrote this on another thread of yours:Are you sure that all your Kafka partitions contain data. Did you have a look at the Kafka metrics to see how the individual partitions are filled? If only one partition contains data, then you will only read data in one parallel instance of the sources. How are you writing your data to Kafka? Flink/Beam should read from all partitions if all of them contain data. Could you please verify that all Kafka partitions contain data by looking at the metrics of your Kafka cluster, that would be a first step towards finding out where the problem lies. By the way, your code uses Beam in a highly non-idiomatic way. Interacting with an outside database, such as Redis, will always be the bottleneck in such a job. Flink provides an abstraction for dealing with state that is vastly superior to using an external system. We recently did a blog post about rewriting a similar streaming use case using Flink's internal state: http://data-artisans.com/extending-the-yahoo-streaming-benchmark/, maybe that's interesting for you. Cheers,Aljoscha On Sat, 17 Sep 2016 at 19:30 Amir Bahmanyari <amirto...@yahoo.com> wrote: Thanks so much Aljoscha Is there an example that shows how to read from multiple files accurately or from KafkaIO and get perfect parallelism pls?Have a great weekend Sent from my iPhone On Sep 17, 2016, at 5:39 AM, Aljoscha Krettek <aljos...@apache.org> wrote: One observation here is that you're only reading from one file. This will mean that you won't get any parallelism. Everything is executed on just one task/thread. Cheers,Aljoscha On Thu, 15 Sep 2016 at 01:24 amir bahmanyari <amirto...@yahoo.com> wrote: Hi Aljoscha,Experimenting on relatively smaller file , everything fixed except KafkaIO() vs. TextIO(), I get 50% better runtime performance in the Flink Cluster when reading tuples by TextIO().I understand the NW involvement in reading from Kafka topic etc., but 50% is significant.Also, I experimented 64 partitions in Kafka topic vs. 400. I get exact same performance & increasing the topic partitions doesnt improve anything.I thought some of the 64 slots may get multiple-over- parallelism really pushing it to its limit. 64 kafka topic partitions & 400 kafka topic partitions while #slots=64 is the same. Its still slow for a relatively large file though.Pls advice if something I can try to improve the cluster performance.Thanks+regards From: Aljoscha Krettek <aljos...@apache.org> To: user@flink.apache.org; amir bahmanyari <amirto...@yahoo.com> Sent: Wednesday, September 14, 2016 1:48 AM Subject: Re: Fw: Flink Cluster Load Distribution Question Hi,this is a different job from the Kafka Job that you have running, right? Could you maybe post the code for that as well? Cheers,Aljoscha On Tue, 13 Sep 2016 at 20:14 amir bahmanyari <amirto...@yahoo.com> wrote: Hi Robert,Sure, I am forwarding it to user. Sorry about that. I followed the "robot's" instructions :))Topology: 4 Azure A11 CentOS 7 nodes (16 cores, 110 GB). Lets call them node1, 2, 3, 4.Flink Clustered with node1 running JM & a TM. Three more TM's running on node2,3, and 4 respectively.I have a Beam running FLink Runner underneath.The input data is received by Beam TextIO() reading off a 1.6 GB of data containing roughly 22 million tuples.All nodes have identical flink-conf.yaml, masters & slaves contents as follows: flink-conf.yaml: jobmanager.rpc.address: node1 jobmanager.rpc.port: 6123 jobmanager.heap.mb: 1024 taskmanager.heap.mb: 102400 taskmanager.numberOfTaskSlots: 16 taskmanager.memory.preallocate: false parallelism.default: 64 jobmanager.web.port: 8081 taskmanager.network.numberOfBuffers: 4096 masters: node1:8081 slaves:node1node2 node3 node4 Everything looks normal at ./start-cluster.sh & all daemons start on all nodes.JM, TMs log files get generated on all nodes.Dashboard shows how all slots are being used.I deploy the Beam app to the cluster where JM is running at node1.a *.out file gets generated as data is being processed. No *.out on other nodes, just node1 where I deployed the fat jar.I tail -f the *.out log on node1 (master). starts fine...but slowly degrades & becomes extremely slow.As we speak, I started the Beam app 13 hrs ago and its still running.How can I prove that ALL NODES are involved in processing the data at the same time i.e. clustered?Do the above configurations look ok for a reasonable performance?Given above parameters set, how can I improve the performance in this cluster?What other information and or dashboard screen shots is needed to clarify this issue. I used these websites to do the configuration:Apache Flink: Cluster Setup | | | Apache Flink: Cluster Setup | | | Apache Flink: Configuration | | | Apache Flink: Configuration | | | In the second link, there is a config recommendation for the following but this parameter is not in the configuration file out of the box: - taskmanager.network.bufferSizeInBytes Should I include it manually? Does it make any difference if the default value i.e.32 KB doesn't get picked up?Sorry too many questions.Pls let me know.I appreciate your help.Cheers,Amir- ----- Forwarded Message ----- From: Robert Metzger <rmetz...@apache.org> To: "d...@flink.apache.org" <d...@flink.apache.org>; amir bahmanyari <amirto...@yahoo.com> Sent: Tuesday, September 13, 2016 1:15 AM Subject: Re: Flink Cluster Load Distribution Question Hi Amir, I would recommend to post such questions to the user@flink mailing list in the future. This list is meant for development-related topics. I think we need more details to understand why your application is not running properly. Can you quickly describe what your topology is doing? Are you setting the parallelism to a value >= 1 ? Regards, Robert On Tue, Sep 13, 2016 at 6:35 AM, amir bahmanyari < amirto...@yahoo.com.invalid> wrote: > Hi Colleagues,Just joined this forum.I have done everything possible to > get a 4 nodes Flink cluster to work peoperly & run a Beam app.It always > generates system-output logs (*.out) in only one node. Its sooooooooo slow > for 4 nodes being there.Seems like the load is not distributed amongst all > 4 nodes but only one node. Most of the time the one where JM runs.I > run/tested it in a single node, and it took even faster to run the same > load.Not sure whats not being configured right.1- why am I getting > SystemOut .out log in only one server? All nodes get their TaskManager log > files updated thu.2- why dont I see load being distributed amongst all 4 > nodes, but only one all the times.3- Why does the Dashboard show a 0 (zero) > for Send/Receive numbers per all Task Managers. > The Dashboard shows all the right stuff. Top shows not much of resources > being stressed on any of the nodes.I can share its contents if it helps > diagnosing the issue.Thanks + I appreciate your valuable time, response & > help.Amir-