Tags

하둡 HBase를 기업 환경에 도입할 때 고려해야 할 점

This article is based on Hortonworks Partner Content and Expertise

하둡과 다양한 NoSQL을 연동해서 확장성과 성능이 높은 데이터 처리 시스템을 구축하는 부분은 소개를 드린 적이 있습니다.
호튼웍스 하둡과 NoSQL을 연동하는 방법 – Accumulo Case
HBase의 가능성과 한계점

지난 주에 HBase 0.98.0 버전이 발표가 되었고 이제는 실제 기업 환경에 도입될 수 있을 수준의 안정성을 점차 확보해 나가고 있습니다.
HBase는 구글의 빅데이블의 설계 철학과 데이터 모델에 맞추어서 개발되어서 로우(Row)가 수조개에 이르는 ‘빅’ 테이블의 데이터를 분산시켜서 처리할 수 있는 NoSQL 데이터베이스입니다.

반드시 염두해 두어야 할 것은 HBase는 기업에 도입할 때 그 가능성과 한계점에 대해서 확실히 이해한 이 후에 도입할 필요가 있습니다.
즉, HBase는 관계형 데이터베이스가 가지고 있는 ‘보증하는’ ACID를 지원하는 것이 아니라 각 목적에 맞게, 좀 심하게 얘기하면, ‘조금만 기다리면’ 전체적으로 만족시키는 접근 방법입니다.
HBase의 관점에서 본 ACID에 대해서는 이 링크를 꼭 참조하시기 바랍니다.
예를 들면, 원자성(Atomicity)에 대해서도 HBase는 ‘All mutations are atomic within a row’의 의미입니다. HBase의 원자성은 하나의 로우(Row)에 대해서 PUT 작업이 이루어 질 때 완전히 성공하거나 완전히 실패하거나 두 가지를 보증한다는 정보의 의미만을 가지고 있습니다.

그렇다면 기존의 관계형 데이터베이스가 기업 내부의 데이터 처리 시스템으로 오랜 기간 검증이 된 상황에서 HBase와 같은 NoSQL이 등장한 이유는 무엇일까요?
여러 가지 이유가 있지만 가장 핵심적인 것은 관계형 데이터베이스가 오히려 너무 많은 다양한 데이터 처리 작업에 쓰이고 있다는 것에 대한 재검토일 것입니다.

페이스북과 같은 인터넷 기업들에서 몇 초만에 수십만 개의 댓글이 달리는 케이스를 생각해 보면 이해가 가실 겁니다.
만약에 이 처리를 관계형 데이터베이스를 통해서 한다면 급격히 테이블이 늘어나는 것도 문제지만 응답속도도 급격히 느려질 것입니다. 그래서 완벽하게 ACID를 보증하는 접근 방법이 아니라 일단 간단한 스키마로 신속하게 처리하는 것에 중점을 둔 데이터베이스에 대한 개념들이 나오기 시작했습니다.

기업에 적용하는 경우에도 트랜잭션이 짧은 시간에 일어 나는 경우에 프론트엔드에서 NoSQL이 작업을 하고 중간 결과 등을 관계형 데이터베이스에 저장하는 것과 같이 서로 보완을 할 수 있는 접근 방법이 좋습니다.

조금 더 상세히 그 핵심적인 기능을 좀 더 살펴 보겠습니다.
Features of HBase

Linear and modular scalability.
Strictly consistent reads and writes.
Automatic and configurable sharding of tables
Automatic failover support between RegionServers.
Convenient base classes for backing Hadoop MapReduce jobs with Apache HBase tables.
Easy to use Java API for client access.
Block cache and Bloom Filters for real-time queries.
Query predicate push down via server side Filters
Thrift gateway and a REST-ful Web service that supports XML, Protobuf, and binary data encoding options
Extensible jruby-based (JIRB) shell
Support for exporting metrics via the Hadoop metrics subsystem to files or Ganglia; or via JMX

다양한 기능 중에서 빅데이터블의 설계 철학과 연관해서 중요한 점만 살펴 보겠습니다.
보통 관계형 데이터베이스에서 테이블이 크기가 커졌을 때 해야 하는 작업은 샤딩(Sharding)이라는 작업입니다.
즉, 테이블의 로우(Row)를 잘라서 분산시킴으로써 처리 성능을 향상시키려는 방식인데 HBase는 샤딩을 기본적으로 실행해서 스토리지를 늘리는 것에 맞추어서 처리 속도도 확장가능하도록 하는 것이 핵심입니다.

아마 이 부분은 실제로 테이블 크기가 더 커져서 샤딩을 다시 해야 하는 상황(Re-Sharding)을 경험해 본 DBA들은 그 작업의 어려움을 실감하고 있을 듯 합니다.

그 외에도 블록 단위의 캐싱 기능을 이용해서 급격하게 처리 요청이 많아 지는 케이스에 대해 실시간으로 대응하는 유연한 설정이 가능하다는 점이나 칼럼 단위로 테이블을 구성할 수 있는 옵션 등등이 있습니다.

