More Related Content
Similar to 대용량 로그분석 Bigquery로 간단히 사용하기 (20170215 T아카데미) (20)
대용량 로그분석 Bigquery로 간단히 사용하기 (20170215 T아카데미)
- 2. © NBT All Rights Reserved.
Cashslide Service
잠금화면상하슬라이딩을통해
다양한콘텐츠를풀스크린으로감상
잠금화면좌우슬라이딩을통해
콘텐츠더보거나잠금화면해제
- 잠금화면을좌우로밀때마다3~5원캐시적립혜택
- 앱다운로드,영상광고시청등추가활동하면최대1500원까지적립
게임,커머스,뷰티등
다양한업종의광고
광고
상하 슬라이딩
시사,연예,생활등
다양한영역의컨텐츠
컨텐츠
좌우슬라이딩
전세계최초모바일잠금화면에서광고,컨텐츠등을보고
잠금화면을열때캐시적립을받을수있는모바일서비스
- 3. © NBT All Rights Reserved.
Cashslide Service
전체노출량의40%,전체유저의60%이상이사용하는
캐시슬라이드서비스의핵심value
약70개
컨텐츠
제휴
특화미디어
영상미디어 생활정보
신문기사
광고이외에뉴스,스포츠정보,엔터테인먼트등
폭넓은카테고리의컨텐츠를종합적으로제공
- 4. © 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대+
현재
- 6. © NBT All Rights Reserved.
BigData
빅데이터란
기존데이터베이스관리도구의능력을넘어서는대량(수십테라바이트)의정형또는심지어데이터베이스형태가아닌비정형의
데이터집합조차포함한데이터로부터가치를추출하고결과를분석하는기술이다.발췌:위키
- 7. © NBT All Rights Reserved.
Bigdata의조건"threeVs"
Volume
Velocity
Variety
Value
현재상황파악과이에대한원인분석
미래의예측
발췌:TDWI
- 8. © NBT All Rights Reserved.
남들이 하고 있는 Big Data 활용 (B2C)
facebook LinkedIn Amazon.com
- 9. © NBT All Rights Reserved.
남들이 하고 있는 Big Data 활용 (B2B)
- 10. © NBT All Rights Reserved.
우리도 하기 위해 고민했던 것들
* 우리에게필요한분석 결과로보고싶은내용이무엇인가?
-서비스지표변화추이(나자신을알자)
-사용자타겟팅을위한사용자분석(CTR,CVR을높이자)
-정밀타겟팅을위한사용자행동분석(CTR,CVR을더높이자)
-우리가시도하는사업들에대한검증
데이터의모수는많을수록좋고이데이터어딘가에는위의내용들이포
함되어야한다.
- 11. © NBT All Rights Reserved.
빅데이터 분석을 위한 전략 예제
• 인력및경험부재(데이터분석/예측알고리즘)
• DataQuality검증필요
• CashslideUV/Profile정보
• 광고및서비스반응이력
strength weakness
threatopportunity
• 경쟁사/신규사업자시장진출가속화
• 개인정보정책이슈
• DSP(demandsideplatform)보유
• AD-serving보유
빠른검증이가능한환경
- 12. © NBT All Rights Reserved.
구축 방안은 간단히
데이터 선택
데이터 수집
지표의 활용
데이터 분석
데이터 1차 가공
어떤데이터를수집할지
서비스영향도를최소화하는
데이터수집방안고민
분석에필요한데이터를추출하여
데이터사이즈를줄인다
현재상황에대한분석
미래의예측
의사결정지원
다양한빅데이터분석플랫폼을활용
- 13. © NBT All Rights Reserved.
빅데이터 활용 (서비스 지표 분석)
CashslideMetrics
- 14. © NBT All Rights Reserved.
빅데이터 활용 (타겟팅)
* userprofile기준 타겟팅그룹분류
-성별,나이,결혼여부
*deviceprofile기준타겟팅그룹분류
-앱실행&설치이력을활용한유사도그룹분류
*useractivity패턴기준타겟팅그룹분류
-상품을구매한유저의패턴과유사도가높으나아직구매하지않은사용자그룹
-추천인,피추천인
-LTV높은유저와CVR높은유저
*실험에대한사용자반응도분석
- 15. © NBT All Rights Reserved.
빅데이터 활용 (실험 결과 검증)
- 16. © NBT All Rights Reserved.
DataScientist
TheSexiestJobofthe21stCentury
- 17. © NBT All Rights Reserved.
주변의DataScientist
Full-Stack
- 18. © NBT All Rights Reserved.
Data Scientist와 Data Engineer
1.요구사항전달
6.데이터분석및시각화
2.데이터수집 및저장아키텍처구현
3.데이터가공및분산처리아키텍처구현
4.사전데이터작업및배치개발
5.모니터링및기술지원
- 19. © NBT All Rights Reserved.
LANG:java,scala,python,R,sql
빅데이터분석모형,기법,통계분석의이해
비즈니스의이해
고객과의의사소통
LANG:java,scala,python,bash,sql
CloudPlatform,Hadoopecho,Spark,Kafka,
Zookeeper,ELK,Zeppelin,DFS,Cache,NoSQL,
RDBMS아키텍처이해와구현
OS와Network에대한이해
Infra.Security의이해
JVM,ClusterMonitoring&Troubleshooting
Data Scientist와 Data Engineer
- 20. © NBT All Rights Reserved.
우리가분석하는빅데이터소스는ClientLog와ServerLog
그리고RDBMS조합
- 21. © NBT All Rights Reserved.
Kafka+Spark+Zeppelin+ELK+Bigqeury+DataStudio
NBTLumberjacklogAnalysisArchitecture
client
L4
Kafka
proxy
Kafka &
Zookeeper Cluster
Logstash
Elasticsearc
h
Spark
Kibana
ZeppelinS3
Lumbercam
p
Jenkins
BigQuery
DataStudio
Cloud
Storage
API Server
- 22. © NBT All Rights Reserved.
데이터수집시스템'KafkaCluster'
* LinkedIn에서개발된분산메시징시스템
*대용량의실시간로그처리에특화
*범용메시징시스템대비TPS가높다.
*분산,복제가손쉽다.
*파일시스템을사용하므로데이터영속성이보장된다.
*2011년오픈소스로공개
- 23. © NBT All Rights Reserved.
데이터수집시스템'KafkaCluster'
- 24. © NBT All Rights Reserved.
producer
broker
Consumer
데이터수집시스템'KafkaCluster'
- 25. © NBT All Rights Reserved.
NBTKafkaCluster
client
L4
Kafka
proxy
Kafka &
Zookeeper Cluster
Logstash
S3
Lumbercam
p
Cloud
Storage
DAU Elasticsearch
Click Elasticsearch
lumberjack Elasticsearch
production Elasticsearch
API Server
- 26. © NBT All Rights Reserved.
datatransferagent
logstash
fluentd
plugin
echosystem
centralized
decentralize
d
performance
uses more
memory
uses less
memory
event routing
algorithmic
statements
Tags
- 27. © NBT All Rights Reserved.
Elasticsearch
* apacheLucene을기반으로한분산검색엔진
*Opensource:apachelicense2.0
*Distributed&HorizontallyScalable
*고가용성
*fulltextsearch지원
*JSONDocumentbased
*Schemafree
- 28. © NBT All Rights Reserved.
Elasticsearch설치
초간단설치로유명
1.download받는다.
2.실행한다.
3.살아있는지테스트한다.
- 29. © NBT All Rights Reserved.
Elasticsearch용어
Elasticsearch
database
table
RDB
index
type
row document
column field
schema mapping
- 30. © NBT All Rights Reserved.
Elasticsearchindex,shard&replicas
- 31. © NBT All Rights Reserved.
NBTElasticsearch
Logstash
Elasticsearc
h
Kibana
S3
Jenkins
API Server
Cloud
Storage
fast node
data node
master
node
cluster.name : nbt
node.name : "client-
node"
node.master : false
node.data : false
node.name : "query-
node"
node.master : true
node.data : false
node.master : false
node.data : true
node.box_type : hot
node.box_type :
warm
elasticsearch.yml
- 32. © NBT All Rights Reserved.
Kibana
Elasticsearch+KibanaLiveDemo
- 33. © NBT All Rights Reserved.
Kibana
ELK의최대장점:설치가매우쉽다.
사용도손쉽다.LuceneQuery기반검색.(AND,OR,NOT)
- 34. © NBT All Rights Reserved.
Hadoop+Spark+Zeppelin
*오픈소스분산처리시스템
*메모리기반(hadoop에비해속도가빠르다)
*Mapreducecode(java)에비해매우간결한code작성이가능하다.(scala)
* java,scala,python,R
*ApacehZeppelin으로손쉽게사용가능하다.
*ApacehZeppelin으로손쉽게사용가능하다.
*ApacehZeppelin으로손쉽게사용가능하다.
- 35. © NBT All Rights Reserved.
sparkexecutionflow
- 36. © NBT All Rights Reserved.
spark사용시알아야할개념hadoopYARNflow
- 37. © NBT All Rights Reserved.
hadoopYARN+spark
- 38. © NBT All Rights Reserved.
Spark
ZeppelinS3
Driver Core
RDB
Task
개념을 이해했다면 aws emr을 편하게 사용합니다.
* spot을 적절히 사용합니다.
* spot instance를 이용하여 schedule 기반 resize를 진행합니다.
* 외부 데이터를 불러오는 경우 Task를 다수로 구성하여 병렬처리 합니다.
- 39. © NBT All Rights Reserved.
그리고 Zeppelin을 사용하여 데이터를 분석합니다.
Zeppelin live demo
- 40. © NBT All Rights Reserved.
최근선택한GoogleBigquery
- 41. © NBT All Rights Reserved.
Google Cloud Account 생성이 제일 어려웠을 만큼 쉽게 구성 가능했던 BigQuery
우리가 경험했던 BigQuery
- 42. © NBT All Rights Reserved.
대략 몇군데만 손보면 금방 구현될 듯
손이 갈 만한 것들을 추려보자면
1. 현재의 logstash 서버를 활용하고
2. BigQuery API만 잘 뚫어주면
3. 우리의 log format에 맞게
잘 정의된 스키마로 데이터를
집어 넣고
4. 잘 사용하는 것 만이 할 일이다.
- 43. © NBT All Rights Reserved.
이런 작업은 하루면 됩니다.
proto-type구현
1. 현재의 json log 일부를 test 전송
2. Google App Key를 발급하
여
API 권한 획득
3. 최소한의 schema를 넣고
test 진행
4. 빠른 것 같긴한데..
이제 실데이터를 가지고 조회해 볼까
- 44. © NBT All Rights Reserved.
기존 logstash 서버에 저장된 json log file을 BigQuery로 전송 후 조회
실전 구현 시나리오 작성
Logstash
Elasticsearc
h
Spark
Kibana
ZeppelinS3
BigQuery
고려 사항
• 서버의 자원 부담 최소화
(현재도 부담 되는 중)
• 전송 처리 실패에 대한 보장
• 전송 처리 작업 시간 개선
• 전송 작업 이력 관리
• 네트워크 구간 전송 효율 개선
DataStudio
etc
Jenkins
- 45. © 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”
},
- 46. © NBT All Rights Reserved.
json file size : 7 ~ 35G per hour, 7.5G json file loading 작업이 약 1시간 정도 소요
Embulk를 이용한 BigQueryData적재
Logstash
Elasticsearc
h
Spark
Kibana
ZeppelinS3
BigQuery
고려 사항
• 서버의 자원 부담 최소화
(현재도 부담 되는 중)
• 전송 처리 실패에 대한 보장
• 전송 처리 작업 시간 개선
• 전송 작업 이력 관리
• 네트워크 구간 전송 효율 개선
DataStudio
etc
Jenkins
- 47. © NBT All Rights Reserved.
embulk를 도입했어도 Json file을 BigQuery로 적재하기에는 너무 느림
BigQuery구축 시 고민 2
Logstash
Elasticsearc
h
Spark
Kibana
ZeppelinS3
BigQuery
고려 사항
• 1시간 이상 걸리는 BigQuery Data
적재 작업
• Parsing 처리 비용이 너무 높다.
• 시간당 30G 이상의 파일을 전송하는
경우 발생하는 네트워크 전송량도 너
무 많다.
• 바이너리 압축 전송을 하면
BigQuery Loading은?
DataStudio
etc
Jenkins
- 48. © NBT All Rights Reserved.
Jenkins를 이용해서 gz file을 GCS로 전송 후 BigQuery Loading Job을 추가 실행
GCStoBigQuery
해결
• Transport Tool을 embulk에서
gsutil로 교체
• gsutil을 이용한 바이너리 파일 병렬
전송으로 작업 속도 향상
• Gzip으로 GCS 전송 후 BigQuery로
Data 적재 작업을 수행하는 경우 Job
형태로 async 수행 및 관리 가능
Logstash
BigQuery
DataStudio
Cloud
Storage
gsutil
Jenkins
- 49. © NBT All Rights Reserved.
BigQuery의 Computing Resource 비용은 무료
BigQuery의 Extract&Loading
무료
• 비용은 Storage와 Streaming
Inserts, Queries 요금만 존재
• 속도도 빠르고 관리도 용이한
BigQuery Loading이 무료
(GCS pricing)
BigQuery pricing
- 50. © 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
- 51. © NBT All Rights Reserved.
BigQuery 속도는 빠른가
BigQuery조회 해보기
고려 사항
• 한달치 1.34TB data를 스캔해서
result 까지 걸린 시간 6초
• 7명이 동시에 쿼리를 수행해도
동일하게 빠른 성능을 보여줌
• 그런데 한번 조회에 1.34TB면 얼
마지?
- 52. © 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 제한 고민
- 53. © NBT All Rights Reserved.
기간별table을쉽게생성하는방법?
- 54. © 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시간 이전까지의 데이터 조회
- 55. © NBT All Rights Reserved.
나중에 이걸 확인한다면 BigQuery 적재 작업의 처음으로 돌아가시오.
편리한 Partitionedtables
고려 사항
• 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"
}
- 56. © NBT All Rights Reserved.
Table Decorator
유용한 Decorator2가지 (1/2)
고려 사항
• 최대 7일 이전의 데이터까지 조회
가능 (rollback)
• Milliseconds 단위
# Snapshot decorators
@<time>
# Range decorators
@<time1>-<time2>
Syntax
# Snapshot example
SELECT COUNT(*) FROM [cashslide:dataset.table@-3600000]
# Range example
SELECT
COUNT(*)
FROM
[cashslide:dataset.table@-3600000--1800000]
Example
- 57. © NBT All Rights Reserved.
Partition Decorator
유용한 Decorator2가지 (2/2)
고려 사항
• $YYYYMMDD decorator를 이
용한 snapshot 검색
• Pseudo column을 이용한
range 검색
[TABLE_NAME]$YYYYMMDD
Syntax
# Snapshot example
SELECT COUNT(*) FROM cashslide:dataset.table$20160505
# Range example
SELECT
field
FROM
table
WHERE
_PARTITIONTIME BETWEEN TIMESTAMP('2016-01-01')
AND TIMESTAMP('2016-01-21');
Example
- 58. © NBT All Rights Reserved.
이렇게구축한BigQuery를잘활용하는데
도움되는TIP몇가지
- 59. © NBT All Rights Reserved.
BigQuery Composer 여러모로 편리합니다.
BigQueryTip1
TIP
• Query box 안의 Color를 보면
현재 syntax, dataset name,
table name, column name,
function name 의 오류를 쉽게
확인 가능
• Results Tab 옆의 Explanation
을 보면 Query 수행 과정이 알기
쉽게 표기되어 Query 성능 개선
가능
- 60. © NBT All Rights Reserved.
File export 는 file당 1G, 일일 최대 10TB 가능
BigQueryTip2
TIP
• 쿼리 결과의 export는 파일당 최
대 1G 가능
• 그 이상의 결과를 export 하려는
경우 쿼리 결과에서 ‘Save as
Table’로 저장 후 export 항목에
‘*.json’ 형태로 기입
- 61. © NBT All Rights Reserved.
BigQuery 비용 절감을 위한 Use Cache 사용
BigQueryTip3
TIP
• 'Use Cached Results'를 사용하
여 캐싱된 이전 쿼리 결과를 사용
하면 중복되는 쿼리들의 비용을
절감 가능
Query Composer에서 'Show Options'를 눌러보면
- 62. © NBT All Rights Reserved.
Zeppelin 0.6.1부터 ‘%bigquery’인터프리터 지원
BigQueryTip4
TIP
• Zeppelin 0.6.1 버전부터
BigQuery Interpreter를 제공
• Data뿐만 아니라 BigQuery
Computing resource를 활용하
여 작업 수행 가능 (AWS EMR,
Google Dataproc의 비용 불필
요)
• 기존 Notebook의 이전 작업이
필요
- 63. © NBT All Rights Reserved.
손쉽게 연계 사용이 가능한 Data Studio가 무료
BigQueryTip5
- 64. © NBT All Rights Reserved.
결론:
실시간트렌드변화는Kibana
통계분석에는Zeppelin
이두가지가모두가능한DataStudio
하지만
도구는거들뿐..