这听起来像是一个愚蠢的问题。
我可能会编写一个可以将输入和输出作为HDFS位置的MR代码,然后我真的不必担心hadoop / MR的并行计算能力。 (如果我错了,请纠正我)。
但是,如果我的输入不是HDFS位置,则说我正在将MongoDB数据作为输入-mongodb:// localhost:27017 / mongo_hadoop.messages并运行我的映射器和reducers并将数据存储回mongodb,HDFS将如何出现。我的意思是我该如何确保首先将1 GB或任何大小的大文件分发到HDFS上,然后再对其进行并行计算?
是这个直接URI不会分发数据,而是我需要获取BSON文件,将其加载到HDFS上,然后将HDFS路径作为MR的输入提供给它,或者该框架足够聪明,可以单独执行此操作?
如果上述问题太愚蠢或根本没有任何道理,我感到抱歉。我对大数据确实很陌生,但是非常兴奋地涉足这一 Realm 。
谢谢。
最佳答案
您正在描述 DBInputFormat
。这是一种输入格式,可从外部数据库读取拆分。 HDFS仅参与设置作业,而不参与实际输入。还有一个 DBOutputFormat
。使用DBInputFormat
这样的输入时,分割是合乎逻辑的,例如。关键范围。
阅读Database Access with Apache Hadoop以获得详细说明。
关于mongodb - 如何使MapReduce与HDFS一起使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26519657/