可以理解 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 不同):
- Jsoup-1.11.3.jar
- Udf-${ver}.jar
- Mysql-java-driver-5.1.39.jar
- Commons-dbutils-1.6.jar
- 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 支持的参数
集成海豚调度
文档待续...