즉, HBase는 엄격한 ACID를 처리하기 위한 버든(Burden)보다는 심플한 Key-Value 방식의 데이터 모델로 급격히 늘어 나는 테이블의 사이즈와 급격히 늘어나는 데이터 처리 요청을 앞단에서 신속하게 처리하는 데 그 장점이 있습니다.

이 부분에서 왜 하둡과 HBase과 상성이 맞는 지는 명확해 집니다.
하둡의 파일 시스템(HDFS)는 기본적으로 커다란 파일을 블록으로 나누어서 많은 노드에 분산되어서 저장이 되어 있습니다.
즉, 이미 분산시켜서 데이터를 처리할 수 있도록 미리 준비가 되어져 있고 리소스를 늘리면 선형적으로 처리 능력이 확장됩니다.

그래서 하둡과 HBase는 다음과 같이 연동되어서 아키텍쳐를 구성하게 됩니다.
hbase

일전에 데이터 정제 아키텍처로서의 하둡이라는 기사에서도 소개드린 것처럼 하둡과 HBase를 데이터 처리 앞 단의 ‘다양한 데이터 소스의 데이터를 신속하게 처리하는 시스템’의 역할을 부여해서 기존의 데이터베이스 시스템에 대한 투자와 버든을 줄이면서 기업 전체의 처리 능력을 높히는 방향으로 이용하는 사례가 적절합니다.

datacleansing

이상과 같이 NoSQL이 기존 데이터베이스 시스템을 대체할 수 있는 지 등등에 대한 의미 없는 논쟁보다는 그 가능성과 한계점에 맞게 가장 적절한 역할이 무엇인지 먼저 판단하는 것이 중요한 포인트입니다.

—————————————————————————————————————————–
ASD Technologies는 호튼웍스(Hortonworks Inc)와의 Consulting Partnership을 통해서
빅데이터에 대한 도입 컨설팅 및 구축을 도와드리고 있습니다.

ASD Technologies는 펜타호(Pentaho Inc)와의 Consulting and Distribution Partnership을 통해서
빅데이터에서 비즈니스 인사이트를 얻기 위한 방법을 함께 모색하고 있습니다.

호튼웍스 파트너 홈페이지
ASD Technologies Korea 홈페이지

Contact Point : sunung@asdtech.co
—————————————————————————————————————————–

자사의 미들웨어를 하둡과 연동한다는 것의 의미와 방법 (Redhat JBoss case)

This article is based on Hortonworks Partner Content and Expertise

하둡이 실제로 기업 현장에 적용이 될 때는 독립적인 프로젝트보다는 기존의 IT 거버넌스(Governance)의 관점에서 poC 단계에서부터 고려되어야 한다는 점이 최근에 많이 지적되고 있습니다.
하둡을 도입할 때 반드시 고려해야 할 점

이런 측면에서 최근에 하둡 2.0의 발표와 함께 많은 벤더들이 호튼웍스 하둡 데이터 플랫폼(HDP)과의 제휴를 통해서 자사의 솔루션과 하둡을 연동하여 하둡의 유연성과 확장성을 활용하고 있습니다.
엔터프라이즈 레벨 실시간 시스템의 최강 조합(하둡 + 인메모리 데이터베이스)
자사의 솔루션을 하둡과 연동한다는 것의 의미와 방법

그렇다면 미들웨어 솔루션과 하둡이 연동된다는 것은 어떤 의미를 가질까요?
최근에 레드헷(Redhat)과 호튼웍스(Hortonworks)가 발표한 전략적 제휴 중에서 JBoss의 관점에서 이 부분을 소개드리고자 합니다.

먼저 미들웨어(Middleware)가 기업 IT 환경에서 어떤 역할을 하는 지를 간략하게 보겠습니다.
가장 오해도 많고 제품마다 지향점이 다른 분야라서 용어 정의에 혼란이 있지만 가장 본질적인 역할에 대해서 생각해 봤으면 합니다.
솔루션을 연동할 때 가장 본질적인 컨셉을 파악해서 설계하지 않으면 본래 목적을 잃어 버리는 경우도 종종 현업에서 일어 나는 일인 듯 합니다.

미들웨어의 가장 핵심적인 역할은 비즈니스 로직(Business Logic)을 통합하고 처리하는 것으로 요약할 수 있겠습니다.
JBoss의 경우에도 그 동안 버전업을 통해서 많은 다양한 기능들이 추가되어 왔지만 비즈니스 로직을 처리하기 위한 다음 세 가지 컨셉은 변함이 없을 듯 합니다.
- Develop and Deploy business applications
- Integrate System, Process and Data across your entire enterprise
- Automate business processes

JBoss의 입장에서 ‘기업의 다양한 시스템과 프로세스 및 데이터를 통합’하기 위한 역할의 관점에서 본다면 최근에 기업 현장에 도입되고 있는 하둡 클러스터라는 시스템과 데이터 처리 프로세스 및 다양한 데이터와 메타데이터는 아주 중요한 부분이 되어 가고 있습니다.

즉, JBoss가 기업 환경에서 여전히 경쟁력이 있는 미들웨어의 지위를 유지하려면 하둡과의 연동을 통해서 비즈니스 로직(Business Logic)의 틀안으로 가져 올 필요가 있고 이것이 이번 전략적 제휴의 모티베이션(Motivation)입니다.

