Storm과 Hadoop 간의 상충 관계 (MapReduce)


12

누군가가 데이터 처리를 위해 Hadoop Cluster에서 Storm과 MapReduce를 선택할 때 관련된 트레이드 오프에 대해 친절하게 말해 줄 수 있습니까? 물론 Hadoop (Hadoop 클러스터에서 MapReduce를 통한 처리)은 일괄 처리 시스템이고 Storm은 실시간 처리 시스템이라는 것이 명백합니다.

Hadoop Eco System에서 약간 작업했지만 Storm에서는 작업하지 않았습니다. 많은 프레젠테이션과 기사를 검토 한 후에도 여전히 만족스럽고 포괄적 인 답변을 찾지 못했습니다.

참고 : 여기서 트레이드 오프라는 용어는 유사한 항목과 비교하기위한 것이 아닙니다. 이는 배치 처리 시스템에없는 결과를 실시간으로 얻는 결과를 나타냅니다.

답변:


13

MapReduce : 내결함성 분산 계산 프레임 워크. MapReduce를 사용하면 하드웨어로 인한 장애를 방지하기 위해 많은 작업을하면서 대량의 데이터를 처리 할 수 ​​있습니다. MapReduce는 속도가 느리기 때문에 결과를 즉시 계산하기에 적합하지 않습니다. (일반적인 MapReduce 작업은 마이크로 초가 아닌 몇 분 또는 몇 시간 정도 걸립니다)

MapReduce 작업은 파일 (또는 일부 데이터 저장소)을 입력으로 가져 와서 결과 파일을 씁니다. 이러한 결과를 응용 프로그램에서 사용할 수있게하려면이 데이터를 액세스 할 수있는 장소에 두어야합니다. 속도가 느릴 수 있으며 표시 할 수있는 값과 현재 상태의 시스템을 나타내는 값 사이에 지연이 발생합니다.

실시간 시스템을 구축 할 때 MapReduce를 사용할 때 고려해야 할 중요한 차이점은 모델 교육 및 모델 적용입니다. 모형 매개 변수가 빠르게 변경되지 않는다고 생각하는 경우 MapReduce를 사용하여 모형 매개 변수를 적합 화 한 다음 모형을 적용 할 때 이러한 사전 적합 매개 변수에 액세스하는 메커니즘을 가질 수 있습니다.

스톰 : 실시간 스트리밍 계산 시스템. Storm은 온라인 프레임 워크로,이 의미에서 실행중인 응용 프로그램과 상호 작용하는 서비스를 의미합니다. MapReduce와 달리 응용 프로그램에서 처리 될 때 전체 파일이 아닌 작은 데이터 조각을받습니다. 데이터에 대해 수행 할 작업의 DAG를 정의합니다. Storm의 일반적이고 간단한 사용 사례는 카운터를 추적하고 해당 정보를 사용하여 실시간 대시 보드를 채우는 것입니다.

Storm은 데이터 유지와 (필수적으로) 관련이 없습니다. 여기서 스트리밍은 관심있는 정보를 유지하고 나머지는 버리는 또 다른 방법입니다. 실제로 응용 프로그램에 이미 데이터를 기록한 지속성 계층이있을 수 있으므로이 문제는 훌륭하고 정당한 분리입니다.

자세한 내용을 알고 싶은 경우 ... MR을 사용하여 매개 변수에 맞는 실시간 시스템에 대해 더 배우고 모델을 다른 방식으로 적용하려면 여기에서 실시간 추천 엔진을 구축하는 대화에 대한 슬라이드가 있습니다. HBase.

흥미로운 방식으로 실시간 계산 및 지속성과 결혼하는 훌륭한 논문은 Google 뉴스 개인화 : 확장 가능한 온라인 협업 필터링입니다.

MR과 Storm의 또 다른 흥미로운 결혼은 SummingBird 입니다. Summingbird를 사용하면 Storm 또는 MR을 통해 적용 할 수있는 데이터 분석 작업을 정의 할 수 있습니다.


9

이것은 프라이팬과은 제품 서랍 사이의 장단점을 묻는 것과 같습니다. 그것들은 당신이 비교하는 두 가지가 아닙니다. 더 큰 프로젝트의 일부로 함께 사용할 수 있습니다.

하둡 자체는 하나가 아니라 HDFS, Hive, HBase, MapReduce 등과 같은 서비스 연합의 이름입니다. Storm은 HDFS 또는 HBase와 같은 일부 서비스에서 사용하는 것입니다. 스트림 처리 프레임 워크입니다. 확장 된 Hadoop 에코 시스템에는 스파크 스트리밍과 같은 다른 것들이 있습니다.

언제 스트림 처리 프레임 워크를 선택 하시겠습니까? 거의 실시간으로 새로운 데이터에 반응해야 할 때. 이런 종류의 도구가 필요한 경우 이러한 종류의 도구도 배포합니다.


나는 Hadoop Echo 시스템에서 MapReduce를 통한 처리를 일반적으로 사용되는 용어이기 때문에 단순히 Hadoop이라고 언급했습니다 (기술적으로 잘못되었으므로 그에 따라 질문이 변경되었습니다).
mbbce 2016 년

내가 틀렸을 수도 있지만 거의 실시간 처리하는 것보다 더 많은 것이 있다고 생각합니다. 그들 사이에 상충 관계가 없다면, 모든 사람들은 거의 실시간으로 일을하고 싶을 것입니다. 하이브리드 방식을 사용하면 두 세계의 장점을 어느 정도 얻을 수 있습니다. 그것이 Summingbird가 만들어진 이유입니다.
mbbce 2016 년

1
주요 차이점은 스트림 처리 시스템이 데이터를 한 번만 터치 할 수 있으며 자체적으로 장기적인 상태가 없다는 것입니다. 이 방법으로는 일부 문제를 해결할 수 없습니다. 문제가없는 경우 먼저 데이터를 다시 읽을 수있는 스토리지에 유지할 필요가없는 시스템을 사용하는 것이 더 빠릅니다. MapReduce는 기본적으로 Storm보다 느리지 않습니다. 둘 다 컨테이너입니다. 그들은 다른 문제에 대한 다른 패러다임입니다.
Sean Owen

장기적인 지속 상태를 갖지 않는다는 것은 그러한 실시간 시스템이 오랜 기간 동안 입력 업데이트를 축적 할 수 없다는 것을 의미합니까? 이에 대해 더 논의 할 수있는 자료를 알려주시겠습니까?
mbbce 2016 년

이것은 스트리밍 시스템의 정의입니다. 장기적으로 상태에 액세스 할 수있는 시스템을 상상한다면 실제로 스트리밍되지는 않습니다.
Sean Owen
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.