레이블이 NOSQL인 게시물을 표시합니다. 모든 게시물 표시
레이블이 NOSQL인 게시물을 표시합니다. 모든 게시물 표시

2014년 4월 4일 금요일

하둡 에코시스템

- 하둡의 비즈니스에 효율적으로 적용할 수 있게 다양한 서브 프로젝트가 제공
- 서브 프로젝트가 상용화 되면서 하둡 에코시스템이 구성
































분산 코디네이터 (Zookeeper)
- 분산 환경에서 서버 간의 상호 조정이 필요한 다양한 서비스를 제공하는 시스템
- 하나의 서버에만 서비스가 집중되지 않게 서비스를 알맞게 분산해 동시에 처리
- 하나의 서버에서 처리한 결과를 다른 서버와도 동기화해서 데이터 안정성 보장
- 분산 환경을 구성하는 서버들의 환경설정을 통합적 관리 지원

워크 플로우 관리(Oozie)
- 하둡 작업을 관리하는 워크플로우 및 코디네이터 시스템
- 자바 서블릿 컨테이너에서 실행되는 자바 웹 어플리케이션 서버
- 맵리듀스 작업이나 피그 작업 같은 특화된 액션으로 구성된 워크 플로우 제어

분산 데이터 베이스(HBase)
- HDFS 기반의 칼럼 기반 데이터베이스
- 구글의 BigTable 논문을 기반으로 개발됨
- 실시간 랜덤 조회 및 업데이트가 가능
- 각 프로세스는 개인의 데이터를 비동기적으로 업데이트할 수 있음

데이터 분석 (Pig)
- 야후 에서 개발됐으나 현재는 아파치 프로젝트에 속한 프로젝트
- 복잡한 맵리듀스 프로그래밍을 대체할 pig Latin 이라는 자체 언어 제공
- 맵리듀스 API를 크게 단순화 , SQL과 유사한 형태로 설계
- SQL 과 유사하기만 하다! 기존 SQL지식 활용 어려움

데이터 분석 (Hive)
- 하둡 기반의 데이터웨어하우징용 솔루션
- 페이스북에서 개발됨
- 오픈소스로 공개되어 있음
- SQL과 매우 유사한 HiveQL 쿼리 제공

Sqoop
- 대용량 데이터 전송 솔루션

Impala
- 클라우데라에서 개발한 하둡 기반의 실시간 SQL 질의 시스템
- 맵리듀스를 사용하지 않음
- 자체 개발 엔진 사용하여 빠른 성능을 보여줌
- 데이터 조회를 위한 인터페이스로 HiveQL 사용
- HBase 와도 연동 가능

Tajo
- 고려대학교 박사 과정 학생들이 주도해서 개발한 하둡 기반의 DW시스템
- 2013년 아파치 재단의 인큐베이터 프로젝트로 선정 (현재 최상위 프로젝트로 승격)
관련 기사 : http://www.ddaily.co.kr/news/article.html?no=116975
- 임팔라가 클라우데라의 하둡을 써야하는 제약이 있는 반면 타조는 종속이 없음
- Hive 보다는 2~3배 빠르며 임팔라와 속도가 비슷함

NoSQL 제 2 강

NoSQL 제 2 강

- 빅 데이터 란?

   빅데이터에 대한 정의가 명확하지는 않으나. 정리를 해보겠습니다.

   빅데이터는 기존의 데이터베이스 로 수집, 분석 , 관리 할 수 있는 역량을 넘어서는

   대량의 정형 또는 비정형 데이터를 분석하여 가치를 창출해 내는 기술이라고 보여집니다.

   즉, 쉽게 설명하여 "어질러져 있는 Data 더미 속에서 보석을 찾아낸다" 라는 의미로

   이해를 하면 좀 더 쉬울까요?

   그럼 BigData 의 3요소를 보도록 하겠습니다.

   빅데이터의 3요소는 Volume , Velocity , Variety 이렇게 3가지가 있는데요

   이 3가지 요소는 각각의 특징을 가지고 있습니다.



















1. Volume(크기)

   - 수십 테라바이트(terabyte) , 수십 페타바이트(petabyte) 이상이 해당함.
   - 기존 파일 시스템에 이러한 Data를 저장하기는 어려움
   - 기존 분석 솔루션에서 소화하기 어려울 정도로 데이터 양이 급증
   - 이러한 문제 해결을 위해서는 분산 컴퓨팅 기법으로 접근해야 함
   - 현재 존재하는 분산 컴퓨팅 솔루션은 GFS(Google File System) , 하둡 등이 있음

