Monthly Archives: 10월 2014

about Apache Sqoop

RDBMS로 부터 데이터를 수집하기 위해 선택한 오픈 소스인 Apache Sqoop에 대해 정리하고자 한다.

실 서비스 환경에서는  아래와 같은 경우가 있을 것이다.

  • 별도의 로그 수집 시스템 및 데이터 저장소가 마련되지 않아 Oracle, MySQL 등의 RDBMS에 로그를 저장하는 경우. 즉, RDBMS로 계속 누적되어 비대해진 데이터를 분석하기에는 비용과 시간이 많이 소요되어 Hadoop과 같은 분산환경의 저장소로 옮겨 분석할 필요가 발생함
  • 로그 뿐 아니라, 메타성 데이터는 대부분 RDBMS에 저장되어 있는데, 이 RDBMS의 메타 데이터를 Hadoop, Hive 등으로 옮겨야 하는 경우.
  • 반대로, 분산 환경의 Hadoop, Hive 등에서 분석된 결과를 API형태가 아닌 원격의 RDBMS로 전송할 경우가 발생함.

위와 같은 경우 중간 과정없이 손 쉽게 옮길 수 있는 방안을 고민하게 되는데. 이럴때 가장 유용한 오픈 소스가 Apache Sqoop이다. 

Apache Sqoop은 Sql to Hadoop의 의미로서, Apache Hadoop과 RDBMS 사이에 bulk data를 효율적이고 쉽게 옮길 수 있도록 디자인 된 도구이다. 

Sqoop은 2009년 첫 버전이 나온 후 2012년에 Apache Top Level Project가 되어 지속 발전 중이다. 현재 Apache Sqoop은 두 가지 버전으로 발전되고 있는데, Sqoop1 이라 불리는 클라이언트 방식과 Sqoop2라 불리는 기존 Sqoop1방식에 추가로 Server side 방식이 추가된 버전이다.

Sqoop1 / Sqoop2 간단비교 

  Sqoop1 Sqoop2
Overview
  • Client-side Install
  • Connectors 가 Local에 설치되어야 함
  • JDBC Driver는 접속하는 Local마다 설치필요
  • CLI(Command Line Interface)
  • Server-side install
  • Connector가 필요한 서버 한 곳에만 설치하여 연결 가능
  • 즉, JDBC Driver가 한 곳만 설치하면 됨
  • CLI 접속 외에도 Web 및 REST API를 통한 접속 가능
  • Workflow Manager인 Apaceh Oozie와 Rest API를 활용하여 결합이 용이함
Last Version 1.4.5 1.99.3
Outline sqoop-1-Architecture sqoop-2-Architecutre

 Sqoop1과 Sqoop2의 가장 큰 변화는 서버 방식의 추가라 할 수 있으며, Sqoop1에서 불편(?)했던 JDBC Driver를 서버 한 곳에만 설치하면 되는 등 편의성이 높아 진점, 그리고, HTTP REST를 활용하여 보다 더 Apache Oozie와 integration 이 용이해 진 점이라 할 수 있다.

Sqoop2의 3가지 Design Goal에서 그 내용을 확인할 수 있다.

  • Ease of Use
  • Ease of Extension
  • Security and Separation of Concerns

Sqoop 1,2 어느 버전이라도 별 어려움 없이 쉽게 적용할 수 있을 것이며, 아직 Sqoop1 으로도 아직 불편함은 없다.

Sqoop CLI(Command Line Interface)를 통해 제공되는 명령어는 아래와 같으며, 각 Command의 옵션들은 sqoop help COMMAND로 확인 가능하다.

usage: sqoop COMMAND [ARGS]

Available commands:
  codegen            Generate code to interact with database records
  create-hive-table  Import a table definition into Hive
  eval               Evaluate a SQL statement and display the results
  export             Export an HDFS directory to a database table
  help               List available commands
  import             Import a table from a database to HDFS
  import-all-tables  Import tables from a database to HDFS
  job                Work with saved jobs
  list-databases     List available databases on a server
  list-tables        List available tables in a database
  merge              Merge results of incremental imports
  metastore          Run a standalone Sqoop metastore
  version            Display version information

