2016-11-16 1 views
2

일반적으로 멀티 스레딩에 대한 아이디어는 있지만 Hadoop에서의 사용 방법은 확실하지 않습니다.Hadoop/Spark의 멀티 스레딩

제 지식에 따르면, Yarn은 Spark/Mapreduce 작업 리소스를 관리/제어하고 여기에서 멀티 스레딩을 생각할 수 없습니다. Hadoop Eco System의 다른 곳에서도 사용할 수 있는지 여부는 확실하지 않습니다.

누구든지 이에 대한 정보를 제공해 주시면 감사하겠습니다.

많은 감사,

+0

Spark에 대해 잘 모르겠지만, hadoop에서 매퍼 및 감속기 작업 자체는 멀티 스레드 작업으로 구현 될 수 있습니다. 이것을 참조하십시오 - https://hadoop.apache.org/docs/r2.6.2/api/org/apache/hadoop/mapreduce/Mapper.html#run(org.apache.hadoop.mapreduce.Mapper.Context) – Amit

+0

Regading Hadoop Mapreduce 제발 [내 대답을 참조하십시오] (http://stackoverflow.com/a/39904444/647053) –

+0

스파크에 관한 제발 [참조하십시오 (http://stackoverflow.com/questions/36671644/how-does-spark-achieve -parallelism-one-task-on-multi-core-or-hyper-thread) –

답변

2

실제로, 원사가 응용 프로그램 마스터의 요청 (MR-AppMaster 또는 스파크 드라이버) 컨테이너에 대한 자원 할당 및 할당 해제를 관리합니다. 따라서 그들 사이의 RPC는 모두 자원 계약 협상에 관한 것이므로 MapReduce 및 Spark에서 작업이 어떻게 실행되고 있는지에 대한 세부 사항은 고려하지 않습니다.

MapReduce-Hadoop의 경우 각 작업 (매퍼 또는 감속기)은 JVM에서 실행되는 단일 프로세스이므로 여기서 멀티 스레드를 사용하지 않습니다.

Spark의 경우, 각 실행 프로그램은 실제로 많은 작업자 스레드로 구성됩니다. 여기서 각 Spark 작업은 MapReduce의 각 작업 (단일 프로세스)에 해당합니다. 따라서 Spark는 다중 스레드 모델을 기반으로 구현합니다.
JVM의 오버 헤드와 작업 사이의 데이터 셔플.

내 경험에 비추어 볼 때 다중 스레드 모델은 오버 헤드는 낮 으면서도 내결함성 비용이 많이 든다. Spark의 Executor가 실패하면 executor 내에서 실행되는 모든 작업을 다시 실행해야하지만 MapReduce를 위해 다시 실행해야하는 작업은 하나뿐입니다. 또한 Spark는 실행 프로그램 측의 모든 작업이 RDD 측면에서 데이터를 캐시해야하기 때문에 엄청난 메모리 부담을 겪습니다. 하지만 Mapreduce 작업은 한 번에 하나의 블록 만 처리합니다.

희망이 있으면 도움이됩니다.