FANDOM



맵리듀스를 조합해서 구현하는 경우에,
map밖에 필요없거나, reduce밖에 필요 없는 경우도 있다.
이런 경우에는 어느쪽인가는 단지 실행하지 않고 패스하는 함수를
사용하게 된다. 얼핏, 쓸데없이 보이지만,
그냥 패스하는 부분은 전체 퍼포먼스에 거의 영향을
주지 않는다.

Hadoop의 맵리듀스 사용법

하둡을 설치하고 start-all.sh란 스크립트를 실행하면
NameNode와 DataNode, JobTracker등의 하둡의 각종서버가 기동된다.

이미 설명한대로 이것은 자바의 가상머신위에서 동작한다.
맵리듀스를 실행하는 방법은 다음과 같다.
먼저 하둡에서 입력할 map처리와 reduce처리를 자바로 기술한다.
(하둡 스트리밍을 사용하면 Ruby등 다른 스크립트로도 이용가능하다.)

.............

단지 문자열의 검색등에 해당하는 전형적인 처리라면 프로그래머가 맵과 리듀스를
작성하지 않아도 된다. 하둡이 표준으로 기능을 내포하고 있기 때문이다.
하둡의 루트디렉토리에 있는 Hadoop-x.xx.x-examples.jar이 해당파일이다.

.............

Cassandra의 기본

Cassandra는 key와 value의 조합으로 데이타를 보존하거나,
key를 지정해서 value을 얻어내거나 한다.
이런 수법으로 관리하는 데이타베이스를 key-value스토어라고한다.

일반적인 kvs는 1개의 key에 대해 1개의 값을 관리한다.
cassandra는 key의 부분이 4계층또는 5계층으로 되어있어. 실질적으로
4개에서 5개의 키를 조합해서 1개의 값을 관리하는 것이 가능하다.

키가 4계층의 경우의 데이타구조를 정리해보자.
데이타의 최소단위를 컬럼이라고 한다.
컬럼의 벨류는 컬럼, 키, 컬럼 패밀리, 키스페이스의 4개키의 조합으로 관리된다.

키와 컬럼패밀리의 사이에 슈퍼 컬럼이란 키를 추가하면 최대 5개의 키로 관리하는
것이 가능하다.

키가 계층구조로 되어있기때문에,
일반적인 KVS로는 실현불가능한다 데이타조작이 가능하다.

예를들어 다음과 같이 key를 지정하는 경우, value는 어떻게 될가.

["인사"]["개인"]["철수"]

지정한 키는 3계층이다. 참조가능한 값은 "linux chulsu","chulsu@linux.com"
의 두개이다.
이와같이 Cassandra로는 1회의 데이타 조작으로 복수의 값을 동시에 취득하는것이
가능하다.

Cassandra가 갖는 또 하나의 특징은, 퍼포먼스를 잃지않고 데이타를 복수의 노드에
분산관리할수 있는 구조를 실현했다는 것이다.

-------------------------------------------------------------------------------

NoSQL대집합

크라우드컴퓨팅의 보급을 배경으로 NoSQL이란 새로운 데이타베이스관리 시스템이 등장했다.
NoSQL은 데이타베이스시스템의 총칭으로 지금까지 주류였던 RDBMS와는 크게
다른 특성을 가지고 있다.

가동중에도 용량의 신축성이 자유자재

각종NoSQL에 공통하는 주요한 특징은 스케이일아우성,탄력성,고가용성,특징적인데이타모델이다.
....

4번째의 특징인 데이타모델의 경우, NoSQL은 데이타베이스별로 다른 데이타모델을 가지고 있다.
1개키와 값을 관리하는 키벨류형, 1개의 키에 복수의 값을 관리하는 컬럼그룹형,
1개의 키와 문서파일로 관리하는 다큐맨트형, 데이타구조 그자체를 관리하는 그래프형의 4가지가 있다.
용도에 적합한 데이타모델을 선택할수 있다.

일관성과 가용성의 취사선택

스케일아웃성과 탄력성이란 NoSQL의 특징은, RDBMS에는 없는 것이다. 물론 RDBMS로 실현하기위한
기술도 있지만, 실현과 운용에 막대한 코스트와 수고가 필요하다.

NoSQL은 RDBMS에는 없는 특징을 가진 반면, RDBMS이 가지고 있는 특징이 생략된 경향도 있다.
그것은 SQL문으로 실현가능한 복잡한 쿼리, 데이타베이스간의 정합성을 유지하기위한 2페이스 커밋같은
강력하고 세련된 트랜젝션관리기능이다.

-------------------------------------------------------------------------------

CouchDB란 뭐냥?

Apache CouchDB도 KVS형에 분류된 NoSQL의 1가지이다.
MongoDB등과 같이 스키마의 정의가 필요없다.

표면적으로는 자바스크립트의 오브젝트 기법을 근본으로 작성된
경량데이타기술언어인 JSON(Java Script Object Notation)
문서를 입출력하는 다큐맨트지향DBM로 분류된다.

웹서버, 어플리케이션서버의 기능도 가지고 있기때문에,
CouchDB를 잘활용하면 DBMS서버, 어플리케이션서버, 웹서버의
3가지 서버를 하나로 집약하는 것도 가능하다.

동작환경은 Linux와 MacOS X 등의 UNIX계 OS, 또는 Windows다.

