hadoop 활용 어떻게들 하고 계신지...

kfctoto의 이미지

안녕하세요.

초보 시스템 관리자입니다.

현재 hadoop에 대해서 공부중입니다.

map,reduce라든가 key-value라든가
어느정도 개념은 파악했는데요.

책들 읽다보니 갱신에 대응하지 않거나 적합하지 않고,
큰 파일이라든가, 일괄처리등에 적합하다.
이런식으로 써있더라구요.

아 그런가보다하고 알긴알겠는데
이건 정말 시스템단의 이야기고
실제 활용예등이 궁금해서요.

혹시 실제로 hadoop를 사용하고 계신 고수님들 계시면
그 사용예에 대해서 가르침 받을수 있을지요.

예를들어 뉴욕타임즈에서 과거기사를 pdf화하는 처리에 이용했다라든가
여러가지 큰 회사들의 활용예는 있는데 막 와닿질 않네요.
보통은 대량의 로그 분석, 통계등에 이용되는것 같은데,,,

간단히 자신이 구축해서 활용할때 어떻게들 활용하시는지, 혹은 가능할지
(예를 들어 게임이라든가, 웹어플리라든가... 등등)
rdbms의 대체는 될수 있을지... 등등

고수님들의 가르침을 부탁드립니다.

꾸벅

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

실은 맵리듀스를 조합해서 구현하는 경우에,
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가 사용하는 테이블 내의
데이타는 프로퍼티로 지정한 영역에 만들어진 테이블명과 같은 이름의 디렉토리안에 격납된다.

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

spyrogira256의 이미지

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

이렇게 사용하는거 같습니다.

youngmo의 이미지

지금은 어떻게 사용하고 계신가요?

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.