您可以在 Hadoop 解决方案和非 Hadoop 解决方案之间进行选择。
Hadoop解决方案
针对这种情况,Hadoop 有三个主要框架:
每个框架都有其优点和缺点。例如,Oozie 是基于 XML 的(很多人不喜欢),您可以编写可以添加到 oozie 工作流引擎的作业。人们通常喜欢 Oozie 的地方是他们有一个 GUI 来设计工作流程。
有关 Hadoop 工作流解决方案的详细信息,请在 Google 上对这些语言进行比较。有许多内部比较可用
非 Hadoop 解决方案
用任何语言编写工作流代码(很可能是 Python、Bash 或 Perl 等脚本语言比编译语言更适合该用例)。将此应用程序添加到 cron 作业中,然后定期运行该应用程序。
调用应用程序中的所有命令(例如hdfs dfs
或hadoop jar
)。您可以非常灵活地捕捉异常或使用您需要的所有编程逻辑准备语句。
如何
如果您使用的是 Hue,则使用 Oozie 意味着默认情况下您有一个 GUI 来创建您的工作流程。另请参阅屏幕截图。

在您的情况下,您可以在 GUI 中添加示例 hadoop 命令,您可以在映射器、reducer 等字段中指定。然后您可以安排您的工作流程。

可以看到,有很多 oozie job 模板,比如 map reduce job。如果您没有特定的作业模板,您可以在 Java 中实现自己的 Oozie 作业。在底层,Oozie 将内容存储在 XML 文件中,因此您也可以在 XML 中编辑您的工作流程和作业。
<workflow-app xmlns="uri:oozie:workflow:0.2"
name="whitehouse-workflow">
<start to="transform_input"/>
<action name="transform_sample_pig">
<pig>
<job-tracker>${resourceManager}</job-tracker>
<name-node>${nameNode}</name-node>
<prepare>
<delete path="pig_store"/>
</prepare>
<script>mypig.pig</script>
</pig>
<ok to="end"/>
<error to="fail"/>
</action>
<kill name="fail">
<message>Job failed, error message[${wf:errorMessage(wf:lastErrorNode())}]
</message>
</kill>
<end name="end"/>
调度/运行
一旦您编辑并设计了您的工作流程,您还可以选择运行或安排您的工作流程。调度是一个向导,允许您定义详细信息,例如频率、输入数据或更高级的主题(例如并发)。
这显示了 oozie 与脚本实现相比的另一个优势。如果您与偶尔应该被允许触发工作流的用户协作,则需要付出额外的努力才能将脚本实现集成到 GUI 中。使用 Oozie,只需单击即可完成。

权衡
像往常一样,没有解决所有问题的最佳工具的灵丹妙药。使用 Hadoop 解决方案,您必须学习特定的工具。它增加了一个学习曲线来了解 Oozie、Luigi 或 Azkaban 的工作原理。
如果您已经精通一门编程语言,则不需要此学习曲线。使用脚本语言并将您的脚本添加到调度程序,例如 cron。您拥有对异常做出反应和自定义工作流程的所有编程能力。你放弃了 UI 的舒适性来获得编程能力。
总而言之,如果您只需安排简单的作业,那么任何 Hadoop 特定的解决方案就足够了。在一定的复杂性和定制性下,使用 python 的实现以维护为代价增加了灵活性。
还有第三种选择。市场上有很多专业的 ETL 解决方案,例如 Informatica、Talend 或 OSI。