我是这个领域的乞丐,所以不知道确切的术语,对不起
问题库:想要自动处理批处理层
问题:我无法理解人们是如何运行诸如
"hadoop jar /usr/lib/hadoop-0.20-mapreduce/contrib/streaming/hadoop-streaming-2.0.0-mr1-cdh4.4.0.jar \
-mapper mapper.py \
-reducer reducer.py \
-input nfldata/stadiums \
-output nfldata/pythonoutput \
-file simple/mapper.py \
-file simple/reducer.py" 每次他们需要运行map还原作业时,是否有任何方法来自动化这个过程,比如cron或其他什么,请告诉我是否有任何资源可以了解这一点,以便我们可以调度hadoop命令或与python或bash脚本相关的内容。
我搜索的内容:Luigi建议(here)构建jar或运行命令,但没有任何文档或示例
注释:,因为我不知道java,所以我没有在java中搜索并且不能使用选项。
发布于 2016-02-05 12:56:17
您可以在Hadoop解决方案和非Hadoop解决方案之间进行选择。
Hadoop解决方案
Hadoop为本例提供了三个主要框架:
每个框架都有其优点和缺点。例如,Oozie是基于XML的(许多人不喜欢的),您可以编写可以添加到oozie工作流引擎中的作业。人们通常喜欢Oozie的地方是他们有一个GUI来设计工作流。
有关Hadoop工作流解决方案的详细信息,请通过google对这些语言进行比较。有许多内部比较可用。
Non-Hadoop-Solution
用任何语言编写工作流代码(很可能是Python、Bash或Perl等脚本语言更适合该用例,而不是编译过的语言)。将此应用程序添加到cron作业中,然后定期运行应用程序。
调用应用程序中的所有命令(如hdfs dfs或hadoop jar)。在捕获异常或准备语句时,您非常灵活,具有所需的所有编程逻辑。
HOW
使用Oozie意味着,如果您使用Hue,默认情况下您将有一个GUI来创建您的工作流。也见截图。

在您的例子中,您可以将示例hadoop命令添加到GUI中,您可以在映射器、还原器等字段中指定,然后您可以调度您的工作流。

如您所见,有许多oozie作业模板,例如map reduce作业。如果没有特定的作业模板,则可以使用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。
https://stackoverflow.com/questions/34417967
复制相似问题