복붙노트

[HADOOP] mapper (Hadoop)에서 MATLAB 코드를 사용하는 방법은 무엇입니까?

HADOOP

mapper (Hadoop)에서 MATLAB 코드를 사용하는 방법은 무엇입니까?

이미지를 처리하는 MATLAB 코드가 있습니다. 나는 그 코드를 사용하는 Hadoop 매퍼를 만들고 싶다. 나는 다음과 같은 해결책을 보았지만 어떤 것이 가장 좋은 것인지 알지 못했다 (나를 위해 hadoop의 각 슬레이브 노드에 matlab 컴파일러 런타임을 설치하는 것이 매우 어렵 기 때문에).

어떤 제안?

미리 감사드립니다.

해결법

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

    1.아마 이미 의심 스럽기 때문에 이것은 MATLAB의 런타임 요구 사항 때문에 본질적으로하기가 어려울 것입니다. Condor에 비해 MATLAB 코드를 실행하려고 할 때도 비슷한 경험을했습니다 (런타임 라이브러리를 배포해야 함).

    아마 이미 의심 스럽기 때문에 이것은 MATLAB의 런타임 요구 사항 때문에 본질적으로하기가 어려울 것입니다. Condor에 비해 MATLAB 코드를 실행하려고 할 때도 비슷한 경험을했습니다 (런타임 라이브러리를 배포해야 함).

    옵션에 관한 한 옵션 # 1이 가장 잘 작동합니다. 또한 Linux로 작업하는 것을 피할 수 없을 수도 있습니다.

    그러나 MATLAB, Octave, Scilab 등의 상위 소프트웨어가 제공하는 편리함을 잃고 싶지 않다면 Octave 실행 스크립트와 함께 Hadoop 스트리밍을 시도 할 수 있습니다.

    Hadoop 스트리밍은 실행 파일의 성격에 상관 없습니다 (이 스크립트는 실행 가능한 스크립트인지 또는 실행 파일인지 여부에 따라 http://hadoop.apache.org/common/docs/r0.15.2/streaming.html). .

    그것이 필요로하는 것은 그것이 "실행 가능"하다는 것이다. 추가적으로 a) stdin으로부터 읽으며, b) stdout으로 출력을 보낸다.

    GNU 옥타브 프로그램은 stdin에서 읽고 stdout (http://www.gnu.org/software/octave/doc/interpreter/Executable-Octave-Programs)으로 보낼 수있는 능력을 가진 실행 가능한 스크립트 (Linux)로 바뀔 수 있습니다. .html).

    간단한 예로서 이것을 고려하십시오 :

    다음 내용으로 파일 (예 : "al.oct")을 만듭니다.

    #!/bin/octave -qf  (Please note, in my installation i had to use "#!/etc/alternatives/octave -qf")
    Q = fread(stdin); #Standard Octave / MATLAB code from here on
    disp(Q);
    

    이제 명령 프롬프트에서 다음 명령을 실행하십시오 :

    al.oct는 이제 실행 파일입니다 ... "./al.oct"로 실행할 수 있습니다. stdin, stdout이 어디에 들어가는 지 보려면 (Hadoop에서 사용할 수 있도록) 다음을 시도하십시오.

    >>cat al.oct|./al.oct|sort
    

    또는 다른 말로하면 ... al.oct 파일 "cat"을 실행 파일 al.oct로 출력 한 다음 al.oct의 출력을 sort 유틸리티로 파이프합니다 (이것은 단지 예일 뿐이며 " cat "이라면 어떤 파일이든 알기 때문에 al.oct는 단순한 텍스트 파일입니다.

    물론 옥타브가 MATLAB 코드에서 호출하려고하는 모든 것을 지원하지는 않지만, 이것은 Hadoop Streaming을 사용하여 상위 레벨 코드의 편리함 / 성능을 잃지 않고도 사용할 수 있습니다.

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

    2.변환 될 알고리즘의 특성이 중요하지 않습니까? MATLAB / Octave 코드가 단단히 결합 된 경우 맵 축소로 확산하면 끔찍한 행동을 초래할 수 있습니다.

    변환 될 알고리즘의 특성이 중요하지 않습니까? MATLAB / Octave 코드가 단단히 결합 된 경우 맵 축소로 확산하면 끔찍한 행동을 초래할 수 있습니다.

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

    3.첫 번째 옵션과 관련하여 : Matlab Coder는 기본적으로 플랫폼에 독립적이며 런타임 환경이 필요없는 알고리즘의 C 코드를 자동으로 생성하는 많은 이미지 처리 기능 (일부는 시스템 객체를 통해)을 지원합니다. 내 경험에 따르면이 코드는 "손으로 코딩 한"OpenCV (알고리즘 및 CPU에 크게 의존)보다 느린 약 2..3 팩터입니다. 가장 큰 단점은 Matlab Coder 라이센스 ($$$)가 필요하다는 것입니다.

    첫 번째 옵션과 관련하여 : Matlab Coder는 기본적으로 플랫폼에 독립적이며 런타임 환경이 필요없는 알고리즘의 C 코드를 자동으로 생성하는 많은 이미지 처리 기능 (일부는 시스템 객체를 통해)을 지원합니다. 내 경험에 따르면이 코드는 "손으로 코딩 한"OpenCV (알고리즘 및 CPU에 크게 의존)보다 느린 약 2..3 팩터입니다. 가장 큰 단점은 Matlab Coder 라이센스 ($$$)가 필요하다는 것입니다.

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

    4.대부분의 대답은 MATLAB R2014b 이전의 것 같습니다.

    대부분의 대답은 MATLAB R2014b 이전의 것 같습니다.

    R2014b에서 MATLAB은 MATLAB 내에서지도 축소 및 Hadoop과의 통합을 허용합니다.

    특정 유스 케이스에 대해 확신 할 수 없지만 다음과 같은 사항을 확인하고 싶을 수 있습니다.

    http://www.mathworks.com/help/matlab/mapreduce.html

    http://www.mathworks.com/discovery/matlab-mapreduce-hadoop.html

  5. from https://stackoverflow.com/questions/9956898/how-to-use-matlab-code-in-mapper-hadoop by cc-by-sa and MIT license