Posting

Machbase의 최신 소식을 지금 만나보세요

Hadoop Ecosystem 연동을 위한 Kafka 이용

마크베이스 CTO 심광훈

개요

안녕하세요. 한동안 블로그 포스팅을 진행하지 못했습니다. 많은 고객분들께서 Hadoop 생태계의 다양한 제품들과 Machbase를 연동하기 위해서 어떤 방법을 이용하면 좋은지 문의하시는데, 이 포스트에서 저희가 생각하는 좋은 방법을 알려드릴까 합니다. 하둡과 관련한 다양한 데이터 처리 제품들과 마크베이스와의 원활한 연동을 쉽게 수행하기 위한 방법을 살펴볼까 합니다.

Current Hadoop Ecosystem

<출처 subscription.packtpub.com >

Hadoop 생태계에는 너무나도 많은 데이터 처리 패키지들이 있습니다. Zookeeper나 HDFS, YARN등의 클러스터 구성, 데이터 복제, map-reduce 처리를 위한 기반 패키지부터, 데이터 처리를 위한 Spark, HBASE, Hive, Impala 등의 제품들도 있지요. 물론 모든 데이터를 HDFS상에 두고 HDFS를 고가용성 분산 저장공간으로만 쓰는 경우도 많습니다. 이러한 Hadoop 생태계의 제품들과 마크베이스를 연동하는 것은 생각처럼 쉽지가 않습니다. 그 이유는 아래쪽에서 말씀드리지요.

문제

Hadoop과 연동을 생각하면 단순히 HDFS상의 파일을 생각하는 경우가 많은데, 실제로는 단순하지 않습니다.

  • HDFS상의 파일이 아니라 Hadoop생태계의 패키지들을 추가로 이용하는 경우가 많습니다. Hbase나 Hive, Impala등의 패키지는 고유한 데이터 포멧을 갖고 있어서, HDFS상의 파일을 단순히 read/write하는 것으로 연동할 수 없습니다.
  • 이러한 패키지들은 각기 고유한 API를 갖고 있어서, 입출력 되는 데이터를 얻어서 Machbase로 보내거나 Machbase의 질의 결과를 입력데이터로 사용할 때 많은 노력이 필요합니다.
  • Java를 많이 사용하기는 합니다만. 각 패키지들은 구현 언어가 다르고 지원하는 API언어도 다릅니다. 예를 들면, Spark 패키지는 Scala언어, java, python을 지원합니다. 그런데 Spark를 잘 쓰기 위해서는 scala언어를 쓰는것이 유리하다고 합니다. 또한 데이터 처리 패키지들이 지원하는 질의 언어도 각기 다릅니다.
    상이한 API와 상이한 언어를 이용하는 각 패키지들을 동일한 인터페이스로 연동하도록 하지 않으면 사용하기가 매우 어렵습니다.

실시간 데이터 처리가 아니라 batch 처리의 경우에는 hadoop 생태계의 패키지가 결과 데이터를 text 파일(csv나 json이 좋죠)로 변환하여 이를 machloader등으로 입력하는 등의 방법을 이용하면 됩니다.(이 경우에도 물론 데이터 변환을 위한 app 작성이 필수적입니다.)

실시간 처리의 경우, 패키지에 입력되는 데이터를 쉽게 얻어올 수 있는 방법은 데이터를 입력하는 app을 수정하여 이를 별개의 파일로 작성하고, 이 파일을 machcollector등을 이용하여 입력하도록 해야 합니다.

Kafka

