问题标签 [hadoop-streaming]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
3 回答
481 浏览

mapreduce - './manage.py runserver' 在 celery map/reduce 任务运行时重启;有时会引发 inner_run 错误

我在我的 django 项目中有一个视图,它启动了一个 celery 任务。celery 任务本身通过 subprocess/fabric 触发了一些 map/reduce 作业,hadoop 作业的结果存储在磁盘上——实际上没有任何东西存储在数据库中。在 hadoop 作业完成后,celery 任务会发送一个 django 信号表明它已完成,如下所示:

真正让我困惑的是,运行 celery 任务时 django runserver 正在重新加载,就好像我在 django 项目中的某个地方更改了一些代码(我没有,我可以向你保证!)。有时,这甚至会导致 runserver 命令出现错误,在 runserver 命令重新加载之前我看到如下输出并且再次正常(注意:此错误消息与此处描述的问题非常相似)。

我已经将问题缩小到当调用 hadoop 时,替换local("""hadoop ...""")local("ls")不会导致重新加载 django 运行服务器出现任何问题。hadoop 代码中没有错误——当它不被 celery 调用时,它自己运行得很好。

知道是什么原因造成的吗?

0 投票
1 回答
165 浏览

elastic-map-reduce - 如何将 Hadoop Streaming -file 标志传递给 Amazon ElasticMapreduce?

-file标志允许您将可执行文件打包为作业提交的一部分,从而允许您运行 MapReduce,而无需先手动将可执行文件复制到 S3。有没有办法将-file标志与亚马逊的 elastic-mapreduce 命令一起使用?如果没有,上传要运行的二进制文件的最简单方法是什么?

0 投票
2 回答
1794 浏览

python - Hadoop 流在 map/reduce 操作中崩溃

我在单个节点上使用 hadoop 1.0.1,并且正在尝试使用 python 2.7 流式传输制表符分隔的文件。我可以让 Michael Noll 的字数统计脚本使用 hadoop/python 运行,但无法让这个非常简单的映射器和缩减器工作,它只是复制文件。这是映射器:

这是减速器:

这是输入文件的一部分:

mapper 和 reducer 在 linux 中工作正常:

但是在我 chmod 映射器和减速器之后,将输入文件移动到 hdfs 并检查它是否存在并运行:

我收到以下错误:

有任何想法吗?谢谢。

0 投票
1 回答
2371 浏览

java - Hadoop:奇怪的 ClassNotFoundException

我得到一个 classnotfound 异常。声称未找到的类不存在,但类名设置为我的 map reduce 作业的输入文件列表的路径。

正如我们所见,/user/hduser/datasets/是输入文件的路径。为什么我会收到此错误ClassNotFoundException?为什么它把它看作一个类?


我发现了自己的错误。我有一个包结构。我需要指定我的包裹信息

在我的工具中,没有将包作为参数提供给 Java 的选项。所以我需要没有包装。但是由于缺少此输入文件路径之前的参数,因此出现以下错误。

我的课程直接在其根目录下的 tmp.jar 中。我的意思是没有 org.myorg 等...

解决方案:

它将 manifest_file 的内容与 jar 存档中生成的清单文件合并。在 manifest_file Main-Class 中包含以下行:[Name_Of_Class]

0 投票
1 回答
1588 浏览

logging - 作业历史日志文件

我有使用 hadoop vaidya 工具的程序。 http://hadoop.apache.org/mapreduce/docs/r0.21.0/vaidya.html

$HADOOP_HOME/contrib/vaidya/bin/vaidya.sh -jobconfig <path1> -joblog <path2>

我无法找到工作经历;我在哪里可以找到 hadoop 中的作业历史日志文件?

提前致谢 !

0 投票
2 回答
102 浏览

hadoop - 在写入期间拆分文件

大师!

很长一段时间我找不到以下问题的答案:hadoop 如何在写入过程中拆分大文件。示例:1) 块大小 64 Mb 2) 文件大小 128 Mb(平面文件,包含文本)。

当我写文件时,它将被分成两部分(文件大小/块大小)。但是... Block1 之后的可能出现 将在... word300 word301 wo 和 Block 2 将开始 rd302 word303 ... 写案例将是

Block1 将在 ... word300 word301 结束,Block 2 将从 word302** word303 ...

或者你可以在写hadoop拆分算法的地方链接。

先感谢您!

0 投票
1 回答
996 浏览

hadoop - 选择哪一个:Hadoop 自定义 jars、Hadoop Streaming、Pig 或 Mahout?

我正在开发一个 NLP 项目,该项目可以创建实体集并从大规模语料库中计算成对相似度。目前我正在使用hadoop 流,并且已经在Python中实现了所有的映射器和减速器。由于该算法需要几轮 map-reduce,我使用 Shell 脚本来链接作业。

