22
MongoDB 와 Hadoop 연동 개발 사례 5Rocks 문성익

MongoDB와 Hadoop’연동개발사례 - NexRnexr.co.kr/upload/mongo.pdf · 2018-06-12 · 처리구조 ’ 전체서비스는 AWS에 MobileGames RedisBuffer MongoDB’ EMR MongoDB’

  • Upload
    others

  • View
    5

  • Download
    0

Embed Size (px)

Citation preview

Page 1: MongoDB와 Hadoop’연동개발사례 - NexRnexr.co.kr/upload/mongo.pdf · 2018-06-12 · 처리구조 ’ 전체서비스는 AWS에 MobileGames RedisBuffer MongoDB’ EMR MongoDB’

MongoDB����������� ������������������  와����������� ������������������  Hadoop����������� ������������������  연동����������� ������������������  개발����������� ������������������  사례����������� ������������������  

5Rocks����������� ������������������  문성익����������� ������������������  

Page 2: MongoDB와 Hadoop’연동개발사례 - NexRnexr.co.kr/upload/mongo.pdf · 2018-06-12 · 처리구조 ’ 전체서비스는 AWS에 MobileGames RedisBuffer MongoDB’ EMR MongoDB’

About����������� ������������������  Us����������� ������������������  

http://www.5rocks.io����������� ������������������  

게임/앱����������� ������������������  각종����������� ������������������  지표����������� ������������������  분석����������� ������������������  

분석+운영����������� ������������������  (캠페인,����������� ������������������  푸쉬)����������� ������������������  

Android/iOS,����������� ������������������  Cocos2D,����������� ������������������  Unity����������� ������������������  (and����������� ������������������  more)����������� ������������������  

Page 3: MongoDB와 Hadoop’연동개발사례 - NexRnexr.co.kr/upload/mongo.pdf · 2018-06-12 · 처리구조 ’ 전체서비스는 AWS에 MobileGames RedisBuffer MongoDB’ EMR MongoDB’

What����������� ������������������  We����������� ������������������  Do����������� ������������������  

Page 4: MongoDB와 Hadoop’연동개발사례 - NexRnexr.co.kr/upload/mongo.pdf · 2018-06-12 · 처리구조 ’ 전체서비스는 AWS에 MobileGames RedisBuffer MongoDB’ EMR MongoDB’

데이터����������� ������������������  특성����������� ������������������   Spiky����������� ������������������  Big����������� ������������������  Data����������� ������������������  

예:����������� ������������������  ~10만����������� ������������������  User����������� ������������������  가����������� ������������������  하루에����������� ������������������  한번����������� ������������������  플레이����������� ������������������  ����������� ������������������  

세션,����������� ������������������  각����������� ������������������  게임����������� ������������������  화면,����������� ������������������  아이템����������� ������������������  획득…⋯����������� ������������������  

주로����������� ������������������  플레이하는����������� ������������������  시각����������� ������������������  비슷:����������� ������������������  “소셜”����������� ������������������  로����������� ������������������  강화����������� ������������������  

1M+����������� ������������������  이벤트����������� ������������������  데이터가����������� ������������������  비슷한����������� ������������������  시간대에����������� ������������������  몰림����������� ������������������  

Page 5: MongoDB와 Hadoop’연동개발사례 - NexRnexr.co.kr/upload/mongo.pdf · 2018-06-12 · 처리구조 ’ 전체서비스는 AWS에 MobileGames RedisBuffer MongoDB’ EMR MongoDB’

처리����������� ������������������  구조����������� ������������������   전체����������� ������������������  서비스는����������� ������������������  AWS����������� ������������������  에����������� ������������������  

Mobile����������� ������������������  Games����������� ������������������  

Redis����������� ������������������  Buffer����������� ������������������  

MongoDB����������� ������������������  

EMR����������� ������������������  

MongoDB����������� ������������������  

Web����������� ������������������  Server����������� ������������������  

Users����������� ������������������  

