Distributed Programming Framework
Who am I?
빅데이터시대주목받는하둡 Windows 에서사용가능한 Hadoop 발표 (Microsoft HDInsight Server), 이미 Azure 에서사용가능 네이버라인, NoSQL 로구성 (Redis -> HBASE 로마이그레이션 )
빅데이터시대주목받는하둡 배치처리속도개선및분석활용예시 ( 통화품질이상징후 )
빅데이터시대주목받는하둡 splunk : 모든로그데이터 ( 방화벽,IDS/ IPS, 서버, OS, DB, 웹로그, WAS 로그, 어플리케이션로그등등 ) 를수집 / 저장하여손쉽게검색및분석
구글에게물어봐? Google Trend
- About Hadoop - Hadoop Components - MapReduce - 하둡관련프로젝트 - Case studies
what is hadoop? Flexible and available architecture for large scale computation and data processing on a network of commodity hardware opensource + commodity hardware = IT costs reduction
History of hadoop - 오픈소스자바검색엔진 Lucene, Nutch 프로젝트후속으로만든오픈소스분산처리플랫폼 cf) Hadoop 이름은더그커팅의아들이가지고올던노란코끼리 - 야후는 2006 년에더그를채용했고, Hadoop 을오픈소스프로젝트 로 Start 함. 2 년후 Apache Top Level 프로젝트가됨 - Hadoop running on a 10,000+ core Linux cluster
what is hadoop? - Yahoo, Facebook, Twitter... Scaling Challenges - Accessible / Robust / Simple / Scalable - High-end Machine vs Cluster of Commodity Machines - SETI@home : move data between client and server - Hadoop : move-code-to-data philosophy - RDB vs Hadoop : Scale-up / Table vs Key-Value / Online, Offline
hadoop components ETL(Extract, Transform, Load) ETL BI Report RDBMS Pig Hive Sqoop Hbase MapReduce (Job Sche. / Task Exec.) HDFS (Hadoop Distributed File System)
hadoop components - HDFS (Hadoop Distributed File System) : A distributed filesystem designed for storing very large files with streaming data access running on clusters of commodity hardware. source : http://www.cloudera.com/what-is-hadoop/hadoop-overview/
hadoop components - NameNode : 파일의메타데이터 ( 데이터위치등 ) /user/chunk/data1 takes up 3 blocks (1,2,3) /user/james/data2 takes up 2 blocks (4,5) replication factor : 3!
hadoop components - Secondary NameNode(SNN) : NameNode 장애시데이터손실최소화 FsImage : 블록에대한메타데이터정보 Edit log : 파일메터데이터변경사항을기록 SNN 은주기적으로 Edit log 와 FsImage 를 Merge Data loss 는 NameNode 실패시여전히존재 Edit log 를원격 NFS 에추가적으로기록하고, 장애시해당파일을가지고 SNN 을구동하여서비스제공 ( 그러나성능이슈및수작업복구 )
hadoop components - Jobtracker - job 스케쥴링 - job 을여러노드에할당 - 실행되는모든 Task 를모니터링 - 실패한 Task 재실행
hadoop components - TaskTracker : JobTracker 에게할당받은 Task 를해당슬레이브노드에서처리될수있도록함 - 슬레이브노드에 1 개존재, 슬레이브노드에할당된작업의실행을담당 - JobTracker 와주기적통신 - Mapper/Reducer 태스크를분리된 jvm 하에실행
MapReduce - MapReduce job 은대용량의입력데이터세트를여러덩어리들로나누고, 해당덩어리들을병렬적으로 "Map" 를통해처리, Job 의입력은입력스플릿이라고부르는고정된크기의조각으로나눈다 - Map 의결과물을 Reduce 태스크로전달하여처리 - Combiner 를사용하여 Reduce 로보내는데이터를줄임 ( 네트워크대역폭고려 ) 년도별특정달의평균기온정보 (2000, 20) (2000, 30) (2000, 10) -------------- (2000, 5) (2000, 22) (2000, 20 가장더운달의기온은? Map 수행결과 : (2000, [20,30,10]) (2000, [5,22,20]) 미리최고기온계산 (combiner) (2000, 30), (2000, 22) -> (2000, [30,20])
참고 : 입력분할과레코드경계 입력분할은사용자입력레코드의논리작분할을뜻함 HDFS 의블록은입력데이터의물리적인분할을뜻함 이두가지가동일하다면? 실제는? 거의다르다. 요청하는레코드가메인블록이외다른블록에위치할경우 블록이로컬이아닌원격서버에위치할경우통신비용이발생
MapReduce - Mapper : 입력키 / 값쌍을가지고중간단계의키 / 값쌍을만든다. - Partitioner : Mapper 의결과를다수의 Reducer 로전달하기위해서해당결과를여러부분으로나눔
MapReduce - Reducer : Mapper 를통해생성된중간데이터셋 ( 키 - 값쌍 ) 을입력으로받아, 보통동일한키를가진세트가동일한 Reducer 로들어가어떤연산을수행한뒤에, 그결과를출력하게되는데보통은어떤요약된정보형태를가짐 - Reducer 는 3 가지주요단계 (shuffle, sort, reduce) 를가짐 - Shuffle : Mapper 의결과데이터셋을적절한노드 (Reducer) 로패치 - Sort : MapReduce 프레임웍은 Reducer 입력데이터를키별로정렬해서그룹화 - Reduce : < 키, ( 값리스트 )> 마다 reduce(..) 메소드가호출
word counting 예제 - 단어세기에포함시키지않을패턴 (ex: tomato) 을파일에에등록 - 대소문자구분할지여부설정 참고 : http://blog.eduby.me/2012/05/mapreduce-8-wordcount2.html 입력분할 apple orange apple banana mango banana mango mango tomato tomato orange tomato tomato mango apple apple 1 banana 1 map orange 1 mango 1 apple 1 mango 1 banana 1 mango 1 orange 1 mango 1 apple 1 partition / reduce apple [1, 1, 1] banana [1, 1] mango [1,1,1,1] orange [1,1] apple 3 banana 2 mango 4 orange 2
Hadoop Steaming - 다른언어를사용해서 Map/Reduce 프로그램을작성할수있다. - 지정된파일을명렁어라인에서실행하게된다. - 결과값은파이프라인을통해전달 참고 : http://blog.eduby.me/2012/07/hadoop-streaming-python-mapreduce.html
Hadoop 관련프로젝트
Pig MapReduce - 하나의입력, 두단계의데이터처리흐름 - 조인 : 코드길어지고, 에러발생하기쉬움 - N 단계의 job 들은관리하기어렵다. - Java 는컴파일이필요 - 프로그래밍하기가어렵다. - High-level 언어 - 프로그램을간단히 - Yahoo, Hadoop job 의 40% Pig 로처리 - Pig Latin 스크립트, 컴파일러가자동으로최적화수행 - 관계형데이터처리스타일의오퍼레이션 (filter, union, group, join) 을지원
Pig
Hive - 데이터웨어하우징패키지, 다수의사용자및대용량로그데이터처리를위해페이스북에서먼저 Hive 를만들기시작 - 구조화된데이터를쿼리하고, 다소복잡한 MapReduce 프로그램대신 HiveQL 을사용해서쉽게데이터를처리 - 테이블, 행, 컬럼, 스키마같이쉽게배울수있는, 관계형데이터베이스와유사한개념을사용
Hive hive> CREATE TABLE cite (citing INT, cited INT) > ROW FORMAT DELIMITED > FIELDS TERMINATED BY ',' > STORED AS TEXTFILE; hive> LOAD DATA LOCAL INPATH 'cite75_99.txt' > OVERWRITE INTO TABLE cite; Copying data from file:/root/cite75_99.txt Loading data to table cite hive> SELECT * FROM cite LIMIT 10; OK NULL NULL 3858241 956203... 3858241 3634889 3858242 3668705 3858242 3707004
에이브로 (Avro) 이기종간데이터타입을교환할수있는체계를제공하는프레임워크로, 아파치하둡프로젝트의서브프로젝트로시작된후아파치메인프로젝트로승격 쓰리프트 (Thrift) 가 RPC(Remote Procedure Call) 요청을안정적으로처리하면서이기종간 RPC 호출을지원하는개념으로접근했다면, 에이브로는데이터직렬화를기본개념으로해 RPC 호출을이기종간에가능케하는개념
주키퍼 (ZooKeeper) 분산환경에서노드간의정보공유, 락 (lock), 이벤트처리등보조기능을제공 하둡 ( 코끼리 ), pig( 돼지 ) 같이동물이름이많이사용되어, 동물사육사라는의미대로하둡분산처리시스템을일괄적으로관리해주는시스템 분산환경에서서버가수백 / 수천대에서예상치못한예외부분 (ex: 네트웍장애, 서버다운, 일부서비스중지, 서버확장문제등 ) 을총체적으로관리 - 동시작업을위한부하분산 - 하나의서버에서처리된결과가또다른서버들과동기화되어처리되게하는분산락관리 - 액티브서버가처리중엔작업이문제가발생하여대기서버가하던서비스를처리등
Case Studies 뉴욕타임즈보관소에있는천백만개의이미지문서변환 - 1851년과 1922년사이에있는모든종류의기사 - 이미지로변환할기사가총천백만개, 총 4테라바이트의데이터 - Hadoop framework, Amazon Web Servcies, S3 이용, 100개의노드 - 24시간동안수행, 1개의인스턴스를 1시간사용했을때비용 : 10센트, 총 100개인스턴스, 240달러지출
Case Studies 차이나모바일에서의데이터마이닝 - 대규모확장성 : 하둡을이용해서손쉽게확장할수있는구조 - 저비용 : 범용 PC 와무료 S/W 를이용해구성 - 커스터마이징 : 특정비즈니스요구사항을만족시키는애플리케이션 - 쉬운사용 : 사용자에게상용툴과유사한그래픽인터페이스제공
Case Studies 스텀블어폰 - Apache 로그파일수집과사용자세션분석을포함해여러분석태스크를위해이러한하둡의분산처리특성을이용
Hadoop - 빅데이터에만사용되는것은아니다. - 진정한의미의 NoSQL 툴도아니다. (SQL 과유사한쿼리언어를쉽게사용 ) - 하둡스토리지는막대한양의데이터를처리할수있다. ( 야후는 5 만개의노드로구성된하둡네트워크, Facebook 은 1 만개 ) - 가장강력한능력은? 확장성이다. - 가장큰장점? 저렴한비용 (RDBMS 와는다르게하둡은고가의하드웨어나고성능프로세서를필요로하지않음 ) - 미션크리티컬, 초단위이하로상호간에보고하거나다단계복잡한트랜젝션이필요하다면 RDBMS 를그대로사용해라. - 보통한두명의엔지니어가하둡을다운로드받아 4-5 개의노드로구성해놓고사용한뒤에이후에는거의같은패턴이므로그가치를알기시작한다. ( 야후에서도이런과정을거쳤다고함 )
빅데이터업계지도
향후전망
국내외사례 (1/5) 1. 미국국세청, 탈세방지시스템통한국가재정강화 2. 일본, 센서데이터를활용한지능형교통안내시스템 3. 밀라노, 지능형교통정보시스템으로신속 정확하고손쉬운길안내서비스 4. 뉴욕주시라큐스시, 데이터분석을기반으로스마터시티추진 5. 덴마크베스타스윈드시스템, 풍력에너지관리로에너지생산효과극대화 6. 구글, 실시간자동번역시스템을통한의사소통의불편해소 7. 월마트, 데이터분석을통한투자수익증대 8. 자라, 점포별 상품별등실시간데이터분석을통한판매량증대 9. 마이크론테크놀로지, 제품생산시간분석을통한비용절감 10. 코카콜라의 SNS 데이터활용을통한가치향상노력 11. 리츠칼튼호텔, 데이터관리를통한고객맞춤형서비스제공 12. SNS 를활용한할리우드흥행수익예측 13. 넷플릭스, 데이터분석으로온라인 DVD 판매제고및고객서비스향상
국내외사례 (2/5) 1. 한국석유공사, 국내유가예보서비스를통한비즈니스최적화 2. 국민권익위원회, 민원정보분석시스템을통한국민과정부의소통활성화 3. 한국도로공사, 고객목소리분석시스템을통한서비스혁신 4. 통계청, 임금근로일자리통계로일자리현황파악지원 5. 한국수자원공사, 스마트워터그리드를기반으로물부족현상해결 6. 포스코, 원료가격의효율적구매를통한가격경쟁력제고 7. GS EPS, 전력시장분석시스템을통한전력시장전망및분석 8. SK 텔레콤, 소셜네트워크에서의여론분석을위한스마트인사이트시스템 9. 현대 ᆞ 기아자동차, 문서중앙화시스템으로통합적기업정보관리
국내외사례 (3/5) 1. 미국국립보건원, 유전자데이터공유를통한질병치료체계마련 2. 미국국립보건원, Pillbox 프로젝트를통한의료개혁 3. 미국퇴역군인의전자의료기록분석을통한맞춤형의료서비스지원 4. 싱가포르, 주민위원회센터네트워크를기반으로맞춤형복지사회구현 5. 캐나다온타리오공과대병원, 미숙아모니터링을통한감염예방및예측 6. 건강보험회사웰포인트, 슈퍼컴퓨터를활용한효율적인환자치료 7. 구글, 검색어분석을통한독감예보서비스제공 8. 네덜란드스파크드, 빅데이터를활용하여건강한소사육환경구축
국내외사례 (4/5) 1. 싱가포르, 국가위험관리시스템을통한국가안전관리 2.FBI, 유전자색인시스템활용한단시간범인검거체계마련 3. 샌프란시스코, 범죄예방시스템으로안전지역사회구축 4. 싱가포르출입국관리소, 통합적정보분석으로출입국보안및국경통제강화 5. 일본, 다양한센서데이터를활용한재난대응능력강화 6. 위키리크스, 데이터분석을통한효과적인전술제공서비스 7. 서울시, 시민과함께만드는실시간폭우지도로수해예방및대책마련 8. KSTEC, 보험사기방지시스템으로보험사기방지
국내외사례 (5/5) 1. data.gov, 시민의자발적인참여와창의성을기반으로정책수립에기여 2. 미국미시간주, 데이터웨어하우스구축으로공공서비스질적향상 3. 영국패치베이, 국민참여형안전관리플랫폼구현 4. 케냐우샤히디, 집단지성으로이루어진재난관리오픈소스플랫폼 5. IBM 왓슨, 인공지능슈퍼컴퓨터로인류의창조성과혁신촉진 6. 애플시리, 지능형음성인식을통해더똑똑해지는창의적사고가능 7. 프랑스, 시민건강보호를위한스마트폰소음지도작성 8. 새로운과학적발견 : 대형강입자충돌기를이용한힉스입자검출 9. 솔트룩스, 부산지식네트워크시스템으로체계적인적네트워크마련
감사합니다. 이현남 / @brian02k / 커머스서비스개발팀 brianlee@lguplus.co.kr / 010-8080-8124