소개

지난 몇 주 동안 저는 스파크가 머릿속을 맴돌았습니다. 오라일리 웨비나를 준비해 왔으니 그럴 만도 하죠."데이터 기반 애플리케이션을 위해 Spark 및 NoSQL을 활용하는 방법"와 함께 마이클 니칭거 그리고 또 다른 강연인 "Spark와 카우치베이스: Spark로 운영 데이터베이스 강화하기"를 위한 강연입니다. 스파크 서밋 2016 와 함께 매트 인젠트론. 다른 곳에서는 카우치베이스 스파크 커넥터새 릴리즈의 내용과 사용 방법에 대해 설명합니다. 이 블로그에서는 최고의 데이터베이스 조합이 왜 아파치 스파크와 NoSQL 데이터베이스 좋은 조합을 만들어보세요.

스파크 101

익숙하지 않으시다면 Spark 는 대량의 데이터를 기반으로 분석, 머신 러닝, 그래프 처리 등을 수행하는 빅 데이터 처리 프레임워크입니다. 맵리듀스, Hive, 임팔라, 마하아웃, 그리고 Hadoop의 HDFS 위에 구축된 다른 데이터 처리 계층과 유사합니다. 하둡과 마찬가지로 최적화에 초점을 맞추고 있지만, 일반적으로 더 빠르고 프로그래밍하기 훨씬 좋으며 거의 모든 것에 대한 커넥터가 잘 갖춰져 있는 등 여러 면에서 더 우수합니다. Hadoop과 달리 노트북의 명령줄에서 Spark를 작성하고 실행하기 시작한 다음 클러스터에 배포하여 전체 데이터 세트에서 실행하는 것이 쉽습니다.

지금까지 말씀드린 내용을 들으면 Spark가 데이터베이스인 것처럼 들릴 수 있지만, 단호하게 말씀드리면 다음과 같습니다. not 데이터베이스입니다. 실제로는 데이터 처리 엔진입니다. Spark는 데이터를 읽습니다. 대량으로 HDFS, Amazon S3 또는 Couchbase Server와 같은 어딘가에 저장되어 있는 데이터에 대해 일부 처리를 수행한 다음 그 결과를 기록하여 나중에 사용할 수 있도록 합니다. 이는 Couchbase나 Oracle과 같은 온라인 시스템이 아니라 Hadoop과 같은 작업 기반 시스템입니다. 즉, Spark는 빠른 랜덤 읽기/쓰기 유형의 워크로드에 대해서는 항상 시작 비용을 지불합니다. Hadoop과 마찬가지로 Spark는 시스템의 전반적인 처리량 면에서 뛰어나지만, 그 대가로 지연 시간이 발생합니다.

요컨대, Couchbase Server와 Spark는 서로 다른 문제를 해결하지만 둘 다 해결하기에 좋은 문제입니다. 사람들이 이 두 가지를 함께 사용하는 이유에 대해 이야기해 보겠습니다.

NoSQL 및 Spark 사용 사례 #1: 분석/머신 러닝 운영화

의심할 여지 없이 데이터는 훌륭한 자산입니다. Couchbase에서 실행되는 대규모 온라인 애플리케이션에는 많은 데이터가 있는 경향이 있습니다. 사람들은 온라인 쇼핑을 하거나 여행을 예약하거나 서로에게 메시지를 보낼 때 매일 더 많은 데이터를 생성합니다. 제품 카탈로그를 검색하고 새 카메라 렌즈를 장바구니에 담을 때, 구매를 완료하고 새 제품을 우편으로 받을 수 있도록 일부 정보를 Couchbase에 저장해야 합니다.