Page 6: MongoDB와 Hadoop’연동개발사례 - NexRnexr.co.kr/upload/mongo.pdf · 2018-06-12 · 처리구조 ’ 전체서비스는 AWS에 MobileGames RedisBuffer MongoDB’ EMR MongoDB’

이벤트����������� ������������������  수집����������� ������������������  

Redis����������� ������������������  Buffer����������� ������������������  :����������� ������������������  순간적����������� ������������������  트래픽에����������� ������������������  대응����������� ������������������  

이벤트들을����������� ������������������  버퍼링해����������� ������������������  두고����������� ������������������  백그라운드에서����������� ������������������  DB에����������� ������������������  저장����������� ������������������  

MongoDB����������� ������������������  insert����������� ������������������  :����������� ������������������  Bulk����������� ������������������  Insert����������� ������������������  

PIOPS����������� ������������������  EBS����������� ������������������  사용할����������� ������������������  수도����������� ������������������  

Page 7: MongoDB와 Hadoop’연동개발사례 - NexRnexr.co.kr/upload/mongo.pdf · 2018-06-12 · 처리구조 ’ 전체서비스는 AWS에 MobileGames RedisBuffer MongoDB’ EMR MongoDB’

데이터����������� ������������������  특성����������� ������������������   Why����������� ������������������  MongoDB?����������� ������������������  

각종����������� ������������������  이벤트:����������� ������������������  비정형����������� ������������������  데이터����������� ������������������  

세션����������� ������������������  :����������� ������������������  시작시간+끝����������� ������������������  시간����������� ������������������  

구매:����������� ������������������  아이템ID,����������� ������������������  액수����������� ������������������  

커스텀����������� ������������������  이벤트����������� ������������������  

����������� ������������������  

à����������� ������������������  MongoDB����������� ������������������  

Page 8: MongoDB와 Hadoop’연동개발사례 - NexRnexr.co.kr/upload/mongo.pdf · 2018-06-12 · 처리구조 ’ 전체서비스는 AWS에 MobileGames RedisBuffer MongoDB’ EMR MongoDB’

MongoDB����������� ������������������   특징����������� ������������������  

http://www.mongodb.org����������� ������������������  

Schema����������� ������������������  없음:����������� ������������������  BSON����������� ������������������  레코드����������� ������������������  

Schema����������� ������������������  변경에����������� ������������������  따른����������� ������������������  migration����������� ������������������  등의����������� ������������������  부담����������� ������������������  없음����������� ������������������  

Replication,����������� ������������������  Sharding����������� ������������������  

Page 9: MongoDB와 Hadoop’연동개발사례 - NexRnexr.co.kr/upload/mongo.pdf · 2018-06-12 · 처리구조 ’ 전체서비스는 AWS에 MobileGames RedisBuffer MongoDB’ EMR MongoDB’

MongoDB����������� ������������������  MR����������� ������������������   Legacy����������� ������������������  

통계����������� ������������������  결과가����������� ������������������  MongoDB����������� ������������������  에����������� ������������������  

데이타����������� ������������������  관리����������� ������������������  :����������� ������������������  Single����������� ������������������  Backup����������� ������������������  

Javascript����������� ������������������  &����������� ������������������  JSON����������� ������������������  :����������� ������������������  프로토타이핑����������� ������������������  편함����������� ������������������  

Page 10: MongoDB와 Hadoop’연동개발사례 - NexRnexr.co.kr/upload/mongo.pdf · 2018-06-12 · 처리구조 ’ 전체서비스는 AWS에 MobileGames RedisBuffer MongoDB’ EMR MongoDB’

MongoDB����������� ������������������   왜����������� ������������������  Hadoop����������� ������������������  과����������� ������������������  연결을?����������� ������������������  

Global����������� ������������������  Lock����������� ������������������  :����������� ������������������  ‘replace’����������� ������������������  or����������� ������������������  ‘reduce’����������� ������������������  type����������� ������������������  

Javascript����������� ������������������  :����������� ������������������  개발환경����������� ������������������  

Sharding����������� ������������������  안하면����������� ������������������  병렬화����������� ������������������  안됨����������� ������������������  