전체적인 연동 아키텍쳐는 아래와 같습니다.

REDHAT-1024x684

하둡 2.0을 활용하기 위해서 다양한 ‘포인트’에서 연동이 이루어지고 있지만 미들웨어의 관점을 가지고 ‘JBoss Data Virtualization’에 주목을 해 보겠습니다

JBoss Data Virutalzation은 위의 세 가지 컨셉 중에서 특히 기업 내부의 데이터 통합을 위한 툴입니다.
원래부터 아래와 같은 세 가지 목표를 가지고 있는 Data Services Platform이라는 솔루션이 업그레이드 되었습니다.
- Connect : 다양한 데이터 소스의 데이터에 접근할 수 있다.
- Compose: 직관적으로 비즈니스 관점에서 친숙한 데이터 모델(Data Model)을 만들 수 있다.
- Consume: 일관된 인터페이스로 데이터를 처리한다.

JB0041_DataServ_DataToActionableInfo_bizspeed_11519387_0114_jw

즉, JBoss Data Virtualization은 호튼웍스와의 제휴를 통해서 ‘Connect’의 관점에서 하둡 클러스터의 데이터셋을 자기가 관리 가능한 데이터 소스로 인식을 시키는 것에서 연동을 시작합니다.
이 부분은 특히 SAP HANA의 연동 부분에서 소개를 드린 적이 있습니다.

JBoss의 입장에서는 하둡이 비정형 데이터에 대해서 유연하게 테이블 뷰(View)를 부여할 수 있는 능력을 통해서 다른 비즈니스 로직용 데이터 소스들과 다양하게 ‘조인’하고 ‘블렌딩’하여 논리적인 데이터 모델을 사용자에게 제공합니다.
이 부분은 이른바 ‘논리적 데이터웨어하우스’라는 컨셉에 가장 부합하는 접근 방법입니다.
JBoss는 관계형 데이터베이스, ERP 등 기업용 어플리케이션, 하둡 클러스터의 데이터들을 한 곳으로 물리적으로 집중하는 방식이 아니라 실제 데이터는 각 시스템에서 처리하고 비즈니스 로직에 맞게 논리적인 뷰(Logical View)를 제공하는 것이 목적입니다.

이런 방식으로 미들웨어가 원래 가져야 할 역할에 충실하고자 하는 전략으로 이해하시면 되겠습니다.

국내에도 좋은 미들웨어들이 시장에서 선전하고 있는 상황입니다.
하둡 클러스터가 기업 현장에 들어 온다면 이 부분을 통합하는 것은 ‘새로운 기능’이 아니라 ‘본연의 역할’이라는 접근 방식도 좋을 듯 합니다.

레드헷과 호튼웍스의 전략적 제휴는 위의 미들웨어 뿐만 아니라 전방위적이기 때문에 앞으로도 진행에 따라 더 소개를 드릴까 합니다.

—————————————————————————————————————————–
ASD Technologies는 호튼웍스(Hortonworks Inc)와의 Consulting Partnership을 통해서
빅데이터에 대한 도입 컨설팅 및 구축을 도와드리고 있습니다.

ASD Technologies는 펜타호(Pentaho Inc)와의 Consulting and Distribution Partnership을 통해서
빅데이터에서 비즈니스 인사이트를 얻기 위한 방법을 함께 모색하고 있습니다.

호튼웍스 파트너 홈페이지
ASD Technologies Korea 홈페이지

Contact Point : sunung@asdtech.co
—————————————————————————————————————————–

호튼웍스 하둡 플랫폼으로 서버 로그 데이터를 분석하여 보안 위협을 감지하는 방법

This article is based on Hortonworks Partner Content and Expertise

최근에 빅데이터를 활용한 실시간 보안 위험 감지 및 분석 시스템에 대한 관심이 급격히 커졌습니다.
물론 기업 보안의 영역에는 그 동안 많은 독립적인 시스템들이 존재해서 그 역할을 해 왔지만 최근에 그러한 독립적인 시스템에 대한 효용성이 도마에 오르는 듯 합니다.

보안 위협은 단순히 외부의 공격이나 접근 시도 뿐만 아니라 기업 내부 혹은 일정한 권한을 가진 파트너사와 같이 전체적인 곳에서 발생하기 때문에 단순히 네트워크에 앞 단에 구성된 보안 시스템은 그 정도 일부만을 담당할 뿐이라는 것이 전문가들의 공통된 지적인 듯 합니다.

앞으로의 보안 시스템은 IT 시스템 전체의 보안 요소를 분석할 수 있는 포괄적인 관점이 필요하다는 것으로 의견이 모아지는 듯 합니다.
즉, 네트워크에 대한 다양한 공격 시도에서 부터 내부 ID의 서버 접근이나 데이터의 흐름 등 전체적인 데이터로 부터 이상 현상을 탐지해야 한다는 접근 방법입니다.

호튼웍스 등 하둡 전문 업체들은 이 분야에서 하둡이 가진 포괄적인 데이터 처리 능력이 활용될 수 있을 것으로 보고 있으며, 최근에는 다양한 보안 전문 업체들과 협업하여 이른바 ’360 degree security’에 대한 솔루션을 경쟁적으로 개발하고 있습니다.

