복붙노트

[HADOOP] Hadoop이 MPI를 사용하여 구현되지 않는 이유는 무엇입니까?

HADOOP

Hadoop이 MPI를 사용하여 구현되지 않는 이유는 무엇입니까?

내가 틀렸다면 정정하십시오.하지만 Hadoop은 다른 노드 간의 통신에 MPI를 사용하지 않습니다.

이 기술적 이유는 무엇입니까?

나는 약간의 추측을 위험 할 수있다. 그러나 MPI가 내가 "옳은가"를 알기 위해 "두포 (under the hood)"에서 어떻게 구현되는지는 모른다.

생각해 보니, 하둡의 내부도 완전히 익숙하지 않습니다. 개념적 수준에서 프레임 워크를 이해합니다 (map / combine / shuffle / reduce 및 그 방법이 높은 수준에서 작동하는 방식).하지만 구현 세부 사항을 잘 모르겠습니다. 저는 항상 Hadoop이 TCP 연결을 통해 직렬화 된 데이터 구조 (예 : GPB)를 전송한다고 가정했습니다 (예 : 셔플 단계). 그것이 사실이 아닌지 알려주세요.

해결법

  1. ==============================

    1.Hadoop / map-reduce의 큰 특징 중 하나는 내결함성입니다. 내결함성은 대부분의 (현재의) 현재 MPI 구현에서 지원되지 않습니다. OpenMPI의 차기 버전을 고려하고 있습니다.

    Hadoop / map-reduce의 큰 특징 중 하나는 내결함성입니다. 내결함성은 대부분의 (현재의) 현재 MPI 구현에서 지원되지 않습니다. OpenMPI의 차기 버전을 고려하고 있습니다.

    Sandia 연구소에는 MPI를 사용하는 map-reduce 버전이 있지만 내결함성이 부족합니다.

  2. ==============================

    2.MPI는 메시지 전달 인터페이스입니다. 바로 그 이름에 - 데이터 지역이 없습니다. 데이터를 계산하기 위해 다른 노드로 데이터를 보냅니다. 따라서 MPI는 대용량 데이터로 작업 할 때 성능면에서 네트워크에 기반합니다.

    MPI는 메시지 전달 인터페이스입니다. 바로 그 이름에 - 데이터 지역이 없습니다. 데이터를 계산하기 위해 다른 노드로 데이터를 보냅니다. 따라서 MPI는 대용량 데이터로 작업 할 때 성능면에서 네트워크에 기반합니다.

    Hadoop 분산 파일 시스템을 사용하는 MapReduce는 로컬 스토리지에서 계산을 수행 할 수 있도록 데이터를 복제하므로 디스크에서 스트리밍하고 프로세서로 직접 스트리밍 할 수 있습니다. 따라서 MapReduce는 대용량 데이터로 작업 할 때 네트워크 병목 현상을 피하기 위해 로컬 스토리지를 이용합니다.

    이것은 MapReduce가 네트워크를 사용하지 않는다는 것을 의미하는 것은 아닙니다 : 그것은 : 종종 셔플은 가장 느린 작업 부분입니다! 그러나 그것은 그것을 가능한 한 효율적이고 적게 사용합니다.

    요약하자면 Hadoop (및 이전의 Google 제품)은 MPI를 사용할 수 없어 작동하지 않았기 때문에 MPI를 사용하지 않았습니다. MapReduce 시스템은 디스크 용량 폭발 (및 데이터), 디스크 속도 정체, 네트워크 속도 저하, 프로세서 기가 헤르츠 피크, 멀티 코어 무어의 법칙 등 하드웨어의 추세에 비추어 MPI의 단점을 해결하기 위해 특별히 개발되었습니다.

  3. ==============================

    3.사실 MPI를 사용하여 Hadoop을 구현할 수 있습니다. MapReduce는 MPI가있는 한 MPI를 통해 사용되었습니다. MPI는 'bcast'와 같은 기능을 가지고 있습니다 - 모든 데이터를 브로드 캐스트, 'alltoall'- 모든 노드에 모든 데이터를 보내고 'reduce'및 'allreduce'. Hadoop은 명시 적으로 데이터 분산을 구현하고 reduce 커맨드로 나가는 통신 커맨드를 패키징하여 결과 메소드를 수집하는 요구 사항을 제거합니다. 위쪽은 Hadoop을 구현하기 전에 문제가 'reduce'기능에 맞는지 확인해야합니다. 문제가 'scatter'/ 'gather'에 더 적합 할 수 있으며 Hadoop 대신 MPI와 함께 Torque / MAUI / SGE를 사용해야합니다. 마지막으로, MPI는 디스크에 쓰기로 수신 방법을 수행하지 않는 한 다른 게시물에 설명 된대로 디스크에 데이터를 쓰지 않습니다. Hadoop은 프로세스 / 데이터를 다른 곳으로 보내 작업을 수행하는 것처럼 작동합니다. 중요한 부분은 MapReduce가 가장 효율적인 병렬화 전략인지 확인하는 데 충분한 세부 사항으로 문제를 이해하고 다른 많은 전략이 있다는 것을 알고 있어야합니다.

    사실 MPI를 사용하여 Hadoop을 구현할 수 있습니다. MapReduce는 MPI가있는 한 MPI를 통해 사용되었습니다. MPI는 'bcast'와 같은 기능을 가지고 있습니다 - 모든 데이터를 브로드 캐스트, 'alltoall'- 모든 노드에 모든 데이터를 보내고 'reduce'및 'allreduce'. Hadoop은 명시 적으로 데이터 분산을 구현하고 reduce 커맨드로 나가는 통신 커맨드를 패키징하여 결과 메소드를 수집하는 요구 사항을 제거합니다. 위쪽은 Hadoop을 구현하기 전에 문제가 'reduce'기능에 맞는지 확인해야합니다. 문제가 'scatter'/ 'gather'에 더 적합 할 수 있으며 Hadoop 대신 MPI와 함께 Torque / MAUI / SGE를 사용해야합니다. 마지막으로, MPI는 디스크에 쓰기로 수신 방법을 수행하지 않는 한 다른 게시물에 설명 된대로 디스크에 데이터를 쓰지 않습니다. Hadoop은 프로세스 / 데이터를 다른 곳으로 보내 작업을 수행하는 것처럼 작동합니다. 중요한 부분은 MapReduce가 가장 효율적인 병렬화 전략인지 확인하는 데 충분한 세부 사항으로 문제를 이해하고 다른 많은 전략이 있다는 것을 알고 있어야합니다.

  4. ==============================

    4.MPI 프로그램이 로컬 디스크를 사용하지 못하도록하는 제한이 없습니다. 물론 MPI 프로그램은 항상 모든 병렬 응용 프로그램과 마찬가지로 RAM이나 로컬 디스크의 데이터에 대해 로컬로 작업을 시도합니다. MPI 2.0 (향후 버전은 아니지만 10 년 동안 여기에있었습니다) 프로세스를 동적으로 추가 및 제거 할 수 있습니다.이를 통해 프로세스를 동적으로 추가 및 제거 할 수 있습니다. 어떤 노드에서 죽어가는 과정.

    MPI 프로그램이 로컬 디스크를 사용하지 못하도록하는 제한이 없습니다. 물론 MPI 프로그램은 항상 모든 병렬 응용 프로그램과 마찬가지로 RAM이나 로컬 디스크의 데이터에 대해 로컬로 작업을 시도합니다. MPI 2.0 (향후 버전은 아니지만 10 년 동안 여기에있었습니다) 프로세스를 동적으로 추가 및 제거 할 수 있습니다.이를 통해 프로세스를 동적으로 추가 및 제거 할 수 있습니다. 어떤 노드에서 죽어가는 과정.

    아마도 MPI는 MPI를 사용하지 않을 것입니다. 왜냐하면 MPI는 일반적으로 C 또는 Fortran에서 코딩해야하기 때문에보다 과학 / 학술 개발자 문화를 가지고있는 반면, hadoop은 강력한 Java 편향성을 지닌 IT 전문가들에 의해 더 많이 영향을받는 것처럼 보입니다. MPI는 매우 낮은 수준이며 오류가 발생하기 쉽습니다. 하드웨어, RAM 및 네트워크를 매우 효율적으로 사용할 수 있습니다. Hadoop은 효율성 위약으로 높은 수준의 강력한 시도를합니다. MPI 프로그래밍은 이식성을 유지하기 위해 규율과주의가 필요하며 각 플랫폼의 소스 코드에서 컴파일해야합니다. Hadoop은 휴대하기가 쉽고 설치가 쉽고 빠르고 빠르며 더러운 응용 프로그램 개발을 허용합니다. 그것은 다른 범위입니다.

    그럼에도 불구하고 아마도 과장된 과대 광고는 아마도 MPI를 기반으로 한 자원 효율적 대안으로 이어질 것입니다.

  5. ==============================

    5.MapReduce 2.0 (MRv2) 또는 YARN 애플리케이션에서는 YARN 위에 애플리케이션을 작성 (또는 실행을 위해 포팅) 할 수 있습니다.

    MapReduce 2.0 (MRv2) 또는 YARN 애플리케이션에서는 YARN 위에 애플리케이션을 작성 (또는 실행을 위해 포팅) 할 수 있습니다.

    따라서 기본적으로 차세대 Apache Hadoop MapReduce (MAPREDUCE-279)와 그 위에 여러 프로그래밍 패러다임을 지원하는 방법이있을 것입니다. 따라서 YARN에 MPI 응용 프로그램을 작성할 수 있습니다. MapReduce 프로그래밍 패러다임은 항상 기본값으로 지원됩니다.

    http://wiki.apache.org/hadoop/PoweredByYarn Open MPI를 비롯하여 YARN 위에 개발 된 모든 응용 프로그램에 대한 아이디어를 제공해야합니다.

  6. ==============================

    6.Hadoop의 Map / Reduce 단계와 Scheduling 부분을 살펴보면 MPI가 훨씬 더 나은 방법론 / 기술이라고 주장 할 것입니다. MPI는 방송, 장벽, 모든 수집, 분산 / 수집 (또는 맵 축소라고 부름)과 같은 다양한 교환 패턴을 지원합니다. 그러나 하둡은 또한 HDFS를 가지고 있습니다. 이를 통해 데이터가 처리 노드에 훨씬 가깝게 배치 될 수 있습니다. 그리고 Hadoop과 같은 기술이 사용되는 곳에 문제 공간을 살펴 본다면, 축소 단계의 결과는 실제로 상당히 크기 때문에 모든 정보가 네트워크를 휩쓸고 싶어하지 않을 것입니다. 이것이 바로 Hadoop이 모든 것을 디스크에 저장하는 이유입니다. 그러나 제어 메시지는 MPI를 사용할 수 있었고, MPI 메시지는 디스크상의 실제 데이터에 대한 포인터 (URL 또는 파일 핸들)를 가질 수 있습니다 ...

    Hadoop의 Map / Reduce 단계와 Scheduling 부분을 살펴보면 MPI가 훨씬 더 나은 방법론 / 기술이라고 주장 할 것입니다. MPI는 방송, 장벽, 모든 수집, 분산 / 수집 (또는 맵 축소라고 부름)과 같은 다양한 교환 패턴을 지원합니다. 그러나 하둡은 또한 HDFS를 가지고 있습니다. 이를 통해 데이터가 처리 노드에 훨씬 가깝게 배치 될 수 있습니다. 그리고 Hadoop과 같은 기술이 사용되는 곳에 문제 공간을 살펴 본다면, 축소 단계의 결과는 실제로 상당히 크기 때문에 모든 정보가 네트워크를 휩쓸고 싶어하지 않을 것입니다. 이것이 바로 Hadoop이 모든 것을 디스크에 저장하는 이유입니다. 그러나 제어 메시지는 MPI를 사용할 수 있었고, MPI 메시지는 디스크상의 실제 데이터에 대한 포인터 (URL 또는 파일 핸들)를 가질 수 있습니다 ...

  7. from https://stackoverflow.com/questions/4590674/why-isnt-hadoop-implemented-using-mpi by cc-by-sa and MIT license