Input����������� ������������������  /����������� ������������������  Output����������� ������������������  Collection����������� ������������������  이����������� ������������������  하나로����������� ������������������  고정����������� ������������������  

Page 11: MongoDB와 Hadoop’연동개발사례 - NexRnexr.co.kr/upload/mongo.pdf · 2018-06-12 · 처리구조 ’ 전체서비스는 AWS에 MobileGames RedisBuffer MongoDB’ EMR MongoDB’

mongo-hadoop����������� ������������������   MongoDB����������� ������������������  to����������� ������������������  Hadoop����������� ������������������  Adapter����������� ������������������  

Hadoop����������� ������������������  MR����������� ������������������  의����������� ������������������  I/O����������� ������������������  를����������� ������������������  MongoDB����������� ������������������  에����������� ������������������  

Actively����������� ������������������  Developed����������� ������������������  

현재����������� ������������������  stable����������� ������������������  은����������� ������������������  v1.1.0����������� ������������������  

Document����������� ������������������  약간����������� ������������������  미비����������� ������������������  

Page 12: MongoDB와 Hadoop’연동개발사례 - NexRnexr.co.kr/upload/mongo.pdf · 2018-06-12 · 처리구조 ’ 전체서비스는 AWS에 MobileGames RedisBuffer MongoDB’ EMR MongoDB’

Elastic����������� ������������������  Mapreduce����������� ������������������   AWS����������� ������������������  

EC2����������� ������������������  보다����������� ������������������  저렴����������� ������������������  

노드����������� ������������������  수����������� ������������������  관리����������� ������������������  편리����������� ������������������  

“Alive”����������� ������������������  EMR����������� ������������������  JobFlow����������� ������������������  는����������� ������������������  일반����������� ������������������  hadoop����������� ������������������  클러스터처럼����������� ������������������  사용����������� ������������������  

(대신����������� ������������������  AWS����������� ������������������  Web����������� ������������������  콘솔에서����������� ������������������  Job����������� ������������������  관리����������� ������������������  못함)����������� ������������������  

����������� ������������������  

1.0.3����������� ������������������  :����������� ������������������  Mongo-hadoop����������� ������������������  사용����������� ������������������  시����������� ������������������  Streaming����������� ������������������  사용����������� ������������������  못함����������� ������������������  

Page 13: MongoDB와 Hadoop’연동개발사례 - NexRnexr.co.kr/upload/mongo.pdf · 2018-06-12 · 처리구조 ’ 전체서비스는 AWS에 MobileGames RedisBuffer MongoDB’ EMR MongoDB’

Mongo-hadoop����������� ������������������  on����������� ������������������  EMR����������� ������������������  EMR����������� ������������������  에����������� ������������������  mongo-hadoop����������� ������������������  설치����������� ������������������  

Bootstrap����������� ������������������  스크립트����������� ������������������  

Thrift����������� ������������������  사용할����������� ������������������  경우����������� ������������������  EMR����������� ������������������  에����������� ������������������  포함된����������� ������������������  0.7.0����������� ������������������  사용해야����������� ������������������  

����������� ������������������  

wget -P /home/hadoop/lib http://central.maven.org/maven2/org/mongodb/mongo-java-driver/2.11.1/mongo-java-driver-2.11.1.jar!wget -P /home/hadoop/lib https://s3.amazonaws.com/drivers.mongodb.org/hadoop/mongo-hadoop-core_1.0.4-1.1.0.jar!

Page 14: MongoDB와 Hadoop’연동개발사례 - NexRnexr.co.kr/upload/mongo.pdf · 2018-06-12 · 처리구조 ’ 전체서비스는 AWS에 MobileGames RedisBuffer MongoDB’ EMR MongoDB’

Split����������� ������������������   한����������� ������������������  콜렉션을����������� ������������������  어떻게����������� ������������������  쪼개나����������� ������������������  

Mapper����������� ������������������  단위����������� ������������������  

Sharding����������� ������������������  한����������� ������������������  DB����������� ������������������  는����������� ������������������  한����������� ������������������  shard����������� ������������������  가����������� ������������������  한����������� ������������������  split����������� ������������������  

