Apache Storm에 대해 알아야 할 모든 것

게시 됨: 2018-02-20

빅 데이터의 생산 및 분석 분야에서 지속적으로 증가하는 성장은 계속해서 새로운 과제를 제시하고 있으며, 데이터 과학자와 프로그래머는 자신이 개발한 애플리케이션을 지속적으로 개선함으로써 이를 자연스럽게 받아들입니다. 그러한 문제 중 하나는 실시간 스트리밍의 문제였습니다. 실시간 데이터는 기업에 매우 높은 가치를 지니고 있지만, 그 이후에는 가치를 잃게 되는 기간이 있습니다(원하는 경우 만료 날짜). 이 실시간 데이터의 가치가 윈도우 내에서 실현되지 않으면 그 윈도우에서 사용할 수 있는 정보를 추출할 수 없습니다. 이 실시간 데이터는 빠르고 지속적으로 들어오므로 "스트리밍"이라는 용어가 사용됩니다.

이 실시간 데이터를 분석하면 블로그 게시물을 읽는 사람의 수나 Facebook 페이지를 방문하는 사람의 수와 같은 현재 상황에 대한 최신 정보를 얻을 수 있습니다. "있으면 좋은" 기능처럼 들릴 수도 있지만 실제로는 필수적입니다. 고객이 많은 비용을 지불한 광고 캠페인에 대해 실시간 분석을 수행하는 광고 대행사의 일원이라고 상상해 보십시오. 실시간 분석을 통해 귀하의 광고가 시장에서 어떤 성과를 거두고 있는지, 사용자가 이에 어떻게 반응하는지, 기타 기타 사항에 대해 계속 게시할 수 있습니다. 이렇게 생각하면 상당히 필수적인 도구죠?

실시간 데이터의 가치를 살펴보고 조직은 다양한 실시간 데이터 분석 도구를 내놓기 시작했습니다. 이 기사에서는 그 중 하나인 Apache Storm에 대해 이야기할 것입니다. 우리는 그것이 무엇인지, 일반적인 폭풍 애플리케이션의 아키텍처, 핵심 구성 요소(추상화라고도 함) 및 실제 사용 사례를 살펴볼 것입니다.

갑시다!

목차

아파치 스톰이란?

아파치 스톰
Twitter에서 출시한 Apache Storm은 데이터의 실시간 처리를 지원하는 분산형 오픈 소스 프레임워크입니다. Apache Storm은 Hadoop이 데이터의 일괄 처리를 하는 것처럼 실시간 데이터에 대해 작동합니다. (Batch 처리는 실시간의 반대입니다. 여기에서 데이터를 일괄 처리하고 각 일괄 처리를 처리합니다. 이것은 실제에서 수행되지 않습니다. -시각.)

Apache Storm에는 상태 관리 기능이 없으며 메시지 승인, 처리 상태 및 기타 메시지와 같은 클러스터 상태를 관리하기 위해 Apache ZooKeeper(빅 데이터 애플리케이션의 구성을 관리하기 위한 중앙 집중식 서비스)에 크게 의존합니다. Apache Storm에는 방향성 비순환 그래프 형태로 설계된 애플리케이션이 있습니다. 노드당 초당 백만 개 이상의 튜플을 처리하는 것으로 알려져 있습니다. 이는 확장성이 뛰어나고 처리 작업 보장을 제공합니다. Storm은 Lisp와 유사한 기능 우선 프로그래밍 언어인 Clojure로 작성되었습니다.

Apache Storm의 핵심에는 논리 그래프(토폴로지라고도 함)를 정의하고 제출하기 위한 "Thrift Definition"이 있습니다. Thrift는 원하는 언어로 구현할 수 있으므로 토폴로지도 모든 언어로 생성할 수 있습니다. 이로 인해 Storm은 다양한 언어를 지원하여 개발자에게 더욱 친숙합니다.

