복붙노트

[HADOOP] MongoDB 데이터를 읽고, Hadoop으로 처리하고, RDBS (MySQL)로 출력 할 수 있습니까?

HADOOP

MongoDB 데이터를 읽고, Hadoop으로 처리하고, RDBS (MySQL)로 출력 할 수 있습니까?

나는 MongoDB로 웹 애플리케이션을 구축하고있다. MongoDB는 대부분의 작업에서 잘 작동하지만 일부 부분에서는 MySQL 데이터베이스를 사용하는 트랜잭션 보증이 더 필요합니다.

내 문제는 데이터 분석을 위해 큰 MongoDB 컬렉션을 읽고 싶지만 컬렉션의 크기는 분석 작업이 처리하는 데 너무 오래 걸린다는 것을 의미합니다. 불행히도, MongoDB의 내장 된 map-reduce 프레임 워크는이 작업에서는 잘 작동하지 않을 것이므로 Apache Hadoop을 사용하여 분석을 수행하는 것을 선호합니다.

MongoDB에서 데이터를 읽고, Hadoop에서 MapReduce로 처리하고, 결과를 MongoDB 데이터베이스에 다시 출력하는 것이 가능하다는 점을 이해하고 MongoDB에서 Hadoop으로 데이터를 읽을 수 있음을 이해합니다.

문제는 MapReduce의 결과가 다른 MySQL 테이블과 병합되어야하기 때문에 MongoDB가 아닌 MySQL 데이터베이스로 들어가기를 원한다는 것입니다.

이를 위해 Sqoop이 Hadoop MapReduce의 결과를 MySQL로 내보낼 수 있음을 알고 있습니다.

궁극적으로 MongoDB 데이터를 읽고 Hadoop으로 처리 한 다음 결과를 MySQL 데이터베이스로 출력하고 싶습니다.

이것이 가능한가? 이 작업을 수행 할 수있는 도구는 무엇입니까?

해결법

  1. ==============================

    1.몇 가지주의해야 할 사항 :

    몇 가지주의해야 할 사항 :

  2. ==============================

    2.Apache Pig (Hadoop지도 축소판 위로 실행)를 살펴 보는 것이 좋습니다. MySql으로 출력합니다 (Scoop을 사용할 필요가 없습니다). 나는 당신이 묘사하고있는 것을하기 위해 그것을 사용했다. Pig와 MySql을 사용하여 "upsert"를 수행 할 수 있습니다. 돼지의 STORE 명령을 piggyBank의 DBStorage 및 MySql의 INSERT DUPLICATE KEY UPDATE (http://dev.mysql.com/doc/refman/5.0/en/insert-on-duplicate.html)와 함께 사용할 수 있습니다.

    Apache Pig (Hadoop지도 축소판 위로 실행)를 살펴 보는 것이 좋습니다. MySql으로 출력합니다 (Scoop을 사용할 필요가 없습니다). 나는 당신이 묘사하고있는 것을하기 위해 그것을 사용했다. Pig와 MySql을 사용하여 "upsert"를 수행 할 수 있습니다. 돼지의 STORE 명령을 piggyBank의 DBStorage 및 MySql의 INSERT DUPLICATE KEY UPDATE (http://dev.mysql.com/doc/refman/5.0/en/insert-on-duplicate.html)와 함께 사용할 수 있습니다.

  3. ==============================

    3.MongoHadoop 커넥터를 사용하여 MongoDB에서 데이터를 읽고 Hadoop을 사용하여 처리합니다.

    MongoHadoop 커넥터를 사용하여 MongoDB에서 데이터를 읽고 Hadoop을 사용하여 처리합니다.

    링크: https://github.com/mongodb/mongo-hadoop/blob/master/hive/README.md

    이 커넥터를 사용하여 Pig 및 Hive를 사용하여 Mongo db에서 데이터를 읽고 Hadoop을 사용하여 처리 할 수 ​​있습니다.

    몽고 하이브 테이블의 예 :

      CREATE EXTERNAL TABLE TestMongoHiveTable
        ( 
        id STRING,
        Name STRING
        )
        STORED BY 'com.mongodb.hadoop.hive.MongoStorageHandler'
        WITH SERDEPROPERTIES('mongo.columns.mapping'='{"id":"_id","Name":"Name"}')
        LOCATION '/tmp/test/TestMongoHiveTable/' 
        TBLPROPERTIES('mongo.uri'='mongodb://{MONGO_DB_IP}/userDetails.json');
    

    하이브 테이블로 내 보내면 Sqoop 또는 Pig를 사용하여 mysql에 데이터를 내보낼 수 있습니다.

    여기에 흐름이 있습니다.

    Mongo DB -> Mongo DB hadoop connector (돼지)를 이용한 데이터 처리 -> 하이브 테이블 / HDFS에 저장 - sqoop을 이용하여 mysql에 데이터 내보내기.

  4. from https://stackoverflow.com/questions/9965427/is-it-possible-to-read-mongodb-data-process-it-with-hadoop-and-output-it-into by cc-by-sa and MIT license