Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mongodb 如何使MapReduce与HDFS一起工作_Mongodb_Hadoop_Mapreduce - Fatal编程技术网

Mongodb 如何使MapReduce与HDFS一起工作

Mongodb 如何使MapReduce与HDFS一起工作,mongodb,hadoop,mapreduce,Mongodb,Hadoop,Mapreduce,这听起来像是个愚蠢的问题。 我可能会编写一个MR代码,将输入和输出作为HDFS位置,这样我就不必担心hadoop/MR的并行计算能力了(如果我在这里错了,请纠正我) 但是,如果我的输入不是HDFS位置,则表示我使用MongoDB数据作为输入-mongodb://localhost:27017/mongo_hadoop.messages 运行我的映射器和还原器并将数据存储回mongodb,HDFS将如何进入画面。我的意思是,我如何确保1GB或任何大小的大文件首先在HDFS上分发,然后在HDFS上进

这听起来像是个愚蠢的问题。 我可能会编写一个MR代码,将输入和输出作为HDFS位置,这样我就不必担心hadoop/MR的并行计算能力了(如果我在这里错了,请纠正我)

但是,如果我的输入不是HDFS位置,则表示我使用MongoDB数据作为输入-mongodb://localhost:27017/mongo_hadoop.messages 运行我的映射器和还原器并将数据存储回mongodb,HDFS将如何进入画面。我的意思是,我如何确保1GB或任何大小的大文件首先在HDFS上分发,然后在HDFS上进行并行计算? 是这个直接URI不会分发数据,而我需要取而代之的是BSON文件,将其加载到HDFS上,然后将HDFS路径作为输入提供给MR,还是框架足够聪明,可以自己完成这项工作

如果上述问题太愚蠢或毫无意义,我很抱歉。我对大数据真的很陌生,但很兴奋能进入这个领域


谢谢。

对不起,我对MongoDb不太清楚

如果您只是想知道,如果我们使用的数据源是一个表,拆分是如何发生的,那么这就是MapRed使用HBase时的答案

我们将使用TableInputFormat在MapRed作业中使用Hbase表

7.7。映射任务拆分 7.7.1. 默认的HBase MapReduce拆分器

当TableInputFormat用于在MapReduce作业中源HBase表时,其拆分器将为表的每个区域生成映射任务。因此,如果表中有100个区域,则无论扫描中选择了多少列族,作业都将有100个映射任务

7.7.2。自定义拆分器

对于那些对实现自定义拆分器感兴趣的人,请参阅TableInputFormatBase中的getSplits方法。这就是映射任务分配的逻辑所在。

您正在描述的。这是一种从外部数据库读取拆分的输入格式。HDFS只参与设置作业,而不参与实际输入。还有一个问题。对于像
DBInputFormat
这样的输入,分割是逻辑的,例如键范围


阅读详细解释。

这是一个好问题,而不是愚蠢的问题

1.

"mongodb://localhost:27017/mongo_hadoop.messages 运行我的映射器和还原器并将数据存储回mongodb,HDFS将如何进入画面。”

在这种情况下,你不需要考虑HDFs。你不需要做任何与hdf相关的事情。就像编写多线程应用程序一样,每个线程都将数据写入mongodb

事实上,hdfs独立于map reduce,map reduce也独立于hdfs。因此,你可以根据自己的意愿单独或一起使用它们

2. 如果你想输入/输出DB以减少映射,U显示考虑dBIN格式,但这是另一个问题。
现在,hadoop DBInputFormat只支持JDBC。我不确定是否有一些mongodb版本的DBInputFormat。也许你可以自己搜索或实现它。

谢谢你分享的精彩链接。此外,我将我的问题重新表述为“只有当MR作业位于hdfs文件输入上时,数据节点上的hdfs复制和分发才会出现,还是当输入来自本地文件系统或URL时,hdfs才会出现?”如果输入与hdfs无关,hdfs分发对映射阶段不起作用。如果集群由HDFS支持,那么HDFS将在启动作业中扮演次要角色(jar和config被复制到HDFS中,从那里可以“本地化”到运行任务的节点)。HDF可能在减少产量或中间阶段(如多阶段MR作业)发挥作用。