Storm은 YARN에서 실행되며 Hadoop 에코시스템과 완벽하게 통합됩니다. 일괄 지원이 없는 진정한 실시간 데이터 처리 프레임워크입니다. 일련의 작은 배치로 나누는 대신 전체 데이터 스트림을 전체 '이벤트'로 사용합니다. 따라서 단일 엔터티로 수집되는 데이터에 가장 적합합니다.

Storm 애플리케이션의 일반적인 아키텍처를 살펴보겠습니다. Storm이 작동하는 방식에 대한 더 많은 통찰력을 제공합니다!

Apache Storm: 일반 아키텍처 및 중요 구성 요소

아파치 스톰
Storm 애플리케이션에는 기본적으로 두 가지 유형의 노드가 있습니다(위 참조).

  • 마스터 노드(Nimbus 서비스)

Hadoop의 내부 작동을 알고 있다면 'Job Tracker'가 무엇인지 알아야 합니다. Hadoop의 마스터 노드에서 실행되는 데몬으로 노드 간의 작업 분배를 담당합니다. Nimbus는 Storm의 유사한 서비스입니다. Storm 클러스터의 마스터 노드에서 실행되며 작업자 노드 간에 작업을 배포하는 역할을 합니다.

Nimbus는 Apache에서 제공하는 Thrift 서비스로, 선택한 프로그래밍 언어로 코드를 제출할 수 있습니다. 이것은 특별히 Storm을 위한 새로운 언어를 배우지 않고도 애플리케이션을 작성하는 데 도움이 됩니다.

앞서 이야기한 것처럼 Storm에는 상태 관리 기능이 없습니다. Nimbus 서비스는 작업을 처리하는 동안 작업자 노드에서 보내는 메시지를 모니터링하기 위해 ZooKeeper에 의존해야 합니다. 모든 작업자 노드는 Nimbus가 보고 모니터링할 수 있도록 ZooKeeper 서비스에서 작업 상태를 업데이트합니다.

  • 작업자 노드(감독자 서비스)

작업 수행을 담당하는 노드입니다. Storm의 작업자 노드는 Supervisor라는 서비스를 실행합니다. Supervisor는 Nimbus 서비스에서 기계에 할당한 작업을 수신할 책임이 있습니다. 이름에서 알 수 있듯이 Supervisor는 작업자 프로세스를 감독하고 할당된 작업을 완료하는 데 도움을 줍니다. 이러한 각 작업자 프로세스는 전체 토폴로지의 하위 집합을 실행합니다.

Storm 애플리케이션에는 당면한 작업 수행을 담당하는 기본적으로 네 가지 구성 요소/추상화가 있습니다. 이것들은:

아파치 스톰

  • 토폴로지

    모든 실시간 애플리케이션의 로직은 기본적으로 볼트와 스파우트 네트워크인 토폴로지 형태로 패키지됩니다. 더 잘 이해하기 위해 MapReduce 작업과 비교할 수 있습니다. 한 가지 주요 차이점은 MapReduce 작업은 실행이 완료되면 완료되는 반면 Storm 토폴로지는 영구적으로 실행된다는 것입니다(사용자가 명시적으로 종료하지 않는 한). 네트워크는 처리 논리를 형성하는 노드와 데이터 전달 및 프로세스 실행을 보여주는 링크(스트림이라고도 함)로 구성됩니다.

  • 개울

    스트림이 무엇인지 이해하기 전에 튜플이 무엇인지 이해해야 합니다. 튜플은 Storm 클러스터의 주요 데이터 구조입니다. 이들은 값이 정수, long, shorts, 바이트, double, 문자열, 부울 부동 소수점에서 바이트 배열에 이르기까지 무엇이든 될 수 있는 명명된 값 목록입니다. 이제 .streams는 분산 환경에서 실시간으로 생성되고 처리되는 튜플의 시퀀스입니다. 이들은 Spark 클러스터의 핵심 추상화 단위를 형성합니다.

  • 주둥이

    새싹은 Storm 튜플에서 스트림의 소스입니다. 실제 데이터 소스와 연결하고, 데이터를 지속적으로 수신하고, 해당 데이터를 실제 튜플 스트림으로 변환하고, 최종적으로 처리할 볼트로 보내는 역할을 합니다. 신뢰할 수 있거나 신뢰할 수 없습니다. 신뢰할 수 있는 Spout은 Storm에 의해 처리되지 않으면 튜플을 재생하지만, 반면에 신뢰할 수 없는 Spout은 방출한 직후 튜플을 잊어버립니다.

  • 볼트

    Bolt는 토폴로지의 모든 처리를 담당합니다. 그것들은 Storm 애플리케이션의 처리 논리 단위를 형성합니다. 볼트를 사용하여 필터링, 기능, 조인, 집계, 데이터베이스 연결 등과 같은 많은 필수 작업을 수행할 수 있습니다.

