`

MongoDB: Hadoop Integerateion 2

 
阅读更多

Prepare ENV

download mongo-java-driver from http://central.maven.org/maven2/org/mongodb/mongo-java-driver

compile mongo-hadoop-connector for hadoop2.3.0

alter build.gradle to change hadoop-version to 2.3 and delete related download dependencies task

#./gradlew jar

distribute the aboves jars to hadoop clustert's nodes

#cp core/build/libs/mongo-hadoop-core-1.2.1-SNAPSHOT-hadoop_2.3.jar  hadoop-2.3.0/share/hadoop/common/lib

#cp mongo-java-driver-2.12.2.jar  hadoop-2.3.0/share/hadoop/common/lib

 

or add the above two jars into project lib dir and add them to build path

 

 

Note: the destination dir is not hadoop-2.3.0/lib

 

Run MongoDB Hadoop examples

#cd  /path/to/mongodb-hadoop

#./gradlew historicalYield

The above command will download hadoop and install it. But,I want to run the example on my existed hadoop cluster.

To see what happens for this command, first find the files which execute this commands

#find . |xargs grep 'historicalYield' -sl

 

 

task historicalYield(dependsOn: 'configureCluster') << {
    exec() {
        commandLine "mongoimport", "-d", "mongo_hadoop", "-c", "yield_historical.in", "--drop",
                    "examples/treasury_yield/src/main/resources/yield_historical_in.json"
    }

    hadoop("examples/treasury_yield/build/libs/treasury_yield-${project(':core').version}-hadoop_${hadoop_version}.jar",
           "com.mongodb.hadoop.examples.treasury.TreasuryYieldXMLConfig", [
                "mongo.input.uri=mongodb://localhost:27017/mongo_hadoop.yield_historical.in",
                "mongo.output.uri=mongodb://localhost:27017/mongo_hadoop.yield_historical.out"
           ])
}

 

 

task configureCluster(dependsOn: ['copyFiles']) << {
}

 

task copyFiles(dependsOn: ['installHadoop', 'installHive']) << {
    def hadoopEtc
    def hadoopLib
    if (hadoop_version.startsWith("1")) {
        hadoopLib = "${hadoopHome}/lib"
        hadoopEtc = "${hadoopHome}/conf"
    } else {
        hadoopLib = "${hadoopHome}/share/hadoop/common"
        hadoopEtc = "${hadoopHome}/etc/hadoop"
    }

    println "Updating mongo jars"
    copy {
        from "core/build/libs/mongo-hadoop-core-${project(':core').version}-hadoop_${hadoop_version}.jar"
        into hadoopLib
        rename { "mongo-hadoop-core.jar" }
    }
    copy {
        from "hive/build/libs/mongo-hadoop-hive-${project(':core').version}-hadoop_${hadoop_version}.jar"
        into hiveHome + '/lib'
        rename { "mongo-hadoop-hive.jar" }
    }
    download {
        src "http://central.maven.org/maven2/org/mongodb/mongo-java-driver/${javaDriverVersion}/mongo-java-driver-${javaDriverVersion}.jar"
        dest "${hadoopLib}/mongo-java-driver.jar"
        onlyIfNewer true
    }
    println "Updating cluster configuration"
    copy {
        from 'clusterConfigs'
        into hadoopEtc
    }
}

 

 

 

def hadoop(jar, className, args) {
    def line = ["${hadoopHome}/bin/hadoop",
                "jar", jar, className,
                //Split settings
                "-Dmongo.input.split_size=8",
                "-Dmongo.job.verbose=true",
    ]
    args.each {
        line << "-D${it}"
    }
    println "Executing hadoop job:\n ${line.join(' \\\n\t')}"
    def hadoopEnv = [:]
    if (hadoop_version.startsWith("cdh")) {
        hadoopEnv.MAPRED_DIR = 'share/hadoop/mapreduce2'
    }
    exec() {
        environment << hadoopEnv
        commandLine line
    }
}

 

----------------------------

so,understood the details behind the screen. We can run the example by hand

1. load sample data into mongoDB

#mongoimport -d mongo_hadoop -c yield_historical.in --drop <examples/treasury_yield/src/main/resources/yield_historical_in.json

 

2.run example

#cd mongo-hadoop/examples/treasury_yield/build/libs

#hadoop jar treasury_yield-1.2.1-SNAPSHOT-hadoop_2.3.jar com.mongodb.hadoop.examples.treasury.TreasuryYieldXMLConfigV2 -Dmongo.input.uri=mongodb://localhost:27017/mongo_hadoop.yield_historical.in -Dmongo.output.uri=mongodb://localhost:27017/mongo_hadoop.yield_historical.out -Dmongo.input.split_size=8 -Dmongo.job.verbose=true

 

 

 

 

 

References

http://docs.mongodb.org/ecosystem/tutorial/getting-started-with-java-driver/

https://github.com/mongodb/mongo-hadoop/blob/master/CONFIG.md

https://github.com/mongodb/mongo-hadoop/blob/master/examples/README.md

http://docs.mongodb.org/ecosystem/tutorial/getting-started-with-hadoop/

http://mongodb-documentation.readthedocs.org/en/latest/ecosystem/tutorial/getting-started-with-hadoop.html

http://www.mongodb.com/press/integration-hadoop-and-mongodb-big-data%E2%80%99s-two-most-popular-technologies-gets-significant

http://blog.mortardata.com/post/43080668046/mongodb-hadoop-why-how

http://help.mortardata.com/data_apps/mongo_hadoop

http://www.severalnines.com/blog/big-data-integration-etl-clickstream-mongodb-hadoop-analytics

分享到:
评论

相关推荐

    MongoDB: The Definitive Guide

    MongoDB: The Definitive Guide MongoDB is a powerful, flexible, and scalable general­purpose database. It combines the ability to scale out with features such as secondary indexes, range queries, ...

    解决Linux上MongoDB启动脚本错误---env: /etc/init.d/mongodb : no such file or directory

    2. **检查与确认** 首先,确认MongoDB是否已经安装。可以使用`mongod --version`命令来查看版本信息。如果没有输出,说明MongoDB可能没有安装或者安装不完整。 3. **修复启动脚本** - 如果MongoDB已安装,但启动...

    MongoDB北京2014 - MongoDB和Hadoop 完美大数据方案 - 周思远

    - **客户行为分析**:Hadoop 处理大量历史数据,揭示客户的行为模式,支持精准营销策略的制定。 #### 四、MongoDB Connector概述及特点 MongoDB Connector 作为一个桥梁,连接了 MongoDB 和 Hadoop,使得两者之间...

    文件系统、Mongodb、Hadoop_存取方案分析

    【文件系统、MongoDB、Hadoop 存取方案分析】 在大数据时代,高效的数据存取方案至关重要。本文将深入探讨三种常见的数据存取方案:文件系统、MongoDB 和 Hadoop,以及它们各自的特点和适用场景。 一、文件系统 ...

    深入学习MongoDB:Scaling MongoDB && 50 Tips and Tricks for MongoDB Developers

    深入学习MongoDB:Scaling MongoDB && 50 Tips and Tricks for MongoDB Developers深入学习MongoDB中文版Scaling MongoDB英文版50 Tips and Tricks for MongoDB Developers英文版高清完整目录3本打包合集

    Windows上安装MongoDB:完整步骤详解.pdf

    2. 启动MongoDB服务:打开命令行,输入`mongod.exe --dbpath=[安装目录]\data\db`命令,其中[安装目录]是你的MongoDB安装路径。 当MongoDB服务启动成功后,你可以通过命令行与MongoDB交互: 1. 连接MongoDB:输入`...

    Book of MongoDB and Hadoop

    3. 生态系统:Hadoop有庞大的生态系统,包括HBase(分布式列式数据库)、YARN(资源管理系统)、Pig(数据流处理)、Spark(快速数据处理框架)等,这些工具进一步扩展了Hadoop的功能。 书中的《Hadoop权威指南》和...

    MongoDB与Hadoop MapReduce的海量非结构化数据处理方案.pdf

    MongoDB与Hadoop MapReduce的海量非结构化数据处理方案 本文旨在探索基于MongoDB与Hadoop MapReduce的海量非结构化数据处理方案,旨在解决大数据时代下的数据处理难题。该方案通过MongoDB Cluster、MongoDB-...

    [文档]Mongodb&Hadoop技术交流.pptx

    【MongoDB&Hadoop技术交流】 本篇技术交流主要探讨了MongoDB和Hadoop两种在大数据处理领域中广泛应用的技术。MongoDB是一种NoSQL数据库,而Hadoop是分布式计算框架,两者在处理大规模数据方面有着各自的优势。 **...

    pm2-mongodb:用于监视mongodb数据库的PM2模块

    PM2模块可自动监视mongodb的生命体征: 查询,输入,更新,删除 连接数 已用存储空间 网络速度(输入和输出) 代表名称和状态 pm2-mongodb 安装 $ npm install pm2 -g $ pm2 install pm2-mongodb 组态 NODE :用户...

    fdb-document-layer:在FoundationDB上的文档数据模型,实现了MongoDB:registered:有线协议

    文档层使用MongoDB:registered:有线协议,允许通过现有的MongoDB:registered:客户端绑定使用MongoDB:registered:API。 所有持久数据都存储在FoundationDB键值存储中。 文档层实现了MongoDB:registered:API(v ...

    掌握MongoDB:NoSQL数据库基础与高级特性教程.rar

    什么是 MongoDB MongoDB 简介 MongoDB 特点 安装与配置 安装 MongoDB 启动与配置 MongoDB 基本操作 数据库和集合 文档操作 查询操作 基本查询 高级查询 索引与性能优化 创建索引 索引类型 索引优化 聚合操作 聚合...

    mongodb-hadoop-workshop:MongoDB-Hadoop 研讨会练习

    MongoDB-Hadoop 研讨会练习 MongoDB 作为操作数据库为应用程序提供支持,而 Hadoop 与强大的分析基础设施一样提供智能。 在本次研讨会中,我们将首先了解这些技术如何与适用于 Hadoop 的 MongoDB 连接器配合使用。 ...

    yii2-mongodb:Yii 2 MongoDB扩展

    无论运行php composer.phar require --prefer-dist yiisoft/yii2-mongodb或添加"yiisoft/yii2-mongodb": "~2.1.0"到composer.json的require部分。组态要使用此扩展,只需在您的应用程序配置中添加以下代码: return...

    docker-mongodb:一个盒子里的MongoDB

    一个盒子里的MongoDB (!!! mongodb @ testing over alpine:edge !!!)使用MongoDB的基于AlpineLinux的Docker映像 用法 作为服务器: docker run -d --name mongodb -p 27017:27017 -v /data/mongodb:/var/lib/...

    puppet-mongodb:mongodb安装

    mongodb人偶模块 目录 概述 从OS存储库或从MongoDB社区/企业存储库在RHEL / Ubuntu / Debian上安装MongoDB。 模块说明 MongoDB模块管理mongod守护程序的mongod服务器安装和配置。 目前,它仅支持一个MongoDB服务器...

    Spring集成MongoDB官方指定jar包:spring-data-mongodb-1.4.1.RELEASE.jar

    Spring集成MongoDB官方指定jar包:spring-data-mongodb-1.4.1.RELEASE.jar

    feathers-mongodb:mongodb的羽毛服务

    羽毛mongodb 用于数据库适配器,使用用于。 $ npm install --save mongodb feathers-mongodb 重要提示: feathers-mongodb实现了和。 该适配器还需要一个数据库服务器。 原料药 service(options) 返回使用给定...

Global site tag (gtag.js) - Google Analytics