【发布时间】:2014-05-09 21:16:24
【问题描述】:
不确定这是否是 MapReduce 的合适用例:我尝试实现的 OOZIE 工作流程的一部分是下载一系列以序号命名的文件(例如 1 到 20)。我希望同时下载这些文件(一次 5 个文件),所以我创建了一个 python 脚本来创建 5 个文本文件,如下所示:
1.txt: 1,2,3,4
2.txt: 5,6,7,8
3.txt: 9,10,11,12
4.txt: 13,14,15,16
5.txt: 17,18,19,20
然后,对于工作流的下一步,我创建了一个download.sh shell 脚本,它使用逗号分隔的数字列表并下载请求的文件。在工作流程中,我在 Oozie 中设置了 streaming 操作,并使用包含上面生成的文件的目录作为输入 (mapred.input.dir),并使用 download.sh 作为映射器命令,使用“cat”作为减速器命令。我假设 Hadoop 将为上面的每个输入文件生成一个不同的映射器。
这似乎有时会起作用,它会正确下载文件,但有时它只是在尝试执行时卡住了,我不知道为什么。我注意到当我增加同时下载的数量时会发生这种情况(例如,而不是每个 txt 文件的文件,我会做 20 个等等)。
所以我的问题是:这是使用 MapReduce 和 OOZIE 实现文件并行检索的正确方法吗?如果没有,这通常是如何使用 OOZIE 完成的?我正在尝试在运行 Hive 脚本之前将我的 CSV 文件放入 HDFS,但我不确定实现这一目标的最佳方法是什么。
【问题讨论】:
标签: hadoop oozie cloudera-cdh