2. Velocity(속도)

   - 빅 데이터 속도의 특징은 실시간 처리와 장기적 접근 2가지로 존재
   - 오늘날 빠른 속도로 생성되는 SNS와 같은 Data들은 실시간 처리가 필요
   - 스마트폰 기기의 보급으로 Data에 대한 저장,분석 등이 실시간으로 처리되야함.
   - 수집된 대량의 Data를 분석하는 기술들도 필요함.
   - 데이터마이닝, 기계학습, 자연어처리 , 패턴인식 등이 분석 기법에 해당함

3. Variety(다양성)

   - 빅 데이터를 이루는 Data의 종류는 다양함
   - 빅 데이터는 비정형 데이터도 처리할 수 있는 능력을 갖춰야 함.

이 3대 요소를 모두 갖추었을 때 BigData 기술이라 할 수 있음

하둡이란?


그럼 빅 데이터를 소개 할 때 함께 소개되는 하둡에 대해서 한 번 살펴보자.

하둡의 시작..

- 하둡은 2005년에 더그 커팅과 마이크 케퍼렐라가 개발함
- 하둡은 오픈소스 웹 검색 엔진인 너치(Apache Nutch)에 적용하기 위해 시작
- 이후 독립적인 프로젝트로 만들어 짐
- 2008년에 아파치 최상위 프로젝트로 승격 됨
- 하둡은 분산 파일 시스템인 HDFS(Hadoop Distributed File System)에 데이터를 저장
- 분산 처리 시스템인 맵리듀스를 이용해 Data를 처리

하둡..하둡?

- 하둡의 공식 사이트 : http://hadoop.apache.org/
- 하둡의 로고 : 노란 코끼리(별 의미 없다.. 지 아들이 갖고놀던 장난감 코끼리 이름이여..)
- 코끼리가 빅데이터를 상징하는 동물이 됨
- 2011년 야후에서 하둡을 지원하기 위해 기업의 이름을 지을 때도 동화에 나오는
   코끼리 이름을 따서 회사 이름을 지음.. 그것이 바로 호튼웍스(Hortonworks)!!!!

그럼 왜 하둡을 쓸까?

1. 오픈소스라 부담이 없다..(오픈소스 만세)

2. 분산 컴퓨팅 방식을 통해서 효율성을 높일 수 있다.


하둡의 발전 과정..

- 이 얘기를 하려면 구글 얘기를 안할 수가 없다..
- 구글은 2003년에 인터넷 서비스 기술을 강화하기 위해 개발한 GFS(Google File System)을
   발표
- 2004년에 맵리듀스를 발표한다.
- 오픈소스 검색 엔진 너치(Nutch)를 개발 중이던 더그 커팅과 마이크 캐퍼렐라는 
   구글 논문을 접한 이후 2005년에 이를 자바로 구현하기 시작.
- 이렇게 개발된 것이 하둡이며 , 너치의 하위 프로젝트 였다가 최상위로 올라간 것임

- 하둡은 보안 기능 강화와 서비스의 안정성 확보를 주요 발전 방향으로 삼아 왔음

하둡 정식 1.0 버전의 기능


1. 보안 기능 제공 
    - 하둡은 커베로스(Kerberos) 인증을 통해 네트워크 전체에 걸쳐 보안 확보가 가능

    ※ 커베로스 란?
        커베로스(Kerberos)는 "티켓"(ticket)을 기반으로 동작하는 컴퓨터 네트워크 인증 암호화 프로토콜로서  
             비보안 네트워크에서 통신하는 노드가 보안 방식으로 다른 노드에 대해 식별할 수 있게 허용한다. 
            클라이언트 서버 모델을 목적으로 개발되었으며 사용자와 서버가 서로 식별할 수 있는 양방향 인증을
            제공한다. 
커베로스의 데이터 전송 방법
2. WebHDFS REST API 제공
   - 웹 기술을 이용해 하둡을 잘 모르는 관리자와 개발자들이 하둡을 더 쉽게 사용하도록 함

   ※ REST API 참조 : http://bcho.tistory.com/321 (조대협의 블로그)


하둡은 2.0 올해 초 2014년 2월 27일에 공식 출시했다고 밝혔으며

현재 2.3 버전까지 릴리즈 버전이 나와 있다.

2.0에 대해서는 나중에 자세히 언급하도록 하자

하둡 배포판 살펴보기


