으로구현하는 Big Data 기술완벽해부 JBoss User Group 김병곤 fharenheit@gmail.com
소개 ( 주 ) 클라우다인대표이사한국자바개발자협의회 (JCO) 회장 JBoss User Group 대표한국스마트개발자협회부회장지경부 /NIPA 소프트웨어마에스트로멘토 IT전문가협회정회원대용량분산컴퓨팅 Technical Architect 오프라인 Hadoop 교육및온라인 Java EE 교육오픈소스 Open Flamingo 설립 (http://www.openflamingo.org) Java Application Performance Tuning 전문가다수책집필및번역 JBoss Application Server5, Enterprise JavaBeans 2/3 2
Big Data 의 4 가지속성 + Value 3
Big Data = Big Opportunity Gartner, CEO Advisory: Big Data Equals Big Opportunity, 2011 년 3 월 31 일 4
Big Data 활용분야 5
Big Data 의세계 우리는 Big Data속에서살고있다! 뉴욕증권거래소 : 1일에 1테라바이트의거래데이터생성 Facebook : 100억장의사진, 수페타바이트의스토리지 통신사 : 시간당 10G 이상의통화데이터, 1일240G 생성, 월생성데이터의크기 200T 이상 우리는엄청나게큰로그데이터를 어떻게처리해야할까? 6
Hadoop 의패러다임의전환 로직이데이터에접근하지말고 데이터가있는곳에로직을옮겨라! 7
왜대용량에 이적합한가? 애플리케이션 / 트랜잭션로그정보는매우크다. 대용량파일을저장할수있는분산파일시스템을제공한다. I/O 집중적이면서 CPU 도많이사용한다. 멀티노드로부하를분산시켜처리한다. 데이터베이스는하드웨어추가시성능향상이 linear 하지않다. 장비를증가시킬수록성능이 linear 에가깝게향상된다. 데이터베이스는소프트웨어와하드웨어가비싸다. 은무료이다. Intel Core 머신과리눅스는싸다. 8
Hadoop 의다양한응용분야 ETL(Extract, Transform, Load) Data Warehouse Storage for Log Aggregator Distributed Data Storage ( 예 ; CDN) Spam Filtering Biometric Online Content Optimization Parallel Image, Movie Clip Processing Machine Learning Science Search Engine 9
데이터처리에있어서 Hadoop, RDMBS 의위치 10
데이터베이스와 Hadoop 비교 11
국내 / 해외 Hadoop Business 상황 해외 Ready for Business 국내 Research, Ready for Business ( 일부 ) 12
일반적인 Hadoop 적용단계 Research Production Mission Critical 13
복잡하면서크리티컬한비즈니스문제 14
Hadoop Cluster 15
Hadoop Cluster 를구성하는노드의시스템스펙 2 CPU(4 Core Per CPU) Xeons 2.5GHz 이상 4x1TB SATA 16G RAM 1G 이더넷 10G 스위치 랙당 20대의노드 Ubuntu Linux Server or CentOS 64bit Sun Java SDK 1.6 0.20.2 16
Hadoop Echosystem 17
Hadoop 배포판 18
R & Hadoop Statistical Computing MapReduce 19
기초 File System : HDFS(Hadoop Distributed File System) 파일을 64M 단위로나누어장비에나누어서저장하는방식 사용자는하나의파일로보이나실제로는나누어져있음 2003년 Google이논문으로 Google File System을발표 프로그래밍모델 (MapReduce) (2004 년 Google 이논문발표 ) HDFS 의파일을이용하여처리하는방법을제공 Parallelization, Distribution, Fault-Tolerance 20
파일시스템 : HDFS 21
프로그래밍모델 : MapReduce HDFS 의파일을처리하기위한프로그래밍모델 22
WordCount Hadoop 의 MapReduce Framework 동작을이해하는핵심예제 각각의 ROW 에하나의 Word 가있을때 Word 의개수를알아내 는예제 입력파일 (Mapper 의 Input) hadoop apache page hive hbase cluster hadoop page cloud copywrite 출력파일 (Reduce Output) apache 1 cloud 1 cluster 1 copywrite 1 hadoop 2 hbase 1 hive 1 page 2 23
WordCount 24
WordCount 의 Mapper 파일의 1ROW 를읽어서 Word, 1 을출력하는 Mapper public class WordCountMapper extends Mapper<Object, Text, Text, IntWritable> { private final static IntWritable one = new IntWritable(1); public void map(object key, Text word, Context context) throws IOException, InterruptedException { } context.write(word, one); } 25
WordCount 의 Reducer Mapper 의출력중에서같은 Key 로묶어서처리하는 Reducer public class WordCountReducer extends Reducer<Text, IntWritable, Text, IntWritable> { private IntWritable count = new IntWritable(); // for Performance public void reduce(text word, Iterable<IntWritable> values, Context context) throws IOException, InterruptedException { int sum = 0; for (IntWritable val : values) { } sum += val.get(); count.set(sum); context.write(word, count); // Result: Word Count (ex; hadoop 3) } 26
Database 와 Hadoop 의추천알고리즘성능비교 구분 Oracle 기반머신 Hadoop 기반머신 CPU 100% 70% Core 80 Core Intel 8 Core * 20 = 160 Core 처리시간 1 시간 34 분 기간 1 개월 1 개월 상품수 120,000,000 사용자수 (T) 1,300,000 장비비용 라이선스비용 6 억이상고가 High End Server 예 ) Core 당 700 만원 * 80 = 56,000 만원 300 만원 * 20 = 6,000 만원 0 27
Hadoop 의 Availability Hadoop 은기반인프라성격을가지고있어서 Availability 가매 우중요 현재 Hadoop 은 Enterprise 수준의 SLA 를제공하지는않음 28
Hadoop 도입시고려할사항 기존오픈소스와는다른유형의오픈소스 일반적인오픈소스는 Framework, Library 정도수준이지만 Hadoop 은인프라성격을가진오픈소스 오픈소스친화적인엔지니어확보중요 소스코드까지고치려는시도를할수있는엔지니어 Linux 친화적이면서 System Engineer 성향을가진엔지니어필요 적용하기까지많은테스트와최적화필요하므로인내필요 데이터를다루는작업은기존까지개발자의몫이아니었고 지루한작업에매우많은염증을느낄수있음 29
Big Data Analytics 도입장벽 30
MapReduce 31
Namenode & Datanode 관계 32
Hadoop Cluster 33
Hadoop Daemon // Namenode hadoop@namenode:/usr/local/java/hadoop $> jps 16017 Jps 14799 NameNode 15596 JobTracker 14977 SecondaryNameNode // Datanode hadoop@datanode1:/usr/local/java/hadoop $> jps 15183 DataNode 15897 TaskTracker 16284 Jps 34
Hadoop MapReduce Job (1) 35
Hadoop MapReduce Job (2) 36
Hadoop MapReduce Job (3) 37
Hadoop MapReduce Job (4) 38
MapReduce Job 의동작원리 39
Hadoop & Pig 대용량데이터를고차원적인방법으로접근하는스크립트언어 스크립트언어 = Pig Latin 사용자가작성한스크립트언어는 MapReduce 로동작 Pig Latin MapReduce 과정이성능에관건 다양한파일들을한번에처리하고자하는경우매우유용 MapReduce 의경우모두코드를작성해야함 다양한데이터유형을제공 Bag, Tuple, 40
Pig Latin 예제 -- max_temp.pig: Finds the maximum temperature by year (1950,0,1) (quality == 0 OR quality == 1 OR quality == 4 OR quality == 5 OR quality == 9); grouped_records = GROUP filtered_records BY year; (1949,{(1949,111,1),(1949,78,1)}) (1950,22,1) records = LOAD 'input/ncdc/micro-tab/sample.txt' (1950,- AS (year:chararray, temperature:int, quality:int); 11,1) (1949,111, 1) filtered_records = FILTER records BY temperature!= 9999 AND (1950,{(1950,0,1),(1950,22,1),(1950,- 11,1)}) max_temp = FOREACH grouped_records GENERATE group, MAX(filtered_records.temperature); (1949,11 1) DUMP max_temp; (1950,22) 41
Pig 는만능인가? Yahoo! 는 80% 정도를 Pig 로사용 Why? Yahoo! 가만들었으니까? Pig 가편하지만성능문제발생할수있음 거지같이작성한 SQL 은느리다!! Pig와 MapReduce를적절히혼합해서사용할필요가있다. 그러므로 Workflow Engine이필요할수있다. Oozie? Open Flamingo? 특정작업에 Pig? MapReduce? 를결정하는것이중요. 경험!!! 42
Hive Data Warehouse Infrastructure Data Summarization Ad hoc Query on Hadoop MapReduce for Execution HDFS for Storage MetaStore Table/Partition Thrift API Metadata stored in any SQL backend Hive Query Language Basic SQL : Select, From, Join, Group BY Equi-Join, Multi-Table Insert, Multi-Group-By Batch Query https://cwiki.apache.org/hive/languagemanual.html 43
DDL Operation SQL 기반 DDL Operation hive> CREATE TABLE pokes (foo INT, bar STRING); hive> CREATE TABLE invites (foo INT, bar STRING) PARTITIONED BY (ds STRING); hive> SHOW TABLES; hive> SHOW TABLES '.*s'; hive> DESCRIBE invites; hive> DROP TABLE pokes; hive> ALTER TABLE pokes ADD COLUMNS (new_col INT); hive> ALTER TABLE invites ADD COLUMNS (new_col2 INT COMMENT 'a comment'); hive> ALTER TABLE events RENAME TO 3koobecaf; hive> CREATE TABLE rating (userid STRING, movieid STRING, rating INT) ROW FORMAT DELIMITED FIELDS TERMINATED BY ',' STORED AS TEXTFILE; https://cwiki.apache.org/hive/languagemanual-ddl.html 44
DML Operation 로컬파일로딩 hive> LOAD DATA LOCAL INPATH './examples/files/kv1.txt' OVERWRITE INTO TABLE pokes; HDFS 로딩 hive> LOAD DATA INPATH '/user/myname/kv2.txt' OVERWRITE INTO TABLE invites PARTITION (ds='2008-08-15'); Partitioning hive> LOAD DATA LOCAL INPATH './examples/files/kv2.txt' OVERWRITE INTO TABLE invites PARTITION (ds='2008-08-15'); hive> LOAD DATA LOCAL INPATH './examples/files/kv3.txt' OVERWRITE INTO TABLE invites PARTITION (ds='2008-08-08'); 45
SQL Operation :: Select & Filter hive> SELECT a.foo FROM invites a WHERE a.ds='2008-08-15'; hive> INSERT OVERWRITE DIRECTORY '/tmp/hdfs_out' SELECT a.* FROM invites a WHERE a.ds='2008-08-15'; hive> INSERT OVERWRITE LOCAL DIRECTORY '/tmp/local_out' SELECT a.* FROM pokes a; hive> INSERT OVERWRITE TABLE events SELECT a.* FROM profiles a; hive> INSERT OVERWRITE TABLE events SELECT a.* FROM profiles a WHERE a.key < 100; hive> INSERT OVERWRITE LOCAL DIRECTORY '/tmp/reg_3' SELECT a.* FROM events a; hive> INSERT OVERWRITE DIRECTORY '/tmp/reg_4' select a.invites, a.pokes FROM profiles a; hive> INSERT OVERWRITE DIRECTORY '/tmp/reg_5' SELECT COUNT(*) FROM invites a WHERE a.ds='2008-08-15'; hive> INSERT OVERWRITE DIRECTORY '/tmp/reg_5' SELECT a.foo, a.bar FROM invites a; hive> INSERT OVERWRITE LOCAL DIRECTORY '/tmp/sum' SELECT SUM(a.pc) FROM pc1 a; 46
Log Aggregator Scribe Flume 47
Flume 기반 nmon log 수집및실시간처리 (1) 48
Flume 기반 nmon log 수집및실시간처리 (2) 49
Oozie Workflow Engine 특징 기능 OpenSource Workflow /Coordination Service for Hadoop Job Apache Incubator Project Complex Workflow Action Directed Acyclical Graph (DAG) Dependency Management Reduce Time-To-Market Native Hadoop Integration Support All types of Hadoop Jobs Integrated with Hadoop Stack Frequency Execution Date/Time Triggered Designed for Yahoo! Yahoo! s Complex Workflow & Data Pipeline Global Scale Yahoo! Distribution of Hadoop with Security Job Scheduling (Coordiator) Workflow XML Workflow Dependency Management Parameterization of Action Nodes Expression Language in Workflow XML Synchronous Dataset Input/Output Clocked Dataset WebService API GUI Monitoring (Using ExtJS 2) Native Support MapReduce Pig HDFS SSH Java Standalone 50
Oozie Workflow Engine - 그래프이론 그래프이론중하나로방향성을가지는비순환그래프를의미하는 Directed Acyclic Graph 를기반으로설계되어있음. 51
Oozie Workflow Engine Workflow XML <workflow-app xmlns="uri:oozie:workflow:0.2" name="java-main-wf"> <start to="cleanup-node"/> <action name="cleanup-node"/> <fork name="fork-node"> <path start="clean1-node"/> <path start="clean2-node"/> </fork> <action name="clean1-node"> <java> <main-class>org.openflamingo.mapreduce.etl.clean.cleandriver</mainclass> </java> <ok to="join-node"/> <error to="fail"/> </action> <action name="clean2-node"> <java> <main-class>org.openflamingo.mapreduce.etl.clean.cleandriver</mainclass> </java> <ok to="join-node"/> <error to="fail"/> </action> <action name="clean3-node"> <java> <main-class>org.openflamingo.mapreduce.etl.clean.cleandriver</mainclass> </java> <ok to="join-node"/> <error to="fail"/> </action> <join name="join-node" to="aggregate-node"/> <action name="aggregate-node"> <java> <mainclass>org.openflamingo.mapreduce.etl.aggregate.aggregatedriver</main-class> </java> <ok to="end"/> <error to="fail"/> </action> <kill name="fail /> <end name="end"/> </workflow-app> 52
Oozie Workflow Engine Workflow XML Case 1 Case 2 Case 3 1 2 2 1 X 53
Oozie Workflow Engine Job Scheduling <coordinator-app name="my_app" frequency="5" start="2009-02-01t00:00z" end="2009-02-02t00:00z" DAY DD timezone="utc" HOUR HH xmlns="uri:oozie:coordinator:0.1"> <datasets> MIN mm <dataset name="input1" frequency="15" initial-instance="2009-01-01t00:00z" timezone="utc"> <uritemplate>hdfs://localhost:9000/tmp/revenue_feed/${year}/${month}/${day}/${hour}/${minute}</uri-template> Dataset을정의하고생성주기및디렉토리규칙을정의 </dataset> </datasets> 구분 YEAR MONT 설정방법 YYYY DD <input-events> <data-in name="coordinput1" dataset="input1"> 입력으로사용할파일의범위지정 ( 오늘부터 4일정까지파일을지정 ) <start-instance>${coord:current(-3)}</start-instance> <end-instance>${coord:current(0)}</end-instance> </data-in> </input-events> Frequency 지정방법 <action> <workflow> <app-path>hdfs://localhost:9000/tmp/workflows</app-path> <configuration> <property> <name>input_files</name> <value>${coord:datain('coordinput1')}</value> </property> </configuration> </workflow> </action> </coordinator-app> /tmp/revenue_feed/2009/01/0 1/00/ /tmp/revenue_feed/2009/01/0 1/01/ /tmp/revenue_feed/2009/01/0 1/02/ 구분 매 5 분 매시간 매일 매주 매월 설정방법 frequency="5" frequency="${coord:minutes( 5)}" frequency="60" frequency="${coord:hours(1) }" frequency="1440" frequency="${coord:days(1)} " frequency="${coord:days(7)} " frequency="${coord:months(1 )}" 54
Oozie Workflow Engine - Console 55
Amazon 상품추천 56
추천로직 ( 시스템 ) 을구현하는방법 협업필터링 (Collaborating Filtering; CF) 사용자로부터얻은기호정보 ( 예 ; Rating) 를토대로사용자들의관심사를예측 사용자기반필터링 : 취향이비슷한사용자 아이템기반필터링 : 유사한제품 연관규칙 (Association Rule) 상품간의연관성을분석하여다른사용자에게구매하지않은상품을추천 클러스터링 (Clustering) 비슷한대상들끼리묶어서군집을형성 군집을형성한대상은유사하다고판단 분류 (Classification) 등등 57
추천시스템을이용한웹사이트 Melon (Music) IPTV Portal Amazon (Product) Last.fm (Music) Digg (News) Delicious (Web) Netflix (Movie) 58
Association Rule 로그정보 ( 예 ; 구매이력 ) 를토대로항목간관계 ( 연관규칙 ) 를알아내는데이터마이닝기법 가장구현하기쉽기때문에현업에서많이활용 월마트의분석사례 기저귀를사는젊은남성은맥주도산다 기저귀근처에맥주를위치 허리케인이상륙하기전에딸기과자와맥주가많이팔린다 허리케인이상륙하기전에는딸기과자와맥주를같이판매 상품간연관규칙을알아내어구매하지않은고객에게구매를유도 59
Association Rule 트랜잭션 ( 거래수 ) = T 지지도 (Support) = P(A B) = N(A B) / N(T) 많이구매할수록지지도는상승 A와 B가동시에구매할빈도수 신뢰도 (Confidence) = P(B A) = P(A B) / P(A) A를포함하는장바구니중에서 B를포함하는빈도수 향상도 (Lift) = P(B A) / P(B) = P(A B) / P(A)P(B) A를구매한경우그트랜잭션이 B를포함하는경우와 B가임의로구매하는경우의비율 Lift > 1 : 높을수록연관이깊다 S,C는얼마나규칙이유용한가여부, L은매출향상의기여도 60
Association Rule T 품목 1 우유, 빵, 버터 2 우유, 버터, 콜라 3 빵, 버터, 콜라 4 우유, 콜라, 라면 5 빵, 버터, 라면 품목 개수지지도 우유 3 3/5=0.6 빵 3 3/5=0.6 버터 4 4/5=0.8 콜라 3 3/5=0.6 라면 2 2/5=0.4 품목 (A B) 개 지지도 (S) 신뢰도 (C) 향상도 (L) 빵 버터 3 3/5=0.6 0.6/0.6=1 0.6/0.6*0.8=1.25 버터 빵 3 3/5=0.6 0.75 1.25 콜라 우유 2 2/5=0.4 0.66 1.11 우유 콜라 2 2/5=0.4 0.66 1.11 우유 버터 2 2/5=0.4 0.66 0.83 콜라 버터 2 2/5=0.4 0.66 0.83 버터 우유 2 2/5=0.4 0.5 0.83 버터 콜라 2 2/5=0.4 0.5 0.83 라면 우유 1 1/5=0.2 0.5 0.83 라면 빵 1 1/5=0.2 0.5 0.83 라면 콜라 1 1/5=0.2 0.5 0.83 콜라 라면 1 1/5=0.2 0.33 0.83 우유 라면 1 1/5=0.2 0.33 0.83 신뢰도 (Confidence) = P(B A) = P(A B) / P(A) 향상도 (Lift) = P(B A) / P(B) = P(A B)/P(A)P(B) 61
Association Rule 입력파일 1, 우유, 빵, 버터 2, 우유, 버터, 콜라 3, 빵, 버터, 콜라 4, 우유, 콜라, 라면 5, 빵, 버터, 라면 출력파일 빵, 버터,0.6,1,1.25 버터, 빵,0.6,0.75,1.25 콜라, 우유,0.4,0.66,1.1111112 우유, 콜라,0.4,0.66,1.1111112 우유, 버터,0.4,0.66,0.8333333 콜라, 버터,0.4,0.66,0.8333333 버터, 우유,0.4,0.5,0.8333333 버터, 콜라,0.4,0.5,0.8333333 라면, 우유,0.4,0.5,0.8333333 라면, 빵,0.2,0.5,0.8333333 라면, 콜라,0.2,0.5,0.8333333 콜라, 라면,0.2,0.33,0.8333333 우유, 라면,0.2,0.33,0.8333333 빵, 라면,0.2,0.33,0.8333333 라면, 버터,0.2,0.5,0.625 버터, 라면,0.2,0.25,0.625 62
Hadoop 으로 Association Rule 구현하기 AR 구현시알아내야하는값 트랜잭션 개별아이템의개수 ( 지지도계산을위해서필요 ) 아이템의조합그리고그조합의개수 ( 지지도계산 ) 성능이슈 조합의개수가늘어날수록급격하게성능저하발생 이런이유로 2 개의아이템조합을현업에서주로사용 MapReduce 를두번실행해서처리 첫번째단계 : 개별아이템의지지도계산 두번째단계 : 조합을생성하고조합에대한 S,C,L 을계산 63
첫번째단계 : 아이템의지지도를계산하라 AR 을제대로처리하려면무조건개별아이템의지지도를알아 내야한다! 입력파일 1, 우유, 빵, 버터 2, 우유, 버터, 콜라 3, 빵, 버터, 콜라 4, 우유, 콜라, 라면 5, 빵, 버터, 라면 Mapper 우유,1 빵,1 버터,1 우유,1 버터,1 콜라,1 빵,1 버터,1 콜라,1 우유,1 콜라,1 라면,1 빵,1 버터,1 라면,1 Reducer 출력파일 우유,3,0.6 빵,3,0.6 버터,4,0.8 콜라,3,0.6 라면,2,0.4 64
두번째단계 : 아이템조합을생성해라 아이템조합을생성해서첫번째단계의지지도로 S,C,L 을계산 하라 첫번째출력파일 입력파일 1, 우유, 빵, 버터 2, 우유, 버터, 콜라 3, 빵, 버터, 콜라 4, 우유, 콜라, 라면 5, 빵, 버터, 라면 Mapper < 우유, 빵 >,1 < 빵, 우유 >,1 < 우유, 버터 >,1 < 버터, 우유 >,1 < 빵, 버터 >,1 < 버터, 빵 >,1 < 우유, 버터 >,1 < 버터, 우유 >,1 < 우유, 콜라 >,1 < 콜라, 우유 >,1 < 버터, 콜라 >,1 < 콜라, 버터 >,1... 우유,3,0.6 빵,3,0.6 버터,4,0.8 콜라,3,0.6 라면,2,0.4 Reducer 출력파일 빵, 버터,0.6,1,1.25 버터, 빵,0.6,0.75,1.25 콜라, 우유,0.4,0.66,1.1111112 우유, 콜라,0.4,0.66,1.1111112 우유, 버터,0.4,0.66,0.8333333 콜라, 버터,0.4,0.66,0.8333333 버터, 우유,0.4,0.5,0.8333333 버터, 콜라,0.4,0.5,0.8333333 라면, 우유,0.4,0.5,0.8333333 라면, 빵,0.2,0.5,0.8333333 라면, 콜라,0.2,0.5,0.8333333 콜라, 라면,0.2,0.33,0.8333333 우유, 라면,0.2,0.33,0.8333333 빵, 라면,0.2,0.33,0.8333333 라면, 버터,0.2,0.5,0.625 버터, 라면,0.2,0.25,0.625 65
사용자별상품추천 T 품목 1 우유, 빵, 버터 2 우유, 버터, 콜라 3 빵, 버터, 콜라 4 우유, 콜라, 라면 5 빵, 버터, 라면사용자 1 : 콜라를추천사용자 3 : 우유를추천 품목 (A B) 개 지지도 (S) 신뢰도 (C) 향상도 (L) 빵 버터 3 3/5=0.6 0.6/0.6=1 0.6/0.6*0.8=1.25 버터 빵 3 3/5=0.6 0.75 1.25 콜라 우유 2 2/5=0.4 0.66 1.11 우유 콜라 2 2/5=0.4 0.66 1.11 우유 버터 2 2/5=0.4 0.66 0.83 콜라 버터 2 2/5=0.4 0.66 0.83 버터 우유 2 2/5=0.4 0.5 0.83 버터 콜라 2 2/5=0.4 0.5 0.83 라면 우유 1 1/5=0.2 0.5 0.83 라면 빵 1 1/5=0.2 0.5 0.83 라면 콜라 1 1/5=0.2 0.5 0.83 콜라 라면 1 1/5=0.2 0.33 0.83 우유 라면 1 1/5=0.2 0.33 0.83 66
애플리케이션상태에따른추천방법의변화 마이닝알고리즘을혼합하여최종맛집을추천하기위한데이터세트생성 현위치 User Id 사용자의개인선호도정보가존재하는근처맛집이있는가? No(Cold Start) 친구의맛집리스트 Yes (AR+CF) 근처맛집중사용자의예상선호도가높은맛집을검색 중에서검색 추천맛집이없는경우 자신의맛집리스트중에서추천 추천맛집이없는경우 근처맛집중점수가높은맛집을추천 67
하나이상의추천알고리즘의결합 최종추천데이터는매우복잡한데이터가공이필요하며시간이오래소요됨 10,1114,0.00,0.10,398.41 -_-*,7188,23.25 연관규칙 (Association Rule) 1114,10,0.00,0.10,398.41 10,168,0.00,0.10,398.41 168,10,0.00,0.10,398.41 -_-*,5865,23.25 -_-*,5287,23.25 -_-*,87,23.25...... Luce 10 5.0 912,966,0.00,0.10,398.41 히메 1,6596,31.87 vitassun 10 4.5 qxy20 1000 3.5 sketch85 1001 2.0 taiji2ooo 1001 2.5 shj5753 1002 1.0 아이린 1002 2.5 아즈키 1008 4.0 hsjoa89 1009 4.5 방긋 1009 4.5... input (user, item, rating) 협업필터링 (Collaborative Filtering) 966,912,0.00,0.10,398.41 949,953,0.00,0.20,796.82 953,949,0.00,0.10,796.82 association rule table (item A, item B, support, confidence, lift) 1009 3407-1.0 1010 7120 1.0 1010 7315 1.0 1017 1833 1.0 7489 7491-1.0 7497 7704-1.0 7627 997 1.0 7637 813 1.0 히메1,6432,31.87 히메1,5760,31.87 히메1,4931,53.64 ar recommendation (user, item, score) 아름쿤,1151,20.00 아름쿤,1939,-20.00 아름쿤,2448,20.00 아름쿤,2543,20.00 히메1,3125,90.00 히메1,362,-90.00 히메1,3990,90.00 히메1,4931,90.00 -_-*,7188,23.25 -_-*,5865,23.25 -_-*,5287,23.25 -_-*,87,23.25 히메1,6596,31.87 히메1,6432,31.87 히메1,5760,31.87 히메1,4931,143.64 output (user, item, bobpool score) item similarity table (item A, item B, similarity) cf recommendation (user, item, score) 68
추천결과데이터를이용한다양한정보제공 추천데이터를생성하여검색엔진의근간데이터를생성 단일조건으로 강남역 검색 복합조건으로 강남역김치찌개 검색 69
Big Data 활용시어려운점 오픈소스제품을신뢰하지마라 데이터처리는지금까지상용솔루션으로처리해왔다. 오픈소스로상용처럼해달라는요건 경험부족으로발생하는일정이슈 전부개발을해야하나솔루션도입관점에서생각 데이터프로세싱의개념을이해못하는이슈 Big Data 는멀티코어및장비에서분산처리되는개념 경험자는그냥된다는인식의이슈 모든 Biz 는항상새롭게시작해야한다. 70