我正在尝试熟悉Hadoop/HbaseMapReduce作业,以便能够正确编写它们。现在我有一个Hbase实例,其中包含一个名为dns的表,其中包含一些DNS记录。我试图制作一个简单的唯一域计数器来输出文件并且它有效。现在,我只使用IntWritable或Text,我想知道是否可以为我的Mapper/Reducer使用自定义对象。我试着自己做,但我得到了Error:java.io.IOException:Initializationofallthecollectorsfailed.Errorinlastcollectorwas:nullatorg.apache.hadoop.mapre
我有MySQL数据库,我在其中存储以下BLOB(包含JSON对象)和ID(用于此JSON对象)。JSON对象包含很多不同的信息。比如,“城市:洛杉矶”和“州:加利福尼亚”。目前大约有50万条这样的记录,但它们还在增长。而且每个JSON对象都很大。我的目标是在MySQL数据库中进行搜索(实时)。比如说,我想搜索所有具有“州”到“加利福尼亚”和“城市”到“旧金山”的JSON对象。我想利用Hadoop来完成这项任务。我的想法是会有“工作”,它从MySQL中获取100条记录(行),根据给定的搜索条件验证它们,返回符合条件的那些(ID)。优点/缺点?我知道有人可能认为我应该为此使用简单的SQL功
当map/reduce使用的数据节点出现故障时会发生什么?不应该将作业重定向到另一个数据节点吗?我的代码应该如何处理这种异常情况? 最佳答案 如果datanode宕机,运行在该节点上的任务(假设您也将其用作tasktracker)将失败,这些失败的任务将被分配给其他tasktracker以重新执行。在死数据节点中丢失的数据block将在其他数据节点中可用,因为将跨集群复制数据。因此,即使数据节点出现故障,除了重新执行失败任务的非常短暂的延迟外,不会有任何损失。所有这些都将由框架来处理。您的代码无需担心这一点。
我想编写一个Java包装器,它将“兼容程序”转换为mapreduce形式,以供Hadoop框架执行。我知道我的问题很含糊。但这是我打算做的。输入一个java程序。用户将指定的哪一部分程序将由mapreduce执行。这个java程序将是由我的程序输入,它将提供等效的mapreduce程序到hadoop。我被困在几点上。每个类(class)的Mapreduce程序都不同。我要怎么走概括它?从我应该开始的地方开始。解决这个问题的方法应该是什么?欢迎提出任何建议。这将帮助我决定进一步的方向。 最佳答案 一般来说是不可能的,并不是所有的程序都
我正在Gzipped.arc文件上运行MapReduce任务。类似于此question,我遇到了困难,因为Gzip解压缩是自动运行的(因为文件有.gz扩展名),但它导致换行符/回车符按照Unix文件编码被渲染为换行符的问题。这使得输入完全不可读,因为它取决于文件中嵌入的特定字符数。我正在尝试禁用Gzip解压缩,以便我可以在我的映射器中正确地执行它。我试过:-jobconfstream.recordreader.compression=none但这似乎并不影响压缩。有什么方法可以防止对我的输入进行Gzip解压缩?谢谢,-Geoff 最佳答案
上下文:我们正在考虑使用符合AMQP标准的解决方案来计算每天90GB的恒定实时数据流。我们想要实现的是实时统计数据,或多或少,基于我们正在观察的所有指标或指标的某些组合。考虑的策略是在队列上发送数据并让工作进程处理数据的增量,将数据作为原始数据的聚合发送回队列。观察:对我来说,这看起来像是Hadoop之类的工作,但人们提出了担忧(和防护),主要是关于速度。我没有时间对两者进行基准测试,尽管我们期望通过队列(在10~100mb/s附近的任何地方)抽取大量数据。我仍然认为它看起来像是分布式计算系统的工作,而且我也觉得队列解决方案的可扩展性比分布式计算解决方案差。问题:简而言之,我说得对吗?
我正在使用MAPI工具(它的microsoftlib和在.NET中),然后使用apacheTIKA库来处理和提取pst交换服务器,这是不可扩展的。我如何使用MR方式处理/提取pst...Java中是否有任何工具和库可供我在我的MR作业中使用。任何帮助都会很棒。JpstLib内部使用:PstFilepstFile=newPstFile(java.io.File)问题是对于HadoopAPI,我们没有任何接近java.io.File的东西。以下选项始终存在但效率不高:FiletempFile=File.createTempFile("myfile",".tmp");fs.moveToLoc
我的Reduce操作产生的输出文件很大(Gzip后1GB)。我希望它将中断输出生成200MB的较小文件。是否有属性/Java类可以按大小拆分减少输出。线?我不能增加reducer的数量,因为这会对hadoop作业的性能产生负面影响。 最佳答案 我很好奇为什么你不能只使用更多的reducer,但我会相信你的话。您可以做的一个选择是使用MultipleOutputs并从一个reducer写入多个文件。例如,假设每个reducer的输出文件为1GB,而您想要256MB的文件。这意味着您需要为每个reducer写入4个文件,而不是一个文件。
我有一个超过300000行的文件,它是mapreduce作业的输入,我希望该作业仅处理该文件的前1000行。有什么好的方法可以限制发送到reducer的记录数吗?我只需要一个简单的identityreducer就可以写出我的输出。目前,reducer写出的行数与输入中的行数一样多。 最佳答案 首先,确保您的mapreduce程序设置为仅使用一个reducer。它必须明确设置,否则Hadoop可能会选择其他一些数字,然后就没有好的方法来协调reduce任务以确保它们发出的总数不超过1000。然后,您可以简单地在Reducer类中维护一
我编写了一个代码,它执行类似于SQLGroupBy的操作。我拿的数据集在这里:250788681419,20090906,200937,200909,619,SUNDAY,WEEKEND,ON-NET,MORNING,OUTGOING,VOICE,25078,PAY_AS_YOU_GO_PER_SECOND_PSB,SUCCESSFUL-RELEASEDBYSERVICE,17,0,1,21.25-10-1452-1452-17publicclassMyMapextendsMapper{publicvoidmap(LongWritablekey,Textvalue,Contextcon