-------------------------------------------------------------------------------

hive개요

- 맵리듀스의 간단한 활용

맵리듀스 어플리케이션의 개발방법에 대해 해설한다.
처리에 직접영향이 있는 맵과 리듀스의 부분을 구현하는 것만으로 하둡상의 맵리듀스의 실행이 가능한것은
알았을거라고 생각한다.

그러나 자바에대한 프로그램 지식이 없거나, 좀더 한정적으로 맵리듀스를 이용하고 싶은 경우도 생각해볼수 있다.

그러한 경우, 그 때마다 자바로 프로그래밍을 하는 것은 효율이 나쁘게 되고 말것이다.

거기서 하둡상의 맵리듀스 처리를 좀더 간단하게 써서 실행할수 잇는 툴 로서 하이브가 제공된다.

하이브란

하이브는 페이스북의 맴버가 주체가 되어 개발한 툴이다.
하이브는 아파치의 프로젝트로서 개발이 진행되, HiveQL이라는 처리언어로 처리하고 싶은 내용을
SQL과 유사하게 정의할수 있다.

유저가 HiveQL로 정의한 처리는 Hive가 맵리듀스잡으로 변환한 뒤 실행한다.

하이브와 같은 독자처리언어로 하둡의 맵리듀스잡을 실행하는 툴로서 Pig도 있다.

어느쪽도 한정적으로 데이타를 분석하는 툴로서 유효하지만,
Hive는 SQL의 지식을 간단하게 응용할수 있다. 새로운 처리언어을 처음부터 공부할 필요가 없다.
라는 점에서 RDBMS를 이용한 사람에게 친숙하게 받아들여지고 있다.

먼저 Hive와 하둡의 관계 그리고 HiveQL로 처리할수 있는 내용에 대해서 설명한 후에, Hive
도입과 실천적인 이용방법에 대해서 설명해보자.

6.2 하이브와 하둡

6.2.1 하이브와 RDBMS의 차이

우선 하이브와 하둡의 관계에 대해서 설명한다. 하이브의 역할은 간단하게 말하면, SQL과 유사한
언어로 MapReduce잡을 실행하는 툴이다. SQL과 유사한 언어인 HiveQL을 이용해서 제5장에서 설명한
MapReduce어플리케이션을 Hive자신이 생성한다. HiveQL은 SQL과 비슷한언어이지만,
다음의 점에서 RDBMS와 다르다.

- 온라인 처리에 적합하지 않다.
Hive는 어디까지나 하둡의 맵리듀스를 실행하는 툴이다. 하둡의 맵리듀승는 최저 20초정도의 처리 코스트가 있으므로,
수초이내에 처리값을 반환할 필요가 있는 온라인 처리에는 적합하지 않다.

- 트랜젝션 처리의 기능이 없다.
RDBMS에는 데이타의 일관성을 유지하기 위한 트랜젝션처리기능을 실현한다. 한편 하이브는 트랜젝션처리에 관한
구현이 없다. - 행단위의 갱신은 불가
SQL에는 UPDATE문과 DELETE문에 따른, 특정의 행의 정보를 갱신할수 있다. 또, 인서트문에 따른 행단위의 데이타를
테이블에 저장할수 있다. 한편 하이브는 HDFS와 MapReduce에 대해서 실행하므로, 데이타의 추가 기록이 불충분이라는
Hadoop의 특징을 계승한다. 그때문에 UPDATE문과 DELETE문이 존재 하지 않는다.

- 인덱스 기능이 없다.
RDBMS는 특정의 데이타에 대해 억세스를 고속으로 하기위해, 데이타를 보전하는 테이블에 대해 인덱스를 작성할수 있다. 한편
하이브로는 인덱스기능은 존재하지 않는다.

먼저 하이브와 HDFS의 관계에 대해 설명하면서, Hive가 HiveQL로 작성된 처리를 어떻게 맵리듀스 어플리케이션에 변환할까를 설명하겠다.

6.2.2 테이블의 격납방식

Hive는 제4장까지 설명한 하둡의 노드(NameNode/DataNode/JobTracker/TaskTracker)와 달리 JobClient와 같은 클라이언트(Hive클라이언트)
로서 동작한다. 또, 데폴트의 Hive는 데몬프로세스로 동작하지 않고, 실행할때마다 새로운 프로세스를 생성하여 처리한다.

다음으로, Hive로 사용할 데이타의 Hadoop상의 처리에 대해서 설명하겠다. Hive를 이용하한 데이타는
HDFS상의 특정한 디렉토리에 격납한다. 디렉토리는 Hive의 설정파일 ${HIVE_HOME}/conf/hive-site.xml중의 프로퍼티
hive.metastore.warehouse.dir에 설정할수 있다. 디폴트값은 /user/hive/warehouse/이다. Hive가 사용하는 테이블 내의
데이타는 프로퍼티로 지정한 영역에 만들어진 테이블명과 같은 이름의 디렉토리안에 격납된다.

활용예 Edit

http://confluence.openflamingo.org/display/BLOG/Home

Ad blocker interference detected!


Wikia is a free-to-use site that makes money from advertising. We have a modified experience for viewers using ad blockers

Wikia is not accessible if you’ve made further modifications. Remove the custom ad blocker rule(s) and the page will load as expected.