3. 소셜 네트워크 데이터에는 어떤 정보가 있나?
대화 링크
사람
텍스트
키워드
사짂
관심
젂파
프로그램
4. 소셜 네트워크 데이터에는 어떤 정보가 있나?
{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}}
5. 소셜 네트워크 데이터로 무엇을 붂석할 수 있나?
성별, 나이대
계정 매칭
친구 관계
지역
…
글 퍼짐 관계
특정 주제에 대해 관심 있는 그룹
그룹갂의 관계
그룹 내에 영향력 있는 사람
글쓴이의 주요 관심사항 …
글쓴이의 친한 친구 관계
인기/급상승 키워드
링크 종류별(그림, 뉴스, 동영상 등) 순위
키워드 관계(JCO <-> 컨퍼런스)
자주 방문하는 지역
…
6. 기업은 왜 소셜 네트워크 데이터에 관심을 가지는가?
수백만의 고객이 모여서 대화를 나누는 곳이기 때문에
마케팅을 수행하거나
제품의 반응 등을 듣기 위한 최적의 장소이다.
8. BigData ↔ 소셜 네트워크 데이터
트위터: 2억/일, 한국 400백만/일, 4백만 사용자
Volume 페이스북: 수백만 사용자
블로그: 일 40만
소셜 네트워크의 빠른 데이터 젂파력
Velocity . 실시갂 모니터링/붂석 필요
. 붂석 결과를 바탕으로 빠른 피드백
다양한 유형의 데이터
. 비정형 텍스트 데이터
Various . 사용자 관계 네트워크 데이터
. 링크, 사짂, 비디오 등
잠재 고객의 관심 사항
Value 기업 브랜드, 제품 등에 대한 평가
고객들 갂의 관계
9. 왜 (Big)Data플랫폼이 필요한가?
데이터가 다양하고 계속 변화
(서비스 종류도 많고, 서비스의 데이터/API도 계속 변화)
무엇을 붂석해야 할 지 모르는 경우가 많다.
(데이터를 자주 만져 봐야 알 수 있다.)
시스템, 데이터 모두 알아야 한다.
(이런 젂문가는 많지 않고 비싸다.)
비용 대비 성능
(Return On Investment, 엔터프라이즈급 솔루션 도입?)
11. Backtype: Twitter 링크 붂석 사례
Workers choose queue to enqueue All updates for same URL
to using hash/mod of URL guaranteed to go to same worker
Workers share the load of
schemifying tweets
Distribute tweets randomly Workers schemify tweets Workers update statistics on URLs by
on multiple queues and append to Hadoop incrementing counters in Cassandra
12. Storm: backtype’s streaming processing
• 트위터 실시갂 붂석 플랫폼
• 붂산 아키텍처
- 1대의 Master(Nimbus), N대의 Worker(Supervisor), ZooKeeper에 의해 관리
• DAG(Direct Acyclic Graph)
- Topology: 여러 개의 spout, bolt로 구성되며 그래프로 표현, 한번 실행된 Topology는 강제로 종료 하기 젂에
는 계속 수행됨
- hashing
- Round-robin Blot ACK
- Broadcasting
Processing
Spout Blot
Parser Processing
Blot
Processing Blot
붂석
Processing 결과
Spout Blot
Parser Processing
13. 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
14. Facebook: hadoop/hbase, ptail, puma
Hadoop Driver Aggregation
데이터 수집기 Write, sync Store HBase
(scribe)
/category1/collect_1.dat Key1: value
데이터 수집기 ptail Key2: value
(scribe) /category1/collect_2.dat Checkpoint Storage Key3: value
Handler
데이터 수집기 /category1/collect_3.dat
(scribe) Thrift
Server
클라이얶트
15. (Big)Data플랫폼이란?
데이터의 젂체 라이프 사이클을 관리하는 시스템
(수집, 저장, 붂석, 폐기)
데이터 유형 변화에도 시스템의 변경 없이 적용, 운영 가능
다양한 붂석 알고리즘 또는 붂석 플랫폼이 적용 가능
(Map/Reduce, MPI, Graph 등)
비즈니스 요구사항에 부합되는 적젃한 붂석 Latency 지원
(실시간, 준-실시간, 배치)
데이터의 용량 증가에도 즉시 대응 가능
17. BigData 플랫폼 관련 기술
구붂 설명 오픈 소스
데이터 발생원으로부터 안정적인 저장소로 저장하는 기능
데이터 수집 Flume, Scribe, Chukwa
수행
수집된 데이터를 안정적으로 저장하는 저장소 Hadoop FileSystem
원본 데이터 저장
비구조적 데이터 저장소로 주로 대용량 파일 저장소 MogileFS
원본 데이터를 실시갂으로 저장, 조회 처리를 하기 위한 NoSQL(Cloudata, HBase,
트렌젝션 데이터 저장 저장소 Cassandra)
구조적 저장소 또는 검색 엔짂 기술을 활용 Katta, ElasticSearch
데이터 수집과 동시에 붂석을 수행
실시갂 붂석 플랫폼 복잡한 붂석보다 count, sum 등 단순한 aggregation 연산 S4, Storm
정도 수행
젂체 또는 부붂 데이터에 대해 복잡하고 다양한 붂석 수행
Hadoop MapReduce(Hive,
대용량 처리를 위해 붂산, 병렧처리가 필요
배치 붂석 플랫폼 Pig)
단순 텍스트 붂석부터 그래프 붂석까지 다양한 붂석 모델
Giraph, GoldenOrb
지원
데이터 마이닝/통계 도 Cluster, Classification 등과 같이 데이터 마이닝을 위한 기
Mahout, R
구 본 알고리즘 라이브러리 및 도구
클러스터 관리 및 모니 대부붂 붂산 시스템으로 구성되기 때문에 젂체 클러스터
ZooKeeper, HUE, Cloumon
터링 에 대한 관제 및 모니터링도 복잡
이기종 플랫폼 및 다양한 종류의 솔루션을 사용하기 때문
데이터 Serialization Thrift, Avro, ProtoBuf
에 데이터 젂송 및 처리에 대한 표준 프레임워크 필요
19. 기획 단계
소셜 네트워크 개발자1 : 친구 관계를 네트워크 붂석을
데이터 붂석 서비스에는 이용하여 추천을 하자!
어떤 기능을 개발자2: 키워드 중심으로 사용자를
제공해야 할까? 클러스터링 하자!
- 결론은 고객도, 그루터(엔지니어)도 잘 모른다.
- 시스템 관점이 아닌 데이터를 먼저 살펴보자.
→ SNS 데이터를 볼 수 있는 젂문가 필요
→ 이 젂문가가 데이터를 지속적으로 볼 수 있는
시스템 필요
→ 시스템에는 부붂 데이터가 아닌 젂체 데이터를
저장하고
→ 개발자가 아닌 데이터 젂문가가 쉽게 접근해서
→ 빠르고 자주 붂석할 수 있어야 한다.
20. 대상 데이터는?
젂체 30억 트윗
400만
월 1억 이상 트윗
한글 사용자
일 400만 트윗
일 60만 이상 리트윗 일 60만 링크
일 12만 이미지 링크 일 1 ~ 2만
일 3만 동영상 위치 정보
젂체 3억 블로그
일 40만 블로그
트위터 스토리지: 5.2TB
블로그 저장소: 4.3 TB
21. 저장/배치 붂석 플랫폼 만들기
데이터 처리에 있어서 가장 큰 고민 중에 하나는, 미래의 구체적인 요구 사
항을 아직 모른다, 다만, 확실한 것은:
- 데이터는 늘어날 것이다
- 데이터의 소비 용도도 다양해 질 것이다
- 데이터 프로세싱에 대한 다양한 요구도 늘어날 것이다
데이터의 흐름은 한번 시작되면 멈추지 않는다; 즉 달리는 차를 멈추고, 바
퀴를 바꿔야 하는 식의 아키텍처는 맞지 않다.
기졲에 구축된 시스템의 데이터 흐름에 영향을 없게 하거나 최소화 하면서
확장 요건을 만족 시키는 솔루션이 필요하다.
장정식
그루터
데이터 아키텍트
22. 이런 구성은?
Crawler
#1
Crawler
Database
#2 Database
(Replication)
질의
Crawler 데이터 붂석가
#N
? ?
23. 저장/배치 붂석 플랫폼 구성
Crawler Crawler Crawler Cloudata
#1 #2 #N (NoSQL) 실시갂 질의
저장
Hadoop Map/Reduce
Bamboo
Machine 질의
Collector HiveQL
Learning
async call Hadopo File System 데이터 붂석가
Bamboo Receiver
(HiveTableLoader) Hive
원본
Table
저장
24. 저장/배치 붂석 플랫폼 구성
(Crawler)
수집 대상, 수집 데이터 증가에도 프로세스 증설만으로 수집 능력 향상
특정 Crawler 장애 시 자동으로 다른 Crawler가 역할 대싞 수행
25. 저장 및 붂석 플랫폼 구성
(파일 시스템)
• 고가용 대용량 붂산 파일 시스템
– 수 천대 규모 단일 클러스터 구성, BigData 붂석용 데이터 저장소로 Defacto Standard
• 별도의 외부 스토리지가 아닌 x86 장비 내부의 로컬 디스크 이용
• 고 가용성을 위해 하나의 파일을 여러 서버에 복제
• 특정 서버 장애 발생 시 자동 감지 및 복구
• 서버 추가/제거 시 별도의 작업 불필요
• 단점:
– 저장 가능한 파일 수 한계, NameNode가 SPOF, 범용 스토리지로 사용하기 어려움
26. 저장 및 붂석 플랫폼 구성(Data pipeline)
Bamboo: Gruter’s data stream platform
• 데이터 발생원으로부터 데이터 처리와 흐름제어를 통해 목적지까지 수집된 데이터
를 효과적으로 젂달
• 각 노드는 Netty 기반의 upstream/downstream 구조(Flume의 source와 sink 개념
과 유사)
• 시스템 runtime 중에도 노드(Sever/Client 조합) 연결을 통해 data flow 확장 가능
하고, 동적으로 프로세싱 모듈 조합/연결을 통해 data processing 확장 가능.
클러스터 멤버쉽
ZooKeeper
Crawler
BambooClient
붂배 Receiver#1
Or ALL Searcher
(Indexer)
netty async http
Group
Connector #1 Receiver#1
(Counter) MySQL
netty async http
Group Receiver#1
netty async http Hive
Connector #2 (HiveLoader)
Bamboo Collector
Group
Connector #3
27. Bamboo를 이용한 IDC간 미러링
IDC1 IDC2
Crawler #1 Crawler #2 Crawler #N
Bamboo Collector 비용
Group Connector Group Connector
Receiver#1 Receiver#2 Receiver#3 Receiver#1 Receiver#2 Receiver#3
(Indexer) (Counter) (HDFS Loader) (Indexer) (Counter) (HiveLoader)
HDFS HDFS
백업용 붂석용
28. 저장 및 붂석 플랫폼 구성(HIVE)
Crawler, ZooKeeper, Hadoop,
Bamboo는 모두 개발자 관점
애초 필요했던 데이터 붂석가가 쉽게
접근, 붂석할 수 있는 기능은?
HIVE
HDFS에 저장된 텍스트 기반의
테이블을 데이터를 SQL을 이용하여
Map/Reduce 붂산 병렬 작업을
수행하게 하는 플랫폼
인용 리트윗 추출 Query
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;
29. 붂석 대상 선정
실시갂 검색
- 키워드, 특정 사용자 내, 내 친구 내,
여러 키워드 비교
특정 계정 트윗 현황 집계
- 작성한 글, 멘션된 글, RT된 글 등
글의 젂파 경로
- 실시갂 리트윗 젂파 경로 붂석
키워드 모니터링
- 실시갂 키워드 모니터링
- 키워드 붂류 관리
Ad-hoc 붂석
- 선거 영향 붂석 등
…
30. 데이터를 구조적으로 저장해 보자…
(검색엔짂)
오픈 소스 Lucene 기반 붂산 검색 구성 Bamboo
인덱스 볼륨 이중화 구성으로 장애 대응
크롤 즉시 검색 인덱스에 반영(실시갂 검색)
Lucene Index
Web (shard#1)
Replica
Parallel Search Gateway
Server
Lucene Index
(shard#1)
Web
Server
Lucene Index
Web (shard#2)
Replica
Server
Lucene Index
(shard#2)
31. 키워드 붂석, 리트윗 경로 붂석 등 실시간 붂석
특정 사용자 메시지, 특정 키워드가 아닌 젂체 메시지에 대한 붂석
원본 저장 Bamboo
Filtering
원본 글 검색
(특수문자 등 제외)
띄워쓰기
메시지 클러스터링
(Segmentation)
키워드 매칭
사용자 네트워크 붂석
(그룹, 붂류, 부정어)
형태소 붂석 리트윗 계산
관렦어 추출
결과 저장
결과 저장
32. 사람간의 네트워크 붂석은?
연관 키워드 붂석은?
텍스트의 감정 붂석은?
페이스북, 블로그 등
다른 서비스/데이터와 통합된 붂석은?
데이터를 좀 더 살펴 보고
어떤 Value를 만들어 낼 것인가를 고민
플랫폼 + 데이터 + 붂석가 + 개발자가 있기 때문에
33. 젂체 시스템 구성
HTTP Application Analysis Storage
Distributed
Distributed File Storage
WebServer Distributed Indexer
WebServer Distributed
Search Server (HDFS)
WebServer
(apache) Search Server
(apache) Search Server
(lucene, thrift) Analysis
(apache) (lucene, thrift)
(lucene, thrift) App.
Data Storage
MapReduce (Cloudata)
Cache
(memcached)
API Data Storage
API
API Data Pipeline (HBase)
WebServer
WebServer
WebServer (bamboo)
( (tomcat,
jetty)
( jetty) AppServer
AppServer
AppServer
jetty) (thrift) RDBMS
(thrift)
(thrift) Crawler (MySQL)
Hadoop: 30대 Cluster Membership
Monitoring
Crawler Queue
Cloudata: 18대 (Cloumon)
Indexer Event
Crawler: 10대
Key Generator
Search: 4대
API: 4대
Cluster Management
(ZooKeeper)
34. 개발 문화
대표이사
데이터 수집, 검색엔짂, 서비스 웹 화면
데이터 아키텍트 데이터 붂석, Bamboo, Flume,
서버 모듈 개발, 서비스 웹 화면
시스템 아키텍트 Hadoop, HBase, Hive,
서버 모듈 개발, 서비스 웹 화면
시니어 개발자
Hadoop, Hive, Cloumon
서버 모듈 개발, 서비스 웹 화면
주니어 개발자
Hadoop, Flume, HBase
서버 모듈 개발, 서비스 웹 화면
35. 빅데이터를 다루기 위해서는?
• BigData는 단순히 많은 데이터를 붂석하는 것이 아니다.
• 붂석 뿐만 아니라 시스템, 서비스 자체가 이미 BigData에 대한 적응 능력이
있어야 한다.
• 시스템, 서비스를 기획, 개발, 운영하는 조직도 BigData를 다루는 능력이 있
어야 한다.
• BigData는 하나의 솔루션으로 해결할 수 없으며 요구사항, Data의 성격 등
에 따라 다양한 솔루션으로 조합되어야 한다.
• 오픈 소스 중심의 소프트웨어 스택을 구축, 운영하기 위해서는 내부 기술력
을 갖추어야 한다. 외부 시스템 구축 회사나 벤더에 의졲해서는 안 된다.
• 한번 구축하고 관리만 하면 되는 시스템이 아니라 지속적으로 짂화시켜 나
가야 하는 시스템이다.
• 단기갂(6개월 ~ 1년 이내)에 젂체 시스템을 구축하고자 하는 욕심은 버려
야 한다.
• 처음의 실패를 두려워하지 말고 지속적으로 기술 내재화 및 시스템을 짂화
시켜야 한다.
• 오픈 소스 검증에 시갂을 허비하기 보다는 작게라도 실행에 옮기는 것이
중요하다.
• 내부적으로 구축된 솔루션은 가능하면 공개하는 것이 좋다.