Hi JBI replaced, in my code :FlinkPipelineOptions options = 
PipelineOptionsFactory.as(FlinkPipelineOptions.class);
with:PipelineOptions options = PipelineOptionsFactory.create();

The compiler complained about setStreaming(true) not being supported. So I 
commented out options.setStreaming(true);Compiled fine.Then run it.It threw at 
p.run():
...Running thread  threw:  java.lang.UnsupportedOperationException: The 
transform Read(UnboundedKafkaSource) is currently not supported.        at 
org.apache.beam.runners.flink.translation.FlinkBatchPipelineTranslator.visitPrimitiveTransform(FlinkBatchPipelineTranslator.java:100)
        at 
org.apache.beam.sdk.runners.TransformTreeNode.visit(TransformTreeNode.java:225) 
       at 
org.apache.beam.sdk.runners.TransformTreeNode.visit(TransformTreeNode.java:220) 
       at 
org.apache.beam.sdk.runners.TransformTreeNode.visit(TransformTreeNode.java:220) 
       at 
org.apache.beam.sdk.runners.TransformHierarchy.visit(TransformHierarchy.java:104)
        at 
org.apache.beam.sdk.Pipeline.traverseTopologically(Pipeline.java:292)        at 
org.apache.beam.runners.flink.translation.FlinkPipelineTranslator.translate(FlinkPipelineTranslator.java:34)
        at 
org.apache.beam.runners.flink.translation.FlinkBatchPipelineTranslator.translate(FlinkBatchPipelineTranslator.java:56)
        at 
org.apache.beam.runners.flink.FlinkPipelineExecutionEnvironment.translate(FlinkPipelineExecutionEnvironment.java:132)
        at 
org.apache.beam.runners.flink.FlinkPipelineRunner.run(FlinkPipelineRunner.java:108)
        at 
org.apache.beam.runners.flink.FlinkPipelineRunner.run(FlinkPipelineRunner.java:49)
        at org.apache.beam.sdk.Pipeline.run(Pipeline.java:182)        at 
benchmark.flinkspark.flink.ReadFromKafka2.main(ReadFromKafka2.java:220)

So I added .withMaxNumRecords(100) to the KafkaIO call.Restarted Flink Cluster. 
Rerun the app.Got this exception at p.run() now. Have a wonderful weekend.


...Running thread  threw:  java.lang.RuntimeException: Pipeline execution 
failed        at 
org.apache.beam.runners.flink.FlinkPipelineRunner.run(FlinkPipelineRunner.java:117)
        at 
org.apache.beam.runners.flink.FlinkPipelineRunner.run(FlinkPipelineRunner.java:49)
        at org.apache.beam.sdk.Pipeline.run(Pipeline.java:182)        at 
benchmark.flinkspark.flink.ReadFromKafka2.main(ReadFromKafka2.java:220)        
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)        at 
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)   
     at 
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:498)        at 
org.apache.flink.client.program.PackagedProgram.callMainMethod(PackagedProgram.java:505)
        at 
org.apache.flink.client.program.PackagedProgram.invokeInteractiveModeForExecution(PackagedProgram.java:403)
        at org.apache.flink.client.program.Client.runBlocking(Client.java:248)  
      at 
org.apache.flink.client.CliFrontend.executeProgramBlocking(CliFrontend.java:866)
        at org.apache.flink.client.CliFrontend.run(CliFrontend.java:333)        
at org.apache.flink.client.CliFrontend.parseParameters(CliFrontend.java:1189)   
     at org.apache.flink.client.CliFrontend.main(CliFrontend.java:1239)Caused 
by: org.apache.flink.client.program.ProgramInvocationException: The program 
execution failed: Failed to submit job 6d197ab3c635428c287be6a2dd8f6d6e 
(readfromkafka2-abahman-0527214049)        at 
org.apache.flink.client.program.Client.runBlocking(Client.java:381)        at 
org.apache.flink.client.program.Client.runBlocking(Client.java:355)        at 
org.apache.flink.client.program.Client.runBlocking(Client.java:315)        at 
org.apache.flink.client.program.ContextEnvironment.execute(ContextEnvironment.java:60)
        at 
org.apache.beam.runners.flink.FlinkPipelineExecutionEnvironment.executePipeline(FlinkPipelineExecutionEnvironment.java:154)
        at 
org.apache.beam.runners.flink.FlinkPipelineRunner.run(FlinkPipelineRunner.java:114)
        ... 14 moreCaused by: 
