Upload
jaikwang-lee
View
367
Download
10
Embed Size (px)
Citation preview
대용량로그분석,BigQuery로간단히사용하기
㈜엔비티 / Devops /�이재광
http://facebook.com/openstacks
SKT아카데미(2017.02.15)
© NBT All Rights Reserved.
Cashslide Service
잠금화면상하슬라이딩을통해
다양한콘텐츠를풀스크린으로감상
잠금화면좌우슬라이딩을통해
콘텐츠더보거나잠금화면해제
- 잠금화면을좌우로밀때마다3~5원캐시적립혜택- 앱다운로드,�영상광고시청등추가활동하면최대1500원까지적립
게임,�커머스,�뷰티등
다양한업종의광고
광고
상하 슬라이딩
시사,�연예,�생활등
다양한영역의컨텐츠
컨텐츠
좌우슬라이딩
전세계최초모바일잠금화면에서광고,�컨텐츠등을보고잠금화면을열때캐시적립을받을수있는모바일서비스
© NBT All Rights Reserved.
Cashslide Service
전체노출량의40%,�전체유저의60%�이상이사용하는캐시슬라이드서비스의핵심value
약70개컨텐츠제휴
특화미디어
영상미디어 생활정보
신문기사
광고이외에뉴스,�스포츠정보,�엔터테인먼트등폭넓은카테고리의컨텐츠를종합적으로제공
© NBT All Rights Reserved.
Cashslide Service 지속적인개편을통해국내유일무이한모바일서비스로성장하고있습니다
.�.�.
잠금화면을중심으로모바일이용경험을혁신하는미디어
광고보고리워드받는잠금화면앱에서…
2012년
35%20%
5%
40%
10대
20대
30대
40대+
편의기능도쓰는잠금화면포털로…
2014년
25%
20%
20%
35%
10대
20대
30대
40대+
컨텐츠도넘겨보는잠금화면미디어로…
2013년
30%
15%
15%
40%
10대
20대
30대
40대+
23%
26%
26%
25%
10대
20대30대
40대+
현재
© NBT All Rights Reserved.
© NBT All Rights Reserved.
Big�Data
빅데이터란
기존데이터베이스관리도구의능력을넘어서는대량(수십테라바이트)의정형또는심지어데이터베이스형태가아닌비정형의데이터집합조차포함한데이터로부터가치를추출하고결과를분석하는기술이다.��발췌:위키
© NBT All Rights Reserved.
Bigdata의조건"three�Vs"
Volume
Velocity
Variety
Value현재상황파악과이에대한원인분석
미래의예측
발췌:TDWI
© NBT All Rights Reserved.
남들이하고있는Big�Data활용(B2C)
facebook LinkedIn Amazon.com
© NBT All Rights Reserved.
남들이하고있는Big�Data활용(B2B)
© NBT All Rights Reserved.
우리도하기위해고민했던것들
*�우리에게필요한분석결과로보고싶은내용이무엇인가?
-서비스지표변화추이(나자신을알자)
-사용자타겟팅을위한사용자분석(CTR,�CVR을높이자)
-정밀타겟팅을위한사용자행동분석(CTR,�CVR을더높이자)
-우리가시도하는사업들에대한검증
데이터의모수는많을수록좋고이데이터어딘가에는위의내용들이포함되어야한다.
© NBT All Rights Reserved.
빅데이터분석을위한전략예제
• 인력및경험부재(데이터분석/예측알고리즘)
• Data�Quality검증필요
• CashslideUV�/�Profile정보
• 광고및서비스반응이력
strength weakness
threatopportunity
• 경쟁사/신규사업자시장진출가속화
• 개인정보정책이슈
• DSP(demand�side�platform)보유
• AD-serving�보유
빠른검증이가능한환경
© NBT All Rights Reserved.
구축방안은간단히
데이터 선택
데이터 수집
지표의 활용
데이터 분석
데이터 1차 가공
어떤데이터를수집할지
서비스영향도를최소화하는
데이터수집방안고민
분석에필요한데이터를추출하여
데이터사이즈를줄인다
현재상황에대한분석
미래의예측
의사결정지원
다양한빅데이터분석플랫폼을활용
© NBT All Rights Reserved.
빅데이터활용(서비스지표분석)
CashslideMetrics
© NBT All Rights Reserved.
빅데이터활용(타겟팅)
*�user�profile기준타겟팅그룹분류
-성별,나이,결혼여부
*device�profile기준타겟팅그룹분류
-앱실행&설치이력을활용한유사도그룹분류
*�user�activity패턴기준타겟팅그룹분류
-상품을구매한유저의패턴과유사도가높으나아직구매하지않은사용자그룹
-추천인,피추천인
-LTV높은유저와CVR높은유저
*�실험에대한사용자반응도분석
© NBT All Rights Reserved.
빅데이터활용(실험결과검증)
© NBT All Rights Reserved.
Data Scientist The Sexiest Job of the 21st Century
© NBT All Rights Reserved.
주변의Data Scientist Full-Stack
© NBT All Rights Reserved.
Data�Scientist와Data�Engineer
1.요구사항전달
6.데이터분석및시각화
2.데이터수집및저장아키텍처구현
3.데이터가공및분산처리아키텍처구현
4.사전데이터작업및배치개발
5.모니터링및기술지원
© NBT All Rights Reserved.
LANG�:�java,�scala,�python,�R,��sql
빅데이터분석모형,기법,통계분석의이해
비즈니스의이해
고객과의의사소통
LANG�:�java,�scala,�python,�bash,�sql
Cloud�Platform�,�Hadoop�echo,�Spark,�Kafka,�Zookeeper,�ELK,�Zeppelin,�DFS,�Cache,�NoSQL,�RDBMS아키텍처이해와구현
OS와Network에대한이해
Infra.�Security의이해
JVM,�Cluster�Monitoring�&�Troubleshooting
Data�Scientist와Data�Engineer
© NBT All Rights Reserved.
우리가분석하는빅데이터소스는Client�Log와Server�Log
그리고RDBMS�조합
© NBT All Rights Reserved.
Kafka�+�Spark�+�Zeppelin+ELK+Bigqeury+�DataStudio
NBTLumberjack�logAnalysis�Architecture
client
L4
Kafka�proxy
Kafka &Zookeeper�Cluster
Logstash
Elasticsearch
Spark
Kibana
ZeppelinS3
Lumbercamp
Jenkins
BigQuery
DataStudio
Cloud�Storage
API�Server
© NBT All Rights Reserved.
데이터수집시스템'Kafka�Cluster'
*�LinkedIn에서개발된분산메시징시스템
*�대용량의실시간로그처리에특화
*�범용메시징시스템대비TPS가높다.
*�분산,복제가손쉽다.
*�파일시스템을사용하므로데이터영속성이보장된다.
*�2011년오픈소스로공개
© NBT All Rights Reserved.
데이터수집시스템'Kafka�Cluster'
© NBT All Rights Reserved.
producer
broker
Consumer
데이터수집시스템'Kafka�Cluster'
© NBT All Rights Reserved.
NBT�Kafka�Cluster
client
L4
Kafka�proxy
Kafka &Zookeeper�Cluster
Logstash
S3
Lumbercamp
Cloud�Storage
DAU�Elasticsearch
Click�Elasticsearch
lumberjack�Elasticsearch
production�Elasticsearch
API�Server
© NBT All Rights Reserved.
data�transfer�agent
logstash
fluentd
plugin�echosystem
centralized
decentralized
performance
uses�more�memory
uses�less�memory
event�routing
algorithmicstatements
Tags
© NBT All Rights Reserved.
Elasticsearch
*�apache�Lucene을기반으로한분산검색엔진
*�Opensource:�apache�license�2.0
*�Distributed�&�Horizontally�Scalable
*�고가용성
*�full�text�search지원
*�JSON�Document�based
*Schemafree
© NBT All Rights Reserved.
Elasticsearch설치
초간단설치로유명
1.download받는다.
2.실행한다.
3.살아있는지테스트한다.
© NBT All Rights Reserved.
Elasticsearch용어
Elasticsearch
database
table
RDB
index
type
row document
column field
schema mapping
© NBT All Rights Reserved.
Elasticsearchindex,�shard�&�replicas
© NBT All Rights Reserved.
NBT�Elasticsearch
Logstash
Elasticsearch
Kibana
S3
Jenkins
API�Server
Cloud�Storage
fast�node
data�node
master�node
cluster.name :�nbt
node.name :�"client-node"
node.master :�falsenode.data :�false
node.name :�"query-node"
node.master :�truenode.data :�false
node.master :�falsenode.data :�true
node.box_type :�hot
node.box_type :�warm
elasticsearch.yml
© NBT All Rights Reserved.
Kibana
Elasticsearch+�KibanaLive�Demo
© NBT All Rights Reserved.
Kibana
ELK의최대장점:설치가매우쉽다.
사용도손쉽다.Lucene�Query기반검색.�(AND,�OR,�NOT)
© NBT All Rights Reserved.
Hadoop�+�Spark�+�Zeppelin
*오픈소스분산처리시스템
*�메모리기반(hadoop에비해속도가빠르다)
*�Mapreducecode(java)에비해매우간결한code작성이가능하다.(scala)
*�java,�scala,�python,�R
*�ApacehZeppelin으로손쉽게사용가능하다.
*�ApacehZeppelin으로손쉽게사용가능하다.
*�ApacehZeppelin으로손쉽게사용가능하다.
© NBT All Rights Reserved.
sparkexecution�flow
© NBT All Rights Reserved.
spark사용시알아야할개념hadoopYARN�flow
© NBT All Rights Reserved.
hadoopYARN�+�spark
© NBT All Rights Reserved.
Spark
ZeppelinS3
Driver Core
RDB
Task
개념을 이해했다면 aws emr을 편하게 사용합니다.
*�spot을 적절히사용합니다.
*�spot instance를 이용하여 schedule 기반 resize를 진행합니다.
*�외부 데이터를불러오는경우 Task를 다수로구성하여병렬처리합니다.
© NBT All Rights Reserved.
그리고 Zeppelin을 사용하여 데이터를 분석합니다.
Zeppelin�live�demo
© NBT All Rights Reserved.
최근선택한Google�Bigquery
© NBT All Rights Reserved.
Google�Cloud�Account�생성이제일어려웠을만큼쉽게구성가능했던BigQuery
우리가경험했던BigQuery
© NBT All Rights Reserved.
대략몇군데만손보면금방구현될듯
손이갈만한것들을추려보자면
1. 현재의 logstash 서버를활용하고
2. BigQuery API만 잘뚫어주면
3. 우리의 log�format에맞게잘정의된스키마로데이터를집어넣고
4. 잘사용하는것만이할일이다.
© NBT All Rights Reserved.
이런작업은하루면됩니다.
proto-type구현
1. 현재의 json log 일부를 test 전송
2. Google�App�Key를발급하여API 권한획득
3. 최소한의 schema를넣고test 진행
4. 빠른것같긴한데..이제실데이터를가지고조회해볼까
© NBT All Rights Reserved.
기존logstash서버에저장된json log�file을BigQuery로전송후조회
실전구현시나리오작성
Logstash
Elasticsearch
Spark
Kibana
ZeppelinS3
BigQuery
고려 사항
• 서버의 자원 부담 최소화
(현재도 부담 되는 중)
• 전송 처리 실패에 대한 보장
• 전송 처리 작업 시간 개선
• 전송 작업 이력 관리
• 네트워크 구간 전송 효율 개선
DataStudio
etc
Jenkins
© NBT All Rights Reserved.
BigQuery Schema생성시ES의Nested�tpye에서문제발생
BigQuery구축시고민1
고려 사항
• Nested와 유사한 Repeated Mode
• 'info' column을 Record�type의
Repeated�Mode로 생성
• Repeated�Mode의 column 안에
또 한번의 Repeated�Mode는 지원
안됨. ES도 마찬가지.
• 이 경우는 String 처리에 대한 고민
• 일단 제외
{�"name":�"info",�"type":�"RECORD",�"mode":�"REPEATED",�"fields":�[�{�"mode":�"NULLABLE",�"name":�"step_i",�"type":�"INTEGER"�
},�{�"mode":�"NULLABLE",�"name":�"recommended",�"type":�"STRING"�
},�{�"name":�“app_config”,"type":�“RECORD",
"mode":�“REPEATED”,“fields”�:�[{�
“mode”:�NULLABLE“name":�“adison_enables”
“type”:�“STRING”�},{�
“mode”:�NULLABLE“name":�“abusing_devices”
“type”:�“STRING”�},
© NBT All Rights Reserved.
json file�size : 7~35Gper�hour, 7.5G�json file loading작업이약1시간정도소요
Embulk를이용한BigQueryData적재
Logstash
Elasticsearch
Spark
Kibana
ZeppelinS3
BigQuery
고려 사항
• 서버의 자원 부담 최소화
(현재도 부담 되는 중)
• 전송 처리 실패에 대한 보장
• 전송 처리 작업 시간 개선
• 전송 작업 이력 관리
• 네트워크 구간 전송 효율 개선
DataStudio
etc
Jenkins
© NBT All Rights Reserved.
embulk를도입했어도Json file을BigQuery로적재하기에는너무느림
BigQuery구축시고민2
Logstash
Elasticsearch
Spark
Kibana
ZeppelinS3
BigQuery
고려 사항
• 1시간 이상 걸리는 BigQuery Data
적재 작업
• Parsing 처리 비용이 너무 높다.
• 시간당 30G 이상의 파일을 전송하는
경우 발생하는 네트워크 전송량도 너
무 많다.
• 바이너리 압축 전송을 하면
BigQuery Loading은?
DataStudio
etc
Jenkins
© NBT All Rights Reserved.
Jenkins를이용해서gz file을GCS로전송후BigQuery Loading Job을추가실행
GCS�to�BigQuery
해결
• Transport�Tool을 embulk에서
gsutil로 교체
• gsutil을 이용한 바이너리 파일 병렬
전송으로 작업 속도 향상
• Gzip으로 GCS 전송 후 BigQuery로
Data 적재 작업을 수행하는 경우 Job
형태로 async 수행 및 관리 가능
Logstash
BigQuery
DataStudio
Cloud�Storage
gsutil
Jenkins
© NBT All Rights Reserved.
BigQuery의Computing�Resource비용은무료
BigQuery의Extract�&�Loading
무료
• 비용은 Storage와 Streaming�
Inserts,�Queries 요금만 존재
• 속도도 빠르고 관리도 용이한
BigQuery Loading이 무료
(GCS�pricing)
BigQuery pricing
© NBT All Rights Reserved.
기존S3로전송하던gz file을GCS로전송후BigQuery로적재
실전구현시나리오변경
Logstash
Elasticsearch
Spark
Kibana
ZeppelinS3
BigQuery
변경된 시나리오
• json file�->�gzip file
• embulk ->�gsutil
• to�BigQuery -> to�GCS
• sync�->�async
DataStudio
Cloud�Storage
gsutil
Jenkins
gsutil
Json 7.5G약 1�hour
GZ�350M약 14�sec
BigQuery
Cloud�Storage
json
gzip
© NBT All Rights Reserved.
BigQuery속도는빠른가
BigQuery조회해보기
고려 사항
• 한달치 1.34TB data를 스캔해서
result 까지 걸린 시간 6초
• 7명이 동시에 쿼리를 수행해도
동일하게 빠른 성능을 보여줌
• 그런데 한번 조회에 1.34TB면 얼
마지?
© NBT All Rights Reserved.
How�much�BigQuery
BigQuery구축시고민3
비용 요소
• GCS 비용 + BigQuery Storage 비용
+ Query�비용
• BigQuery는 10MB 단위로 청구
(월 1TB 무료)
1.34TB는 약 $6.7
고려 사항
• 사용자가 range query를 제대로 수행
하지 않으면 많은 비용이 발생할 수도
있다.
• 대안으로 테이블을 사용자 용도에 맞
게 복제해주거나 구글의 cost�control
을 통한 Quota 제한 고민
© NBT All Rights Reserved.
기간별table을쉽게생성하는방법?
© NBT All Rights Reserved.
Table�Decorator,�Partition�Decorator
BigQuery가제공하는Decorator
장점
• 날짜별 table이 존재하듯이 사용
• 손쉬운 range 검색
• 기간별, 일자별 table 생성이 용이
고려 사항
• Table 생성 시 Partitioned�Table로
생성되어야 함
SELECT�COUNT(*)�FROM�cashslide:dataset.table$20160830
2016년 8월 30일 데이터 조회
SELECT�COUNT(*)�FROM�[cashslide:dataset.table@-3600000]
테이블 생성 후 1시간 이전까지의 데이터 조회
© NBT All Rights Reserved.
나중에이걸확인한다면BigQuery적재작업의처음으로돌아가시오.
편리한Partitioned�tables
고려 사항
• Dataset�table 생성 시 Date-
Partitioned�tables로 생성 가능
• 생성 시 Expiration�time은
second 기준
• _PARTITIONTIME 이름의
pseudo�column�을 포함하며,
data�적재 시점을 기준으로
TIMESTAMP(“2016-04-15”)
형식의 값을 저장함. UTC 기준
$bq mk --time_partitioning_type=DAY�\--time_partitioning_expiration=259200 \mydataset.table
Partitioned�tables 생성 예제
$bq show�--format=prettyjson mydataset.table
생성된 테이블 정보 확인
{�...�"tableReference":�{�"datasetId":�"mydataset",�"projectId":�"myproject",�"tableId":�"table2"�
},�"timePartitioning":�{�"expirationMs":�"2592000000",�"type":�"DAY"�},�"type":�"TABLE"�
}
© NBT All Rights Reserved.
Table�Decorator
유용한Decorator�2가지(1/2)
고려 사항
• 최대 7일 이전의 데이터까지 조회
가능 (rollback)
• Milliseconds 단위
#�Snapshot�decorators@<time>
#�Range�decorators@<time1>-<time2>
Syntax
#�Snapshot�exampleSELECT�COUNT(*)�FROM�[cashslide:dataset.table@-3600000]
#�Range�exampleSELECT�COUNT(*)�
FROM�[cashslide:dataset.table@-3600000--1800000]
Example
© NBT All Rights Reserved.
Partition�Decorator
유용한Decorator�2가지(2/2)
고려 사항
• $YYYYMMDD decorator를 이
용한 snapshot 검색
• Pseudo�column을 이용한
range�검색
[TABLE_NAME]$YYYYMMDD
Syntax
#�Snapshot�exampleSELECT�COUNT(*)�FROM�cashslide:dataset.table$20160505
#�Range�exampleSELECTfield
FROMtable
WHERE_PARTITIONTIME�BETWEEN�TIMESTAMP('2016-01-01')AND�TIMESTAMP('2016-01-21');
Example
© NBT All Rights Reserved.
이렇게구축한BigQuery를잘활용하는데
도움되는TIP몇가지
© NBT All Rights Reserved.
BigQueryComposer여러모로편리합니다.
BigQueryTip�1
TIP
• Query�box 안의 Color를 보면
현재 syntax, dataset�name,�
table�name,�column�name,�
function�name 의 오류를 쉽게
확인 가능
• Results�Tab 옆의 Explanation
을 보면 Query 수행 과정이 알기
쉽게 표기되어 Query 성능 개선
가능
© NBT All Rights Reserved.
File�export�는 file당1G,일일최대10TB가능
BigQueryTip�2
TIP
• 쿼리 결과의 export는 파일당 최
대 1G 가능
• 그 이상의 결과를 export 하려는
경우 쿼리 결과에서 ‘Save�as�
Table’로 저장 후 export 항목에
‘*.json’ 형태로 기입
© NBT All Rights Reserved.
BigQuery비용절감을위한Use�Cache�사용
BigQueryTip�3
TIP
• 'Use�Cached�Results'를 사용하
여 캐싱된 이전 쿼리 결과를 사용
하면 중복되는 쿼리들의 비용을
절감 가능
Query�Composer에서 'Show�Options'를 눌러보면
© NBT All Rights Reserved.
Zeppelin�0.6.1부터 ‘%bigquery’인터프리터지원
BigQueryTip�4
TIP
• Zeppelin�0.6.1 버전부터
BigQuery Interpreter를 제공
• Data뿐만 아니라 BigQuery
Computing�resource를 활용하
여 작업 수행 가능 (AWS�EMR,�
Google�Dataproc의 비용 불필
요)
• 기존 Notebook의 이전 작업이
필요
© NBT All Rights Reserved.
손쉽게연계사용이가능한Data�Studio가무료
BigQueryTip�5
© NBT All Rights Reserved.
결론:
실시간트렌드변화는Kibana
통계분석에는Zeppelin
이두가지가모두가능한Data�Studio
하지만
도구는거들뿐..
© NBT All Rights Reserved.
Q&A
THANK�YOU
주소:�서울시서초구서초동 1341-7�조이빌딩