当前位置:  开发笔记 > 编程语言 > 正文

MongoDB之Hadoop驱动介绍-mysql教程

对于Collection分块后,会产生一个Config数据库,在这个数据库下有一个叫做chunks的表,其中每个chunk记录了start_row与end_row,

对于Collection分块后,会产生一个Config数据库,在这个数据库下有一个叫做chunks的表,其中每个chunk记录了start_row与end_row,

1. 一些概念Hadoop是一套Apache开源的分布式计算框架,其中包括了分布式文件系统DFS与分布式计算模型MapReduce,而MongoDB是一个面向文档的分布式数据库,它是NoSql的一种,,而这里所要介绍的就是一个MongoDB的Hadoop驱动,这里就是把MongoDB作为MapReduce的输入源,充分利用MapReduce的优势来对MongoDB的数据进行处理与计算。
2. MongoDB的Hadoop驱动目前这个版本的Hadoop驱动还是测试版本,还不能应用到实际的生产环境中去。
你可以从下面网址https://github.com/mongodb/mongo-hadoop下载到最新的驱动包,下面是它的一些依赖说明:

  • 目前推荐用最新的Hadoop 0.20.203版本,或者是用Cloudera CHD3还做
  • MongoDB的版本最好是用1.8+
  • 还有是MongoDB的java驱动必须是2.5.3+
  • 它的一些特点:
  • 提供了一个Hadoop的Input和Output适配层,读于对数据的读入与写出
  • 提供了大部分参数的可配置化,这些参数都可有XML配置文件来进行配置,你可以在配置文件中定义要查询的字段,查询条件,排序策略等
  • 目前还不支持的功能:
  • 目前还不支持多Sharding的源数据读取
  • 还不支持数据的split操作
  • 3. 代码分析
    运行其examples中的WordCount.java代码

    4. 分块机制的简单介绍

    这里没有实现对不同shard的split操作,也就是说,对于分布在不同shard上的数据,只会产生一个Map操作。
    这里本人提供了一个分片的思路,有兴趣的可以讨论一下。

    我们知道,对于Collection分块后,会产生一个Config数据库,在这个数据库下有一个叫做chunks的表,其中每个chunk记录了start_row与end_row,而这些chunk可以分布在不同的shard上,我们可以通过分析这个Collection来得到每个shard上的chunk信息,从而把每个shard上的chunk信息组合成一个InputSplit,这就是这里的MongoInputSplit,这样的话,只要去修改MongoInputFormat这个类的getSplits这个方法,加入对chunks表的分析,得到shard的信息,这样就可以实现多split的Map操作,对于不同的Shard,每个Map都会调用本地的Mongos代理服务,这样就实现了移动计算而不是移动数据的目的。

    linux

    推荐阅读
    帆侮听我悄悄说星星
    这个屌丝很懒,什么也没留下!
    DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
    Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有