Big Data 2012.3. http://www.openwith.net
순서 배경 Hadoop 관련프로젝트 활용 주요이슈 전망과과제 2
배경 Big Data의물결 Supercomputer BI
배경 Big Data Tidal Waves A Tidal Wave of Data 4
현상으로서의 Big Data: V 3 C V3 이로인한 C Complexity 5
Online 공간에서의 모든행위 (click-stream) Click, ad impression, wall post, friending,... billing event, transaction, server request, network message, fault fast forward, pause,... 분석할데이터 stream 이끊임없이발생 The Power of Big Data Analytics
배경 Supercomputer Supercomputer High-throughput computing 주로 Technical-Computing 2가지방향 : 추세 : grid computing = 원격, 분산형대규모컴퓨팅 Clustering (tightly-coupled) & MPP (loosely-coupled) Batch Mission critical & real-time orientation Static search pipelining of intelligent agents Scale-Up vs. Scale-Out 1000 개 CPU 장착된 supercomputer 대신 1,000 개의 single-cpu 또는 250 개의 quad-core 서버를제시. cost-effective compute cluster. 7
배경 Supercomputer Big Data 는 HPC 의또다른진화모습 4 개의 Implied Solutions Data Aggregation find a specific group of records that comply with a set of requirements Data Analytics filesystem application computation of common characteristics or key regression characteristics in data aggregated for the analysis Data Visualization HPC + filesystem construct visual representation of a computationally-derieved model of aggregated for analysis HPC + filesystem + visual analysis Interactive Visualization and Simulation command adapative analysis through manipulation and simluation of aggregated data. Insight from human-derived optimization points. HPC + filesystem + visual analytics + design
배경 BI BI (Business Intelligence) Survival of the Smartest (H.Mendelson & J.Ziegler, 1999) 조직의지능지수 (Organizational IQ) 란 정보를신속하게처리하여효과적의사결정을하고이를행동에옮길수있는능력 즉, Intelligence ( 의사결정능력 ) + Collaboration/BPM ( 실행능력 ) 조직지능지수를올리는해답이 비즈니스인텔리전스 (BI) 9
배경 BI BI 분류 구분내용솔루션비고 전략 Intelligence 분석 Intelligence 확장 Intelligence Intelligence Infra Intelligence 정보전달 경영전략을효과적으로수립하고실행하기위한각종의정보관리 ( 초기 ) 특정이슈의해결목적 ( 추세 ) 전략경영보조 기업내부뿐아니라고객, 공급자등외부이해관계자의데이터 VBM BSC ABC/ABM OLAP Data Mining 전문의사결정분석도구 ERP Intelligence CRM Intelligence SCM Intelligence BI 를제공하기위한플랫폼 ETL Data Warehousing/DM 사용자별 Intelligence 정보를통합제공 Portal 경보솔루션 전략적인측면에초점을맞춤 특정분석가에서일선담당자로확산 ERP/CRM 등의데이터를대상으로함 분석인텔리전스와함께제공 보조적기능으로제공
배경 BI OLAP, OLAP 비교 구분 OLTP RDBMS DW/OLAP 주된목적 일상업무 (Operational) 에서의거래사항처리 History 데이터및세부데이터 분석 Access 유형 Read/Write Read-only Read/Write 주된담당자전산전산현업담당자 ( 분석자 ) 주된데이터형태 Application 별관리 거래내역중심 전사 / 전영역의데이터 ( 참고 : Data Mart 는개별주제별데이터 ) 요약 / 총계 (aggregation) 에대한분석중심 데이터구조정규화정규화또는비정규화 Dimension, 계층구조
배경 BI Data Warehousing OLAP Cube design Visualization 12
Hadoop Hadoop 개요 HDFS MapReduce 설치운영 13
Hadoop 개요 Hadoop (http://hadoop.apache.org/) 대규모데이터처리를위해분산 Clustered 파일시스템을이용하는컴퓨팅환경. ( 역사 ) ( 특징 ) Lucene > Nutch > Hadoop Programming 모델의단순화 선형확장성 (Flat linearity) function-to-data model vs. data-to-function (Locality)
Hadoop 의 Building Blocks master/slave architecture (distributed storage(hdfs), distributed computation) NameNode = master of HDFS that directs the slave DataNode daemons to perform the low-level I/O tasks. 파일을 block 단위로분할하는작업, block 별저장현황등의일체사항을관리 memory and I/O intensive user data (x), MapReduce 의처리를하지않음. 단, single point of failure of your Hadoop cluster. Secondary NameNode DataNode slave machine 은 DataNode daemon 을통해분산파일의 read/write 작업을수행. DataNode communicate with other DataNodes to replicate its data blocks for redundancy. NameNode 와끊임없이통신. 15
JobTracker computing daemon 들사이의 master/slave architecture: JobTracker = master, TaskTracker = slave node. 응용프로그램과 Hadoop 사이의중간연락을하는 daemon 파일처리를위한실행계획, node 할당, task monitoring 등 master node 가수행 only one JobTracker daemon per Hadoop cluster. TaskTracker JobTracker 가지정하는개별 task 수행. A single TaskTracker/slave node 이지만각 TaskTracker 는여러개 JVM 을통해병렬처리 16
Hadoop s components: HDFS (Hadoop Distributed File System) Programming paradigm (MapReduce). Partitioner redirect output from Mapper Combiner local reduce 17
HDFS: Data Distribution 데이터적재즉시 HDFS 가파일을 chunk 로나누어서해당 node 에복수로분배 / 복제. 특정 node 장애시 monitoring system 이데이터를 re-replicate. 전략 : Record-oriented (input 파일을 split 하고각 process 가 HDFS 의 locality 에따라할당된 record 만처리 ) Moving computation to the data ( 데이터를컴퓨터에할당하는대신컴퓨터에데이터를보내준다.) Data is distributed across nodes at load time. 18
MapReduce: Isolated Processes 프로세스간통신은 only implicitly. Task 는각각의 record 를독립적으로 (in isolation) 처리. Mapper 라는 task 가 record 를처리한후그출력물을 Reducer 로보내서 merge. Mapping and reducing tasks run on nodes where individual records of data are already present. 19
HDFS 특징 장점 단점 Block-structured 파일시스템으로서 Node 간중복저장 (replication factor= 3, by default). 별도의 namespace HDFS 는대용량처리 (terabytes or petabytes). 분산배치 / 대용량파일. HDFS는데이터신뢰성강화. 데이터의 HA. 특정 node failure시그곳에국한 HDFS 는 fast, scalable access 구현. Cluster scalability 염두 HDFS 는 Hadoop MapReduce와완벽하게통합 데이터지역성전제. long sequential streaming read를전제로함. Random access는취약. Write once and read many에최적화 Update가빈번한데이터는적합치않음. Local caching 이지원되지않음 simply be re-read from HDFS source. 20
DataNode 입력항목은 random 하게 block 단위로나누어배분. DataNodes holding blocks of multiple files (replication factor = 2). NameNode maps the filenames onto the block ids. NameNode Main memory 상에서 metadata 의관리 Client 는 NameNode 에게질의하여특정파일에해당하는 block 의목록을가져오고이후 Client 는 NameNode 의간섭없이병렬로 read 작업수행. 21
HDFS 의환경설정 (configuration) Hadoop 설치디렉토리의 conf/hadoop-defaults.xml 파일 (default 값 ) 을 override 하여설정. Configuration 설정은 key-value pairs: <property> <name>property-name</name> <value>property-value</value> </property> key value example fs.default.name protocol://servername:port hdfs://alpha.milkman.org:9000 dfs.data.dir pathname /home/username/hdfs/data dfs.name.dir pathname /home/username/hdfs/name 22
HDFS 의운용 HDFS 시작하기 포맷작업 user@namenode:hadoop$ bin/hadoop namenode -format 작업시작 user@namenode:hadoop$ bin/start-dfs.sh master node 에서 NameNode 서버를, slave 기기에서는 DataNode instances 를개시. 원격이용은 ssh 로가능. HDFS 작업 작업을위한 script 의위치 : bin/hadoop. 명령어구조 user@machine:hadoop$ bin/hadoop modulename -cmd args... 2 가지대표적 modules: dfs 와 dfsadmin.. 예 : someone@anynode:hadoop$ bin/hadoop dfs -ls / Found 2 items drwxr-xr-x - hadoop supergroup 0 2008-09-20 19:40 /hadoop drwxr-xr-x - hadoop supergroup 0 2008-09-20 20:08 /tmp 23
MapReduce 에서의 HDFS 이용 fs.default.name 설정 option 을 NameNode 로지정 Hadoop MapReduce job 은데이터입력 source 는자동으로 HDFS 가된다. FileInputFormat subclass 를이용 자동으로 HDFS 로부터데이터를받고 cluster node 들에게분배. HDFS API 의이용 24
HDFS 에서의 Node 퇴출 (decommissioning) Step 1: Cluster configuration. excludes 파일을이용. conf/hadoop-site.xml 파일에 dfs.hosts.exclude 키를추가하고 NameNode 의파일에해당하는경로를지정. Step 2: decommission 할 host 를결정 dfs.hosts.exclude 에해당기기를등록 NameNode 에연결되는것을방지 Step 3: configuration 정보를 reload 시킴 다음명령을수행 bin/hadoop dfsadmin -refreshnodes. Step 4: Shutdown nodes. decommission 작업완료후, decommissioned H/W 는 shutdown 가능. 이때 bin/hadoop dfsadmin -report 명령시현재연결된 node 의목록을볼수있음. Step 5: excludes 파일을재수정. 일단 decommission 되고나면 excludes 파일로부터다시제거한다. 이를위해다음명령을수행. bin/hadoop dfsadmin -refreshnodes 25
MapReduce 개념 Functional Programming 작업대상물을나누어서여러기계에배분하는데이때각각의구성인자는데이터를공유하지도않고동기화하지도않는다. MapReduce 에서모든데이터항목은 immutable, 즉, 수정불가능. 수정이되면그사항은 (key, value) pair 의형태로새로산출되고이때만통신을한다. List Processing 이론적으로 MapReduce 프로그램은입력되는데이터 List 를변환하여출력데이터 List 로보낸다. MapReduce 에서이러한작업은 2 개의서로다른 map 과 reduce 에의해 2 번발생.
Mapping Lists 입력데이터항목의목록 (list) 을 Mapper 라는함수에하나씩전달. Mapper 는각각을변환하여출력데이터항목 (output data element) 으로전달. Reducing Lists Mapping creates a new output list by applying a function to individual elements of an input list. Reducing 에서는관련되는값들을합친다. reducer 함수는입력리스트로부터입력값의 iterator 를받아서관련되는값들을결합 (combine) 하여하나의출력값을만들어낸다. 통상 Reducing 을통해 " 요약 (summary)" 데이터. Reducing a list iterates over the input values to produce an aggregate value as output. 27
MapReduce 의결합 Mapper 수행 + Reducer 수행 Key 와 values: MapReduce 에서모든값 (value) 는반드시관계되는 key 를가진다. 예컨대 : AAA-123 65mph, 12:00pm ZZZ-789 50mph, 12:02pm CCC-456 25mph, 12:15pm... 모든 mapping 및 reducing 함수는반드시 (key, value) pair 의형태로데이터를받으며그출력역시이형태를유지. 유연한 MapReduce 여타 functional mapping /reducing 과달리각단계마다여하한수의값도발생할수있다. Mapper 는하나의입력이존재하여도이를 0, 1, 또는수백개의출력으로 mapping 할수있다. reducer 도하나의입력리스트에대해이를처리한후 0, 1, 또는수십개의출력형태로산출. Keys divide the reduce space: 같은 key 를가지는모든값 (value) 는하나의 reducer 에게제시되며 key 가다른여타의 value list 에대한 reduce 작업과는별개로독립적으로진행된다. Different colors represent different keys. All values with the same key are presented to a single reduce task. 28
예제프로그램 : Word Count 가정 : 2 개의파일 foo.txt 의내용 : Sweet, this is the foo file bar.txt 의내용 : This is the bar file 원하는출력형태 로직 sweet 1 this 2 is 2 the 2 foo 1 bar 1 file 2 mapper (filename, file-contents): for each word in file-contents: emit (word, 1) reducer (word, values): sum = 0 for each value in values: sum = sum + value emit (word, sum) 29
구현 30
31
MapReduce 에서의데이터흐름 32
MapReduce 에서의데이터흐름 ( 상세모형 ) 33
Hadoop Programming 개발도구 Eclipse 를이용 Eclipse Classic + MapReduce plugin 추가 NetBeans 이용 NetBeans + MapReduce plugin 추가 34
예제프로그램 35
36
37
Hadoop 설치 권장기기사양 Xeon processors 1.8-2.0GHz 이상 Hadoop job 은 core 당 1 ~ 2 GB RAM 소모. (Python 등 script 사용시메모리추가소요 ) ( 참고 ) 일정한수의 HDD 를가지는시스템여러대가바람직. (Hadoop 은기본적으로 I/O-bound ). NIC: gigabit Ethernet 권장 설치요건사항 Java 환경 : Sun Java 1.6 이상 운영체제 : MS Windows 도가능하나 (cygwin 설치 ) 가급적 Linux. 다운로드및설치 다운로드 : http://hadoop.apache.org/releases.html#download 에서 Download (2013/3/27 현재 1.0.X - current stable version, 1.0 release) 설치 (hadoop-0.18 기준 ) gunzip hadoop-0.18.0.tar.gz tar vxf hadoop-0.18.0.tar 디렉토리구조 bin/ Hadoop 실행을위한 script 저장 conf/ cluster 의설정정보 (configuration) 저장 실행 conf/ hadoop-env.sh 를수정 (JAVA_HOME 설정 ) hadoop-site.xml 을수정. ( 환경설정 ) 38
Multiple node Hadoop Cluster 의경우 conf/masters 파일 ; SecondaryNameNode 의 hostname ("localhost" 를 FQDN of node to run the SecondaryNameNode service). conf/slaves 파일 : cluster 내에서 TaskTracker 및 DataNode daemon 을수행할 node 의 host 명 slave01 slave02 slave03... 암호설정되지않은 ssh 도 login 할수있도록하려면 : $ ssh-keygen -t dsa -P '' -f ~/.ssh/id_dsa$ cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys ~/.ssh/id_dsa.pub 및 authorized_keys 파일을 cluster 내의모든기기에복제 복제방법 : 소규모의경우 : rsync or copy 이용 대규모의경우 : configuration 관리시스템 ( 예 : bcfg2, smartfrog, puppet) 이용. ( 주의 ) NFS 는가급적사용하지말것. (bottleneck 이된다.) DataNode 는 block storage 를공유또는 NFS 상에서기타의 high-bandwidth 작업을하지말것. 39
주요디렉토리 디렉토리내용 Default 위치권장하는위치 HADOOP_LOG_DIR hadoop.tmp.dir dfs.name.dir dfs.data.dir mapred.system.dir daemon으로부터출력되는 ${HADOOP_HOME}/logs log파일다른 temporary 디렉토리에 /tmp/hadoop-${user.name} 대한 base NameNode metadata 가 ${hadoop.tmp.dir}/dfs/name 저장되는곳 DataNodes가자신의 ${hadoop.tmp.dir}/dfs/data block을저장하는곳공유하는mapreduce 시스템 ${hadoop.tmp.dir}/mapred/system 파일에대한 in-hdfs 경로 /var/log/hadoop /tmp/hadoop /home/hadoop/dfs/name /home/hadoop/dfs/data /hadoop/mapred/system 40
Cluster 구성 소규모 Clusters: 2-10 Nodes 최소한 1 대는 NameNode/JobTracke 와 DataNode/TaskTracker 의역할을동시에수행 ; 나머지 1 대는 DataNode/TaskTracker 로동작. 최소규모시 conf/hadoop-site.xml 의예 8-10 node 경우 dfs.replication 을 3 으로설정. 중간규모 Clusters: 10-40 Nodes ( 생략 ) 41
대규모 Clusters: 40 대이상의 Multiple Rack 환경 rack failure 에대비키위해 NameNode 의설정을변경. <property> <name>dfs.block.size</name> <value>134217728</value> </property> Block size 를 64MB 128MB 로증가. 단, 파일당 block 수가감소하므로 parallelism 은저하. 중간규모 cluster 에서 NameNode 는 HDFS metadata 를자신이위치한 rack 내다른기기로 NFS 로기록. 또한그기기를 checkpoint 에이용하고 SecondaryNameNode process 에 compact 시킴. 이때 cluster 가해당 rack 의상태에좌우되므로 NFS-mounted write-through backup 을다른 rack 에도보관. Multiple rack 환경에서 RPC timeout 이빈번해지므로 NameNode 는 DataNode 의상태를수시로감시. 유사한 timeout mechanism 이 JobTracker 의 MapReduce 측면에도존재한다. 예 : <property> <name>dfs.namenode.handler.count</name> <value>40</value> </property> <property> <name>mapred.job.tracker.handler.count</name> <value>40</value> </property> 42
대규모 Clusters: 250 대이상의 Multiple Rack 환경 Property 영역설명 io.file.buffer.size 32768-131072 io.sort.factor 50-200 Rack awareness 의문제 multi-rack 에서 block 의 replica 의분산에따른데이터손실이없도록할것. (rack-aware placement 정책 ). DNSToSwitchMapping interface 를이용해서 rack topology 대응에필요한 java 프로그램을작성. 또는사용자지정 script 를각각의 node 에수행하도록 default mapper 를이용. 단, Hadoop 의 version 별로설정항목의변화가있으므로유의한다. SequenceFiles에이용되는 Read/write buffer size (H/W page size의배수로설정 ) shuffling 과정에서의파일정렬시 concurrently merge 되는 stream의수 io.sort.mb 50-200 데이터정렬시사용하는메모리 mapred.reduce.parallel.copies 20-50 tasktracker.http.threads 40-50 1/2 * (cores/node) mapred.tasktracker.map.tasks.maximum ~ 2 * (cores/node) mapred.tasktracker.reduce.tasks.maxim 1/2 * (cores/node) um ~ 2 * (cores/node) mapper에서입력데이터를가져오기위해 reducer가사용하는 concurrent connection의수 TaskTracker가 uses to provide to reducers에 intermediate map output을제공하기위해사용하는 thread의수 각각의기기에설치하는 map task 의수. 각각의기기에설치하는 reduce task 의수 43
Hadoop 성능의 Monitoring 도구 Tips Ganglia 분산환경에서의 performance monitoring framework 으로서특히 Hadoop 의운영사항을관리할수있다. ( 세부사항생략 ) Nagios 범용의 cluster health 관리도구로서 large cluster 관리에적합하다. 필요시 Nagios 와 Ganglia 를함께이용할수도있다. "hadoop" 이라는이름의 user 를별도로설정할것. root 로동작하지말것. 만약 Hadoop 이 /home/hadoop/hadoop-0.18.0 에설치되어있다면 /home/hadoop/hadoop 을 /home/hadoop/hadoop-0.18.0 로 link 할것. 44
관련프로젝트 Apache 프로젝트 주요업체의전략 45
Hadoop-related projects Apache Avro 데이터 serialization Cassandra 와 HBase 데이터베이스 Chukwa monitoring system Hive 데이터의 aggregation 및 summarization 을위한 ad hoc SQL-like queries Mahout Machine learning library Pig 와 Pig Latin Pig = 대규모 data set 에대한분석플랫폼 Pig Latin = Hadoop 에서데이터변환을위한고급언어. Parallel computation 을위한 data-flow 및실행 framework ZooKeeper 분산 application 에대한 coordination 서비스 And more 46
Big Data 의활용 경영 자연과학 기타 47
Big Data 활용 전영역에활용 Urban Planning Urban Planning & Simulation (Traffic Planning) Improved Security (Scary guys) 48
Big Data 활용 대표적활용예 : IT Log Analytics Fraud Detection Pattern Social Media Pattern Call Center Mantra: "This Call may be recorded for QA purposes" Risk: Patterns for Modeling and Management Big Data and the Energy Sector Video Recommendation
Application Requirements
과거의 Fraud Detection
Big Data 를활용한 Fraud Detection
Cancer Tumor Genomics Vision: Personalized Therapy "... 10 years from now, each cancer patient is going to want to get a genomic analysis of their cancer and will expect customized therapy Director, The Cancer Genome Atlas, Time Magazine, 2011 진행 : UCSF cancer researchers + UCSC cancer genetic database + UC Berkeley Sequencing costs (1/150), big data 가속화 TCGA 의경우 : 5PB = 20 cancers x 1000 genomes
주요이슈 Big Data 와 Cloud Computing Big Data 와스토리지 과제 주요업체동향 54
Cloud Computing 과 Big Data Amazon AWS (Amazon Web Services) Amazon EC2 (Elastic Compute Cloud)
Big Data 와 Storage Current Storage Hierarchies don't support emerging requirements for Big Data File system block interface breaks object model Based on 1960's technologies and techniques Data and storage differentiated User access is shell + ls User metadata is lost Intelligence in storage systems needed!
Big Data 와 Storage New Approach to Storage Hierarchy: Flexibility and Intelligence Built In Applications define objects Storage of objects is abstracted Access transformed from shell + ls --> python Enables Lustre ecosystem Eables analytics
Cloudera Hadoop 상용화의원조 Cloudera Enterprise RTQ (Real-Time Query) provides Management and 8x5 support for Impala. available as an add-on to Cloudera Enterprise Core ( 유료서비스 ) CONFIDENTIAL - RESTRICTED 58
UC Berkeley 의 Big Data Architecture Framework
Berkeley Data Analysis System A new open source software stack to: effectively manage cluster resources efficiently extract value out of big data continuously optimize cost, time and answer quality
Big Data 와 Intel Cray 의 HPC interconnect 사업부문합병 (2012.9) Fabric Switch (Gemini/Aries interconnect) 를 Xeon processor 에통합 Xeon E7 (2013 주력 ) H/W-level security 내장 McAfee's Deep Defender & DeepSafe 통합 Intel MIC (Many Integrated Core) architecture for Big Data
Big Data Landscape 62
전망 데이터폭주가속화 Massive: FacebooK: 200~400TB/day, 83 million pictures Google: >25 TB/day processed data 끝없는데이터폭주 더많은기기 (cell phones, Sensors & RFIDs), 더많은사람 (3 rd world) Dirty & Unpredictable Diverse, No schema, Unstructured, Semantic Big Inconsistent syntax data 일상생활깊숙이 Smart TV, Smart Car, Smart Grid, Smart??? Analytics의시대 Other data Business Analytics, Technology Analytics,??? 데이터융합 Big Data 와여타의데이터가결합될때더큰 value 를거둔다. Create a synergy effect 63
과제 Data Cleansing & Filtering 의문제 Visualization 의문제 Security & Privacy 의문제 64
감사합니다