现在这是我的担忧以及接下来我想做的事情:

  • [关注1]。作业链和作业控制。链接 hadoop 流作业是有问题的。如果作业序列 (job1-job2-job3) 中的 job2 失败,我必须手动删除输出文件夹,调整启动作业的脚本文件并从中间重新运行作业序列。我真的希望找到一种更聪明的方法来做到这一点。由于我需要经常调整算法的参数和逻辑,我不想一次又一次地重复这些步骤。

  • [关注 2]。速度和效率。我认为很大一部分时间成本是用于将文本解析为数字以及这种完全没有必要的格式转换过程。在开发过程中输入和测试那些几乎重复的 Python 代码也需要花费很多时间。

  • [关注3]。易于维护和分发。随着项目越来越大(我有超过 20 个 map-reduce 工作),它确实需要将整个项目模块化。我想让它面向对象,并使用IDE来开发和维护项目,这样可以更自如地处理各种内部数据结构和格式。而且我想将我的项目作为一个包分发,以便其他人可以从中受益。我需要一种简单的方法将整个项目导入 IDE 并使其易于分发。

我对解决方案的可能性进行了一些研究:

  • 备选方案 1. Hadoop 自定义 jar:似乎最好的方法是将整个项目转换为 java - 一个 hadoop 自定义 jar。这可能会解决所有问题,包括作业链接、效率和维护问题。但这可能需要相当长的时间,而且我已经找到了一种进行高效调试的方法。

  • 备选方案 2. Pig:我发现这个问题的答案对于确定何时(不)使用 pig 非常有帮助。在回答中,Arun_suresh 说如果“您需要在 Map/reduce 函数中进行一些非常具体的计算……那么您应该考虑部署自己的 jars”。我的工作包括 shingling、hashing、min-hashing、permutation 等。可以使用 Pig Latin 实现吗?有没有什么地方可以让我了解 Pig Latin 程序的计算复杂程度?

  • 备选方案 3. Mahout:我发现新发布的Apache Mahout版本有几个功能与我正在做的重叠,但它不能替代我的工作。我应该将我的项目建立在 Mahout 上吗?

由于我基本上是一个人完成这项工作,并且只有大约 2 周的时间预算来完成整个家政工作,大约 1 个月的时间来改进它,我真的需要找到一个高效可靠的方法来完成它。请帮我选择一种替代方案,或者告诉我您是否有更好的解决方案。

0 投票
1 回答
118 浏览

hadoop - 为 Hadoop Streaming 构建 Hadoop 作业对象

我正在尝试从 Java 配置和运行 Hadoop Streaming 作业(我正在使用的系统希望 Hadoop 作业可以通过 Java 方法调用)。

我确实在(http://hadoop.apache.org/common/docs/r0.20.2/api/org/apache/hadoop/streaming/StreamJob.html#createJob(java.lang.String[]))中找到了createJob方法,但此方法返回一个已被弃用的对象。有什么方法可以创建流式传输对象,或将其转换为?org.apache.hadoop.streaming.StreamJobJobConfJobJobConfJob

0 投票
1 回答
2719 浏览

hadoop - Hadoop MapReduce 作业输入文件 ClassNotFound

我正在一个包含两个节点(主/从和从)的 hadoop 集群上构建示例 Map/Reduce 任务。以下是我的规格:

我正在运行 M/R 任务如下

但似乎无法从下面的消息中找到输入文件

下面是我正在使用的 MyMapRed 类。它有一个对列表作为输入。减速器应该给出每组的平均 Val。

任何人都可以提出我错过的 ClassNotFoundException 吗?

0 投票
2 回答
2114 浏览

hadoop - 获取hadoop流式jobid

所有 Hadoop 作业都有唯一的 jobid。您可以使用 jobid 获取作业状态或作业计数器。问题是我怎样才能得到我刚刚从我的脚本运行的工作的jobid?当然,我想以可靠和简单(如果可能的话)的方式做到这一点。

例子:

1)从我的脚本中运行:

2)现在我想以某种方式获得已启动任务的jobid

3) 当我有 jobid 时,我可以进行 hadoop job -status 和 hadoop job -counter 查询。

更新:

同步情况(等到完成,获取jobid然后询问状态/计数器)似乎是所需的最小值,但有时使用起来并不方便。有时我想同时运行几个 hadoop 流作业(作为后台任务),并且我想记住以后可以使用的所有 jobid,例如用于工作流分析。

事实上,我已经找到了一些解决方案,但我认为它是一种 hack,这让我很困扰。如果有人向我展示更优雅的解决方案,我将不胜感激。这是解决方案:

1)当我运行一个 hadoop 流作业时,我必须指定一个输出 hdfs 目录

2)使用这个目录我可以访问hdfs中的作业配置文件:

3)最后,我可以从配置文件的名称中提取jobid