그래서 이번에는 이러한 포괄적인 데이터 보안을 적용하는 데 있어서 가장 핵심적인 데이터인 서버 로그 데이터를 하둡에서 어떻게 처리하고 인사이트를 신속하게 얻을 수 있는 지에 대해 살펴 보고자 합니다.

먼저 간단한 데모 영상을 보면서 전체적인 흐름을 파악해 보겠습니다.

요약하자면, 호튼웍스 데이터 플랫폼을 활용하여 ‘raw’ 서버 로그 데이터를 정제하고 엑셀을 이용하여 손쉽게 분석하는 것이 전체 시나리오입니다.
먼저 서버 로그 데이터의 속성을 한 번 다시 검토해 봅시다.
서버 로그 데이터는 네트워크와 서버의 운영에서 발생하는 이벤트 데이터를 저장한 로그파일들이기 때문에 단순히 전체 시스템의 성능을 파악하는 용도 뿐만 아니라 보안 관리를 위해서도 특히 유용한 데이터입니다.

서버 로그 데이터의 다양한 적용 사례
기업에서는 서버 로그 데이터 분석을 통해서 크게 아래 와 같은 두 가지 질문에 대한 답을 신속하게 얻을 수 있습니다.
1. Security : 만약에 보안 누스(Security breach)가 의심스러운 상황이라면 서버 로그 데이터를 어떻게 활용하여 이러한 부분을 정확히 식별하고 원인을 지정할 수 있을 것인가?
2. Compliance : 대기업의 경우에는 다양한 법규 혹은 지침에 의해서 시스템을 관리해야 합니다. 시스템 감사와 같은 상황에서 이러한 룰(Rule)이 정확히 지켜 지고 있는 지 혹은 문제가 발생하는 지에 대해서 어떻게 식별하고 근거를 만들 수 있을 것인가?

서버 로그 분석 샘플을 실행하기 위한 프로세스
1. 대량의 로그 데이터를 수집하고, 병합하고, 하둡 클러스터로 효율적으로 이동시키기 위해서 플룸(Flume)을 설치하고 세팅한다.
2. 서버 로그 데이터를 발생시킨다.
3. 서버 로그 데이터를 엑셀로 임포트한다.
4. 엑셀 파워 뷰와 같은 툴로 로그 데이터를 시각화(Visualization)한다.
(샘플 예제에서는 다른 요소들을 배제하고 가장 핵심적인 과정만 수행합니다.)

Step 1 : 분석을 위해서 샘플 로그 파일을 받아 놓습니다.

샘플 서버 로그 파일

<-- 다운로드 받으세요.
'호튼웍스 샌드박스'로 테스트하기 위해서 압축을 풀어서 저장합니다.

Step 2 : 아파치 플룸(Flume)을 세팅하고 론칭합니다.
아파치 플룸(Flume)은 대량의 로그 데이터를 수집해서 하둡 파일시스템(HDFS)로 효율적으로 읽어 들이기 위한 분산 프레임워크라고 보시면 되겠습니다.
아키텍쳐적으로는 데이터 소스의 데이터를 다른 저장소로 스트리밍하기 위한 심플한 구조를 가지고 있습니다.
아파치 플룸은 데이터 플로우가 중간에 실패하거나 하는 상황에 대해서 빠르게 복구하는 데 중점을 두고 있어서 대량의 로그 파일을 이동하는 데 가장 적합하고 유용한 툴입니다.

플룸은 보통 다음과 같이 활용합니다.
- 다양한 데이터 소스로부터 데이터를 수집하여 하둡 파일시스템(HDFS)으로 읽어 들인다.
- 대용량의 웹로그 데이터를 실시간으로 수집한다.
- 입력되는 데이터가 하둡 파일시스템(HDFS)에 원활하게 저장할 수 없을 만한 속도로 들어 오면 자동으로 읽는 속도를 조정한다.
- 데이터 이동시의 문제를 확인해서 재실행 등의 방법으로 데이터 이동을 보장한다.

- 분산 아키텍쳐로 입력되는 데이터의 양에 따라서 수평적으로 확장할 수 있다.

대량의 로그 데이터의 이동을 ‘보장’하기 위한 안정적인 시스템을 직접 개발하는 것은 아주 어려운 일이므로 플룸(Flume)이 가진 아키텍쳐를 활용하면 대량의 데이터 소스에서 나오는 데이터 로그를 원활하게 하둡 파일시스템(HDFS)로 읽어 들일 수 있습니다.

DevGuide_image00

위 다이어그램은 일반적인 데이터가 플룸(Flume)을 통해서 흘러가는 단계를 보여 주고 있습니다.
데이터 로그를 수집하고자 하는 데이터 소스에 플룸(Flume) 에이전트가 깔리고 옮길 목적지를 지정하면 전체적인 과정을 플룸이 안정적으로 운영합니다.
플룸을 세팅하는 자세한 사항은 플룸 프로젝트 페이지에서 확인하세요.

Step 3: 플룸(Flume) 실행하기
호튼웍스 샌드박스가 윈도즈에 인스톨되었다고 가정하고 SSH로 하둡 클러스터에 접속하겠습니다.