내 눈에 보이지 않는 쇼핑 데이터로 더 많은 일을 할 수 있습니다. 어떤 제품을 주로 함께 구매하는지 분석하여 다음 사람이 장바구니에 담을 때 더 나은 제품을 추천하여 구매 확률을 높일 수 있도록 합니다. 저와 소매업체를 사기꾼으로부터 보호하기 위해 사기 징후를 확인할 수도 있습니다. 구매를 망설이고 있는 제품을 구매하기 위해 쿠폰이나 다른 인센티브가 필요한지 파악하기 위해 추적할 수도 있습니다. 이 모든 것이 기업이 Spark를 사용하여 수행할 수 있는 머신 러닝 및 데이터 마이닝의 예시입니다.

이 광범위한 사용 사례군에서 Spark는 머신 러닝 모델, 예측, 대규모 분석 작업의 결과 등을 제공하며, Couchbase는 이를 대화형으로 만들고 대규모 사용자로 확장합니다. 온라인 쇼핑 추천 외에도 실시간 커뮤니케이션 앱을 위한 스팸 분류기, 온라인 음악 앱 사용자의 재생 목록을 개인화하는 예측 분석, 결제 수락 또는 거부를 즉각적으로 결정해야 하는 모바일 애플리케이션을 위한 사기 탐지 모델 등이 이에 해당합니다. 또한 대량의 데이터를 저렴하게 처리한 다음 많은 사용자에게 대화형 형태로 제공해야 하는 진정한 '차세대' 데이터 웨어하우징에 해당하는 광범위한 애플리케이션도 이 범주에 포함할 수 있습니다. 마지막으로 사물 인터넷 시나리오도 여기에 속하지만, 데이터가 사람이 아닌 기계의 동작을 나타낸다는 분명한 차이점이 있습니다.

이러한 사용 사례의 기술적인 공통점은 각각 워크로드에 최적화된 운영 데이터베이스와 분석 처리 클러스터로 나뉜다는 점입니다. 이러한 구분은 빅 데이터 시대에 맞게 업데이트된 OLTP와 OLAP 시스템의 구분과 같습니다. 분석 측면의 Spark에 대해 이야기했으니 이제 Couchbase와 운영 측면에 대해 이야기해 보겠습니다.

카우치베이스: 대규모 운영 데이터에 대한 빠른 액세스

Couchbase Server는 빠르고, 확장 가능하며, 관리하기 쉽고, 비즈니스 요구사항에 따라 발전할 수 있을 만큼 민첩한 애플리케이션을 실행하기 위해 만들어졌습니다. Spark 머신 러닝 및 분석을 사용하는 애플리케이션 유형에는 Couchbase가 제공하는 기능도 필요합니다:

  • 유연한 데이터 모델, 동적 스키마
  • 강력한 쿼리 언어(N1QL)
  • 네이티브 SDK
  • 대규모 키 값 연산을 위한 밀리초 미만의 지연 시간
  • 탄력적 확장
  • 관리의 용이성
  • XDCR(데이터센터 간 복제)
  • 고가용성 및 지리적 분포

운영 데이터 처리 계층은 복원력과 고가용성을 위해, 그리고 사용자의 지리적 위치와의 근접성이 중요하기 때문에 성능상의 이유로 분산되어야 합니다. 배포 메커니즘은 개발자에게 투명해야 하며 운영이 간편해야 합니다. 이러한 모든 속성은 Spark 사용 여부와 관계없이 사실입니다. 다른 곳에서 광범위하게 다루고 있습니다..