누가 폭풍을 사용합니까?

강력하고 사용하기 쉬운 여러 도구가 빅 데이터 시장에 존재하지만 Storm은 사용자가 던지는 모든 프로그래밍 언어를 처리할 수 있는 능력으로 인해 해당 목록에서 고유한 위치를 찾습니다. 많은 조직에서 Storm을 사용합니다.

Apache Storm을 사용하는 몇 가지 주요 플레이어와 방법을 살펴보겠습니다!

  • 트위터

트위터 로고
Twitter는 Storm을 사용하여 피드 개인화, 수익 최적화에서 검색 결과 및 기타 프로세스 개선에 이르기까지 다양한 시스템을 구동합니다. Twitter는 Storm(나중에 Apache가 인수하고 Apache Storm으로 명명)을 개발했기 때문에 데이터베이스 시스템(Cassandra, Memcached 등), 메시징 환경(Mesos) 및 모니터링 시스템과 같은 나머지 Twitter 인프라와 원활하게 통합됩니다. .

  • 스포티 파이

스포티파이 로고
Spotify는 5천만 명 이상의 활성 사용자와 천만 명 이상의 구독자에게 음악을 스트리밍하는 것으로 유명합니다. 음악 추천, 모니터링, 분석, 광고 타겟팅 및 재생 목록 생성과 같은 다양한 실시간 기능을 제공합니다. 이 위업을 달성하기 위해 Spotify는 Apache Storm을 사용합니다.
Kafka, Memcached 및 netty-zmtp 기반 메시징 환경과 함께 스택되는 Apache Storm을 사용하면 Spotify에서 대기 시간이 짧은 내결함성 분산 시스템을 쉽게 구축할 수 있습니다.

마무리하자면…

빅 데이터 분석가로서의 경력을 쌓고 싶다면 스트리밍이 정답입니다. 실시간 데이터를 다루는 기술을 마스터할 수 있다면 분석가 역할을 위해 고용하는 회사에서 가장 선호하는 사람이 될 것입니다. 실시간 데이터 분석에 뛰어들기에 이보다 더 좋은 시기는 없을 것입니다. 왜냐하면 이것이야말로 진정한 의미에서 필요한 시점이기 때문입니다!

빅 데이터에 대해 더 알고 싶다면 PG 디플로마 빅 데이터 소프트웨어 개발 전문화 프로그램을 확인하세요. 이 프로그램은 실무 전문가를 위해 설계되었으며 7개 이상의 사례 연구 및 프로젝트를 제공하고 14개 프로그래밍 언어 및 도구, 실용적인 실습을 다룹니다. 워크샵, 400시간 이상의 엄격한 학습 및 최고의 기업과의 취업 지원.

세계 최고의 대학에서 온라인으로 소프트웨어 엔지니어링 학위배우십시오 . 이그 제 큐 티브 PG 프로그램, 고급 인증 프로그램 또는 석사 프로그램을 획득하여 경력을 빠르게 추적하십시오.

데이터 주도 기술 혁명을 주도하다

IIT Bangalore의 빅 데이터 고급 인증 프로그램