RHive 와빅데이터분석 - 넥스알
Agenda 1. RHive 의소개 RHive 란? RHive 기능 & 사용법 Enterprise RHive 2. RHive 의운용사례 CloudLog CDR 2
R 분석가를 RHive 탄생배경 RHive 의소개 Big Data 플랫폼의데이터처리능력과 R 의데이터분석기능의결합필요성이대두됨 3
RHive 의정의 RHive 의소개 가장대중적인분석도구인 R 과검증된대용량분산 DW 시스템인 Hive 를결합한 Big Data 고급분석플랫폼 4
시장에서의 RHive RHive 의소개 Big Data 분석시장에서의 Advanced Big Data Analytic 솔루션으로서의가치 장점 장점 단점 특장점 단점 R-Hive Bridge R 기반 Big Data 분석 Visualization 풍부한분석함수 Visualization 전세계사용 1 위솔루션 대용량분석불가 Big Data 처리가능 분산병렬처리 기능확장의용이성 데이터분석기능약함 특징 R 언어및 ANSI-SQL을기반으로하는분산처리플랫폼 - 제공데이터분석가들의 Learning Cost 최소화 R 언어기반분산처리프로그래밍 Framework을제공 - 용량의한계 / 처리시간의한계를극복 분석가들이직접 R Library를분산병렬화 Porting 가능 - 존재하는라이브러리를필요에따라직접 Porting이가능 Global 업체로부터의 Contact 업체 소재지 용도 월마트 미국 분석팀장의분석기능구현요구 엑센츄어 미국 프로젝트에 RHive 사용검토 facebook 미국 사내분석팀의분석도구 MicroStrategy 미국 고객의요구로 RHive 관심 Hortonworks 미국 사내교육과정에 RHive 사용 taobao.com 중국 제품사용에대한문의 5
타솔루션과의비교 RHive 의상세소개 R 을활용한 Big Data 분석시스템 : RHIPE, RHadoop, Riccardo 과의비교 RHive RHIPE, RHadoop, Riccardo R 기본함수제공 분산화모델로이식된 R 기본함수제공 구현된함수가없음 사용자가구현해야함 SQL 지원 ANSI SQL 기반의 HQL 로지원 SQL 미지원 Hadoop Map/Reduce MapReduce Model 을추상화한 Framework 제공 R 개발자가이해하기쉬운구조 MapReduce Model 과 tightly-coupled 됨 R 개발자가 MapReduce 모델을이해해야만개발가능 ( 개발이어려움 ) 분산처리 프로그래밍 Map/Reduce 에대한지식이없이도분산모델의프로그래밍이가능함 Hadoop 등의분산처리시스템에저장된 Big Data 기반으로 R 분산처리를구현함 6
타솔루션과의비교 - 성능 통계계산수행성능의비교 Hadoop env : 1 name node, 2data node 12GB data airline data(http://stat-computing.org/dataexpo/2009/ ) Flight arrival and departure details for all commercial flights within the USA, from October 1987 to April 2008. Test Algorithm colmeans (column mean) RHipe(0.65) RHadoop(1.0) RHive(0.0-5) 8m 3m 1m 7
Agenda RHive 사용 1. 분석방식 Basic Flow 2. 구조 3. 설치 4. 기능 Basic Statistic Functions Big Apply Functions RHive UDF Hive&Hadoop Bridge 8
Basic Flow HIVE or HADOOP (TB ~) R (GB) BIG DATA Data Load from HIVE 9
구조 10
설치 R 클라이언트노드 (Working client) # HIVE 설치 # HADOOP 설정복사 # HADOOP_HOME 환경변수설정 # R 쉘 > install.packages( RHive ) 하둡데이터노드 (Hadoop Cluster) #R 쉘 > install.packages( RServer ) # 커멘드라인 $ R CMD Rserver 11
Basic Statistic Functions Function rhive.basic.by rhive.basic.cut rhive.basic.merge rhive.basic.mode rhive.basic.range rhive.basic.scale rhive.basic.t.test rhive.basic.xtabs rhive.block.sample 기능 특정컬럼을기준으로 group by 를수행 하나의수치데이터 Column 을구간 Column 으로변환 두테이블을공통되는행을기반으로합쳐서새로운데이터셋을 두테이블을공통되는행을기반으로합쳐서새로운데이터셋을 특정숫자행의최대값과최소값을 평균 0 그리고분산이 1 인분포로숫자형데이터를변환시켜주는 Welch 의 t-test 를수행한다 xtabs 산출 Block 레벨의 Random Simple Sampling 수행 12
Basic Statistic Functions > library(rhive) > rhive.connect() > rhive.write.table(iris) > rhive.basic.mode( iris, sepallength ) sepallength freq 1 5 10 13
Big Apply Functions Function Rhive.napply Rhive.sapply rhive.mapapply rhive.mrapply rhive.reduceapply 기능 R의 napply 동일하며빅데이터처리 R의 sapply 동일하며빅데이터처리하이브테이블을 R데이터객체로만든다하이브테이블의데이터정의를조회한다하이브테이블의크기를구한다 14
Big Apply Functions > rhive.napply('iris', function(column1) { column1 * 10}, 'sepallength') [1] "iris_napply1323970435_table" 15
Hive UDF Functions rowname murder assault urbanpop rape 1 Alabama 13.2 236 58 21.2 2 Alaska 10.0 263 48 44.5 3 Arizona 8.1 294 80 31.0 4 Arkansas 8.8 190 50 19.5.. assault 컬럼의최대값 -> Select max(assault ) from USArrests 도시별선택된범죄발생수의합은? -> Select? from USArrests 16
Hive UDF Functions > sumcrimes <- function(column1, column2, column3) { column1 + column2 + column3 } > rhive.assign("sumcrimes", sumcrimes) > rhive.export("sumcrimes") > > rhive.query("select rowname, R('sumCrimes', murder, assault, rape) FROM usarrests") 17
Hive UDF Functions rowname crimes 1 Alabama 270.4 2 Alaska 317.5 3 Arizona 333.1 4 Arkansas 218.3 5 California 325.6 6 Colorado 250.6 7 Connecticut 124.4 8 Delaware 254.2.... rowname murder assault urbanpop rape 1 Alabama 13.2 236 58 21.2 2 Alaska 10.0 263 48 44.5 3 Arizona 8.1 294 80 31.0 4 Arkansas 8.8 190 50 19.5.. 18
Extension Hive Functions Function rhive.list.tables rhive.write.table rhive.load.table rhive.desc.table rhive.size.table rhive.drop.table rhive.query rhive.big.query 내용 Hive 데이블목록조회 R 데이터객체를 Hive 테이블로만든다 Hive 테이블을 R데이터객체로만든다 Hive 테이블의데이터정의를조회한다 Hive 테이블의크기를구한다 Hive 테이블을삭제한다 Hive 쿼리실행시킨다 Hive 쿼리실행결과를 Hive에저장 19
Big Apply Functions > rhive.query('select assert from usarrests') rowname murder assault urbanpop rape 1 Alabama 13.2 236 58 21.2 2 Alaska 10.0 263 48 44.5... > tmp_table <- rhive.load.table(usarrests) > tmp_table rowname murder assault urbanpop rape 1 Alabama 13.2 236 58 21.2 2 Alaska 10.0 263 48 44.5... 20
Bridge to Hadoop rhive.hdfs.cat rhive.hdfs.chgrp rhive.hdfs.chmod rhive.hdfs.close rhive.hdfs.connect rhive.hdfs.du rhive.hdfs.exists rhive.hdfs.get rhive.hdfs.info rhive.hdfs.ls rhive.hdfs.mkdirs rhive.hdfs.put rhive.hdfs.rename rhive.hdfs.rm rhive.hdfs.tail rhive.load rhive.save 21
2. Enterprise RHive 의확장 ENTERPRISE RHIVE 의확장 22
Enterprise RHive RHive 의확장 RHive 의상용버전으로 RHive 의기본기능외에각종편의도구및분산화된분석알고리즘패키지를제공함 KMeans, Sampling, Scatter Plot, Simple Linear Regression 등분산화된분석알고리즘제공 ( 알고리즘셋추가확장중 ) 알고리즘셋 Clustering K-means Prediction Multi-variate linear regression Classification tree Sampling random, stratified, cluster, quota Modeling model parameter tuning feature selection 23
Enterprise RHive RHive 의확장 RHive 및보고서 Action 을기술할수있는웹기반 Workflow 관리기능제공 24
Enterprise RHive RHive 의확장 시스템모니터링 / 관제 / 작업관리 / 설정관리등의기능을제공하는웹기반통합관리콘솔기능제공 25
3. RHive 의운용사례 RHIVE(ENTERPRISE RHIVE) 의 운용사례 26
CDR log 분석 RHive 의분석사례 통신 CDR 로그를분석하여통화품질최적화를위한 Insight 제공 통화품질이상징후 고객 Segment Spatial Statistics 을이용한통화품질지표의공간인식 품질이상기지국의조기검출 Google Map Mash-Up 마케팅관점의고객 Segments 의공간인식 RHive 의 K-means Clustering 알고리즘적용 Google Map Mash-Up 고객무선통화발신이상징후 개인의통화패턴으로부터이상 Traffic 도출함 RHive Anomaly Detection 알고리즘을이용이상통화패턴검출 27
Cloud log 분석 RHive 의분석사례 Cloud 시스템에서생성되는각종시스템로그를분석하여시스템운영의최적화에 Insight 제공 일자 / 시간대 /IP 별 Netflow 집계데이터 일자 / 시간대 /Account/IP 별 Virtual Machine 집계데이터 일자 / 시간대 /Account 별 Disk Volume 집계데이터 RHIVE (Aggregate) IP 별 Netflow 집계데이터 Account/IP 별 Virtual Machine 집계데이터 Account 별 Disk Volume 집계데이터 Account 별통합데이터 R(Plotting) RHIVE (Clustering) ) R(Plotting) scale 된통합데이터 Cluster 별 Netflow 현황 Cluster 별 Netflow 현황 Clustering 결과데이터 군집특성도 Cluster 별 VM 현황 Cluster VM 현황 Cluster 별 Disk Volume 현황 정기보고서 2 8
클라우드로그분석시스템
Contact: rhive@nexr.com github (https://github.com/nexr/rhive) 30