org.apache.flink.runtime.client.JobExecutionException: Failed to submit job 
6d197ab3c635428c287be6a2dd8f6d6e (readfromkafka2-abahman-0527214049)        at 
org.apache.flink.runtime.jobmanager.JobManager.org$apache$flink$runtime$jobmanager$JobManager$$submitJob(JobManager.scala:1100)
        at 
org.apache.flink.runtime.jobmanager.JobManager$$anonfun$handleMessage$1.applyOrElse(JobManager.scala:380)
        at 
scala.runtime.AbstractPartialFunction$mcVL$sp.apply$mcVL$sp(AbstractPartialFunction.scala:33)
        at 
scala.runtime.AbstractPartialFunction$mcVL$sp.apply(AbstractPartialFunction.scala:33)
        at 
scala.runtime.AbstractPartialFunction$mcVL$sp.apply(AbstractPartialFunction.scala:25)
        at 
org.apache.flink.runtime.LeaderSessionMessageFilter$$anonfun$receive$1.applyOrElse(LeaderSessionMessageFilter.scala:36)
        at 
scala.runtime.AbstractPartialFunction$mcVL$sp.apply$mcVL$sp(AbstractPartialFunction.scala:33)
        at 
scala.runtime.AbstractPartialFunction$mcVL$sp.apply(AbstractPartialFunction.scala:33)
        at 
scala.runtime.AbstractPartialFunction$mcVL$sp.apply(AbstractPartialFunction.scala:25)
        at 
org.apache.flink.runtime.LogMessages$$anon$1.apply(LogMessages.scala:33)        
at org.apache.flink.runtime.LogMessages$$anon$1.apply(LogMessages.scala:28)     
   at scala.PartialFunction$class.applyOrElse(PartialFunction.scala:118)        
at 
org.apache.flink.runtime.LogMessages$$anon$1.applyOrElse(LogMessages.scala:28)  
      at akka.actor.Actor$class.aroundReceive(Actor.scala:465)        at 
org.apache.flink.runtime.jobmanager.JobManager.aroundReceive(JobManager.scala:106)
        at akka.actor.ActorCell.receiveMessage(ActorCell.scala:516)        at 
akka.actor.ActorCell.invoke(ActorCell.scala:487)        at 
akka.dispatch.Mailbox.processMailbox(Mailbox.scala:254)        at 
akka.dispatch.Mailbox.run(Mailbox.scala:221)        at 
akka.dispatch.Mailbox.exec(Mailbox.scala:231)        at 
scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)        at 
scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
        at 
scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)        
at 
scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)Caused
 by: org.apache.flink.runtime.JobException: Creating the input splits caused an 
error: Could not create input splits from Source.        at 
org.apache.flink.runtime.executiongraph.ExecutionJobVertex.<init>(ExecutionJobVertex.java:172)
        at 
org.apache.flink.runtime.executiongraph.ExecutionGraph.attachJobGraph(ExecutionGraph.java:696)
        at 
org.apache.flink.runtime.jobmanager.JobManager.org$apache$flink$runtime$jobmanager$JobManager$$submitJob(JobManager.scala:1023)
        ... 23 moreCaused by: java.io.IOException: Could not create input 
splits from Source.        at 
org.apache.beam.runners.flink.translation.wrappers.SourceInputFormat.createInputSplits(SourceInputFormat.java:113)
        at 
org.apache.beam.runners.flink.translation.wrappers.SourceInputFormat.createInputSplits(SourceInputFormat.java:44)
        at 
org.apache.flink.runtime.executiongraph.ExecutionJobVertex.<init>(ExecutionJobVertex.java:156)
        ... 25 moreCaused by: org.apache.kafka.common.config.ConfigException: 
Invalid value org.apache.kafka.common.serialization.ByteArrayDeserializer for 
configuration value.deserializer: Class 
org.apache.kafka.common.serialization.ByteArrayDeserializer could not be found. 
       at 
org.apache.kafka.common.config.ConfigDef.parseType(ConfigDef.java:255)        
at org.apache.kafka.common.config.ConfigDef.parse(ConfigDef.java:145)        at 
org.apache.kafka.common.config.AbstractConfig.<init>(AbstractConfig.java:49)    
    at 
org.apache.kafka.common.config.AbstractConfig.<init>(AbstractConfig.java:56)    
    at 
org.apache.kafka.clients.consumer.ConsumerConfig.<init>(ConsumerConfig.java:336)
        at 
org.apache.kafka.clients.consumer.KafkaConsumer.<init>(KafkaConsumer.java:512)  
      at 