Host Name (or IP address): 127.0.0.1
Port: 2222

그리고 ID와 패스워드를 입력해서 호튼웍스 샌드박스에 접속합니다.

아래와 같은 명령으로 실행시킵니다.

flume-ng agent -c /etc/flume/conf -f /etc/flume/conf/flume.conf -n sandbox

Step 4: 샘플 서버 로그 데이터를 발생시키기
이제 샘플 데이터를 발생시키기 위해서 간단한 파이썬(Python) 스크립트를 실행시키고 이 데이터에 대해서 HCatalog를 이용해서 테이블 뷰를 만들겠습니다.

HCatalog는 여러 번 소개드렸던 것처럼 데이터셋에 일종의 테이블 뷰(Vew)를 연관시켜서 이 데이터를 어떻게 해석할 것인지의 틀을 부여하는 모듈입니다.

먼저 샘플 예제의 ‘generate_logs.py’ 스크립트를 호튼웍스 샌드박스로 복사합니다.
예를 들어 WinSCP를 사용한다면 아래와 같이 진행하세요.

그 다음에 위의 스크립트를 실행시키면 샘플 데이터 로그 파일이 생성됩니다.

이제는 HCatalog를 이용해서 테이블 뷰를 만듭니다.

hcat -e "CREATE TABLE FIREWALL_LOGS(time STRING, ip STRING, country STRING, status STRING) ROW FORMAT DELIMITED FIELDS TERMINATED BY '|' LOCATION '/flume/events';"

생성된 테이블 뷰는 HUE와 같은 웹 관리 콘솔을 통해서 확인할 수 있습니다.

Step 5: 서버 로그 데이터를 엑셀로 임포트하기
많은 사용자들이 엑셀을 통해서 데이터를 분석하기 때문에 다른 비싼 BI툴보다도 오히려 엑셀과 연동함으로써 손쉽게 결과를 분석할 수도 있습니다.
자세한 연동 방법은 다른 블로그에서도 설명을 드린 것처럼 직관적입니다.

호튼웍스 ODBC driver는 엑셀뿐만 아니라 다른 BI툴도 기존에 익숙한 표준적인 방식으로 연동할 수 있게 해 줍니다.

Step 6: 데이터를 시각화하기
데이터를 시각화하면 네트워크 데이터를 분석해서 이슈를 포괄적으로 이해하는 데 많은 도움이 됩니다.
만약에 DOS(Denial of Service) 공격을 분석하고자 한다면 대략 다음과 같이 데이터를 검토해 볼 수 있겠습니다.

  • 나라 별로 네트워크 트래픽을 리뷰하기
  • 특정한 나라를 확대해서 자세히 살펴 보기
  • 공격 IP 어드레스의 리스트를 만들기

파이어월 로그 데이터”<firewall_logs>” 테이블을 열어서 Status 칼럼을 클릭해서 ERROR를 체크하고 나서OK를 클릭하면 인증이 되지 않은 IP어드레스의 리스트를 볼 수 있습니다.
이 데이터는 바로 파이어월에 업데이트해서 이러한 IP어드레스를 차단하는 등의 후속 작업에 활용할 수 있습니다.

이상 샘플 데모를 간단하게 설명했지만 이 과정에서 하둡이 다양한 데이터 소스의 데이터를 신속하게 처리할 수 있다는 기능은 독립적인 보안 시스템이 아니라 보안에 영향을 미칠 수 있는 모든 시스템들의 로그를 함께 분석할 수 있다는 가능성을 보여 주고 있습니다.

예제에서 본 것처럼, 파이어월의 데이터 뿐만 아니라 내부의 접속 시도, 접속 IP, 접속한 시간 및 접속해서 했던 각종 Activity 로그 등을 종합적으로 판단함으로써 ’360 degree security’에 활용될 수 있겠습니다.

이 분야는 현재 다각도로 논의되고 있고 계속 발전하는 곳이기 때문에 한국의 보안 기업들도 하둡 기반의 포괄적인 보안 솔루션의 개발이라는 목표에 힌트가 되었으면 합니다.

—————————————————————————————————————————–
ASD Technologies는 호튼웍스(Hortonworks Inc)와의 Consulting Partnership을 통해서
빅데이터에 대한 도입 컨설팅 및 구축을 도와드리고 있습니다.

ASD Technologies는 펜타호(Pentaho Inc)와의 Consulting and Distribution Partnership을 통해서
빅데이터에서 비즈니스 인사이트를 얻기 위한 방법을 함께 모색하고 있습니다.

호튼웍스 파트너 홈페이지
ASD Technologies Korea 홈페이지

Contact Point : sunung@asdtech.co
—————————————————————————————————————————–

실시간 하둡의 기반 스톰(Storm)의 컨셉과 적용 방법 (The concept of realtime hadoop with storm)

This article is based on Hortonworks Partner Content

그 동안 실시간 처리 시스템 혹은 리얼타임 시스템으로서의 하둡에 대해서 여러 가지 기사를 통해서 소개를 드렸습니다.
엔터프라이즈 레벨 실시간 시스템의 최강 조합 (하둡 + 인메모리 데이터베이스)
리얼타임 하둡의 가능성
실시간 하둡 데모와 간단한 테스트 코드

