Tags

하둡 데이터의 거버넌스(governance) 체계를 자동화하는 방법 (Apache Palcon)

This article is based on Hortonworks Partner Content and Expertise

하둡을 기업 환경에서 본격적으로 수용하기 위해서 고려해야 할 점들을 많이 소개하고 있습니다.
기업에서 하둡을 도입할 때 반드시 고려해야 할 점
하둡 기반의 기업용 데이터 관리 시스템을 쉽게 구축하는 방법

하둡의 데이터도 기업의 IT 거버넌스(Governance)의 입장에서 봤을 때는 정책이 적용되고 관리되어야 하는 중요한 자산으로 파악을 해야 합니다.
하둡 에코 시스템의 입장에서도 하둡이 기업에 본격적으로 도입을 하기 위해서는 이러한 데이터 관리 정책을 적용하고 추적할 수 있는 방법이 핵심이라는 점을 인지하고 있습니다.

그래서 현재는 아파치 팔콘(Apache Palcon)이라는 프로젝트를 통해서 이러한 기업의 하둡 데이터 거버넌스 니즈를 수용하고자 하고 있습니다.
팔콘은 비교적 새로 하둡 에코시스템에 편입된 컴포넌트이지만 이미 인모비(Inmobi)라는 온라인 광고 회사에서 2년 이상 활용되고 진화되어 온 데이터 관리 시스템입니다.
호튼웍스는 호튼웍스 데이터 플랫폼(HDP) 2.1 버전에 정식으로 팔콘을 통합할 계획을 가지고 있으므로 HDP에 통합된 형태로 이용할 수 있게 되었습니다.

아파치 팔콘은 한 마디로 데이터 관리 정책을 정의하고 스케쥴링하고 모니터링하는 데이터 거버넌스 엔진입니다.
(Apache Falcon is a data governance engine that defines, schedules, and monitors data management policies.)

falc1

다이어그램을 보면 팔콘은 기본적으로 다음 세 가지를 수행하기 위해서 다른 하둡 에코시스템을 이용하고 있습니다.
- 데이터 파이프라인(Data Pipeline)을 정의하기
- 암바리(Ambari)를 이용해서 이러한 데이터 파이프라인의 처리 현황을 모니터링하기
- 데이터 파이프라인의 처리 흐름을 추적하기

팔콘은 이러한 복잡한 처리 과정을 단순화하기 위해서 엔터티(Entity)를 정의하는 방법으로 정책을 지정하고 Apache Oozie의 워크플로우를 통해서 스케쥴링하는 방법으로 복잡한 거버넌스 절차를 자동화합니다.

정책을 정의하기 위한 엔터티는 세 가지로 이루어져 있습니다.

falc3

여기서 클러스터(Cluster) 엔터티는 팔콘이 이용하는 모든 서비스 인터페이스를 지정하는 상위 엔터티이고 데이터셋을 지정하는 피드(Feed)와 스케쥴링을 지정하는 프로세스(Process)는 이 클러스터 엔터티에 의존하게 됩니다.
그래서 항상 클러스터 엔터티를 먼저 지정하고 다른 두 엔터티를 지정하는 형태로 설정을 합니다.

각 정책 마다 어떤 데이터셋이 적용 대상인지에 대한 피드 엔터티를 지정하고 어떤 파이프라인을 통해서 처리할 것인지를 프로세스 엔터티에 지정하여 간단하게 데이터 거버넌스 정책을 자동화할 수 있습니다.

falc2

이렇게 정의된 엔터티들의 정책은 워크플로우 엔진에 Oozie를 통해서 실행이 되고 처리 현황은 다시 팔콘으로 피드백이 됩니다.

다음에는 구체적으로 어떻게 정책을 적용할 수 있는 지 실사례들을 중심으로 살펴 보도록 하겠습니다.

—————————————————————————————————————————–
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
—————————————————————————————————————————–

웹클릭 데이터를 하둡으로 분석하는 방법 (Processing Web Clickstream Data)

This article is based on Hortonworks Partner Content

아마 현재 인터넷 기업들을 중심으로 가장 보편적으로 사용되는 있는 하둡의 용도는 바로 웹클릭 데이터의 처리인 것 같습니다.
트위터, 페이스북 등의 기업들은 물론이고 최근에는 이베이 등의 온라인 전자 상거래 기업들도 적극적으로 도입하는 유스케이스입니다.

그 이유는 웹클릭 데이터는 비정형 데이터의 속성도 가지고 있으면서 이 데이터를 잘 처리하고 그 결과를 사이트에 적용함으로써 즉각적으로 효과를 볼 수 있는 영역이기 때문이라고 봅니다.
예를 들면, 전자 상거래 기업의 경우 웹클릭 데이터를 바탕으로 고객들을 좀 더 정밀하게 세그멘테이션(Segmentation)할 수 있습니다.

아래 동영상은 온라인 전자 상거래 기업이 하둡을 활용하여 어떻게 구매까지의 경로를 최적화하고 구매율을 높히는 지에 대한 데모입니다.

