草庐IT

hadoop - 在 hadoop streaming mapreduce 中使用组合器(使用 mrjob)

当我学习mapreduce时,其中一个关键组件是组合器。它是映射器和缩减器之间的一个步骤,本质上是在映射阶段结束时运行缩减器,以减少映射器输出的数据行数。随着我需要处理的数据量的增加(数TB规模),reduce步骤变得异常缓慢。我和我的一个friend谈过,他说这也是他的经验,他没有使用组合器,而是使用散列函数对其reduce键进行分区,该函数减少了reduce步骤中每个键的值数量.我试过了,它奏效了。有没有其他人有过组合器步骤不能很好地扩展的经验,为什么我找不到这个问题的任何文档以及解决方法?如果有办法使组合器步进缩放,我宁愿不使用解决方法。[编辑]这是我friend建议的解决方法的

hadoop - 使用 mrjob 读取多个 HDFS 文件或 S3 文件?

我有大量数据存储在HDFS系统(或者AmazonS3)中。我想用mrjob处理它。不幸的是,当运行mrjob并提供HDFS文件名或包含的目录名时,出现错误。比如这里我把数据存放在hdfs://user/hadoop/in1/目录下。为了测试,我的文件是hdfs://user/hadoop/in1/BCES_FY2014_clean.csv但在生产中我需要多个文件。文件存在:$hdfsdfs-ls/user/hadoop/in1/Found1items-rw-r--r--1hadoophadoop17716852015-12-0703:05/user/hadoop/in1/BCES_FY

hadoop - MrJob 花费大量时间 Copy local files into hdfs

我遇到的问题是:已经将我的input.txt(50MBytes)文件放入HDFS,我正在运行python./test.pyhdfs:///user/myself/input.txt-rhadoop--hadoop-bin/usr/bin/hadoopMrJob似乎花了很多时间将文件复制到hdfs(又是?)Copyinglocalfilesintohdfs:///user/myself/tmp/mrjob/test.myself.20150927.104821.148929/files/这符合逻辑吗?它不应该直接从HDFS使用input.txt吗?(使用Hadoop版本2.6.0)

postgresql - 如何使用 Mrjob 和 Hadoop 填充 postgresql 数据库

我想通过使用带有MrJob和Hadoop2.7.1的映射器来填充Postgresql数据库。我目前使用以下代码:#-*-coding:utf-8-*-#ScriptforstoringthesparsedataintoadatabasebyusingHadoopimportpsycopg2importrefrommrjob.jobimportMRJobargs_d=Falseargs_c=Trueargs_s=Trueargs_n='es_word_space'defunicodize(segment):ifre.match(r'\\u[0-9a-f]{4}',segment):ret

python - 在不忽略 key 的情况下声明 mrjob 映射器

我想用mrjob声明一个映射器函数。因为我的mapper函数需要引用一些常量来做一些计算,所以我决定把这些常量放到mapper中的Key中(还有其他方法吗?)。我在thissite上阅读了mrjob教程但是所有的例子都忽略了关键。例如:classMRWordFrequencyCount(MRJob):defmapper(self,_,line):yield"chars",len(line)yield"words",len(line.split())yield"lines",1defreducer(self,key,values):yieldkey,sum(values)基本上,我想要这

python - mrjob 找不到输入文件

我正在使用cloudera虚拟机。这是我的文件结构:[cloudera@quickstartpydoop]$hdfsdfs-ls-R/inputdrwxr-xr-x-clouderasupergroup02015-10-0215:00/input/test1-rw-r--r--1clouderasupergroup622015-10-0215:00/input/test1/file1.txtdrwxr-xr-x-clouderasupergroup02015-10-0214:59/input/test2-rw-r--r--1clouderasupergroup14288412015-1

hadoop - Hadoop 上的 MRJob 和 mapreduce 任务分区

我正在尝试使用PythonMRJob库执行mapreduce作业,但在将其正确分布到我的Hadoop集群时遇到了一些问题。我相信我只是缺少mapreduce的基本原则。我的集群是一个小型的,一主一从测试集群。基本思想是我只是请求一系列带有参数的网页,对它们进行一些分析并返回网页上的一些属性。我的map函数的输入只是一个带有如下参数的URL列表:http://guelph.backpage.com/automotive/?layout=bla&keyword=towinghttp://guelph.backpage.com/whatever/?p=blahhttp://semanticr

python - 如何使用 avro 文件作为 MRJob 作业的输入?

我需要将avro文件作为mrjobhadoop作业的输入。除非我将额外的命令传递给hadoopstreamingjar,否则我找不到任何关于如何执行此操作的文档。这会使开发复杂化,因为我一直在使用inlinerunner在本地进行测试。是否可以使用inlinerunner通过MRJob读取avro文件? 最佳答案 您需要的是告诉Hadoop您的Hadoop作业的“输入格式”是什么格式:hadoopjarhadoop-streaming.jar;;otherparamsgohere-inputformatorg.apache.avro

python - "Counters from Step 1: No Counters found"使用 Hadoop 和 mrjob

我有一个python文件,用于在Hadoop(版本2.6.0)上使用mrjob来计算二元语法,但我没有得到我希望的输出,而且我在破译终端中的输出时遇到了问题我哪里出错了。我的代码:regex_for_words=re.compile(r"\b[\w']+\b")classBiCo(MRJob):OUTPUT_PROTOCOL=mrjob.protocol.RawProtocoldefmapper(self,_,line):words=regex_for_words.findall(line)wordsinline=list()forwordinwords:wordsinline.app

Python hadoop mapreduce 作业使用 mrjob subprocess.CalledProcessError

我正在尝试在我的自定义数据上运行来自mrjob网站的基本示例。我已经使用流成功运行了Hadoopmapreduce,我也成功地尝试了没有Hadoop的脚本,但现在我正尝试通过mrjob在Hadoop上运行它,方法是执行以下命令。./mapred.py-rhadoop--hadoop-bin/usr/bin/hadoop-ohdfs:///user/cloudera/wc_result_mrjobhdfs:///user/cloudera/booksmapred.py源码如下:#!/usr/bin/envpythonfrommrjob.jobimportMRJobclassMRWordF