이상의 글에서 설명드렸던 것처럼 YARN(Yet Another Resource Negotiator)의 도입으로 기업이 데이터를 어떤 방식으로 처리할 것인지의 니즈에 맞춰서 처리 방식을 배치, 인터랙티브 SQL, 온라인, 스트리밍 등 다양하게 적용할 수 있도록 진화되었습니다.
그 중에서도 스트리밍 되는 대량의 이벤트를 실시간으로 처리하는 시스템은 하둡의 가능성을 극적으로 높혔다는 것에 대부분 동의할 것으로 생각합니다.

센서나 각종 서버 등에서 발생하는 대량의 이벤트 로그는 그 데이터 포맷이 정형화되어 있지 않다는 점과 대량으로 발생한다는 두 가지 측면에서 하둡을 합리적인 옵션으로 고려할 만한 결정적인 이유를 만들고 있습니다.
그래서 이러한 실시간 처리 시스템을 가능하게 하는 스톰(Storm)의 컨셉과 설계할 때 어떤 부분에 주안점을 두었는 지를 좀 더 자세히 살펴 보려고 합니다.

스톰-YARN의 결합은 하둡클러스터에서 하둡 파일시스템(HDFS)뿐만 아니라 HBase의 리소스도 함께 사용할 수 있게 해 주기 때문에 실시간 시스템을 어떻게 적용할 지에 대해서 많은 유연성을 제공합니다.

Elasticity
스톰을 설계할 때 염두해 두었던 가장 핵심적인 설계 철학은 탄력성(Elasticity)를 부여하는 것이었다고 합니다.
(It provides a huge potential for elasticity. Real-time processing will rarely produce a constant and predictable load.)

즉, 실시간 처리 시스템은 시스템에 대한 로드를 미리 예상하는 것이 어렵기 때문에 기반 파일시스템 및 처리 시스템이 확장성을 가져야 한다는 점입니다.
하둡은 데이터 노드를 신속하게 확장함으로써 ‘용량’ 뿐만 아니라 ‘처리 능력’도 확장 가능한 시스템이기 때문에 하둡과 궁합이 맞는 시스템으로 판단했습니다.
하둡을 YARN에서 운용함으로써 시스템의 로드가 피크를 향해 가면 그 동안 배치 처리에 운용되던 리소스를 빌려 와서 처리를 하고 결과가 마무리 되면 다시 다른 작업에 돌려 줄 수 있습니다.

Launch Storm Cluster
스톰(Storm)은 이제 하둡 클러스터 관리 툴인 Ambari와 통합이 되어 있기 때문에 손쉽게 인스톨할 수 있습니다.
인스톨 방법은 위 링크에서 확인하시기 바랍니다.

실제로 스톰을 론칭하는 것은 간단합니다.
storm-yarn launch
여기서 ‘storm-yarn.yaml’은 스톰의 동작을 정해 놓기 위한 컨피규레이션(Configuration) 파일입니다.
예를 들어, 이 파일에는 ‘스톰 관리 모듈(Storm Supervisor)’를 처음에 몇 개로 론칭할 지를 지정하는 ‘master.initial-num-supervisors’ 혹은 각 스톰 관리 모듈을 위해서 할당해야 하는 메모리 사이즈를 지정하는 ‘master.container.size-mb’ 등과 같은 퍼래미터(Parameter)를 지정할 수 있습니다.
* Storm Supervisor는 실제 Worker Node에 생성되면 실제 부여된 태스크(task)를 관리하며, 맵리듀스의 Task Tracker와 비슷한 역할을 합니다.

yarncontainer

이 명령어를 실행시키면 아래와 같은 과정을 통해서 론칭이 진행됩니다.
1. 스톰-YARN은 YARN의 RM(Resource Manager)에게 스톰 AM(Application Master)을 론칭하기 위한 리소스를 요청합니다.
2. 스톰 AM은 각각 ‘스톰 님버스 서버(Storm Nimbus Server)’와 ‘스톰 UI(Storm UI) 서버’를 론칭합니다.
스톰 님버스 서버는 일종의 관리 서버로서 잡트랙커(Job Tracker)와 비슷하게 실행 코드를 클러스터에 분배하는 역할을 합니다.
스톰 UI 서버는 웹 인터페이스로 스톰을 관리하기 위한 서버로 이해하시면 됩니다.
3. 스톰 AM은 각 Worker Node에 스톰 관리 모듈(Storm Supervisor)를 실행하기 위한 리소스를 요청해서 론칭합니다.

그래서 ‘스톰 님버스 서버’가 각 태스크를 ‘스톰 관리 모듈’에 분배하고 ‘스톰 관리 모듈’은 부여된 태스크를 관리하는 구조로 요약할 수 있습니다.

Execute Storm Topologies
여기서 ‘스톰 토폴로지(Storm Topologies)’는 이벤트 스트림을 발생시키는 기능과 처리하는 기능을 하나의 워크플로우로 묶어 놓은 실행 코드로 생각하면 되겠습니다.

yarn2