See 'sqoop help COMMAND' for information on a specific command.

Reference

오픈 소스 수집기 비교

 데이터 분석을 하기 위해서는 가장 먼저 고려해야 할 시스템이 수집 시스템, 즉, Data Collector 이다. 수집은 간단해 보이지만, 데이터 처리 플랫폼 전체의 아키텍처에 있어서 가장 중요한 요소이며 이후 구축할 여러가지 판단요소의 기준점이 될 수 있다.

수집은 현재 시스템의 다양한 곳에 존재하는 로그, 데이터 등이 대상이다. 

수집 시스템을 구성하기 위한 다양한 오픈 소스들이 존재한다. 이번 글에서는 수집을 위한 오픈 소스들의 종류와 간단한 특징에 대해서 알아보고, 다음 글에서는 여러 오픈 소스 중에서 선택한 두 가지 오픈소스에 대해 상세한 설명을 하는 것으로 수집에 대해 풀어보고자 한다. 

미리 얘기하자면 해당 두 가지 오픈 소스는 Apache SqoopApache Flume이다.

그리고, 수집할 데이터를 저장할 Data Store 은 분산 파일 시스템인 HDFS, 즉, Apache Hadoop FileSystem을 사용한다는 전제를 둔다. 

이 오픈 소스들은 kth 의 대용량 실시간 분석 솔루션인 DAISY(Data Intelligence System)의 수집 시스템의 일부로서 실제 서비스에도 현재 적용되어 안정적으로 운용되어지고 있는 것들이다. 물론, 대부분의 플랫폼에서 선택한 오픈 소스이기도 하다.

새롭게 만드는 서비스,시스템이라면 로그 포맷, 생성 위치 등을 정하겠지만, 대부분 기존 서비스에서는 이미 어떤 형식으로든 분석의 대상이 될 로그가 생성되어 있을 것이다.

어떤 시스템은 RDBMS에 로그 테이블을 만들어 파티션하고 샤딩 등을 해서 저장하는  경우도 있을 것이고, 어떤 시스템은 웹서버, WAS의 Access Log 형태로 파일을 Disk에 롤링해가며 저장하는 경우도 있을 것이고, 전사적인 로그 포맷이 정해져 있어 JSON 또는 CSV 등의 형태로 특정 폴더에 특정 조건으로 잘 정의되어 저장하는 경우도 있을 것이다. 

RDBMS로 부터 수집 : Apache Sqoop

sqoop RDBMS에 저장되어 있는 경우라면 쉽고 유용한 오픈 소스가 Apache Sqoop 이다. Sqoop은  Sql to Hadoop 의 약자로, 간단한 CLI(Command Line Interface)로 Oracle, MySQL 등의 RDBMS의 특정 테이블 또는 특정 조건에 맞는 데이터를 HDFS로 쉽게 옮길 수 있으며, Hive, Pig, HBase 등으로 바로 옮겨 확인 할 수 있다. 반대로 HDFS에 저장되어 있는 데이터를 RDBMS로 옮길 수도 있다. 로그 뿐 아니라 분석할 때 필요한 메타성 데이터를 가져올 때도 유용하다. Apache Sqoop에 대해서는 다음 글에서 보다 상세히 다룰 예정이다.

 

 

로그 파일 수집하기 : Apache Flume, Facebook Scribe, Apache Chukwa

로그 파일이 서비스의 특정 서버의 특정 위치에 파일을 생성하고 있는 경우나 RPC로 로그를 전달할 경우에 적용이 가능한 여러가지 오픈 소스들이 있다. 그러나, 그 이전에 먼저 명확히 해야 할 것은 로그를 실시간으로 수집,분석해야할 사항이 있는가? 아니면, 배치성의 분석만 필요한 것이가? 그리고, 수집과 동시에 실시간 분석을 할 것인가? 아니면 우선 저장하고 이후에 분석할 것인가에 따라 여러가지 경우의 수가 발생하게 된다. 선택한 수집 오픈소스의 활용, 옵션등이 달라지게 될 것이다.