Sharding����������� ������������������  안한����������� ������������������  DB����������� ������������������  는����������� ������������������  _id����������� ������������������  기준으로����������� ������������������  :����������� ������������������  splitVector()����������� ������������������  

Page 15: MongoDB와 Hadoop’연동개발사례 - NexRnexr.co.kr/upload/mongo.pdf · 2018-06-12 · 처리구조 ’ 전체서비스는 AWS에 MobileGames RedisBuffer MongoDB’ EMR MongoDB’

Split����������� ������������������   Caveats����������� ������������������  

MR����������� ������������������  들어가기����������� ������������������  "전"����������� ������������������  에����������� ������������������  split����������� ������������������  

여러����������� ������������������  MR����������� ������������������  을����������� ������������������  돌린다면����������� ������������������  splitVector����������� ������������������  명령이����������� ������������������  마구����������� ������������������  날아감;����������� ������������������  DB����������� ������������������  부담����������� ������������������  

Hadoop����������� ������������������  job����������� ������������������  queue����������� ������������������  말고����������� ������������������  다른����������� ������������������  방법으로����������� ������������������  job����������� ������������������  들����������� ������������������  관리할����������� ������������������  필요����������� ������������������  

Page 16: MongoDB와 Hadoop’연동개발사례 - NexRnexr.co.kr/upload/mongo.pdf · 2018-06-12 · 처리구조 ’ 전체서비스는 AWS에 MobileGames RedisBuffer MongoDB’ EMR MongoDB’

Split����������� ������������������  ����������� ������������������   Caveats����������� ������������������  

-D����������� ������������������  mongo.input.query={“k":{"$gte":“a“,"$lte“:“z“}}����������� ������������������  

쿼리는����������� ������������������  split����������� ������������������  이후에����������� ������������������  적용����������� ������������������  

데이타����������� ������������������  분포에����������� ������������������  따라서는����������� ������������������  빈����������� ������������������  split����������� ������������������  이����������� ������������������  많이����������� ������������������  생길����������� ������������������  수����������� ������������������  있음����������� ������������������  

Page 17: MongoDB와 Hadoop’연동개발사례 - NexRnexr.co.kr/upload/mongo.pdf · 2018-06-12 · 처리구조 ’ 전체서비스는 AWS에 MobileGames RedisBuffer MongoDB’ EMR MongoDB’

Mapper����������� ������������������   개발����������� ������������������  시����������� ������������������  고려사항����������� ������������������  

BSON����������� ������������������  오브젝트로����������� ������������������  map����������� ������������������  &����������� ������������������  reduce����������� ������������������  간����������� ������������������  통신����������� ������������������  

Thrift����������� ������������������  를����������� ������������������  사용하면����������� ������������������  일일이����������� ������������������  attribute����������� ������������������  코딩����������� ������������������  안����������� ������������������  해도����������� ������������������  됨����������� ������������������  

대신����������� ������������������  thrift����������� ������������������  schema����������� ������������������  파일은����������� ������������������  관리해야����������� ������������������  

Page 18: MongoDB와 Hadoop’연동개발사례 - NexRnexr.co.kr/upload/mongo.pdf · 2018-06-12 · 처리구조 ’ 전체서비스는 AWS에 MobileGames RedisBuffer MongoDB’ EMR MongoDB’

Reducer����������� ������������������   개발����������� ������������������  시����������� ������������������  고려사항����������� ������������������  

결과를����������� ������������������  MongoDB����������� ������������������  에����������� ������������������  insert����������� ������������������  /����������� ������������������  update����������� ������������������  

Update����������� ������������������  시����������� ������������������  인덱스는����������� ������������������  제대로����������� ������������������  걸려����������� ������������������  있나?����������� ������������������  

Hierarchical����������� ������������������  key:����������� ������������������  {a:{b:����������� ������������������  1}}����������� ������������������  인가����������� ������������������  {"a.b":����������� ������������������  1}����������� ������������������  인가����������� ������������������  

