问题标签 [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.
java - Hadoop:作业在较小的数据集上运行良好,但在大型数据集上失败
我有以下情况
我有 3 台机器集群,配置如下。
Master
Slave 01
Slave 02
hadoop/conf/core-site.xml
hadoop/conf/mapred-site.xml
hadoop/conf/hdfs-site.xml
- 我有超过 200 万个 XML 文档(每个文档大小 ~ 400 KB)
map
任务打开这些xml中的每一个并将它们作为JSON
reduce
任务将这些中的每一个都JSON
作为字符串,应用转换并发出它- 不。任务-
map
100 - 不。任务-
reduce
01 - 整个工作运行良好时
number of documents = 10,000
- 什么时候
number of documents = 278262
,作业失败,我看到以下各种问题
在网页界面上
在 slave-01、slave-02 上
在主人
当我去检查登录时slaves
,这就是我发现的hadoop-hduser-datanode-hadoop-01.log
请帮助我了解我需要做什么才能解决此问题?
hadoop - 无法标记文件数据
我是hadoop和mapreduce的新手。在映射器中,我将使用以下给定格式对文本文件中的这些数据进行标记,前几行
使用 String Tokenizer 我无法拆分这些数据,它让机器从这个文件中捕获数据感到困惑。除了 String.split() 之外,这个问题还有其他选择吗
hadoop - 如何在 Hadoop 中只识别大小写?
我是hadoop mapreduce的新手。我想开发mapreduce代码以将文件文本转换为小写。但是与文件中前面的序列一样。这意味着文件的实际顺序而不是类似于字数数据序列。所以有什么能给我的想法吗?
hadoop - 错误:失败的地图任务数超出了允许的限制。FailedCount: 1. 关于在 Hadoop 上运行 Lucene 搜索
我使用一个大文本文件中的每条记录对 Lucene 的索引执行搜索,然后根据我的需要处理结果并写入输出。
我试图通过将大输入文本文件和预先创建的 Lucene 索引放到 Hadoop 的文件系统中来使用 Hadoop。然后我更改了执行文件处理(读取文件记录、在 Lucene 上搜索、写入输出)的 java 程序,以从 Hadoop 文件系统读取记录,并在内存中创建 Lucene 索引。我启动 Hadoop 作业的命令如下:
请注意,“concept.jar”包含 concept.HadoopConceptRunner 类,这是由我编写的。
我的问题是我无法让这个 Hadoop 作业正确运行 =.="。我遇到了如下异常,我找不到任何其他有意义的东西可以帮助我解决这个问题。
和
我该如何解决这个错误?
python - hadoop-streaming:当 mapred.reduce.tasks=1 时,reducer 似乎没有运行
我正在运行一个基本Map Reduce
程序hadoop-streaming
看起来Map
像
我运行它
我在Hadoop in Action中读到,mapred.reduce.tasks=1
是
由于我们没有指定任何特定的 reducer,它将使用默认的 IdentityReducer。顾名思义,IdentityReducer 将其输入直接传递给输出。
当我看到我的控制台时,我看到了
它没有任何进展,只是继续运行。它似乎不起作用,我该如何解决这个问题?
更新
当
D mapred.reduce.tasks=0
我看到两个文件part-00000
并且part-00001
两个文件都有一行 0何时
D mapred.reduce.tasks=1
和-reduce 'cat'
行为与 reduce 没有做任何事情一样当我跑步时,
cat file | python AttibuteMax.py 8
我得到 868
这意味着D mapred.reduce.tasks=0
并且cat file | python AttributeMax.py 8
也没有产生相同的输出(但它们应该,对吗?)
当输入数据也相同时,会导致行为差异的原因是什么?
更新 1
- 当
D mapred.reduce.tasks=0
我看到 4 个文件part-00000
,part-00001
,part-00002
和part-00002
单行 268, 706, 348, 868 - 当我运行时,
$ cat ~/Downloads/hadoop/input/apat63_99.txt | python ../../../src/main/python_scripts/AttributeMax.py 8 | cat
我确实看到所需的输出为868
ruby - 使用 RVM 的 Hadoop Streaming 找不到 Gem
原始问题(下面的长版本)。短版:使用 ruby 脚本作为映射器运行 hadoop 流,并在所有集群节点上安装 rvm 不起作用。因为hadoop启动的shell不知道ruby(并且没有正确加载rvm)。为什么?
我想wukong
用作一个 gem 来为 hadoop 创建 map/reduce 作业。问题是wukong
hadoop无法加载gem(即找不到)。Hadoop 作业向我显示以下错误:
但是,cat somefile | ./test.rb --map
按预期在所有集群机器上运行。我还在我的测试文件中包含了一些调试打印,我可以在 hadoop 日志中检索它们。跑步时
它产生所有的宝石wukong
,包括
$LOAD_PATH
产生与打印运行本地(不是由 hadoop 启动)ruby 脚本时相同的路径。
为什么 hadoop 启动的 ruby 脚本找不到明确安装并正常工作的 gem?
hadoop 启动为:
hadoop - Hadoop数据拆分和数据流控制
对于将 hadoop 作为存储系统,我有 2 个问题。
我有一个包含 3 个数据节点的 hadoop 集群,我想将一个大小为 128mb 的大文件(假设拆分大小为 64mb )直接拆分到我选择的数据节点。这就是在这种情况下如何控制哪个拆分到哪个 DataNode。我的意思是说我们有 3 个数据节点(即 D1、D2、D3)并且我们想要特定的拆分(比如说“A”),我希望它移动到特定的数据节点让它成为 D2。
我们应该怎么做 ?
hadoop 文件系统的最小可能拆分大小是多少。我们如何将其配置为最小的拆分大小。
python - Amazon Elastic MapReduce - SIGTERM
我有一个 EMR 流作业 (Python),它通常工作正常(例如 10 台机器处理 200 个输入)。但是,当我针对大型数据集(12 台机器处理总共 6000 个输入,每个输入大约 20 秒)运行它时,经过 2.5 小时的运算后,我收到以下错误:
如果我没看错,则子进程失败并显示代码 143,因为有人向流式作业发送了 SIGTERM 信号。
我的理解正确吗?如果是这样:EMR 基础设施何时会发送 SIGTERM?
join - Map-side join 与 Hadoop Streaming
我有一个文件,其中每一行都是一条记录。我希望某个字段中具有相同值的所有记录(如果字段 A 则调用)转到同一个映射器。我听说这被称为 Map-Side Join,我还听说如果文件中的记录按我所说的字段 A 排序很容易。
如果更容易,数据可以分布在多个文件中,但每个文件都按字段 A 排序。
这是正确的吗?我如何在流媒体中做到这一点?我正在使用 Python。假设它只是我用来启动 Hadoop 的命令的一部分?
azure - 访问 Hadoop 的原始数据
我正在查看 data.seattle.gov 数据集,我想知道如何将所有这些大型原始数据发送到 hadoop 集群。我在 azure 上使用 hadoop。