首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >自动化Hadoop批处理命令

自动化Hadoop批处理命令
EN

Stack Overflow用户
提问于 2015-12-22 14:21:40
回答 1查看 1.4K关注 0票数 2

我是这个领域的乞丐,所以不知道确切的术语,对不起

问题库:想要自动处理批处理层

问题:我无法理解人们是如何运行诸如

代码语言:javascript
复制
"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中搜索并且不能使用选项。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 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 dfshadoop jar)。在捕获异常或准备语句时,您非常灵活,具有所需的所有编程逻辑。

HOW

使用Oozie意味着,如果您使用Hue,默认情况下您将有一个GUI来创建您的工作流。也见截图。

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

如您所见,有许多oozie作业模板,例如map reduce作业。如果没有特定的作业模板,则可以使用Java实现自己的Oozie作业。在幕后,Oozie将内容存储在XML文件中,因此您也可以用XML编辑工作流和作业。

代码语言:javascript
复制
<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。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34417967

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档