[HADOOP] MongoDB 데이터를 읽고, Hadoop으로 처리하고, RDBS (MySQL)로 출력 할 수 있습니까?
HADOOPMongoDB 데이터를 읽고, 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.몇 가지주의해야 할 사항 :
몇 가지주의해야 할 사항 :
-
==============================
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.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에 데이터 내보내기.
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
'HADOOP' 카테고리의 다른 글
[HADOOP] csv 파일에서 hdfs의 데이터 프레임으로 읽기 (0) | 2019.06.18 |
---|---|
[HADOOP] Apache Pig : hadoop fs -text를 사용하여 잘 보이는 파일로드 (0) | 2019.06.18 |
[HADOOP] HDFS 파일 감시자 (0) | 2019.06.18 |
[HADOOP] Windows에서 hadoop의 tasktracker 시작 문제 (0) | 2019.06.18 |
[HADOOP] hdfs 데이터 노드가 namenode와 연결이 끊어졌습니다. (0) | 2019.06.18 |