You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@flink.apache.org by "Fabian Hueske (JIRA)" <ji...@apache.org> on 2014/07/09 10:12:04 UTC

[jira] [Comment Edited] (FLINK-972) Run Flink on Tez

    [ https://issues.apache.org/jira/browse/FLINK-972?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14055976#comment-14055976 ] 

Fabian Hueske edited comment on FLINK-972 at 7/9/14 8:10 AM:
-------------------------------------------------------------

Flink's data flow optimizer is quite unique (generalized cost-based relational optimization for UDF data flows with extensions for DAG structures and iterative data flows).
Also most of Flink's local runtime code, including Flink's memory management, would still be used. Tez would take care of scheduling and data transport, while the local Flink runtime would handle the local processing (sorting, grouping, hash-joins / hash-aggregations, ...). We put quite some effort in making these operators memory-safe (they go gracefully out-of-core under memory pressure).

Right now, Tez cannot be a full replacement of the (distributed) Flink runtime. It lacks support for iterations (at least as we are doing them) and won't support the extensions for streaming data which will be added in a first version to Flink in near future.
Hence, Tez would be an option for batch DAG processing in the beginning.
Maybe some of these limitation can be solved as Tez evolves.


was (Author: fhueske):
Flink's data flow optimizer is quite unique (generalized cost-based relational optimization for UDF data flows with extensions for DAG structures and iterative data flows).
Also most of Flink's local runtime code, including Flink's memory management, would still be used. Tez would take care of scheduling and data transport, while the local Flink runtime would handle the local processing (sorting, grouping, hash-joins / hash-aggregations, ...). We put quite some effort in making these operators memory-safe (the go gracefully out-of-core under memory pressure).

Right now, Tez cannot be a full replacement of the (distributed) Flink runtime. It lacks support for iterations (at least as we are doing them) and won't support the extensions for streaming data which will be added in a first version to Flink in near future.
Hence, Tez would be an option for batch DAG processing in the beginning.
Maybe some of these limitation can be solved as Tez evolves.

> Run Flink on Tez
> ----------------
>
>                 Key: FLINK-972
>                 URL: https://issues.apache.org/jira/browse/FLINK-972
>             Project: Flink
>          Issue Type: New Feature
>          Components: New Components
>    Affects Versions: 0.6-incubating
>            Reporter: Stephan Ewen
>
> The current status is:
>   - A prototype that explores how Tez/Flink classes can interoperate was created by Filip Haase and is at https://github.com/filiphaase/incubator-tez/tree/stratosphere-input-output-proto2
>   - There is a version that runs "WordCount" in Tez, using the Flink input formats, output formats, and UDFs.
> Next steps towards generic support for Flink programs are:
> 1) Integrate the Flink Memory Manager with Tez. This means actually defining how much memory of each container Flink may allocate for its internal algorithms. In Flink's core, we allow users to set the amount of memory, or define it relative to the heap size (with 0.7*heap_size) being used if nothing else is specified.
> 2) Create a version of the Flink task context (PactTaskContext) for Tez: This would allow to run the Flink runtime operators on a Tez processor.
> 3) Integrate Flink "ship strategies" (partitioning, replication, redistribution, etc) with the way Tez parameterizes connections.
> 4) Integrate the Flink Sorting/Caching with Tez. This should be simple, if the memory manager is there, these classes should work out of the box.
> 5) Create a component that creates the Tez DAG from a flink "OptimizedPlan". We currently have a component that creates a "Job Graph" (Flink's DAG) from an OptimizedPlan, it is the last step of the "pre-flight phase" before the job is given to the master to be scheduled. We need an equivalent component to create a Tez DAG.
> 6) Create a distribution that uses Tez as distributed runtime. Create a "client" that creates a Tez AM on Yarn and submits the DAG there. Adopt the bash scripts to pick up the Tez and Yarn parameters and set up the client correctly.



--
This message was sent by Atlassian JIRA
(v6.2#6252)