Page 19: MongoDB와 Hadoop’연동개발사례 - NexRnexr.co.kr/upload/mongo.pdf · 2018-06-12 · 처리구조 ’ 전체서비스는 AWS에 MobileGames RedisBuffer MongoDB’ EMR MongoDB’

BSONFile����������� ������������������   ETL����������� ������������������  

HDFS����������� ������������������  에����������� ������������������  BSON����������� ������������������  포맷����������� ������������������  파일을����������� ������������������  쓰고����������� ������������������  읽을����������� ������������������  수����������� ������������������  있음����������� ������������������  

Mongodump����������� ������������������  /����������� ������������������  Mongorestore����������� ������������������  와����������� ������������������  호환����������� ������������������  

여러����������� ������������������  job����������� ������������������  에서����������� ������������������  쓰는����������� ������������������  중간����������� ������������������  파일로도����������� ������������������  좋음����������� ������������������  

Mapper����������� ������������������  에서����������� ������������������  읽을때����������� ������������������  최초����������� ������������������  한번은����������� ������������������  split����������� ������������������  계산����������� ������������������  

이후����������� ������������������  .split����������� ������������������  파일에����������� ������������������  저장����������� ������������������  

Page 20: MongoDB와 Hadoop’연동개발사례 - NexRnexr.co.kr/upload/mongo.pdf · 2018-06-12 · 처리구조 ’ 전체서비스는 AWS에 MobileGames RedisBuffer MongoDB’ EMR MongoDB’

Multiple����������� ������������������  Collection����������� ������������������   한����������� ������������������  job,����������� ������������������  다수����������� ������������������  collection����������� ������������������  

MongoRecordWriter,����������� ������������������  MongoOutputFormat����������� ������������������  상속����������� ������������������  

Reducer����������� ������������������  output����������� ������������������  에����������� ������������������  따라����������� ������������������  collection����������� ������������������  선택할����������� ������������������  수����������� ������������������  있음����������� ������������������  

����������� ������������������  

����������� ������������������  

(더����������� ������������������  이상����������� ������������������  자세한����������� ������������������  설명은����������� ������������������  생략)����������� ������������������  

Page 21: MongoDB와 Hadoop’연동개발사례 - NexRnexr.co.kr/upload/mongo.pdf · 2018-06-12 · 처리구조 ’ 전체서비스는 AWS에 MobileGames RedisBuffer MongoDB’ EMR MongoDB’

결론����������� ������������������  &����������� ������������������  고려사항����������� ������������������  

MongoDB����������� ������������������  MR����������� ������������������  로는����������� ������������������  처리����������� ������������������  안되는����������� ������������������  경우����������� ������������������  

AWS����������� ������������������  EMR����������� ������������������  에서����������� ������������������  돌리기도����������� ������������������  쉬움����������� ������������������  

Split����������� ������������������  필요����������� ������������������  없는����������� ������������������  (혹은����������� ������������������  곤란한)����������� ������������������  DB����������� ������������������  에서도����������� ������������������  잘����������� ������������������  쓸����������� ������������������  수����������� ������������������  있음����������� ������������������  

����������� ������������������  

DB����������� ������������������  억세스����������� ������������������  패턴에����������� ������������������  주의할����������� ������������������  필요����������� ������������������  있음����������� ������������������  

~100GB����������� ������������������  이상은����������� ������������������  좀����������� ������������������  부담스러운����������� ������������������  듯����������� ������������������  

(하지만����������� ������������������  PIOPS����������� ������������������  를����������� ������������������  쓴다면����������� ������������������  어떨까?)����������� ������������������  

Page 22: MongoDB와 Hadoop’연동개발사례 - NexRnexr.co.kr/upload/mongo.pdf · 2018-06-12 · 처리구조 ’ 전체서비스는 AWS에 MobileGames RedisBuffer MongoDB’ EMR MongoDB’

Thank����������� ������������������  You����������� ������������������  ����������� ������������������  &����������� ������������������  AMAA����������� ������������������  

����������� ������������������  개발자����������� ������������������  모십니다:����������� ������������������  [email protected]����������� ������������������