[apache-storm] Apache Kafka 대 Apache Storm

Apache Kafka : 분산 메시징 시스템
Apache Storm : 실시간 메시지 처리

이벤트 데이터를 처리하기 위해 실시간 데이터 파이프 라인에서 두 기술을 어떻게 사용할 수 있습니까?

실시간 데이터 파이프 라인 측면에서 두 가지 모두 동일한 작업을 수행하는 것 같습니다. 데이터 파이프 라인에서 두 기술을 어떻게 사용할 수 있습니까?



답변

Apache Kafka를 대용량 데이터를 처리 할 수 ​​있고 한 끝점에서 다른 끝점으로 메시지를 전달할 수있는 강력한 분산 대기열로 사용합니다.

Storm은 대기열이 아닙니다. 실시간 처리 능력을 분산시킨 시스템으로 실시간 데이터에 대한 모든 종류의 조작을 병렬로 실행할 수 있습니다.

이러한 도구의 일반적인 흐름 (내가 아는대로)은 다음과 같습니다.

실시간 시스템-> Kafka-> Storm-> NoSql-> BI (선택 사항)

따라서 대용량 데이터를 처리하는 실시간 앱이 있으며이를 Kafka 대기열로 보냅니다. Storm은 kafka에서 데이터를 가져와 필요한 조작을 적용합니다. 이 시점에서 일반적으로이 데이터에서 몇 가지 이점을 얻고 싶으므로 추가 BI 계산을 위해 일부 Nosql db로 보내거나 다른 시스템에서이 NoSql을 쿼리 할 수 ​​있습니다.


답변

Kafka와 Storm의 목적은 약간 다릅니다.

카프카 는 초당 많은 양의 메시지를 처리 ​​할 수있는 분산 메시지 브로커입니다. 발행-구독 패러다임을 사용하고 토픽과 파티션에 의존합니다. Kafka는 Zookeeper를 사용하여 브로커간에 상태를 공유하고 저장합니다. 따라서 Kafka는 기본적으로 한 시스템에서 다른 시스템으로 메시지를 전송하는 역할을합니다.

Storm 은 확장 가능하고 내결함성이있는 실시간 분석 시스템입니다 (실시간으로 Hadoop처럼 생각). 소스 (Spouts)에서 데이터를 사용하여 파이프 라인 (Bolts)으로 전달합니다. 토폴로지에서 결합 할 수 있습니다. 따라서 Storm은 기본적으로 계산 단위 (집계, 기계 학습)입니다.


그러나 함께 사용할 수 있습니다. 예를 들어 애플리케이션은 kafka를 사용하여 데이터를 다른 서버로 전송하고 폭풍을 사용하여 계산을 수행합니다.


답변

나는 이것이 오래된 스레드라는 것을 알고 있으며 Apache Kafka와 Storm의 비교는 작성 당시 유효하고 정확했지만 Apache Kafka가 수년에 걸쳐 많이 발전했으며 버전 0.10 (2016 년 4 월) 이후 Kafka가 포함되어 있다는 점에 주목할 가치가 있습니다. Storm과 같은 추가 소프트웨어없이 스트림 처리 기능을 제공하는 Kafka Streams API. Kafka에는 데이터의 다양한 소스 및 싱크 (대상)에 연결하기위한 Connect API도 포함되어 있습니다.

공지 블로그-https: //www.confluent.io/blog/introducing-kafka-streams-stream-processing-made-simple/

현재 Apache 문서-https: //kafka.apache.org/documentation/streams/

0.11 Kafka에서는 스트림 처리 기능이 더욱 확장되어 Exactly Once Semantics and Transactions를 제공합니다.

https://www.confluent.io/blog/exactly-once-semantics-are-possible-heres-how-apache-kafka-does-it/


답변

이것이 작동하는 방법입니다

Kafka- 실시간 스트림 제공

Storm- 해당 스트림에서 일부 작업을 수행하려면

GitHub 프로젝트 https://github.com/abhishekgoel137/kafka-nodejs-d3js를 살펴볼 수 있습니다 .

(D3js는 그래프 표현 라이브러리입니다)

이상적인 사례 :

Realtime application -> Kafka -> Storm -> NoSQL -> d3js

이 저장소는 다음을 기반으로합니다.

Realtime application -> Kafka -> <plain Node.js> -> NoSQL -> d3js


답변

모두가 Apache Kafka :는 지속적인 메시징 대기열이라고 설명합니다.

Apache Storm : 연속 처리 도구입니다.

이 측면에서 Kafka는 API를 사용하여 FB, Twitter와 같은 웹 사이트에서 데이터를 가져오고 해당 데이터는 Apache Storm을 사용하여 처리되며 처리 된 데이터를 원하는 데이터베이스에 저장할 수 있습니다.

https://github.com/miguno/kafka-storm-starter

그냥 따라하면 몇 가지 아이디어를 얻을 수 있습니다


답변

이벤트를 계속 처리하면서 패턴을 시각화하거나 경고 (트위터 트렌드를 생각)해야하는 사용 사례가있을 때 몇 가지 패턴이 있습니다.
NiFi를 사용하면 이벤트를 처리하고 사용자 지정 코딩이 거의없는 낮은 일괄 집계로 영구 데이터 저장소를 업데이트 할 수 있습니다.
Storm (많은 사용자 지정 코딩)을 사용하면 추세 이벤트에 거의 실시간으로 액세스 할 수 있습니다.
몇 초 동안 기다릴 수 있다면 kafka에서 hdfs (Parquet)로 일괄 처리하고 처리 할 수 ​​있습니다.
몇 초 만에 알 필요가 있다면 NiFi가 필요하며 아마도 Storm도 필요합니다. (토네이도 경고를 위해 작은 지역의 기상 조건을 확인해야하는 수천 개의 지구 관측소를 모니터링하는 것을 생각해보십시오.)


답변

간단히 Kafka 는 노드에서 다른 노드로 메시지를 보내고 Storm 은 메시지를 처리합니다. 어떻게 할 수의 예를 확인 통합 아파치 카프카와 스톰