이후에 언급하겠지만,  RabbitMQ, ZeroMQ 와 같은 메시징 큐가 필요 할 수 도 있고,  Apache Kafka 와 같은 또 다른 Layer가 필요하게 될 것이다.

우선 가장 많이 알려져 있는 수집기 오픈소스는 Apache Flume, Facebook Scribe, Apache Chukwa, 최근에 Netflix에서 공개한 suro 등등이 있다.

수집기 오픈소스에 대해 알아보기 전에, 대용량의 고속의 이벤트 데이터(로그)를 수집하는 시스템에 필요한 요건은 아래와 같다.

  • 확장성 : 수집대상 서버는 무한대로 확장된다. 수십에서 수천, 수만대로 수집대상 서버는 늘어 날 것이다.
  • 안정성 : 수집되는 데이터가 유실되지 않고 안정적으로 저장되어야 한다.
  • 유연성 : 다양한 포맷의 데이터, 다양한 프로토콜을 지원해야 한다.
  • 실시간성 : 수집된 데이터를 실시간으로 반영해야 한다.

위에서 언급한 수집기 오픈 소스중 3가지 Flume, Scribe, Chukwa를 간단 비교요약하면 아래와 같다.

  Apache Flume Facebook Scribe Apache Chukwa
Overview 대용량의 로그 데이터를 분산,안정성,가용성을 바탕으로 효율적으로 수집,집계,이동이 가능한 로그수집 솔루션 Facebook이 개발하여 오픈소스화한 로그수집서버. 대량의 서버로 부터 실시간으로 스트리밍 로그 수집을 위한 솔루션  Apache Hadoop의 서브 프로젝트로 분산되어 있는 서버에서 로그 데이터를 수집, 저장, 분석하기 위한 솔루션
Home http://flume.apache.org/ https://github.com/facebook/scribe http://chukwa.apache.org/
Last Version 1.4.0 (2013.7.2) 2.2(2010) 0.5.0 (2012.1.26)
Status Cloudera -> Apache Top-Level Project Facebook -> Open Source Yahoo -> Apache Incubator project
WIKI https://cwiki.apache.org/confluence/display/FLUME/Home https://github.com/facebook/scribe/wiki http://wiki.apache.org/hadoop/Chukwa/
Document 풍부 빈약 풍부
Implementation Java C++ Java
Community 활발 활발 보통
Summary
  • 다양한 소스로 부터 데이터를 수집하여 다양한 방식으로 데이터를 전송이 가능하지만, 아키텍처가 단순하고 유연하며 확장 가능한 데이터 모델을 제공하여, 실시간 분석 애플리케이션을 쉽게 개발할 수 있다.
  • 최근 국내의 빅데이터 솔루션에서 수집부분의 기반이 되는 솔루션.
  • 각종 Source,Sink등 제공으로 쉽게 확장 가능
  • Facebook의 자체 Scaling 작업을 위해 설계되어 현재 매일 수백 억건의 메시지를 처리하고 있다. 클라이언트 서버의 타입에 상관없이 다양한 방식으로 로그를 읽어 들일수 있다.
  • 단, Apache Thrift는 필수.
  • Thrift 기반 Scribe API를 활용하여 확장 가능
  • 수집된 로그 파일을 HDFS에 저장한다. HDFS의 장점을 그대로 수용하고 실시간 분석도 가능하다.
  • 반면에 Hadoop에 너무 의존적이라는 단점도 있다.
Outline apache_flume facebook_scribe-300x168 apache_chukwa-300x96

위 간단 비교는 개인적인 의견이 포함되어 있다. 하지만, 최근의 빅데이터 플랫폼에서 수집 부분에 사용되는 오픈 소스중 가장 많이 사용이 언급되어지고, 발전이 보여지는 오픈소스는 단연 Apache Flume이라 할 수 있을 것이다. 하지만, 현재 서비스, 시스템의 상황에 맞게 위 오픈 소스 뿐 아니라 다양한 오픈 소스를 검토해서 적합한 것을 적용해야 한다.

