Tags

호튼웍스 하둡을 검색엔진과 연동하는 방법과 아키텍쳐

This article is based on Hortonworks Partner Content and Expertise

그 동안 호튼웍스 하둡과 다른 솔루션을 연동해서 기업에 최적화된 데이터 플랫폼을 구축하기 위한 사례들을 많이 소개해 왔습니다.

자사의 미들웨어를 하둡과 연결한다는 것의 의미와 방법
호튼웍스 하둡과 NoSQL을 연동하는 방법
엔터프라이즈 레벨 실시간 시스템의 최강 조합 (하둡 + 인메모리 데이터베이스)
HIVE를 통해 다른 분석툴과 연동하는 방법
엑셀로 하둡 데이터를 간단하게 연동하는 방법

이상과 같이 하둡은 기존의 데이터 처리 시스템을 대체하는 부분보다는 기존의 엔터프라이즈 데이터 시스템을 보완하면서 확장성 있게 다양한 데이터셋을 처리할 수 있는 플랫폼이라는 관점에서 보는 것이 좋겠다는 의견입니다.

최근에 하둡 2.0이 YARN(Yet Another Resource Negotiator)를 도입하면서 다른 솔루션과 연동할 수 있는 포인트가 다양해 졌기 때문에 기존의 솔루션이 가진 특성이나 컨셉에 최적화된 연동 방법을 고민하고 아키텍쳐를 구성하는 것이 필수적인 요건이 되었습니다.

이번에는 검색엔진과의 연동을 통해서 대량의 데이터를 인덱싱(Indexing)하여 필요한 때에 실시간으로 데이터를 분석하고 검증할 수 있는 방법에 대해서 소개해 드리려고 합니다.
이미 빅데이터와 검색엔진과의 연동을 통한 효과는 다른 많은 기업들에 의해서 검증이 되고 있습니다.
예를 들어, 스플렁크(Splunk)는 이른바 ‘머신 로그 데이터의 구글’이라는 별명답게 데이터 센터에서 생성되는 많은 머신 로그들을 인덱싱하여 문제가 있는 부분을 실시간으로 식별하고 문제를 해결하는 데 커다란 역할을 하고 있습니다.
최근에는 하둡과의 커텍터(Connector)를 제공하여 하둡과의 연동을 강화화고 있는 추세이니 관련 자료를 참조해 보면 좋은 힌트를 얻을 수 있겠습니다.

오늘은 ElasticSearch라는 빅데이터 검색 엔진과 호튼웍스 하둡의 연동 시나리오를 통해서 검색 엔진과의 연동을 통해서 대량의 데이터셋에 대한 실시간 검색과 데이터 접근 방법에 대한 사례를 살펴 보겠습니다.

아래 아키텍쳐는 ElasticSearch와 하둡이 연동되는 구성도이지만 일반적인 검색엔진 솔루션과 하둡을 연동하는 데도 비슷한 방법이 적용됩니다.

es1

검색엔진
검색엔진은 새로운 문서(Documents)를 거의 실시간으로 인덱싱해서 사용자가 키워드를 쿼리(Querying)했을 때 바로 접근할 수 있도록 하는 것이 주 역할입니다. 이 예에서 쓰인 ElasticSearch도 역시 아파치의 루씬(Lucene)을 기반으로 해서 인덱스 파일을 클러스터에 분산시켜서 확장성 있게 저장하는 기능을 지원합니다.
만약에 인덱스를 저장하는 노드에 문제가 생길 경우에는 자동으로 다른 노드로 그 인덱스를 저장하여 분산 환경에서도 문제가 없도록 관리합니다.
위 아키텍쳐에서는 하둡 파일시스템(HDFS)를 이용해서 인덱스 파일을 분산시켜서 저장하는 모델을 가져 갔습니다.
컨피규레이션(Configuration)에서는 각 인덱스를 몇 개의 부분(Shards)으로 나눌 것인지와 이 부분(Shards)을 몇 개까지 복제할 것인 지 등을 설정하여 클러스터를 관리할 수 있습니다.