org.apache.kafka.clients.consumer.KafkaConsumer.<init>(KafkaConsumer.java:494)  
      at org.apache.beam.sdk.io.kafka.KafkaIO$Read$1.apply(KafkaIO.java:339)    
    at org.apache.beam.sdk.io.kafka.KafkaIO$Read$1.apply(KafkaIO.java:337)      
  at 
org.apache.beam.sdk.io.kafka.KafkaIO$UnboundedKafkaSource.generateInitialSplits(KafkaIO.java:572)
        at 
org.apache.beam.sdk.io.BoundedReadFromUnboundedSource$UnboundedToBoundedSourceAdapter.splitIntoBundles(BoundedReadFromUnboundedSource.java:168)
        at 
org.apache.beam.runners.flink.translation.wrappers.SourceInputFormat.createInputSplits(SourceInputFormat.java:105)
        ... 27 more


      From: Jean-Baptiste Onofré <[email protected]>
 To: [email protected] 
 Sent: Friday, May 27, 2016 1:33 AM
 Subject: Re: Beam Flink vs Beam Spark Benchmarking
   
Hi Ismaël,

as discussed together, clearly, the pipeline code should not use a 
runner specific pipeline options object, in order to be runner agnostic.

Something like:

SparkPipelineOptions options = 
PipelineOptionsFactory.as(SparkPipelineOptions.class)

should not be used.
It's better to use something like:

  PipelineOptions options = 
PipelineOptionsFactory.fromArgs(args).withValidation().create();


However, I think we may improve a bit the factory.

Regards
JB

On 05/27/2016 10:22 AM, Ismaël Mejía wrote:
> ​
> I passed last week running tests on multiple runners, and theoretically
> you should not change many things, however you must take care of not
> mixing runner specific dependencies while you create your project (e.g.
> you don't want to mix specific classes like FlinkPipelineOptions or
> SparkPipelineOptions in your code).
>
> About specific good practices of how to benchmark things this is a more
> tricky subject, e.g. you must be sure that both runners are using at
> least similar parallelism levels. Of course there are many dimensions in
> benchmarking and in particular in this space, the real question you have
> to start with is what do you want to benchmark (throughput, resource
> utilisation, etc) ? Is your pipeline batch only or streaming too ?. And
> then try to create an scenario that you can reproduce where you expect a
> similar behaviour among runners.
>
> But one thing is clear, you have to expect some differences since the
> internal model of each runner is different as well as their maturity
> level (at least at this point).
>
> Ismaël
>
>
> On Fri, May 27, 2016 at 1:19 AM, amir bahmanyari <[email protected]
> <mailto:[email protected]>> wrote:
>
>    Hi Colleagues,
>    I have implemented the Java version of the MIT's Linear Road
>    algorithm as a Beam app.
>    I sanity tested it in a Flink Cluster (FlinkRunner). Works fine.
>    Receives tuples from Kafka, executes the LR algorithm, and produces
>    the correct results.
>    I would like to repeat the same in a Spark cluster.
>    I am assuming that, other than changing the type of the Runner
>    (Flink vs Spark) at runtime, I should not make any code changes.
>    Is that the right assumption based on what Beam is promising
>    regarding unifying of the underlying streaming engines?
>
>    The real question is: What should I take into consideration if I
>    want to Benchmark Flink vs Spark by executing my same Beam LR app in
>    both engines?
>    How would you approach the benchmarking process? What would you be
>    looking for to compare? etc.
>    Thanks so much for your valuable time.
>    Amir-
>
>
>
> On Fri, May 27, 2016 at 1:19 AM, amir bahmanyari <[email protected]
> <mailto:[email protected]>> wrote:
>
>    Hi Colleagues,
>    I have implemented the Java version of the MIT's Linear Road
>    algorithm as a Beam app.
>    I sanity tested it in a Flink Cluster (FlinkRunner). Works fine.
>    Receives tuples from Kafka, executes the LR algorithm, and produces
>    the correct results.
>    I would like to repeat the same in a Spark cluster.
>    I am assuming that, other than changing the type of the Runner
>    (Flink vs Spark) at runtime, I should not make any code changes.
>    Is that the right assumption based on what Beam is promising
>    regarding unifying of the underlying streaming engines?
>
>    The real question is: What should I take into consideration if I
>    want to Benchmark Flink vs Spark by executing my same Beam LR app in
>    both engines?
>    How would you approach the benchmarking process? What would you be
>    looking for to compare? etc.
>    Thanks so much for your valuable time.
>    Amir-
>
>

-- 
Jean-Baptiste Onofré
[email protected]
http://blog.nanthrax.net
Talend - http://www.talend.com


  

Reply via email to