빅데이터 분석 플랫폼의 가장 첫 관문인 수집부분은 위에서도 잠시 언급하였지만, 서비스 특성에 따라 위 수집기 이외에도 메시징 큐 등의 여타 Layer도 필요할 수 있으므로 다양한 검토가 필요한 부분이다. 

KTH ‘DAISY’, 제21회 대한민국 멀티미디어 기술대상 수상

데이지(DAISY)’, ‘제21회 대한민국 멀티미디어 기술대상’에서 한국정보통신진흥협회장상 수상

1/1000초 미만의 대용량 데이터 실시간 분석 및 처리 기술력과 서비스 안정성 인정 받아

KTH(대표 오세영)가 개발한 대용량 데이터 실시간 분석/추천 솔루션 ‘DAISY(Data Intelligence System, 이하 ‘데이지’)’가 24일 미래창조과학부 주최의 ‘제21회 대한민국 멀티미디어 기술대상’에서 소프트웨어/솔루션 부문의 최우수 솔루션으로 선정, 한국정보통신진흥협회(KAIST) 회장상을 수상했다.

이번 ‘대한민국 멀티미디어 기술대상’은 전문분과위원회, 총괄심사위원회가 핵심기술 난이도, 독창성, 기술자립도, 발전성 등의 기술적 성과와 수출효과, 경쟁력, 국산화 정도, 발전가능성 등의 경제적 성과를 기준으로 기기 및 부품, 소프트웨어/솔루션, 콘텐츠 등 총 3개 부문을 평가하였다. 이 날 기술적 성과와 경제적 성과 모두에서 우수한 점수를 받은 신기술 또는 제품들에 수상기회가 주어졌다.

이번 소프트웨어/솔루션 부문 중 디지털 멀티미디어 서비스용 응용기술 및 소프트웨어 분야의 최우수 솔루션으로 선정, 한국정보통신진흥협회 회장상을 받은 KTH의 ‘데이지’는 KTH가 자체 개발한 대용량 데이터 실시간 분석/추천 솔루션이다. 로그 파일, 데이터베이스 등 다양한 정형/비정형 데이터의 수집이 가능하며 대용량 데이터의 안정적인 분산 저장뿐만 아니라 인프라 및 서비스, 사용자의 행동 분석을 통해 추천형 분석결과를 제공한다.

특히, 데이터 용량에 상관없이 1/1000초 이하의 처리 시간으로 real-real time 데이터 분석 및 처리가 가능하고 자체 구현한 고가용성(high availability) 알고리즘을 통한 real-real time의 무중단 서비스 제공으로 기술력뿐만 아니라 안정성 또한 높이 평가 받았다. 이는 외산 솔루션과 달리 고객의 요구사항에 보다 유연하게 다양한 구성이 가능하여 최적화된 실시간 무중단 서비스 제공이 가능함을 의미한다. 또한, 사용자 편의를 위해 다양한 시각화된 정보를 제공하여 운영상의 실시간 이슈 트래킹 및 얼럿 기능을 지원한 점도 주목받았다.

현재 ‘데이지’는 olleh tv의 채널 및 VOD 로그를 실시간으로 수집, 분석하는 통합 시청률 분석 시스템을 구축, 운영하고 있으며 KT VOC 실시간 분석과 대교 빅데이터 플랫폼 구축, 기상 정보 기반의 공공 데이터 융합 서비스 분야에 적용 중이다.

KTH 데이터지능팀 이호철 팀장은 “날로 치열해지는 신규 비즈니스 기회 창출과 안정적인 서비스 운영, 고객 마케팅 영역에서 대용량 데이터의 실시간 처리 및 분석 분야가 주목 받고 있기에 ‘데이지’의 수상은 의미가 있다”며 “향후 ‘데이지’를 그동안 미디어와 모바일 분야에서 입증한 안정적인 기술력을 바탕으로 라이선스 기반의 실시간 분석 특화 솔루션으로 확대 발전시킬 계획”이라고 밝혔다.

daisy_multimedia_prize-300x247

DAISY 기상 정보 빅데이터 플랫폼 구축(2013.3)

KTH ‘데이지’, 기상 정보 빅데이터 플랫폼 구축