1. 클라우데라 - CDH
   - 거의 모든 하둡 에코시스템이 포함되어 있음
   - 아파치 하둡 배포판을 사용하지 않을 경우 , 대부분의 업체가 CDH를 고려할 정도로 신뢰도가 높음

2. 호튼웍스(Hortonworks) - HDP
   - 다양한 에코시스템이 포함됨 (전부는 아님)
   - 다양한 개발형 REST API가 제공
   - 설치, 관리 작업 시스템도 함께 제공됨

3. MapR 테크놀로지스 - MapR EDITIONS
   - MapR 은 성능 개선을 위해 자바에 C를 더한 것이 특징

4. 아마존 - EMR
    - 아마존의 클라우드 컴퓨팅 서비스

5. HStreaming - HStreaming
    - 하둡 기반의 실시간 데이터 분석 플랫폼 

2014년 3월 27일 목요일

NOSQL-1강

NOSQL 제 1강

NoSQL 이란?

 NoSQL 데이터베이스는 전통적인 관계형 데이터베이스 (RDBMS) 보다

덜 제한적인 일광성 모델을 이용하는 데이터의 저장 및 검색을 위한 메커니즘을 제공한다

이러한 접근에 대한 동기는 디자인의 단순화, 수평적 확장성 , 세세한 통제를 포함한다.

NoSQL 데이터베이스는 단순 검색 및 추가 작업을 위한 매우 최적화된 Key Value 

저장 공간으로, 상당한 성능 이익을 내는 것을 목적으로 한다.

NoSQL 데이터베이스는 빅데이터와 실시간 웹 어플리케이션의 상업적 이용에 널리 쓰인다

또 , NoSQL 시스템은 SQL 계열 쿼리 언어를 사용할 수 있다는 사실을 강조한다는 면에서

"Not only SQL"로 불리기도 한다.

정식 명칭 : Non-Relational Operation DataBase SQL


NoSQL 특징

1. 하드웨어 확장에 제약이 없다 (기본 개념이 분산형 System)

2. 저렴한 비용으로 병렬 처리가 가능하다

3. 읽고 쓰는 기능에 있어 RDBMS 보다 빠르다

4. 비정형 데이터구조로 설계비용이 감소한다..

5. 유연하다.

6. 안전성이 검증되어 있지 않다.

7. RDBMS 에 비해 훨씬 많은 데이터를 저장할 수 있다.


CAP 이론

데이터 베이스는 CAP 3가지 모두 만족 시킬 수 없으며

2가지를 충족 시켰다면 1가지를 포기해야 한다는 이론 

이 이론에 입각해 업무 특성에 맞는 NoSQL 을 선택해야 한다.





























Consistency(일관성) : 모든 사용자들에게 같은 시간에 같은 데이터를 보여줘야 한다
Availability(유효성) : 모든 클라이언트 들이 읽기 및 쓰기가 가능해야 한다.
                            즉, 하나의 노드가 장애가 일어 나더라도 다른 노드에는 영향을 
                            미치면 안된다
Partition tolerance(분산가능) : 물리적 네트워크 분산 환경에서 시스템 동작이 원할하게
                                        이루어 져야 한다. 즉, 네트워크 전송 중 데이터 손실 상황이
                                        와도 시스템은 정상적으로 동작을 해야한다.


DB 의 종류




이상 1강을 모두 마칩니다.

2013년 2월 22일 금요일

Redis VS Cassandra 비교 분석(2)

Cassandra 와 Redis 실제 처리속도 분석

테스트 소스 만들어서 점검 함.

10만건 Write - 10만건 Read


ROW DB 선정을 위한 테스트 및 분석
일자 2012-02-18
테스트 대상  Windows 를 지원하는 NOSQL : Cassandra , Redis
테스트 및 분석 방안  1. 10만건의 Data 의 Write / Read 속도 비교
   2. 서버 구성의 편의성
   3. 클라이언트 사용의 편의성 
   4. Java 연동의 편의성
1. Data 처리 속도 비교
분석 사항 환경 Redis Cassandra
Data Write 비교 Localhost 6 sec 36 sec
  LAN 55 sec 2 min 2 sec
  Wireless 2min 45 sec 6 min 3 sec
Data Read 비교 Localhost 6 sec 19 sec
  LAN 54 sec 1 min 24 sec
  Wireless 2min 45 sec 3 min 45 sec