카우치베이스 스파크 커넥터는 두 기술 간의 오픈 소스 통합을 제공하며, 그 자체로도 몇 가지 장점이 있습니다:

  • 메모리 중심. 스파크와 카우치베이스는 모두 메모리 중심적입니다. 따라서 첫 번째 왕복 데이터 처리 시간을 크게 단축하거나 엔드투엔드 인사이트 도출 시간/행동 시간도 단축할 수 있습니다. 인사이트 도출 시간은 '관찰'(사용자나 기계가 하는 일에 대한 일부 데이터 저장)부터 머신 러닝 모델을 구축하거나 업데이트하는 맥락에서 해당 데이터를 분석한 다음 새롭고 향상된 예측과 같이 사용자가 사용할 수 있는 형태로 다시 피드백하는 데 걸리는 왕복 시간을 의미합니다.
  • 빠른. 스팍과 카우치베이스 모두 메모리 중심적이라는 점 외에도, 카우치베이스 스팍 커넥터에는 술어 푸시다운, 데이터 로컬리티/토폴로지 인식 등 다양한 성능 향상 기능이 포함되어 있습니다, 하위 문서 API 지원 및 암시적 일괄 처리.
  • 기능. Couchbase Spark 커넥터를 사용하면 모든 범위의 데이터 액세스 방법을 사용하여 Spark 및 Couchbase Server의 데이터로 작업할 수 있습니다: RDD, 데이터프레임, 데이터세트, DStream, KV 작업, N1QL 쿼리, 맵 축소 및 공간 뷰, 심지어 DCP까지 Scala와 Java에서 모두 지원됩니다.

NoSQL 및 Spark 사용 사례 #2: 데이터 통합 툴킷

Couchbase Spark 커넥터가 지원하는 광범위한 기능을 통해 Spark와 Couchbase의 또 다른 주요 사용 사례를 살펴볼 수 있습니다: 데이터 통합입니다.

최근 몇 년 동안 Spark에 대한 관심이 폭발적으로 증가하면서 데이터베이스부터 Elasticsearch, Kafka, HDFS, Amazon S3에 이르기까지 거의 모든 것에 연결할 수 있게 되었습니다. 또한 Parquet, Avro, CSV, Apache Arrow 등 거의 모든 형식의 데이터도 읽을 수 있습니다. 이러한 모든 연결성 덕분에 Spark는 데이터 통합 문제를 해결하기 위한 훌륭한 도구 키트입니다.

예를 들어 데이터 엔지니어라고 가정해 보겠습니다. 모바일 애플리케이션에 추가하는 새로운 프리미엄 기능을 지원하기 위해 사용자의 관심사에 대한 정보를 사용자 프로필에 로드해야 합니다. 사용자 프로필이 Couchbase Server에 있고, 사용자 관심사는 HDFS에서 가져오며, 프리미엄 사용자 목록은 다음과 같은 결제 정보를 기반으로 한다고 가정해 보겠습니다. 데이터 웨어하우스.

각 시스템으로 차례로 이동하여 필요한 정보를 덤프한 다음 다음 시스템으로 가져오는 비교적 간단하지만 지루한 작업처럼 들립니다. Spark는 편리한 대안을 제공합니다. 사용법을 익힌 후에는 명령줄에서 몇 가지 간단한 쿼리를 사용하여 이 작업을 수행할 수 있습니다. 각 시스템의 기본 기능을 사용하여 Spark에서 테이블을 조인하고 그 결과를 한 번에 Couchbase에 쓸 수 있습니다. 이보다 더 편리할 수는 없습니다. 동일한 단계를 확장하여 여러 소스의 데이터를 결합하여 애플리케이션이나 다른 소비자에게 공급하는 데이터 파이프라인을 만들 수도 있습니다.

사용해 보기

대규모 엔지니어링 팀의 일원으로 정교한 머신 러닝이 포함된 대규모 애플리케이션을 개발하든, 외로운 늑대 개발자이든, Spark와 Couchbase가 제공할 수 있는 것이 있습니다. 사용해 보기 를 클릭하고 여러분의 의견을 알려주세요. 언제나처럼 여러분의 의견을 기다리겠습니다. 행복한 코딩!

작성자

게시자 Will Gardella, 제품 관리 이사, Couchbase

윌 가델라는 Couchbase의 분석 제품 관리 이사입니다. 이전에는 HP의 빅데이터 플랫폼 팀에서 제품 관리자로 근무했으며, SAP HANA의 제품 관리 수석 이사, 빅데이터 및 머신러닝에 중점을 둔 SAP Research의 글로벌 빅데이터 프로그램 수석 이사를 역임했습니다.

댓글 하나

댓글 남기기