Download presentation
Presentation is loading. Please wait.
1
Big Data 2012.3. http://www.openwith.net
2
순서 배경 Hadoop 관련 프로젝트 활용 주요 이슈 전망과 과제 2
3
배경 Big Data 의 물결 Supercomputer BI
4
배경 – Big Data Tidal Waves A Tidal Wave of Data 4
5
현상으로서의 Big Data: “ V 3 C ” 5 V3 이로 인한 C Complexity
6
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
7
배경 – 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
8
배경 – Supercomputer Big Data 는 HPC 의 또 다른 진화모습 – 4 개의 Implied Solutions – Data Aggregation find a specific group of records that comply with a set of requirements filesystem application – Data Analytics computation of common characteristics or key regression characteristics in data aggregated for the analysis HPC + filesystem – Data Visualization 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
9
배경 – BI BI (Business Intelligence) – “Survival of the Smartest” (H.Mendelson & J.Ziegler, 1999) “ 조직의 지능지수 (Organizational IQ) 란 “ 정보를 신속하게 처리하여 효과적 의사결정을 하고 이를 행동에 옮길 수 있는 능력 ” 즉, Intelligence ( 의사결정능력 ) + Collaboration/BPM ( 실행능력 ) – 조직 지능지수를 올리는 해답이 “ 비즈니스 인텔리전스 (BI)” 9
10
배경 – BI 구분내용솔루션비고 전략 Intelligence 경영전략을 효과적으로 수립하고 실행하기 위한 각종의 정보관리 VBM BSC ABC/ABM 전략적인 측면에 초점 을 맞춤 분석 Intelligence ( 초기 ) 특정 이슈의 해결목적 ( 추세 ) 전략경영 보조 OLAP Data Mining 전문 의사결정 분석도구 특정 분석가에서 일선 담당자로 확산 확장 Intelligence 기업 내부뿐 아니라 고객, 공급자 등 외부 이해관계자의 데이터 ERP Intelligence CRM Intelligence SCM Intelligence ERP/CRM 등의 데이터 를 대상으로 함 Intelligence Infra BI 를 제공하기 위한 플랫폼 ETL Data Warehousing/DM 분석 인텔리전스와 함 께 제공 Intelligence 정보전달 사용자별 Intelligence 정보를 통 합 제공 Portal 경보솔루션 보조적 기능으로 제공 BI 분류
11
배경 – BI 구분 OLTPRDBMSDW/OLAP 주된 목적일상업무 (Operational) 에서의 거래사항 처리 History 데이터 및 세부 데이터 분석 Access 유형 Read/WriteRead-onlyRead/Write 주된 담당자전산 현업 담당자 ( 분석자 ) 주된 데이터 형 태 Application 별 관리 – 거래내역 중심 전사 / 전 영역의 데이터 ( 참고 : Data Mart 는 개별 주제별 데이터 ) 요약 / 총계 (aggregation) 에 대한 분석 중심 데이터 구조정규화정규화 또는 비정규화 Dimension, 계층구조 OLAP, OLAP 비교
12
배경 – BI Data Warehousing OLAP 12 Cube design Visualization
13
Hadoop Hadoop 개요 HDFS MapReduce 설치 운영 13
14
Hadoop 개요 Hadoop (http://hadoop.apache.org/)http://hadoop.apache.org/ – 대규모 데이터 처리를 위해 분산 Clustered 파일시스템을 이용하는 컴퓨팅 환경. – ( 역사 ) Lucene > Nutch > Hadoop – ( 특징 ) Programming 모델의 단순화 선형 확장성 (Flat linearity) “function-to-data model vs. data-to-function” (Locality)
15
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
16
– 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
17
Hadoop’s components: – HDFS (Hadoop Distributed File System) – Programming paradigm (MapReduce). – Partitioner – redirect output from Mapper – Combiner – local reduce 17
18
HDFS: Data Distribution – 데이터 적재 즉시 HDFS 가 파일을 chunk 로 나누어서 해당 node 에 복수로 분배 / 복제. 특정 node 장애 시 monitoring system 이 데이터를 re-replicate. – 전략 : Record-oriented (input 파일을 split 하고 각 process 가 HDFS 의 locality 에 따라 할당된 record 만 처리 ) Moving computation to the data ( 데이터를 컴퓨터에 할당하는 대신 컴퓨터에 데이터를 보내준다.) 18 Data is distributed across nodes at load time.
19
MapReduce: Isolated Processes – 프로세스간 통신은 only implicitly. Task 는 각각의 record 를 독립적으로 (in isolation) 처리. – Mapper 라는 task 가 record 를 처리한 후 그 출력물을 Reducer 로 보내서 merge. 19 Mapping and reducing tasks run on nodes where individual records of data are already present.
20
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
21
DataNode – 입력항목은 random 하게 block 단위로 나누어 배분. NameNode – Main memory 상에서 metadata 의 관리 – Client 는 NameNode 에게 질의하여 특정 파일에 해당하는 block 의 목록을 가져오고 이후 Client 는 NameNode 의 간섭없이 병렬로 read 작업 수행. 21 DataNodes holding blocks of multiple files (replication factor = 2). NameNode maps the filenames onto the block ids.
22
HDFS 의 환경설정 (configuration) – Hadoop 설치 디렉토리의 conf/hadoop-defaults.xml 파일 (default 값 ) 을 override 하여 설정. – Configuration 설정은 key-value pairs: property-name property-value 22
23
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
24
MapReduce 에서의 HDFS 이용 – fs.default.name 설정 option 을 NameNode 로 지정 Hadoop MapReduce job 은 데이터 입력 source 는 자동으로 HDFS 가 된다. – FileInputFormat subclass 를 이용 자동으로 HDFS 로부터 데이터를 받고 cluster node 들에게 분배. HDFS API 의 이용 24
25
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
26
MapReduce 개념 – Functional Programming 작업 대상물을 나누어서 여러 기계에 배분하는데 이때 각각의 구성인자는 데이터를 공유하지도 않고 동기화하지도 않는다. MapReduce 에서 모든 데이터 항목은 immutable, 즉, 수정불가능. 수정이 되면 그 사항은 (key, value) pair 의 형태로 새로 산출되고 이때만 통신을 한다. – List Processing 이론적으로 MapReduce 프로그램은 입력되는 데이터 List 를 변환하여 출력 데이터 List 로 보낸다. MapReduce 에서 이러한 작업은 2 개의 서로 다른 map 과 reduce 에 의해 2 번 발생.
27
Mapping Lists – 입력 데이터 항목의 목록 (list) 을 Mapper 라는 함수에 하나씩 전달. – Mapper 는 각각을 변환하여 출력 데이터 항목 (output data element) 으로 전달. Reducing Lists – Reducing 에서는 관련되는 값들을 합친다. reducer 함수는 입력 리스트로부터 입력 값의 iterator 를 받아서 관련되는 값들 을 결합 (combine) 하여 하나의 출력값을 만들어 낸다. – 통상 Reducing 을 통해 " 요약 (summary)" 데이터. 27 Mapping creates a new output list by applying a function to individual elements of an input list. Reducing a list iterates over the input values to produce an aggregate value as output.
28
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 작업과는 별개로 독립적으로 진행된다. 28 Different colors represent different keys. All values with the same key are presented to a single reduce task.
29
예제 프로그램 : 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 – 로직 29 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)
30
– 구현 30
31
31
32
MapReduce 에서의 데이터 흐름 32
33
MapReduce 에서의 데이터 흐름 ( 상세모형 ) 33
34
Hadoop Programming 개발도구 – Eclipse 를 이용 Eclipse Classic + MapReduce plugin 추가 – NetBeans 이용 NetBeans + MapReduce plugin 추가 34
35
예제 프로그램 35
36
36
37
37
38
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)http://hadoop.apache.org/releases.html#Download – 설치 (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
39
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
40
디렉토리내용 Default 위치권장하는 위치 HADOOP_LOG_DIR daemon 으로부터 출력되는 log 파일 ${HADOOP_HOME}/logs/var/log/hadoop hadoop.tmp.dir 다른 temporary 디렉토리에 대한 base /tmp/hadoop-${user.name}/tmp/hadoop dfs.name.dir NameNode metadata 가 저장되는 곳 ${hadoop.tmp.dir}/dfs/name/home/hadoop/dfs/name dfs.data.dir DataNodes 가 자신의 block 을 저장하는 곳 ${hadoop.tmp.dir}/dfs/data/home/hadoop/dfs/data mapred.system.dir 공유하는 MapReduce 시스템 파일에 대한 in-HDFS 경로 ${hadoop.tmp.dir}/mapred/system/hadoop/mapred/system 40 주요 디렉토리
41
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
42
대규모 Clusters: 40 대 이상의 Multiple Rack 환경 – rack failure 에 대비키 위해 NameNode 의 설정을 변경. dfs.block.size 134217728 – 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 측면에도 존재한다. 예 : dfs.namenode.handler.count 40 mapred.job.tracker.handler.count 40 42
43
대규모 Clusters: 250 대 이상의 Multiple Rack 환경 Rack awareness 의 문제 – multi-rack 에서 block 의 replica 의 분산에 따른 데이터 손실이 없도록 할 것. (rack-aware placement 정책 ). – DNSToSwitchMapping interface 를 이용해서 rack topology 대응에 필요한 java 프로그램을 작성. – 또는 사용자 지정 script 를 각각의 node 에 수행하도록 default mapper 를 이용. – 단, Hadoop 의 version 별로 설정항목의 변화가 있으므로 유의한다. 43 Property 영역설명 io.file.buffer.size32768-131072 SequenceFiles 에 이용되는 Read/write buffer size (H/W page size 의 배수로 설정 ) io.sort.factor50-200 shuffling 과정에서의 파일 정렬 시 concurrently merge 되는 stream 의 수 io.sort.mb50-200 데이터 정렬 시 사용하는 메모리 mapred.reduce.parallel.copies20-50 mapper 에서 입력데이터를 가져오기 위해 reducer 가 사용하는 concurrent connection 의 수 tasktracker.http.threads40-50 TaskTracker 가 uses to provide to reducers 에 intermediate map output 을 제공하기 위해 사용하는 thread 의 수 mapred.tasktracker.map.tasks.maximum 1/2 * (cores/node) ~ 2 * (cores/node) 각각의 기기에 설치하는 map task 의 수. mapred.tasktracker.reduce.tasks.maxim um 1/2 * (cores/node) ~ 2 * (cores/node) 각각의 기기에 설치하는 reduce task 의 수
44
Hadoop 성능의 Monitoring 도구 – Ganglia 분산환경에서의 performance monitoring framework 으로서 특히 Hadoop 의 운영사항을 관리할 수 있다. ( 세부 사항 생략 ) – Nagios 범용의 cluster health 관리 도구로서 large cluster 관리에 적합하다. 필요 시 Nagios 와 Ganglia 를 함께 이용할 수도 있다. Tips "hadoop" 이라는 이름의 user 를 별도로 설정할 것. root 로 동작하지 말 것. 만약 Hadoop 이 /home/hadoop/hadoop-0.18.0 에 설치되어 있다면 /home/hadoop/hadoop 을 /home/hadoop/hadoop-0.18.0 로 link 할 것. 44
45
관련 프로젝트 Apache 프로젝트 주요 업체의 전략 45
46
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
47
Big Data 의 활용 경영 자연과학 기타 47
48
Big Data 활용 전 영역에 활용 48 Improved Security (Scary guys) Urban Planning & Simulation Urban Planning (Traffic Planning)
49
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
50
Application Requirements
51
과거의 Fraud Detection
52
Big Data 를 활용한 Fraud Detection
53
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
54
주요 이슈 Big Data 와 Cloud Computing Big Data 와 스토리지 과제 주요 업체 동향 54
55
Cloud Computing 과 Big Data – Amazon AWS (Amazon Web Services) – Amazon EC2 (Elastic Compute Cloud)
56
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!
57
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
58
Cloudera – Hadoop 상용화의 원조 – Cloudera Enterprise RTQ (Real-Time Query) provides Management and 8x5 support for Impala. available as an add-on to Cloudera Enterprise Core ( 유료 서비스 ) 58 CONFIDENTIAL - RESTRICTED
59
UC Berkeley 의 Big Data Architecture Framework
60
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
61
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
62
Big Data Landscape 62
63
전망 – 데이터 폭주 가속화 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 – Inconsistent syntax 일상생활 깊숙이 … – Smart TV, Smart Car, Smart Grid, Smart ??? Analytics 의 시대 – Business Analytics, Technology Analytics, ??? 데이터 융합 – Big Data 와 여타의 데이터가 결합될 때 더 큰 value 를 거둔다. 63 Big data Other data Create a synergy effect
64
과제 Data Cleansing & Filtering 의 문제 Visualization 의 문제 Security & Privacy 의 문제 64
65
감사 합니다
Similar presentations