위 다이어그램에서 보는 것처럼, 스톰 님버스 서버가 실행해야 할 태스크를 Storm superviser에 할당하면 Storm superviser는 실제 실행할 프로세스를 생성해서 ‘스톰 토폴로지’를 실행합니다.
그리고 Storm superviser는 실행 과정을 주기적으로 스톰 님버스 서버에게 보고합니다.

실제로 스톰을 실행하는 실행 코드와 데모는 아래 링크에서 다운로드해서 실행해 보면 전체적인 프로세스를 쉽게 이해할 수 있을 것입니다.
스톰을 이용한 간단한 워드카운트 데모
운송 회사의 예를 가지고 스톰을 이벤트 스트리밍 처리에 활용하는 예제 샘플

스톰-YARN은 하나의 하둡 클러스터에서 실시간 스트리밍을 처리할 수 있는 기반을 제공함으로써 그 활용 범위는 이미 여러 가지 사례를 통해서 적용되고 있습니다.

실시간 하둡의 사례에 대해서는 앞으로도 지속적으로 소개하도록 하겠습니다.

—————————————————————————————————————————–
ASD Technologies는 호튼웍스(Hortonworks Inc)와의 Consulting Partnership을 통해서
빅데이터에 대한 도입 컨설팅 및 구축을 도와드리고 있습니다.

ASD Technologies는 펜타호(Pentaho Inc)와의 Consulting and Distribution Partnership을 통해서
빅데이터에서 비즈니스 인사이트를 얻기 위한 방법을 함께 모색하고 있습니다.

호튼웍스 파트너 홈페이지
ASD Technologies Korea 홈페이지

Contact Point : sunung@asdtech.co
—————————————————————————————————————————–

솔루션을 하둡과 연동한다는 것의 의미와 방법 (SAP HANA case)

This article is based on Hortonworks Partner Content

최근에 레드헷, EMC, SAP, DELL 등의 다양한 벤더들이 하둡과의 연동을 발표하고 있습니다.
그 동안 단편적으로 하둡과 연동해서 기존의 다양한 분석툴을 활용하는 방법에 대해서는 소개를 드렸습니다.
엔터프라이즈 레벨 실시간 시스템의 최강 조합 (하둡 + 인메모리데이터베이스)
하이브를 통해 다른 분석툴과 연동하는 방법
하둡과 SAP 제품들을 연동하는 방법
SQL 서버에 있는 데이터를 하둡으로 임포트하는 방법

그렇다면 자사의 솔루션이 하둡과 연동한다는 것은 어떤 의미일까요?
하둡 2,0의 두 가지 요소인 YARN(Yet Another Resource Negotiator)와 하둡 파일시스템(HDFS) 2.0의 도입으로 다른 솔루션과 연동할 수 있는 ‘포인트’가 다양해 지고 연동 방법도 각 시스템의 구축 형태에 맞게 비교적 자유롭게 선택할 수 있습니다.

그래서 이번에는 SAP HANA라는 인메모리 데이터베이스(In-Memory Database)의 관점에서 호튼웍스의 HDP 2.0과 연동하는 방법과 그 의미에 대해서 조금 자세히 살펴 볼까 합니다.
다양한 사례 중에서 SAP HANA를 선택한 이유는 단순히 HIVE를 이용해서 ODBC Connector로 연결하는 방법처럼 독립적인 연동 방식이 아니라 다양한 연동 포인트에서 마치 하나의 플랫폼처럼 연동하기 위해서 많은 고려를 하고 있다는 측면때문입니다.

조만간 한국의 다양한 기업용 솔루션들도 하둡과의 연동을 통해서 빅데이터를 지원하는 솔루션으로 포지셔닝하는 데 있어서 많은 참고가 되지 않을까 싶습니다.

먼저 SAP HANA가 하둡과의 연동을 위해서 가져 가려고 했던 목표는 “다양한 데이터 소스에서 발생하는 대량의 데이터를 실시간으로 처리하기 위한 플랫폼”입니다.
즉, SAP HANA는 인메모리 데이터베이스이므로 기본적으로 메모리에서 연산이 이루어지는 실시간성을 가지고 있지만 그 약점은 필연적으로 대량의 데이터를 ‘전처리’해서 메모리에 로딩한 이후에 그 진정한 힘을 발휘할 수 있다는 점입니다.

만약 하둡이 가진 대량의 데이터를 저장하고 비교적 실시간으로 그 데이터의 테이블 뷰를 만들어 내는 능력을 SAP HANA에서 활용할 수 있다면 아키텍쳐적으로 빅데이터에도 대응할 수 있는 실시간 플랫폼이 될 수 있을 거라는 계산입니다.

그래서 아래와 같은 연동 포인트를 통해서 하둡을 충분히 이용하고자 했습니다.
맵리듀스(MapReduce)의 다양한 패턴들을 빅데이터에 적용하기
일반적으로 맵리듀스는 5가지 형태의 패턴을 통해서 비정형 데이터를 SAP HANA와 같은 관계형 데이터베이스가 친숙한 형태로 데이터를 가공할 수 있습니다.
- Optimized repartition joins
- Implementing a semi-join
- Implementing a secondary sort
- Sorting keys across multiple reducers
- Reservoir sampling
각각의 패턴에 대한 자세한 방법 및 예제는 아래 링크를 활용하기 바랍니다.

