首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何使MapReduce与HDFS协同工作

如何使MapReduce与HDFS协同工作
EN

Stack Overflow用户
提问于 2014-10-23 01:02:21
回答 3查看 88关注 0票数 0

这听起来可能是个愚蠢的问题。我可能会编写一个MR代码,它可以将输入和输出作为HDFS的位置,然后我真的不需要担心hadoop/先生的并行计算能力(如果我错了,请纠正我)。

但是,如果我的输入不是HDFS位置,比如我将一个mongodb://localhost:27017/mongo_hadoop.messages数据作为输入--运行映射器和减法器,并将数据存储回mongodb,那么HDFS将如何进入画面。我的意思是,如何确保1GB或任何大小的大文件首先在HDFS上分发,然后在其上执行并行计算?是这个直接URI不会分发数据吗?我需要接受BSON文件,将它加载到HDFS上,然后将HDFS路径作为MR的输入,或者框架本身就足够聪明了?

如果上面的问题太愚蠢或者根本没有任何意义,我很抱歉。我对大数据非常陌生,但非常兴奋地投入到这个领域。

谢谢。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2014-10-24 05:28:41

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

请阅读使用Apache访问数据库以获得详细解释。

票数 0
EN

Stack Overflow用户

发布于 2014-10-24 05:18:01

对不起,我对MongoDb不太确定。

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

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

来自http://hbase.apache.org/book.html#hbase.mapreduce.classpath

7.7.图-任务拆分7.7.1。默认的HBase MapReduce拆分器

当TableInputFormat用于在MapReduce作业中获取HBase表时,它的拆分器将为表的每个区域创建一个映射任务。因此,如果表中有100个区域,则不管扫描中选择了多少列族,都会有100个映射任务。

7.7.2.自定义分离器

有关那些对实现自定义拆分器感兴趣的人,请参见TableInputFormatBase中的方法TableInputFormatBase。这就是地图任务分配的逻辑所在。

票数 0
EN

Stack Overflow用户

发布于 2014-12-01 03:27:38

这是个好问题,不傻。

1.

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

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

事实上,hdfs是独立于map减少的,而map减少也是独立于hdfs的。所以,你可以把它们分开使用,也可以一起使用,作为你的愿望。

2.如果您想要输入/输出db以映射减少,则表示考虑DBInputFormat,但这是另一个问题。

现在,hadoop DBInputFormat只支持JDBC。我不确定是否有一些mongodb版本的DBInputFormat。也许你可以自己搜索或者实现它。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26519657

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档