我在Cloudera Hadoop平台上有一个批处理数据管道 - 文件通过Flume和Spark处理到Hive。编排是通过Oozie工作流程完成的。
我现在正在使用Flume,Kafka,Spark Streaming构建一个近乎实时的数据管道,最后到HBase。编排方面有两种情况:
请描述您从现实生产实施中获得的经验。
场景1 - 24/7管道
管道中的进程必须始终运行。调度程序不是正确的选择,因为这里没有安排进程,但是如果这些进程死掉,应该监视并重新启动进程。作为客户端运行的水槽代理和火花流驱动程序应该通过systemd执行。 Systemd将负责重新启动水槽代理或火花流驱动器芯片。如果火花串流驱动程序在群集模式下运行,请在启用supervisor标志的情况下运行它,您将不需要systemd单元。
情景2 - 上午8点至晚上8点
如果在客户端模式下有flume代理和spark spark驱动程序的systemd单元,则可以编写两个脚本,一个用于启动这些进程,另一个用于停止这些进程。您可以使用oozie或crontab在上午8点安排启动进程脚本,并在晚上8点安排停止进程脚本。