예를 들어, Optimized repartition joins에 대해서만 간단히 설명드리겠습니다.
아래와 같이 2개의 텍스트파일이 있다고 가정해 봅니다.
1,Stephanie Leung,555-555-5555
2,Edward Kim,123-456-7890
3,Jose Madriz,281-330-8004
4,David Stork,408-555-0000

3,A,12.95,02-Jun-2008
1,B,88.25,20-May-2008
2,C,32.00,30-Nov-2007
3,D,25.02,22-Jan-2009
맨 앞에 있는 칼럼이 고객 ID라고 가정해서 맵리듀스를 통해서 조인을 시키면 아래와 같은 결과를 ‘미리’ 얻을 수 있습니다.
1,Stephanie Leung,555-555-5555,B,88.25,20-May-2008
2,Edward Kim,123-456-7890,C,32.00,30-Nov-2007
3,Jose Madriz,281-330-8004,A,12.95,02-Jun-2008
3,Jose Madriz,281-330-8004,D,25.02,22-Jan-2009
즉, SAP HANA가 메모리에서 최종적으로 결과를 얻기위해서 꼭 필요한 데이터셋을 미리 하둡을 통해서 구성해 놓음으로써 연동을 손쉽게 하는 방법입니다.

하둡 파일시스템의 데이터를 실시간으로 스트리밍하기
아무리 빠른 데이터베이스라도 결국에는 파일시스템에서 빠르게 읽어 들이지 못 하면 그 효과는 반감될 것입니다.
그래서 SAP HANA는 아래와 같은 4가지 방법을 이용하여 하둡 파일시스템의 데이터셋을 실시간으로 스트리밍합니다.
- Using Avro to store multiple small files
- Picking the right compression codec for your data
- Compression with HDFS, MapReduce, Pig, and Hive
- Splittable LZOP with MapReduce, Hive, and Pig.
각각의 방법에 대한 자세한 적용 방법은 HDFS 문서를 참조하시기 바랍니다.

첫 번째에서 활용하는 Avro는 하둡에서 사용하는 데이터 시리얼라이제이션(Serialization) 모듈입니다.
즉, 일반적으로 데이터 소스에서 발생하는 로그파일은 작은 용량의 파일이 대량으로 생성되는 경우가 많습니다.
이러한 작은 용량의 파일들을 하나의 큰 파일처럼 시리얼라이제이션(Serialization)해서 하둡 파일시스템(HDFS)에 저장함으로써 처리 속도 및 효율성을 크게 향상시킬 수 있으며 SAP HANA에서도 마치 하나의 큰 ‘테이블’처럼 다룰 수 있게 됩니다.

SAP HANA / Hadoop Integration Process
그래서 하둡을 SAP HANA와 연동하기 위해서 다음과 같은 프로세스를 구성했습니다.

hana-integration

- 정형 및 비정형 데이터를 하둡 파일시스템(HDFS)에 분산시켜서 저장하기
- 하둡의 다양한 에코시스템을 활용하여 이러한 데이터를 ‘전처리’하기
- 다양한 데이터셋을 미리 ‘조인’하여 ‘하둡/HANA Connector’로 SAP HANA에 적재하기
- SAP HANA에서 스토어드 프로지셔(Stored Procedure)를 적용하여 실시간으로 처리하기
- SAP Business Objec와 같은 BI툴을 활용하여 실시간으로 분석하기

hana

그 다음에는 관리툴을 통해서 하둡의 기능을 활용할 수 있도록 통합을 하는 과정으로 하둡의 데이터셋도 다른 데이터베이스처럼 인식할 수 있도록 합니다.
즉, 데이터 페더레이션(Data Federation)을 직관적으로 하기 위한 관리툴을 제공함으로써 SAP HANA의 관점에서 하둡 데이터를 기존의 데이터와 함께 처리할 수 있도록 합니다.

이상의 과정은 어떤 솔루션이 하둡과 연동하기 위한 접근 방법과 프로세스를 SAP HANA를 통해서 설명을 드렸습니다.
꼭 SAP HANA가 아니더라도 다양한 회사들이 가진 기업용 솔루션과 하둡을 연동하기 위해서 고려해야 할 점과 프로세스라고 생각하므로 이 부분을 잘 검토해서 빅데이터를 지원하는 기업용 솔루션으로 포지셔닝한다면 여러 가지 다양한 기회를 얻을 수 있는 힌트가 되리라고 생각합니다.

—————————————————————————————————————————–
ASD Technologies는 호튼웍스(Hortonworks Inc)와의 Consulting Partnership을 통해서
빅데이터에 대한 도입 컨설팅 및 구축을 도와드리고 있습니다.

ASD Technologies는 펜타호(Pentaho Inc)와의 Consulting and Distribution Partnership을 통해서
빅데이터에서 비즈니스 인사이트를 얻기 위한 방법을 함께 모색하고 있습니다.

호튼웍스 파트너 홈페이지
ASD Technologies Korea 홈페이지

Contact Point : sunung@asdtech.co
—————————————————————————————————————————–