Absolute Best  
Better  
Draw  
 2. 서버 구성 편의 Redis Cassandra
 1) Server 설치 및 설정이 간편하다    
 2) Server 구성 시 차지하는 용량이 적다    
 3) 서버를 구동과 연동에 타 프로그램이 필요 없다.    
 4) 서버 구성 배포가 간편하다.    
 3. 클라이언트 사용의 편의성
 1) 명령어 Reference 체계가 편리하다    
 2) DB 구조 구성이 간편하다.    
 3) Connect 및 Default Setting 이 간편하다.    
 4) DB 관리가 용이하다.    
 4. Java 연동의 편이성
 1) 연동시 필요한 Library 가 적다.    
 2) Document API 가 체계화 되어 있다.    
 3) 코드가 간편하고 쓰기 쉽다    
분석 총평 - 서버 설정은 서비스에 올릴 필요 없는 Cassandra 가 좀더 편해보이나 ,
   서비스는 배포용으로 만들면 되므로 , 크게 문제되는 사항은 아님
- 클라이언트의 편의성 및 구성이 용이하며 , 속도면에서 확연한 차이를 보임
- 따라서 MK5.0(가제) 프로젝트 에서 Row Data 관리용 DB (NOSQL) 
  Redis 를 사용 하기로 결정함.

Redis VS Cassandra 비교 분석(1)

수집되는 Data의 빠른 처리를 위해 NOSQL에 관심을 가짐

현재 프로젝트의 사정상 , Window OS 를 지원하며 , 조회 및 관리를 위해
컬럼형 DataBase (key-value) 구조의 NOSQL DB를 검색

Cassandra 와 Redis 가 후보군으로 올라옴.

해서 2가지를 비교하여 정리함.

Cassandra


1. Cassandra 개요

  1) FaceBook 에서 개발하여 현재는  아파치 오픈 소스로 공개된 분산형 데이터 베이스

  2) NOSQL 데이터베이스 에서 Key-value 형, 컬럼형 으로 분류됨

2. Cassandra 특징

  1) keyspace > column family > row key > super column > cloumn 형태로 구성

  2) keyspace 단위로 관리하는 형식

  3) 보통 어플리케이션 하나당 keyspace 하나씩 생성

3. Cassandra 의 장점


  1) 대량 데이터를 다수의 부산된 서버에서 관리해야 할 경우 적합
 
  2) 특히 사용자가 많을 경우 , 대량 write 가 발생할 경우 적합

  3) 아마존 다이나모 방식을 구현, 연속적인 서비스 제공에 중점을 둔 구조 . 가용성 뛰어남

  4) 서버 분산 시스템일 경우 서비스 중단없이 서버 추가 가능

4. Cassandra 의 단점

  1) Row key 와 컬럼 두가지에 대한 인덱스만 가능하기 때문에 , 복잡도 높은 검색 불가능

  2) 하위 컬럼 (super column > column) 에 대한 인덱싱 불가능

  3) 데이터에 대한 갱신 및 입력시 Atomic 한 처리 어려움

  4) Java 와 연동시 , Library 량이 많아 사용 불편함.

Redis


1. Redis 개요

  1) Salvatore Sanfilippo 가 개발한 오픈소스 소프트웨어

  2) 휘발성이면서 영속성을 가지고 있음

  3) memcached 와 Tokyo Tyrant 의 속성을 지닌 key-value 형 DataBase

2. Redis 특징

  1) memcached 기반으로 구성

  2) DB 를 Index 로 관리하는 방식 사용

3. Redis 의 장점

   1) 기본적으로 데이터를 메모리에 보존하므로 처리속도가 크게 빠름

   2) Redis는 단독 데이터베이스로도 사용이 가능

   3) 관련 명령어가 굉장히 많이 준비되어(100 종류 이상) , Atomic 한 처리 가능

   4) 데이터를 disk 에 기록하는 SnapShot 기능(영속화) - 기록시간 Default 15분간 1건

   5) 다양한 데이터 형식 지원 (문자열 , List , Set , Sorted Set , Hash 등)

   6) 데이터의 추가 , 삭제 , 패턴 찾기 등 배열 형식 데이터에 대한 여러 기능 제공

   7) SnapShot 시점에 전체 데이터에 대한 I/O 가 발생하나 Sequential access 로 처리 되므로

       부하는 크지 않음


4. Redis 의 단점

  1) 국내에 도입 사이트가 현저히 적음 (사례 : NHN- Line 메신저 )

  2) 아직까지 한글판 서적이 없으며 , 제공되는 정보도 적음