[사내 스터디] Big Data 기초개념
안녕하세요. 틈틈히 작업을 한다 말은 했는데… 바쁘게 지내다보니 어느새 시간이 이리 되었네요 ㅠㅠ;;
그래도 친구 덕에 좋은 회사에 들어가 뉴비로서 날마다 정신없이 배워나가고 있습니다 ㅎㅎ
그만큼 정리할게 쌓이는데… 마침 준비하게된 사내스터디 자료준비를 할 겸 잠시 복귀해보았습니다 ^^
물론 시간이 없다고 블로그를 폐기할 수는 없으니 나중에 업무 중에 좀 정리하고 싶은 이슈를 중심으로 블로그 포스팅을 다시 조금씩 해나갈 생각입니다 ^^;;
1. 빅데이터 개념
오늘은 주기적으로 있는 사내스터디에서 빅데이터에 대한 개념적인 도입 부분을 맡게 되어 간단히 정리해 보았습니다.
빅데이터(Big Data)란?
우선 wiki 등의 내용을 간단히 요약하면 빅데이터란 기존 DB SW의 관리 및 처리 능력(수십 TB 정도)를 뛰어넘는 정형 및 비정형 데이터들,
혹은 이런 데이터 집합에서 가치를 추출하고 분석하는 기술이라고 할 수 있습니다.
여기서 정형, 비정형 데이터에 대해서는 링크를 참고하여 다음과 같이 정리해 보았습니다.
정형 데이터 :
값의 의미를 파악하기 쉽고 정해진 규칙성을 띄는 데이터 (M, W로 저장된 성별 등)
비정형 데이터 :
정해진 규칙이 없어 쉽게 파악이 힘든 텍스트, 음성, 영상 등의 데이터
반(semi)정형 데이터 :
기존 DB처럼 스키마가 생성된 뒤 데이터가 저장되는 분리된 영역을 취하지 않고,
JSON, XML처럼 Column과 Value가 함께하는 완전하지 않은 정형 데이터
===============================================================================
정형 데이터는 DB로 비교적 관리되기 쉬운 데이터 but DB에 저장된다고 정형 데이터는 아님
예를 들어 '책의 제목' 이란 속성의 값은 쉽게 그 의미를 파악하기 힘든 케이스도 존재
이 중 바로 보이는 규칙성이 없어 기존에 힘들었던 비정형 데이터들이 분석 가능한 영역에 들어섬으로서 빅데이터 탄생에 큰 영향을 주었다고 볼 수 있습니다.
빅데이터 3V
위 정의대로 대량의 데이터를 빠르게 처리하고 분석 가능한 빅데이터의 기본적인 속성을 의미합니다.
Volume : 데이터의 양 (일반적으로 수십 TB ~ PB)
Velocity : 데이터 생성 속도
Variety : 데이터의 다양성 (비정형 데이터도 분석 가능해지면서)
이 밖에도 가치(Value), 정확성(Veracity), 시각화(Visualization), 가변성(Variability) 등이 점점 추가되면서 4V, 7V로 점점 늘고 있지만 (일단 V는 다 붙여보ㄴ…읍읍) 가장 기본적인 빅데이터의 이미지는 역시 위 셋이 아닐까라고 개인적으로 생각합니다. (value가 붙으면 이건 infomation이 아닐까….)
2. 책에서 본 빅데이터 사례
학창시절 교과서마다 현대 사회에 대한 표현 중 자주 등장하는 것은 ‘정보의 바다’ 였습니다. 개인적으로는 느낌이 바로 오지 않았었는데, 예전에 재미있게 봤던 ‘SWIPE : IT 좀 아는 사람‘라는 책에서는 빅데이터에 대한 이야기를 다음과 같은 인용구로 시작합니다.
‘우리가 이틀간 생성하는 정보의 양이 문명의 태동기부터 2003년 생성된 정보량과 비슷하다!’
– 에릭 슈미트(구글 공동 설립자), 2010
책에 따르면 저 말을 했을 2010년 당시 기준으로 약 5EB(5조 GB)라니 1TB짜리 외장하드 50억개네요…
그러면서 바로 소개된 빅데이터의 사례는 2012년 미네소타주에서 10대 딸에게 온 대형마트(타깃) 광고우편물에 임산부 용품 할인 쿠폰을 보고 매장에 쳐들어 갔던 어떤 가정의 아버지가 몇 일 뒤 알고 보니 실제로 딸이 임신을 한 상태였다는걸 알고 사과 연락을 했던 이야기였습니다.
책보다 예전에 블로그 포스팅 등으로 먼저 접했던 꽤 유명한 사례였던 걸로 기억합니다. 책에서는 그 과정이 좀 더 자세히 다뤄지는데 간단히 요약하면 다음과 같습니다.
1. 타깃, 월마트 등의 대형마트에서 고객 신용카드에 고유번호(고객번호)를 부여하여
구매 및 환불, 설문조사, 웹사이트, 이메일 확인 내역 등을 수집
2. 수집된 데이터의 패턴 중 갑자기 무향 로션이나 아연, 칼슘, 마그네슘 영양제를 많이 사는
여성은 임산부였던 것을 파악 후 쿠폰 발송
(물론 요즘에는 오히려 소름이 돋아 발길이 끊기는 등의 문제를 방지하고자 다른 상품 쿠폰과 함께 보내 무작위성을 보여준다고 합니다)
아마존과 관련한 사례도 몇 있었는데 개인적으로 그 중 눈에 띄거나 느낌이 잘 와닿은건 다음과 같습니다.
- 쇼핑패턴, 경쟁사 가격, 이윤, 재고 등 수많은 요인을 분석하여 10분마다 가격을 변경
(비인기 제품은 소비자가 검색을 많이 안하므로 오히려 높게 인기제품은 경쟁사보다 싸게)
- 구매이력에서 패턴을 추출해 수요가 있을 물건을 미리 주소지 근처 물류창고로 보냄
MapReduce
위 정의와 이런 사례들을 통해 빅데이터가 무엇이고 어떤 느낌으로 사용되는지 감이 조금 왔다면 이제 이런 수십 TB ~ PB 레벨의 왠만한 고성능 컴퓨터도 저장조차 무리인 빅데이터의 처리에 대해 책에서 소개한 대표 기술이 바로 MapReduce입니다.
MapReduce란?
데이터를 분할 해 각 컴퓨터에 배정 및 분석하고 (Map) / 완료된 작업결과들을 취합해 (Reduce) 최종 결과를 도출하는 전략이 대두되어 이를 바탕으로 구글에서 탄생한 알고리즘 (JS 배열 함수 연상되네…)
그리고 이런 MapReduce 등의 구글이 발표한 기술 논문을 베이스로 만들어진 데이터 분산 고속처리를 위한 Java 기반의 오픈소스 미들웨어가 밑에서 소개해드릴 Apache의 Hadoop이고,
이런 Hadoop은 MS, IBM, Amazon, eBay, facebook, Netflix 등 수많은 기업들이 적극적으로 활용해가며 현재 빅데이터가 곧 하둡이란 말이 있을 정도로 빅데이터의 대표 기술로 자리매김 하고 있습니다.
3. Hadoop이란?
위에서 말씀드린대로 Hadoop은 구글에서 논문으로 발표한 GFS(Google File System)과 MapReduce를 구현한 결과물입니다. 기본적으로 GFS에 해당하는 분산저장시스템인 HDFS에 데이터를 저장하고 MapReduce를 통해 처리하는 방식입니다.
HDFS (Hadoop Distributed File System)
HDFS는 이름 그대로 수십 TB ~ PB 이상의 대용량 파일을 분산 서버에 저장 및 처리하는 파일 시스템입니다. 파일시스템이기 때문에 기존 RDBMS 트랜젝션, 무결성 보장, 빠른 데이터 처리를 하지는 못하지만 초대용량의 데이터를 분산 및 Batch 처리하는데 적합한 특성이 있습니다.
그리고 이런 특성은 서버를 고사양으로 스케일업하는 것이 아닌 스케일 아웃을 통한 서버 확충이 가능해지므로 스토리지 구성에 경제적으로도 효율이 좋습니다.
구조적인 부분에 대해 링크를 참조해 간단히 말씀드리면 우선 블록 구조의 파일시스템으로서 64MB (HDFS 2.0부터는 128MB) 단위의 블록으로 파일을 나누어 서버에 분산 저장합니다.
파일시스템과 블록(클러스터)
파일시스템은 컴퓨터에서 파일에 대한 검색과 접근을 용이하게 하기 위한 SW와 HW에 밀접히 관련된 프로그램입니다.
이런 파일시스템에서 하드디스크의 물리적인 최소단위영역 섹터(일반적으로 512KB)에 파일을 용이하게 저장하기 위해
SW적으로 묶은 단위 영역이 바로 블록(클러스터)입니다.
HDFS 구성요소 : 네임노드(Master) + 데이터노드(Slave)
이와 같은 HDFS의 구성을 간단히 말씀드리면 크게 네임노드와 데이터노드로 구성됩니다.
이 중 데이터노드는 클라이언트가 저장한 파일들을 로컬디스크에 유지하는 역할을 합니다.
(로우데이터 + 메타데이터)
HDFS의 시스템 관리를 위한 네임노드의 경우는 데이터노드에 비해 다음 같이 여러 역할들을 맡습니다.
1) 파일시스템 유지를 위한 메타데이터 관리
2) 데이터노드 모니터링 : 하트비트를 전송시키게 해 전송이 없는 서버의 장애판단
3) 블록관리 : 장애가 발생한 블록을 새로운 노드에 복제
4) 클라이언트 요청 접수 등
4. Hadoop Eco System
기존의 Hadoop은 기본적으로 위에서 언급한 HDFS와 이 분산 서버 장비들의 CPU와 메모리를 활용한 분석 플랫폼인 MapReduce로 이뤄져 있었습니다.
하지만 Hadoop을 이용하는 기업이나 전문 솔루션 업체가 늘어나면서 성장한 Hadoop 관련 오픈소스가 확대되며 하나의 생태계를 이루게 되었는데 이를 통틀어 Hadoop Eco System이라 합니다.
1) 분산 코디네이터 : ZooKeeper
>> 분산환경 구성을 위한 서버 통합 관리
2) 분산 리소스 관리 : YARN, Mesos
>> 스케쥴링, 클러스터 리소스 관리 등
3) 데이터 수집 : Chukwa, Flume, Scribe, Kafka
4) 데이터 저장 : HBase, HDFS, Kudu
5) 데이터 처리 : Pig, Spark, Impala, Hive, MapReduce
그림 출처 : https://bennyziiolab.tistory.com/109
그림 출처 : https://m.blog.naver.com/acornedu/222069158703
참조 & 참고할 사이트
읽어주셔서 감사합니다.^^
개인 공부용 블로그입니다.
잘못된 부분에 언제든지 댓글이나 메일로 지적해주시면 감사하겠습니다.
Leave a comment