플룸(Flume)
플룸(Flume)은 여러 번 소개를 드렸던 하둡 에코 시스템의 컴포넌트입니다.
많은 데이터 소스에서 로그 데이터를 수집하여 안정적으로 스트리밍(Streaming)하여 하둡 파일시스템(HDFS)에 저장하는 기능을 담당합니다.
위 예에서는 각 머신 혹은 서버에 인스톨되어 있는 에이전트(Agent)를 통해서 Flume Collector가 데이터를 수집한 다음에 ‘저장’을 하기 위한 스트리밍 모듈과 ‘인덱싱’을 위한 스트리밍 모듈에서 각각 데이터를 처리하도록 데이터 파이프라인(Data Pipeline)을 만들었습니다.
하둡 파일시스템(HDFS)에 저장된 데이터는 이 후에도 HIVE/Pig/MapReduce 등의 처리툴을 통해서 검색엔진에서 언제든지 활용 가능하도록 구성되었습니다.

시각화 및 검색 데이터 인터페이스
이 예제에서는 Kibana라는 웹브라우저 기반의 분석 및 검색 엔진 인터페이스를 제공하는 툴을 통해서 결과를 검색하도록 구성했습니다.
Kibana도 역시 아파치 오픈 소스 프로젝트이고 특히 루씬(Lucene)과 같은 검색엔진에 대한 인터페이스를 제공하고 그 결과를 시각화하는 데 특화된 툴입니다.

es4

대용량의 데이터셋에 검색 기능을 제공하는 것은 특히 데이터 센터에서 각종 서버 및 네트워크의 문제를 바로 식별하는 데 이미 검증이 된 사례입니다.
그 외에도 보안 및 각종 Fraud 문제에 대한 접근 방법으로도 많은 주목을 받고 있습니다.
완전히 비정형 데이터라고 볼 수 있는 문서에 대한 가장 효과적인 접근 방법이라는 측면에서도 하둡 에코 시스템과의 연동을 통해서 이 후에 ECM 등의 다른 분야로도 확장될 수 있는 영역이라는 생각입니다.

ElasticSearch와 하둡의 연동에 대한 세부 사항‘을 참조하시면 다른 검색엔진을 하둡과 연동하기 위한 많은 팁을 얻을 수 있습니다.

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

하둡을 통해 지리정보 데이터를 처리하는 방법 (Processing Geolocation Data)

This post is based on Hortonworks Blog

최근에 스마트폰이 일상화되면서 가장 많은 양으로 발생하고 있는 데이터 중의 하나라 지리 정보 데이터(Geo-location Data)일 것입니다.
이전까지는 워낙 대량으로 실시간 생산되는 데이터라는 측면 때문에 이러한 데이터를 저장하고 처리해서 새로운 가치를 얻으려는 노력은 극소소의 인터넷 기업들 외에는 시도하기 힘들었습니다.

하지만 이러한 지리 정보 데이터(Geo-location Data)는 하둡이라는 시스템을 통해서 각종 자산의 이동을 추적(Asset Tracking)하는 단순한 용도에서 부터 최적화(Optimization)을 위한 예측 모델링(Predictive Modeling)에 이르기까지 광범위한 활용도를 가진 좋은 데이터 소스입니다.

아래 영상은 어떻게 운손회사가 지리 정보 데이터를 분석해서 연료 소비(Fuel costs)를 줄이고 운전수의 안전을 높히는 데 이용될 수 있는 지를 보여 줍니다.

이 데모를 통해서 지리 정보 데이터를 활용하기 위한 여러 가지 힌트와 하둡 에코시스템의 각 모듈을 이용하는 방법을 이해할 수 있습니다.
1. 플룸(Flueme)을 이용하여 지리 정보 데이터(Geo-location Data)를 스트리밍하여 하둡 파일시스템에 저장하는 방법
2. 스쿱(Sqoop)을 이용하여 관계형 데이터베이스와 같은 정형화된 정보를 하둡 파일시스템에 저장하는 방법
3. HCatalog를 이용하여 Raw Data를 데이터베이스처럼 볼 수 있는 뷰(View)를 만드는 방법
4. HIVE와 Pig를 사용하여 데이터를 정제하는 방법
5. 데이터를 ODBC Connector를 이용하여 엑셀로 보내서 분석하는 방법

여기서 설명하는 플룸(Flume), 스쿱(Sqoop)은 데이터 소스로부터 HDFS로 데이터를 저장하기 위한 ETL(Extraction, Transformation and Load) 모듈의 일종이라고 이해하면 되겠습니다.

실제로 하둡 프로젝트를 진행할 때는 어떻게 분산되어 있는 다양한 데이터 소스로부터 하둡 파일시스템(HDFS)에 데이터를 잘 저장할 것인가 하는 부분은 아주 중요합니다.
이 부분을 중점적으로 본다면 실제 프로젝트에 어떻게 적용되는 지에 대한 좋은 힌트를 얻을 수 있습니다.

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

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

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