Skip to content

可以理解 DataFlow 本质上是一个 Spark、Flink 解释执行 Flow XML 的执行器。需要在 Spark、Flink 架构之上运行,支持 LOCAL、Standardlone、YARN、K8S 多种运行模式。在客户端主机需要安装大数据 Spark 或 Flink 客户端。任务依赖 jsoup.jar(解析 XML),udf.jar(非必须),包含诸多自定义实现的 udf。Udf 用于实际业务中必要的自定义 UDF 开发等(在默认 UDF 不够使用时)。

Spring/Flink平台原生提交方式

Spark:

shell
bin/spark-submit --master yarn-client --driver-memory 1G \
--num-executors 10 –executor-memory 4G \
--jars /etl-flow/jsoup-1.11.3.jar,/etl-flow/etl-udf.jar  \
--conf spark.yarn.jars=hdfs:///lib/spark2/spark24/*.jar \
--name FlowTest –queue jiayuan \
etl-flow-0.2.0.jar -f hive-flow-test.xml

Flink:

shell
bin/flink run --class com.yiidata.dataflow.FlowRunner \
-C file:///path/dataflow/lib/commons-configuration2-2.1.1.jar \
-C file:///path/dataflow/lib/commons-dbutils-1.6.jar -C ... \
/path/dataflow/lib/dataflow-core-0.2.0.jar -f file:///path/dataflow/txt-data-flow-test.xml

DataFlow 依赖 Jar(Spark 和 Flink 不同):

  1. Jsoup-1.11.3.jar
  2. Udf-${ver}.jar
  3. Mysql-java-driver-5.1.39.jar
  4. Commons-dbutils-1.6.jar
  5. Jsqlparser-0.9.6.jar

支持:开源Hadoop、HDP、CDH 等平台; 支持:华为ManagerOne(FusionInsight HD),星环大数据平台(TDH);

基于已有脚本的提交方式

DataFlow 提供了完整的便捷脚本(Spark):

shell
bin/DataFlow.sh --master 'local[3]' --driver-memory 3G  -f /path/mysql-flow-test.xml

DataFlow 提供Debug模式,Debug 模式一般 Flow 运行完成后,不会自动退出 SparkContext,提供给开发者从 SparkUI( http://host:4040/ )来诊断运行期的一些问题.

shell
bin/DataFlow.sh --master 'local[3]' --driver-memory 3G --debug  -f /path/mysql-flow-test.xml

Debug 模式在 Flow 运行结束后,进程并不会自动退出,需要开发者输出任意字符才会退出。日志有如下输出:

log
22/11/30 15:56:23 INFO TaskSchedulerImpl: Removed TaskSet 0.0, whose tasks have all completed, from pool
22/11/30 15:56:23 INFO DAGScheduler: ResultStage 0 (jdbc at RdbmsTarget.java:85) finished in 17.919 s
22/11/30 15:56:23 INFO DAGScheduler: Job 0 is finished. Cancelling potential speculative or zombie tasks for this job
22/11/30 15:56:23 INFO TaskSchedulerImpl: Killing all running tasks in stage 0: Stage finished
22/11/30 15:56:23 INFO DAGScheduler: Job 0 finished: jdbc at RdbmsTarget.java:85, took 17.956354 s
22/11/30 15:56:23 INFO Flows: output target cust_id_agmt_id_t success
Press Any Key To Continue.

** Flink 采用 Flink 支持的脚本 **

shell
bin/DataFlow.sh -f /path/mysql-flow-test.xml

支持输出参数:

  • -f: --file 指定 flow xml 文件
  • -p: --param 指定参数,该参数会覆盖 flow xml 内 property 的参数。如:-p 'a=b' -p 'for=bar'
  • 其他参数是 spark 或 flink 支持的参数

集成海豚调度

文档待续...