KTH, 대용량 데이터 실시간 분석/추천 솔루션인 ‘DAISY’ 통해 빅데이터 분석 시장 진출

KTH가 대용량 데이터 실시간 분석/추천 솔루션인 ‘DAISY(Data Intelligence System, 이하 ‘데이지’)’를 통해 기상청의 3개년 과제인 ‘산업 분야 활용을 위한 기상 정보 빅데이터 플랫폼 구축 및 매시업(Mashup) 서비스’ 프로젝트를 모 회사와 컨소시엄을 맺어 수주했다고 밝혔다.

KTH의 ‘데이지’는 로그 파일, 데이터베이스 등 다양한 정형/비정형 데이터의 수집이 가능하며 대용량 데이터의 안정적인 분산 저장뿐만 아니라 인프라 및 서비스, 사용자의 행동 분석을 통해 추천형 분석결과를 제공하는 KTH가 자체 개발한 대용량 데이터 실시간 분석/추천 솔루션이다.

기상청은 2012년 이상기후 보고서를 통해, 작년 한해는 한파와 폭염, 태풍까지 이상기후가 극성을 부린 해였다고 밝히며, 이상기후로 인한 사회, 경제적 피해가 급증함에 따라 기후변화 모니터링과 재난, 재해 관리와 인명피해를 줄이기 위한 정책을 강화하겠다고 밝힌 바 있다. 이번 3개년 과제는 이러한 이상기후로 인한 사회문제의 근본적인 문제점 파악 및 해결을 위해 기상 정보의 실시간성, 대용량, SNS 사용자의 데이터 분석의 중요성이 증대됨에 따라 추진하게 됐다. 

이에 기상청은 다년간 빅데이터 분석 관련 연구 및 솔루션 구축을 통한 배치성 빅데이터 분석 및 실시간 빅데이터 분석 역량을 보유한 KTH와 ???을 우선 협상 대상자로 선정, 기상 정보 빅데이터 플랫폼 구축 및 교통, 의료, 에너지 등 기상과 밀접한 산업 분야의 빅데이터 매시업 서비스를 KTH의 ‘데이지’를 통해 구현한다는 계획이다.

KTH는 ‘데이지’를 통해 클라우드 기반의 빅데이터 분석 툴 개발 및 기관별 최적화된 Open API 형태의 기상 정보를 제공, 방대한 데이터의 실시간 분석을 고려한 빅데이터 플랫폼을 구축하고 기상 정보를 활용한 BIS(Bus Information System) 서비스, 도로 안전 정보, 질병/질환 정보 등의 의료 서비스 및 에너지 감축 서비스 등 생활 밀착형 서비스를 개발한다.

이호철 팀장은 “KTH의 ‘데이지’를 통해 기상조건에 비교적 민감하게 반응하는 교통혼잡, 질병, 전력수급 등 국민의 삶과 매우 밀접한 연관이 있는 분야의 매시업 서비스를 꾸준히 개발해 국민 삶의 질을 한층 향상할 수 있도록 할 것”이라며 “KTH는 이번 기상 정보 빅데이터 플랫폼 구축을 시작으로 빅데이터 분석 시장에 확고한 영역을 차지할 것”이라고 말했다. 

kth DAISY 블로그 시작합니다.

