빅데이터플랫폼기반소셜네트워크데이터분석사례 2012.02 김형준 이저작물은크리에이티브커먼즈코리아저작자표시 - 비영리 - 변경금지 2.0 대한민국라이센스에따라이용하실수있습니다.
김형준 babokim@gmail.com 현 ) 그루터 (www.gruter.com) 아키텍트 삼성 SDS, NHN www.jaso.co.kr www.cloudata.org www.cloumon.org www.twitter.com/babokim www.facebook.com/babokim 페이스북그룹 클라우드컴퓨팅구현기술
소셜네트워크데이터에는어떤정보가있나? 사람 대화 링크 텍스트키워드 사진 관심 전파
소셜네트워크데이터에는어떤정보가있나? {createdat=sun Feb 12 10:35:37 KST 2012, id=168508523955752962, text=' @babokim: 일요일 11 시결혼식... 민폐. 너무일찍온일인 ', source='<a href="http://twitter.com/#!/download/iphone" rel="nofollow">twitter for iphone</a>', istruncated=false, inreplytostatusid=-1, inreplytouserid=- 1, isfavorited=false, inreplytoscreenname='null', geolocation=null, place=null, retweetcount=0, wasretweetedbyme=false, contributors=null, annotations=null, retweetedstatus=null, usermentionentities= {start=1, end=9, name='kimhj', screenname='babokim', id=21827129}], urlentities=[], hashtagentities=[], user=userjsonimpl{id=49236846, name='yk,kwon', screenname='gaiaville', location='seoul, Korea', description='cloud, Search and Social 검색은인간을이롭게한다. the scent of search 검색의향기. searcus.com God's Bless for human facebook.com/gaiaville', iscontributorsenabled=false, profileimageurl='http://a0.twimg.com/profile_images/1532047455/275001_1111655154_3938554_n_n ormal.jpg', profileimageurlhttps='https://si0.twimg.com/profile_images/1532047455/275001_1111655154_39385 54_n_normal.jpg', url='http://www.gruter.com', isprotected=false, followerscount=741, status=null, profilebackgroundcolor='022330', profiletextcolor='333333', profilelinkcolor='0084b4', profilesidebarfillcolor='c0dfec', profilesidebarbordercolor='a8c7f7', profileusebackgroundimage=true, showallinlinemedia=true, friendscount=232, createdat=sun Jun 21 13:56:00 KST 2009, favouritescount=432, utcoffset=32400, timezone='seoul', profilebackgroundimageurl='http://a0.twimg.com/images/themes/theme15/bg.png', profilebackgroundimageurlhttps='https://si0.twimg.com/images/themes/theme15/bg.png', profilebackgroundtiled=false, lang='ko', statusescount=5423, isgeoenabled=true, isverified=false, translator=false, listedcount=49, isfollowrequestsent=false}}
소셜네트워크데이터로무엇을분석할수있나? 성별, 나이대계정매칭친구관계지역 글쓴이의주요관심사항글쓴이의친한친구관계인기 / 급상승키워드링크종류별 ( 그림, 뉴스, 동영상등 ) 순위키워드관계 (JCO <-> 컨퍼런스 ) 자주방문하는지역 글퍼짐관계특정주제에대해관심있는그룹그룹간의관계그룹내에영향력있는사람
기업은왜소셜네트워크데이터에관심을가지는가? 수백만의고객이모여서대화를나누는곳이기때문에마케팅을수행하거나제품의반응등을듣기위한최적의장소이다.
소셜네트워크플랫폼??? 데이터처리??? 오늘발표주제는무엇으로할까?
BigData 소셜네트워크데이터 Volume Velocity Various Value 트위터 : 2 억 / 일, 한국 400 백만 / 일, 3 백만사용자페이스북블로그 소셜네트워크의빠른데이터전파력. 실시간모니터링 / 분석필요. 분석결과를바탕으로빠른피드백 다양한유형의데이터. 비정형텍스트데이터. 사용자관계네트워크데이터. 링크, 사진, 비디오등 잠재고객의관심사항기업브랜드, 제품등에대한평가고객들간의관계
왜 (Big)Data 플랫폼이필요한가? 데이터가다양하고계속변화 ( 서비스종류도많고, 서비스의데이터 /API 도계속변화 ) 무엇을분석해야할지모르는경우가많다. ( 데이터를자주만져봐야알수있다.) 시스템, 데이터모두알아야한다. ( 이런전문가는많지않고비싸다.) 비용대비성능 (Return On Investment, 엔터프라이즈급솔루션도입?)
Backtype: Twitter 링크분석사례 Workers choose queue to enqueue to using hash/mod of URL All updates for same URL guaranteed to go to same worker Workers share the load of schemifying tweets Distribute tweets randomly on multiple queues Workers schemify tweets and append to Hadoop Workers update statistics on URLs by incrementing counters in Cassandra
Storm: backtype streamming processing 트위터실시간분석 분산아키텍처 - 1 대의 Master(Nimbus) - N 대의 Worker(Supervisor) - ZooKeeper 에의해관리 DAG(Direct Acyclic Graph) - Stream: unbounded sequence of tuples - Spout: Input - Bolt: Processing unit - Topology. 여러개의 spout, bolt 로구성되며그래프로표현. 한번실행된 Topology 는강제로 kill 하기전에는계속수행됨
Facebook: Social plug-in Transactional 수집 실시간분석 process over 20 billion events per day (200,000 events per second) with a lag of less than 30 seconds. 실시간 Feedback 배치분석 Analytic
Facebook: hadoop/hbase, ptail, puma 데이터수집기 (scribe) 데이터수집기 (scribe) 데이터수집기 (scribe) Write, sync Hadoop /category1/collect_1.dat /category1/collect_2.dat /category1/collect_3.dat ptail Driver Checkpoint Handler Aggregation Store Storage Thrift Server HBase Key1: value Key2: value Key3: value 클라이언트
(Big)Data 플랫폼이란? 데이터의전체라이프사이클을관리하는시스템 ( 수집, 저장, 분석, 폐기 ) 데이터유형변화에도시스템의변경없이적용, 운영가능 다양한분석알고리즘또는분석플랫폼이적용가능 (Map/Reduce, MPI, Graph 등 ) 비즈니스요구사항에부합되는적절한분석 Latency 지원 ( 실시간, 준 - 실시간, 배치 ) 데이터의용량증가에도즉시대응가능
BigData 플랫폼 : Hadoop Eco-System http://indoos.wordpress.com/2010/08/16/hadoop-ecosystem-world-map/
BigData 플랫폼관련기술 구분설명오픈소스 데이터수집 원본데이터저장 트렌젝션데이터저장 실시간분석플랫폼 배치분석플랫폼 데이터마이닝 / 통계도구 클러스터관리및모니터링 데이터 Serialization 데이터발생원으로부터안정적인저장소로저장하는기능 수행 수집된데이터를안정적으로저장하는저장소비구조적데이터저장소로주로대용량파일저장소 원본데이터를실시간으로저장, 조회처리를하기위한저장소구조적저장소또는검색엔진기술을활용 데이터수집과동시에분석을수행복잡한분석보다 count, sum 등단순한 aggregation 연산정도수행 전체또는부분데이터에대해복잡하고다양한분석수행대용량처리를위해분산, 병렬처리가필요단순텍스트분석부터그래프분석까지다양한분석모델지원 Cluster, Classification 등과같이데이터마이닝을위한기본알고리즘라이브러리및도구 대부분분산시스템으로구성되기때문에전체클러스터에대한관제및모니터링도복잡 이기종플랫폼및다양한종류의솔루션을사용하기때문에데이터전송및처리에대한표준프레임워크필요 Flume, Scribe, Chukwa Hadoop FileSystem MogileFS NoSQL(Cloudata, HBase, Cassandra) Katta, ElasticSearch S4, Storm Hadoop MapReduce(Hive, Pig) Giraph, GoldenOrb Mahout, R ZooKeeper, HUE, Cloumon Thrift, Avro, ProtoBuf
www.seenal.com 구축사례
기획단계 소셜네트워크데이터분석서비스에는어떤기능을제공해야할까? 개발자 1 : 친구관계를네트워크분석을이용하여추천을하자! 개발자 2: 키워드중심으로사용자를클러스터링하자! - 결론은고객도, 그루터 ( 엔지니어 ) 도잘모른다. - 시스템관점이아닌데이터를먼저살펴보자. SNS 데이터를볼수있는전문가필요 이전문가가데이터를지속적으로볼수있는시스템필요 시스템에는부분데이터가아닌전체데이터를저장하고 개발자가아닌데이터전문가가쉽게접근해서 빠르고자주분석할수있어야한다.
저장 / 배치분석플랫폼만들기 데이터처리에있어서가장큰고민중에하나는, 미래의구체적인요구사항을아직모른다, 다만, 확실한것은 : - 데이터는늘어날것이다 - 데이터의소비용도도다양해질것이다 - 데이터프로세싱에대한다양한요구도늘어날것이다 데이터의흐름은한번시작되면멈추지않는다 ; 즉달리는차를멈추고, 바퀴를바꿔야하는식의아키텍처는맞지않다. 기존에구축된시스템의데이터흐름에영향을없게하거나최소화하면서확장요건을만족시키는솔루션이필요하다. 장정식수석그루터데이터아키텍트
이런구성은? Crawler #1 Crawler #2 Database Database (Replication) 질의 Crawler #N?? 데이터분석가
저장 / 배치분석플랫폼구성 Crawler #1 Crawler #2 Crawler #N Cloudata (NoSQL) 실시간질의 Bamboo Collector 저장 Hadoop Map/Reduce Machine Learning HiveQL 질의 async call Bamboo Receiver (HiveTableLoader) 저장 Hadopo File System 원본 Hive Table 데이터분석가
저장 / 배치분석플랫폼구성 (Crawler) 수집대상, 수집데이터증가에도프로세스증설만으로수집능력향상특정 Crawler 장애시자동으로다른 Crawler 가역할대신수행
저장및분석플랫폼구성 ( 파일시스템 ) 고가용대용량분산파일시스템 수천대규모단일클러스터구성, BigData 분석용데이터저장소로 Defacto Standard 별도의외부스토리지가아닌 x86 장비내부의로컬디스크이용 고가용성을위해하나의파일을여러서버에복제 특정서버장애발생시자동감지및복구 서버추가 / 제거시별도의작업불필요 단점 : 저장가능한파일수한계, NameNode 가 SPOF, 범용스토리지로사용하기어려움
저장및분석플랫폼구성 (Data pipeline) Bamboo: Gruter s data stream platform 데이터발생원으로부터데이터처리와흐름제어를통해목적지까지수집된데이터를효과적으로전달 각노드는 Netty 기반의 upstream/downstream 구조 (Flume 의 source 와 sink 개념과유사 ) 시스템 runtime 중에도노드 (Sever/Client 조합 ) 연결을통해 data flow 확장가능하고, 동적으로프로세싱모듈조합 / 연결을통해 data processing 확장가능. Crawler ZooKeeper 클러스터멤버쉽 BambooClient netty async http Bamboo Collector netty async http Group Connector #1 Group Connector #2 분배 Or ALL netty async http Receiver#1 (Indexer) Receiver#1 (Counter) Receiver#1 (HiveLoader) Searcher MySQL Hive Group Connector #3
Bamboo 를이용한 IDC 간미러링 IDC1 IDC2 Crawler #1 Crawler #2 Crawler #N Bamboo Collector Group Connector Group Connector Receiver#1 (Indexer) Receiver#2 (Counter) Receiver#3 (HDFS Loader) Receiver#1 (Indexer) Receiver#2 (Counter) Receiver#3 (HiveLoader) HDFS HDFS 백업용 분석용
저장및분석플랫폼구성 (HIVE) Crawler, ZooKeeper, Hadoop, Bamboo 는모두개발자관점애초필요했던데이터분석가가쉽게접근, 분석할수있는기능은? HIVE HDFS 에저장된텍스트기반의테이블을데이터를 SQL 을이용하여 Map/Reduce 분산병렬작업을수행하게하는플랫폼 인용 retweet 추출 insert overwrite table retweeted_key select transform(id, created_at, rt_id, text) using 'python extractretweet.py' as (tweetkey, id, created_at) from default.twitter_hk; DEMO
분석대상선정 실시간검색 - 키워드, 특정사용자내, 내친구내, 여러키워드비교특정계정트윗현황집계 - 작성한글, 멘션된글, RT 된글등글의전파경로 - 실시간리트윗전파경로분석키워드모니터링 - 실시간키워드모니터링 - 키워드분류관리 Ad-hoc 분석 - 선거영향분석등
데이터를구조적으로저장해보자 ( 검색엔진 ) 오픈소스 Lucene 기반분산검색구성 Bamboo 인덱스볼륨이중화구성으로장애대응 크롤즉시검색인덱스에반영 ( 실시간검색 ) Web Server Web Server Web Server Parallel Search Gateway Lucene Lucene Lucene Lucene Index (shard#1) Index (shard#1) Index (shard#2) Index (shard#2) Replica Replica
키워드분석, 리트윗경로분석등실시간분석특정사용자메시지, 특정키워드가아닌전체메시지에대한분석 원본저장 Bamboo Filtering ( 특수문자등제외 ) 원본글검색 띄워쓰기 (Segmentation) 메시지클러스터링 키워드매칭 ( 그룹, 분류, 부정어 ) 사용자네트워크분석 형태소분석 리트윗계산 관련어추출 결과저장 결과저장
사람간의네트워크분석은? 연관키워드분석은? 텍스트의감정분석은? 페이스북, 블로그등다른서비스 / 데이터와통합된분석은? 데이터를좀더살펴보고 어떤 Value 를만들어낼것인가를고민 플랫폼 + 데이터 + 분석가 + 개발자가있기때문에
전체시스템구성 HTTP Application Analysis Storage WebServer WebServer (apache) WebServer (apache) (apache) API API API WebServer (jetty) (tomcat, (jetty) jetty) Distributed Distributed Search Distributed Search Server Server (lucene, Search (lucene, thrift) Server (lucene, thrift) thrift) Cache (memcached) AppServer AppServer AppServer (thrift) (thrift) (thrift) Distributed Indexer Analysis App. MapReduce Data Pipeline (bamboo) Crawler File Storage (HDFS) Data Storage (Cloudata) Data Storage (HBase) RDBMS (MySQL) Hadoop: 30 대 Cloudata: 18 대 Crawler: 10 대 Search: 4 대 API: 4 대 Cluster Membership Crawler Queue Indexer Event Key Generator Cluster Management (ZooKeeper) Monitoring (Cloumon)
개발문화 대표이사데이터아키텍트시스템아키텍트시니어개발자주니어개발자 데이터수집, 검색엔진, 서비스웹화면 데이터분석, Bamboo, Flume, 서버모듈개발, 서비스웹화면 Hadoop, HBase, Hive, 서버모듈개발, 서비스웹화면 Hadoop, Hive, Cloumon 서버모듈개발, 서비스웹화면 Hadoop, Flume, HBase 서버모듈개발, 서비스웹화면
감사합니다. babokim@gruter.com www.seenal.com www.jaso.co.kr