빅데이터 기술의 개요
1. 빅데이터
- 데이터의 크기가 방대하여 기존의 시스템으로는 획득, 저장, 관리, 분석이 불가능한 데이터
- 주로 비정형 데이터를 일컬음 : 분산 시스템으로 처리
1) 정형 데이터
- 형태가 고정된 데이터 : 데이터베이스 테이블 등
- 데이터베이스 관리 시스템(DBMS) : 큰 규모의 테이블 관리 가능
2) 비정형 데이터
- 형태가 고정되지 않은 데이터 : 문자메시지, 동영상, 음악 등. 폭발적 증가 추세.
- 정보 추출 단계가 필요 : 기존의 DBMS로는 불충분.
2. 분산 시스템
- 여러 대의 서버가 네트워크를 통해 통신하며 공통의 계산 문제를 푸는 컴퓨터 시스템.
ㄴ 여러개가 연결되어서 하나의 시스템처럼 작동...
- 한 문제를 여러 개의 작업으로 분할, 각 서버가 할당된 작업을 병렬로 해결하는 방식 (분업!)
--> 저비용 고성능, 신뢰성과 확장성.
ㄴ 저가의 서버, 저가의 컴퓨터로 구성 가능... 비용은 낮지만 고성능! :) 굿! :)
- cf) 분산시스템 <---> 슈퍼컴퓨터
ㄴ 한 대의 컴퓨터가 큰 문제를 풀 수 있도록, 성능 좋은 컴퓨터 한 대를 만들자.
ㄴ 한계 존재 --> 분산시스템으로 발전함.
3. 클라우드 컴퓨팅 : 인터넷 시대의 분산 컴퓨팅
- 원격지에 존재하는 거대한 분산 시스템의 일부를 임대해서 사용.
: 물리적 위치 중요X!! ("구름 속에...")
- 확산 원인
ㄴ (1) IT 업체들의 분산 시스템 대규모화
ㄴ 기업체들이 자기네들 정보 처리를 위하여 클라우드 구축.
이 중 일부를 일반인들에게 임대. (우리가 쓰는 클라우드...)
ㄴ (2) 고속 인터넷의 발달
4. 하둡 : 클라우드 컴퓨팅 시대의 빅데이터 처리 기술.
- 데이터 처리 위주로 구성된 분산 시스템 환경
: 데이터 저장공간 및 계산 자원 확장이 용이
- 저비용으로 빅데이터 처리가 가능
: 1) 저가의 서버로 분산시스템 구축 가능
2) 오픈소스
- 하둡은 분산 시스템 환경을 의미하기도 하고,
분산 시스템에서 자료를 처리하는 기술을 의미하기도 한다.
5. 빅데이터 애널리틱스
- 빅데이터로부터 새로운 통찰을 얻는 것.
1) 분석 기술 : 빅데이터를 분석해서 유용해보이는 정보를 찾아내는 것.
ex) 텍스트 마이닝, 소셜 네트워크 분석 (데이터 마이닝)
--> 대화 내용 분석, 어떤 사람이 친구가 많은지 등....
2) 표현 기술 : 동적 데이터 시각화
3) R을 이용한 빅데이터 애널리틱스
- 오픈 소스임 : 최신의 분석 알고리즘이 무료로 제공됨.
- 빅데이터 처리 : 분산 및 비분산 처리가 모두 가능하다.
비분산 빅데이터 처리
1. 빅메모리와 빅애널리틱스 : R을 이용한 비분산 빅데이터 처리의 예시. R의 한계점을 극복하였음.
- '비분산 데이터' : 이 강의에서는 '분산 시스템이 필요할 정도로 크지는 않은 빅데이터'를 말함.
ex) 한 대의 컴퓨터 하드디스크(ex. 1TB=1,000GB) 안에 들어갈 정도이지만
컴퓨터의 메모리(ex. 8GB)에는 다 담을 수 없을만큼 큰 데이터.
cf) R의 한계점 : 분석하려는 데이터가 모두 컴퓨터 메모리에 들어 있어야 함!!
--> 위의 예시는 R로 분석 불가.
--> 이러한 R의 한계를 극복하기 위해서, 빅메모리와 빅애널리틱스'를 사용한다.
일종의 R의 확장이라고 생각하면 됨. (빅 메모리 패키지, 빅 애널리틱스 패키지 사용.)
- 데이터의 구조만 메모리에 저장 : 실제 데이터는 필요 시 디스크에서 로드.
ㄴ 상세설명)
빅 메모리 패키지와 빅 애널리틱스 패키지를 사용하면, 데이터를 전부 메모리에 불러올 필요 없이,
데이터의 구조만 메모리에 저장해놓고, 실제 데이터는 필요할 때 하드디스크에서 조금씩 가져다 오면 된다.
# [프로그램3-1] 빅데이터의 요약
library(bigmemory) # 빅메모리 패키지 호출
library(biganalytics) # 빅애널리틱스 패키지 호출
# 이 두 패키지가 R에 불러들어와서 R이 확장이 됨 --> 비분산 데이터 처리 가능해짐
# 빅데이터 읽기
temp.big = read.big.matrix(filename="temp.csv", # <-- csv 파일이니까 정형데이터 분석이군.
header=T, type="double",
descriptorfile="temp.desc")
# 보통 R에서는 read 쓰지만, 이 경우같이 자기 메모리보다 큰 파일(temp.csv) 분석해야 할 경우
# read 쓸 수 없고, 빅메모리/빅애널리틱스 패키지에서 불러온 read.big.matrix 써야함.
# temp.big에는 temp.csv의 데이터 모두가 저장되는 것이 아니라, '구조만' 가지고 있게 된다.
# ㄴ ex) 1~100번째 행은 하드디스크의 어디에 있다. 100~200번째 행은 하드디스크의 어디에 있다. 이렇게...
# 빅데이터의 요약
summary(temp.big)
맵리듀스와 하둡
1. 하둡 시스템 (28min)
1) [표] 하둡의 3대 구성 요소
구성요소 | 역할 | 특징 |
(1) 하둡 공통 (Hadoop Common) |
다른 구성 요소 지원 유틸리티 모음 | HDFS 접근 등 |
(2) 하둡 분산 파일시스템 (HDFS) |
빅데이터를 다수의 컴퓨터에 분산 저장 | 확장성, 신뢰성, 단순성 |
(3) 하둡 맵리듀스 (MapReduce) |
HDFS에 저장된 빅데이터를 병렬 처리 | 빅데이터 분석의 핵심 프로그래밍 모델 |
2) [상세설명] 하둡의 3대 구성요소
(1) 하둡 공통 (Hadoop Common)
- 나머지 두 개의 구성요소를 지원하는, 일종의 유틸리티 도움 프로그램들의 모음임.
- 사용자들이 HDFS에 접근을 쉽게 할 수 있게끔 도와주는 프로그램을 갖추고 있음.
- 마찬가지로, 맵리듀스를 사용하는 프로그램 또한 갖추고 있다.
(2) 하둡 분산 파일시스템 (HDFS)
- 빅데이터를 다수의 컴퓨터에 분산 저장함.
ㄴ 커다란 데이터를 조금씩 나눠서, 1번 컴터에 조금, 2번 컴터에 조금... 이런 식으로 분산 저장.
- ex) 컴퓨터가 1,000대 있고, 각 컴퓨터마다 1TB 하드디스크를 가지고 있다면, 이 데이터를 일단은 저장이 가능.
그런데 분산 저장된 파일들이 하나의 파일처럼 기능하기 위해서는 관리해주는 시스템이 필요한데, 이게 바로 HDFS.
- ① 확장성 : 만약 이 시스템에 컴터 한 대를 추가하면, 이 시스템이 멈추지 않고 그냥 하드디스크의 용량이 늘어난 것처럼 작동.
- ② 신뢰성 : 하둡은 저가의 서버, 저가의 컴퓨터로 구성할 수 있음.
--> 하둡을 구성하는 각각의 컴퓨터는 신뢰성이 높지 않다. (고장날 수 있다.)
--> 하지만, 한두대가 고장나더라도 전체 시스템이 돌아가는데는 문제가 없도록 설계되어 있음.
- ③ 단순성 : 파일 시스템 설계가 쉽고 간단하게 되어 있다.
(3) 하둡 맵리듀스 (MapReduce)
- 하둡 분산 파일 시스템(HDFS) 위에서 돌아가게 되어 있다.
- HDFS에서 빅데이터를 저장해놨으니, 이를 처리하는 애가 필요한데, 이것이 바로 맵리듀스.
- 즉, 맵리듀스는 HDFS에 저장된 빅데이터를 병렬 처리한다.
- 빅데이터가 이미 저장이 되어 있다면, 그것을 분석하기 위한 핵심 프로그래밍 모델은 바로 맵리듀스임.
2. 하둡을 이용한 빅데이터 처리 (34min)
1) 빅데이터 처리의 구현 간소화
- 이전에도 (하둡 등장 전에도) 분산 시스템이 존재했지만, 작업을 분할하는 것이 쉽지 않았음.
ㄴ 분산 시스템이 복잡하게 설계되어 있었음. 여러대의 컴퓨터가 소통해야하니까... 사용하기가 어려웠음 ㅠㅠ
- 그런데 하둡이 등장하면서, 분산 처리를 하는게 이전보다 훨씬 편해졌음!!
- 이전에는 분산 처리를 위한 작업 분할이 까다로웠는데, 하둡이 이걸 편하게 해주었음 (시스템이 다 알아서 해줌)
요약하자면, 작업 분할에 대한 고민을 해소해줬음!
--> 데이터 자체와 그 처리에 집중 할 수 있게 되었다! :)
- 구현 사례
ex1) 대용량 스팸 메일 처리 (자연어 데이터)
ex2) 다중 염기서열 정렬 (생물 정보)
ex3) 내용 기반 음악 검색 (음악 데이터)
ex4) 비디오 트랜스코딩 (동영상 데이터)
하둡의 역사
1. 더그 커팅과 하둡
- 더그 커팅과 마이크 카파렐라가 2006년 발표
- 이 두 사람은 오픈소스 검색 엔진인 너치(Nutch)의 개발을 주도했었다.
그런데, 실용성 있는 검색 엔진을 구현하는 데에 어려움을 겪었었다.
- 실용성 있는 검색 엔진을 만드는 방법에 대해 고민을 하다가,
구글의 분산 파일 시스템에 영감을 받아서 너치 분산 파일 시스템을 제작했는데,
이것이 훗날의 HDFS가 되었다.
2. 맵리듀스 : 구글이 발표한 대용량 데이터 처리 프레임워크
- 데이터 중심의 분산 계산 환경 --> 너치 프로젝트에 도입되었다.
- 기존 너치의 한계의 10배 이상 데이터 처리 가능 : 수십억 페이지 상당의 데이터 처리 가능
3. 하둡 : NDFS + 맵리듀스 너치 프로젝트에서 독립
- 검색엔진을 뛰어넘어 많은 분야에서 다양하게 사용될 수 있음을 발견함.
- 독립 후에 아들의 코끼리 장난감 이름을 따서 '하둡'이라고 이름을 지었다.
- 야후의 지원을 받아서 급성장 했다.
4. 하둡의 생태계
- 빅데이터 처리와 분석 솔루션으로 각광을 받았음.
- 상업적 배포판 등장 : 쉬운 설치 + 기업 운용 수준의 안전성
- 향상된 성능의 코드로 프로젝트에 기여 : 하둡 생태계 형성
- 클라우데라, 호튼워크, 맵알 등 기술기업 탄생
하둡과 데이터 분석
1. 하둡을 이용한 빅데이터 분석
- 빅데이터를 이용한 통계분석의 수요가 증가했다.
- 이는 빅데이터 저장 및 처리의 간소화에 따른 자연스러운 현상임.
: 빅데이터의 진정한 가치는 분석을 통한 현상의 발견.
- 마하웃 (하둡 기반 기계학습 라이브러리)
: 마하웃을 사용하면, 군집분석, 분류, 협업적 필터링 등을 구현할 수 있다.
ㄴ 그런데, 이 작업들 외에는 구현하기 힘듦 --> 작업의 유연성이 떨어짐.
2. R을 이용한 빅데이터의 고급 통계분석
- R이 구비한 고급 통계분석 알고리즘 활용 --> 분석의 유연성 확보
- R의 한계 : R은 인메모리 기반 (모든 데이터가 메모리에 올라와 있어야 한다.)
--> 메모리에 올릴 수 있는 데이터 크기가 제한됨.
- R과 하둡을 결합시켜서 이런 한계점을 극복할 수 있다! :)
ㄴ ex) 리피(Rhipe) : R 패키지. R에서 맵리듀스 프로그래밍이 가능하다는 가능성을 보여주었음.
ㄴ RHadoop
ㄴ 상업용 병렬처리 R을 개발하는 '레볼루션어낼리틱스'라는 회사에서 개발하였음.
ㄴ R에서 편리하게 맵리듀스 프로그래밍을 할 수 있다.
ㄴ 개인 사용자는 무료로 사용할 수 있다.
ㄴ RHadoop은 크게 네 개의 R 패키지로 구성된다.
연습문제
Q1. 빅데이터를 R로 통계분석할 떄의 제약조건에 대해 알맞게 기술한 것은?
1) R은 모든 데이터를 메모리에 올려서 처리하기 때문에 빅데이터를 분석하는 데는 한계가 있다.
2) R은 모든 데이터를 하드디스크에 올려서 처리하기 때문에 빅데이터를 분석하는 데는 한계가 있다.
3) R은 빅데이터를 분석할 수 있는 함수가 없기 때문에 빅데이터를 분석하는 데는 한계가 있다.
4) R은 빅데이터를 읽을 수 있는 함수가 없기 때문에 빅데이터를 분석하는 데는 한계가 있다.
답 : 1)
Q2. 다음 중 하둡의 구성 요소가 아닌 것은?
1) 하둡 공통
2) 하둡 분산 파일 시스템
3) 구글 파일 시스템
답 : 3)
해설 : 구글 파일 시스템은 구글의 독자적인 파일 시스템으로, 공개되어 있지 않다.
'Programming > Computer Science Fundamentals' 카테고리의 다른 글
[JSP] 3. JSP 개요 (0) | 2021.09.17 |
---|---|
[JSP] 2. 개발 환경 설정하기 (0) | 2021.09.17 |
[JSP] 1. 웹과 자바 (0) | 2021.09.17 |
[빅데이터의 이해] 6. 빅데이터 기술2 (0) | 2021.09.11 |
[빅데이터의 이해] 4. 빅데이터의 활용2 (0) | 2021.09.10 |
[빅데이터의 이해] 3. 빅데이터의 활용1 (0) | 2021.09.09 |
[빅데이터의 이해] 2. 빅데이터의 정의2 (0) | 2021.09.09 |
[빅데이터의 이해] 1. 빅데이터의 정의 1 (0) | 2021.09.09 |