Kafka는 Linkedin에서 개발된 실시간 데이터 스트리밍 서버입니다. 이 제품에 대해서 자세한 설명은 할 필요가 없을 듯 하네요. Kafka consumer에 machbase를 연동하는 블로그 게시물(https://www.machbase.com/kr/howtouse/?mod=document&pageid=1&keyword=kafka&uid=70)에서 간단히 연동 방법을 설명해 드린 적이 있습니다.

이 제품을 이용하여 machbase와 hadoop 생태계의 패키지들을 연동하는 경우 다음의 장점이 있습니다.

  • Kafka를 경유하여 데이터를 입/출력하도록 하면 데이터 처리 패키지(Hbase나 spark등)과의 연동이 매우 쉽다.
    • 심지어 HBASE등의 제품에 대해서는 CDC 연동도 가능합니다.
    • Oracle등의 RDBMS와도 연동됩니다.
  • Kafka에서 machbase는 과거의 blog 포스트에서 보셨듯이 매우 쉽게 연동이 가능합니다.
  • Kafka와 machbase의 데이터 인터페이스는 post/subscribe의 형태로 항상 동일한 인터페이스를 사용합니다.

Kafka Connector

<출처 www.confluent.io>

Kafka를 유지보수하고 있는 Confluent사의 홈페이지에 다양한 Kafka connector들이 게시되어 있습니다. github에는 이 site에서 제공되지 않는 다른 connector들도 공개되어 있습니다. 이후에 machbase도 kafka를 지원할 예정이라 github등에서 다운로드 할 수 있을 것입니다.

Kafka는 병렬성이 있어 대량 데이터 처리가 가능하다.

Hadoop 생태계의 데이터 처리 패키지들은 그 특징상 대량의 데이터를 저장하고 분석하고, 가공하는데 machbase의 고속 데이터 입력성능을 최대한 활용하면 이 데이터를 쉽게 이전할 수 있습니다. Kafka는 병렬 구조로 구성되어 하나의 topic을 여러 consumer가 동시에 읽어들여도 중복데이터가 입력되는 현상이 없습니다. machbase의 고속 데이터 입력을 정상적으로 지원하려면 병렬로 데이터를 읽어들이는 것이 필수적입니다.

Kafka와 machbase는 이런 점에서 최고의 성능을 얻을 수 있는 선택입니다.

Kafka interface의 통일성

Kafka는 데이터 입 출력 방법을 모두 topic에 대한 읽고 쓰기 형태로 단순화 하였습니다. Hadoop 생태계의 다양한 응용들은 각기 다른 client language binding(java/scala/python/c++등)과 고유한 인터페이스를 갖고 있어서 이를 모두 지원하는 것은 힘듭니다.

Kafka는 다양한 프로그램 언어를 지원하지만, 데이터에 대한 접근은 단순합니다.

향후 과제 및 결론

Machbase 5버전에서는 Kafka와 연동하려면 kafka의 API를 이용하여 app을 구현하여야 합니다. 이후 Kafka연동이 필요할 경우를 대비해서, Machbase에서 코딩이 필요없는 연동 방안을 생각할 필요가 있습니다.

현재 구상중인 방법은 1) Kafka의 consumer로 machcollector가 동작하도록 한다. 2) Kafka의 producer로 machbase 서버의 stream기능을 이용하도록 하자.

각 방법에 대한 설명을 간단히 해 보겠습니다.

Machccollector의 Kafka 지원

Machbase는 machcollector라는 tool을 이용하여 순차적으로 입력되는 데이터를 파싱하고 전처리하여 서버에 자동으로 입력합니다. machcollector는 파일(로그 파일과 같은 파일시스템상의 파일), SFTP로 접근 가능한 파일, socket으로 전송되는 데이터등을 입력 대상으로 합니다. Machcollector가 kafka topic을 이용할 수 있도록 하면, 사용자는 코딩을 할 필요 없이 machcollector의 설정 파일을 생성함으로써 kafka의 topic 데이터를 machbase에 실시간으로 입력할 수 있습니다.

Stream기능을 이용한 Kafka연동

Machbase는 스트리밍 데이터의 실시간 처리를 위한 STREAM기능이 있습니다. 이는 모든 입력데이터에 대해서 SQL문을 실행해 주는 기능인데요, 이 STREAM기능을 이용하여 machbase에 입력되는 데이터를 stream에 의해서 필터링 및 가공하여 Kafka topic에 입력하는 기능을 만들면, machbase에 입력되는 데이터를 kafka에 전달할 수 있습니다.

예를 들어 다음과 같은 stream기능이 지원된다면,

EXEC STREAM_CREATE(select_over_100, ‘INSERT INTO :kafka_topic SELECT * FROM events WHERE id > 100’);

machbase의 events테이블에 입력되는 데이터 중, id값이 100보다 큰 데이터는 kafka_topic에 입력할 수 있습니다.

이와 같은 기능이 지원되면 machbase에 입력된 데이터를 kafka에 실시간으로 필터링하여 전달할 수 있을 것입니다.

이 포스팅에서 1) Hadoop 생태계의 데이터 처리 제품과 연동을 위한 방법으로 kafka를 이용하는 것이 각 데이터 처리 패키지를 일일이 지원하는 것 보다 효과적이라는 점을 알 수 있었습니다. 또한, 더 편리한 연동을 위해서는 machcollector및 DB 서버에서 kafk에 대한 지원을 강화해야 한다는 점 또한 알 수 있었습니다.
이후 마크베이스는 Hadoop 생태계 제품들과 원활한 연동을 위해서 말씀드린 방법 혹은 더 편리한 방법을 고민하고 고안하여 고객님들께 전달해 드릴 예정입니다.



아래 링크를 통해 세계 1위 마크베이스 TSDB 무료 다운로드 받을 수 있습니다.

 

연관 포스트

Deep Anomaly Detection in Time Series (2) : 이상 감지 모델

개요 안녕하세요, 마크베이스의 Cloud개발본부 연구원 양창은입니다. 지난 게시글 Deep Anomaly Detection in Time Series (1) : Time Series Data에서는 시계열 데이터와 이상치(Anomaly)의 종류에 대해 알아보았습니다. 그리고

IIoT를 위한 Data Lake – machlake

Data Lake 란, 대규모의 다양한 원시 데이터 세트를 기본 형식으로 저장하는 데이터 리포지터리 유형입니다. 원시 데이터는 특정 목적을 위해 처리되지 않은 데이터를 뜻합니다. 산업 IoT