이 데모에서 다음과 같은 사항들을 쉽게 설명해 주고 있습니다.
1. NFS(Network File System)를 통해 웹클릭 데이터를 로드하는 방법
2. HCatalog를 활용하여 데이터에 대해 테이블과 같은 뷰(View)를 적용하는 방법
3. HIVE를 통해 결과값을 쿼리하는 방법
4. ODBC Connecor를 통하여 엑셀을 통해 결과값을 분석하는 방법

가장 일반적인 유스케이스이지만 효과가 높은 사례이므로 온라인 및 모바일 기업의 경우에는 좋은 힌트를 얻을 수 있을 것입니다.

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

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

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

SQL 서버에 있는 데이터를 하둡으로 임포트하는 방법(Import from Microsoft SQL Server into the Hortonworks Sandbox using Sqoop)

This article is based on Hortonworks Partner Content

기업 입장에서 하둡 클러스터를 구축하고 실제로 어떤 데이터를 분석할 것인가를 검토해 보면, 먼저 기존에 다양한 관계형 데이터베이스(Relational Database)에 저장되어 있는 데이터를 빼 놓고는 의미 있는 결과를 얻지 못 할 수도 있습니다.

기존에 관계형 데이터베이스에 저장된 데이터들은 어느 정도 정제되고 관리되는 데이터 소스이기 때문에 하둡 클러스터에 저장된 비정형 데이터들과 함께 검토함으로써 기업에 진정으로 의미 있는 인사이트를 얻어 낼 수 있을 것입니다.

아래는 스쿱(Sqoop)이라고 하는 하둡 에코시스템의 모듈을 가지고 마이크로소프트 SQL Server의 데이터를 하둡 클러스터로 옮기는 방법을 설명드립니다.
소스 코드는 이 곳에서 다운로드 하십시오.

스쿱(Sqoop)은 하둡과 관계형 데이터베이스 사이에서 대량의 데이터를 옮기는 것을 자동화해주는 툴입니다.
스쿱을 가지고 데이터를 옮기기 전에 SQL Server에서 몇 가지 세팅을 해 줄 필요가 있습니다.

SQL 서버에서 로그인 계정을 세팅합니다. (Create a login using SQL Server Authentication)
이 계정을 만들 때는 데이터에 접근하기 위한 충분한 권한(DBA 권한)을 부여하는 것이 필요합니다.

SQL Server에서 보안 세팅을 아래와 같이 진행합니다.
위에서 만든 로그인 계정이 인증될 수 있도록 아래와 같이 SQL Server Authentication을 추가하는 것이 필요합니다.

SQL Server에서 네트워크 프로토콜을 세팅합니다.
스쿱(Sqoop)이 SQL Server와 통신하기 위해서 TCP/IP 프로토콜을 사용하도록 세팅을 할 필요가 있습니다.
만약에, 현재 디폴트 프로토콜이 TCP/IP 이외의 프로토콜이면 이 시점에서 TCP/IP 프로토콜을 이용하도록 세팅하세요.
이 작업은 SQL Server의 “Configuration Manager”에서 세팅할 수 있습니다.

아래와 같이 TCP/IP 프로토콜을 통해서 통신할 수 있는 지 확인해 보시기 바랍니다.

이 예제에서 나온 ‘IP 어드레스’와 ‘TCP 포트 넘버’를 통해서 스쿱(Sqoop)이 SQL Server에 접근하게 됩니다.

호튼웍스 샌드박스를 설치해서 루트로 로그인하고 “SQL Server JDBC Driver”를 세팅합니다.
먼저 /usr/loca 디렉토리로 이동합니다.
‘SQL Server JDBC Driver’를 다운로드하고 압축을 풉니다.

curl -L 'http://download.microsoft.com/download/0/2/A/02AAE597-3865-456C-AE7F-613F99F850A8/sqljdbc_4.0.2206.100_enu.tar.gz' | tar xz

아래와 같이 폴더가 생성되었는 지 확인합니다.

이제 이 드라이버를 스쿱(Sqoop) 라이브러리로 옮깁니다.

cp sqljdbc_4.0/enu/sqljdbc4.jar /usr/lib/sqoop/lib

이제 호튼웍스 샌드박스를 리스타트하면 마무리가 됩니다.

스쿱(sqoop)을 통해서 데이터 이동하기
아래와 같이 스쿱(Sqoop)이 SQL Server에 연결 가능한 지를 체크해 봅니다.

이제 스쿱(Sqoop)의 임포트(Import) 명령을 통해서 아래와 같이 특정 데이터베이스의 특정 테이블을 임포트합니다.

이제 실제로 테이블이 임포트되어 있는 지 확인해 보면 되겠습니다.

이상과 같이 스쿱(Sqoop)이라는 툴을 통해서 데이터베이스의 정보를 대량으로 하둡 클러스터로 이동시킬 수 있습니다.
물론 SQL Server만이 아니라 JDBC를 지원하는 대부분의 데이터베이스를 임포트할 수 있습니다.

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

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

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

Page 1 of 212