더북(TheBook)

요즘 같이 변화무쌍하고 상호 연결된 세상에서 실시간(real-time) 데이터의 중요성 또한 점차 커져 간다. 최근에는 사물 인터넷(Internet of Things), 즉 수많은 기기를 인터넷으로 연결해 서로 데이터를 지속적으로 주고받으며 (이론적으로) 삶을 더욱 편리하게 만들어 준다는 차세대 인터넷이 새로운 화두로 떠올랐다. 굳이 사물 인터넷이 아니더라도 이미 오늘날 많은 기업은 실시간 데이터에서 빠르게 통찰을 찾아내고 즉각 행동에 옮겨야 하는 시대적 요구에 직면했다. 한마디로 시간이 곧 돈인 세상이 열렸다.

오늘날 실시간 데이터 분석이 이윤을 창출할 수 있는 (또는 이미 이윤을 낸) 전문 영역들을 그리 어렵지 않게 찾을 수 있다. 예를 들어 교통 상황 분석, 온라인 광고, 주식 거래, 그리고 빼놓을 수 없는 소셜 네트워크 등 다양한 사례를 꼽을 수 있다. 이 활용 사례 대다수는 확장성과 장애 내성을 갖춘 시스템이 필요한데, 이는 모두 스파크가 자랑하는 특장점이다. 스파크는 강력한 대규모 데이터 분석 기능 외에도 동일한 API로 스트리밍 프로그램과 일괄 처리 프로그램을 모두 지원하는 통합 플랫폼을 제공한다. 다시 말해 실시간 레이어와 배치 레이어를 결합한 람다 아키텍처(lambda architecture)를 구축할 수 있다[람다 아키텍처라는 용어와 그 설계는 나단 마즈가 쓴 <Big Data>(Manning, 2015)에서 유래했다].

스파크 스트리밍은 하둡과 호환되는 여러 파일 시스템(예: HDFS, 아마존 S3)과 다양한 분산 시스템(예: 플럼, 카프카, 트위터 등)에서 데이터를 읽어 들일 수 있는 커넥터를 제공한다. 이 장에서는 먼저 파일에서 데이터 스트림을 받아 이를 다시 파일에 저장하는 간단한 스트리밍 애플리케이션을 실습한다. 그런 다음 애플리케이션을 확장해 확장성을 갖춘 분산 메시지 큐(queue) 시스템인 아파치 카프카를 데이터 소스 및 저장 대상으로 사용한다. 여기서 살펴볼 원리들은 다른 데이터 소스에도 마찬가지로 적용할 수 있다. 마지막으로 스트리밍 애플리케이션의 성능을 최대한 이끌어 내는 방법을 알아본다.

스파크 스트리밍을 활용해 실시간 로그를 분석하는 애플리케이션을 13장에서 실습한다. 이 장에서 소개하는 개념과 방법은 13장 예제에도 그대로 적용된다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.