Open & Share

 빅데이터에 대한 정의는 따로 말하지 않아도 최근의 Hot Issue임에는 틀림 없습니다. 다만, 빅데이터라는 것이 새로운 것이 아니라, 이미 있었던 다양한 개념, 즉, 검색, 데이터 마이닝, 고객 분석 등이 최근 들어 빅데이터라는 단어로 재포장되어 지는 것 같습니다.

 최근 들어 빅데이터가 존재하느냐? 곧 사라질 것이다? 등등의 이야기가 나오고 있지만, 사실은 수 년 전 부터, 혹은 그 오래 전 부터 빅데이터 프로젝트나 실생활에 활용이 되어지고 있었습니다. 실생활 사례를 빼고라도, 기업 내의 다양한 사례들은 많이 존재하지만, 사실 기업들은 공개, 공유 하기를 꺼려하는게 사실입니다. 많은 이유가 있겠지만, 보안적인 측면이 강하겠지요.

 저도 이런 기업내 조직에서 빅데이터를 시작했습니다. 시작할 당시 제가 몸담고 있던 KTH는 “Open & Share” 라는 가치를 내세우는 조직문화가 있어서, 좀 더 자연스럽게 공개, 공유를 할 수 있어서 좋은 환경에서 시작할 수 있었던 거 같습니다. 일례로, KTH내에 있는 다양한 서비스들의 데이터를 모두 중앙에 수집해서, 데이터에 관심있는 모든 개발자나 서비스 담당자들에게 오픈할 수 있는 환경을 만들 수 있었습니다.  이런 데이터를 다양한 시선과 다양한 조합으로 새롭고 의미있고 가치있는 데이터를 만들어 낼 수 있었습니다. 조직 문화가 뒷받침되지 않으면 가능하지 않을 일이죠. “Open & Share”의 장점에 대해서는 더 언급할 필요가 없겠지요.

Intro.

 이 곳은 지금 시작하시는 혹은 이미 시작하신 여러분들과 같이 조직 내에서 빅데이터를 이해 시키고, 플랫폼을 구축하고자 했던, 다양한 경험과 실사례를 공유, 공개, 토론하는 곳입니다.

빅데이터의 원래의 목적은  서비스, 생활, 시스템운영 혹은 경영을 위한 인사이트를 얻게 하고, 이를 통해 서비스 활성화, 안정화, 생활에 도움 및 매출 극대화라고 생각합니다. 대부분 빅데이터라 하면, 플랫폼, 그 중에서도 Hadoop Eco-System  이 무엇인지, Open Source가 안정적인지, 플랫폼은 어떻케 구축을 해야 하는지를 걱정을 합니다. 플랫폼은 필요에 의해서 자연스럽게 하나씩, 하나씩 만들어 나갈  수 있습니다. 어쩌면, 기업 내에 꼭, 빅데이터 플랫폼이 필요치 않을 수 도 있습니다. 즉, 기존의 RDBMS나 Legacy로도 충분할 수 도 있으며, 또는 많은 오픈 소스 중 적절한 것을 통해 작고 빠르게 만들어 수행할 수 도 있습니다.

빅데이터 3가지 수행원칙

빅데이터 미션 수행을 하면서 원칙으로 삼은 3가지는 아래와 같습니다.

  1. 시스템 구축이 목적이 아니라 서비스 분석, 인사이트 도출 등이 우선이다.
  2. 2주 정도의 작은 단위의 기간을 통해 프로토타이핑을 하고, 시스템은 작은 규모로, 필요한 시스템부터 하나씩 하나씩 도입,적용해나가며 완성해 나간다.
  3. 분석, 인사이트 도출과 프로토타이핑 된 내용들은 모두 Visualization, 자동화하기 위해 노력한다.

키워드는 서비스 분석, 프로토타이핑, Visualization이다. 즉, 분산처리, 대용량 분산저장, 배치 처리 플랫폼, 실시간 처리 플랫폼 등 기술적인 요구사항 수행이 아니라는 것이다. 위 3가지 큰 수행 원칙을 가지며, 진행을 하면 자연스럽게 빅데이터를 제대로 분석, 서비스 및 사업에 도움이 되는 빅데이터 미션이 완성이 될 것이다.

사례공유

realtime_top_channel olleh tv를 통해 시청을 하신다면, 그림과 같이 “실시간 인기채널”이라는 가이드를 볼 수 있을 것입니다. 지금 TV에서 광고로도 나오고 있죠. 실시간 시청순위를 1위부터 27위까지 9개씩 3페이지 보여주고 있습니다. 여기에는 단순히 인기순서를 나열하는 것이지만, 그 뒷 단 에서는 수백 만의 olleh tv 셋톱박스 채널 로그를 수집하고 분석하여, 그것도 무려, 초단위 미만으로 계산하는 실시간 빅데이터 기술이 활용된 사례입니다.

앞으로 많은 관심과 성원 부탁드립니다.

KTH DAISY(Data Intelligence System)!