복붙노트

[HADOOP] 코어 정보의 하둡 클러스터 크기 / 번호를 수집하는 방법

HADOOP

코어 정보의 하둡 클러스터 크기 / 번호를 수집하는 방법

나는 (기계 당 .. 메인 메모리, 코어의 수, 크기 등), 그 크기를 알 수없는 여러 대의 컴퓨터로 구성된 클러스터 내 하둡 작업을 실행하고 있습니다. 어떤 OS 특정 라이브러리 (* 내 말은 .so를 파일)를 사용하지 않고, 자체 하둡 또는 내가 하둡 MR 작업이 실행되는 동안 같은 정보를 수집 할 수있는 몇 가지 추가 라이브러리에 대한 모든 클래스 또는 도구가 있습니다 :

나는 하드웨어 정보 또는 내가 프로그래밍 내 하둡 코드에서 이런 종류의 정보를 수집 할 이유 클러스터의 사양이 없습니다.

이걸 어떻게 달성 할 수 있습니까? 나는 때문에 다른 이유의 이러한 종류의 정보를 알고 싶습니다. 한 가지 이유는 다음과 같은 오류에 의해 주어진다 : 나는 공간이 부족하는 기계 알고 싶어요.

12/07/17 14:28:25 INFO mapred.JobClient: Task Id : attempt_201205221754_0208_m_001087_0, Status : FAILED

org.apache.hadoop.util.DiskChecker$DiskErrorException: Could not find any valid local directory for output/spill2.out

        at org.apache.hadoop.fs.LocalDirAllocator$AllocatorPerContext.getLocalPathForWrite(LocalDirAllocator.java:376)

        at org.apache.hadoop.fs.LocalDirAllocator.getLocalPathForWrite(LocalDirAllocator.java:146)

        at org.apache.hadoop.fs.LocalDirAllocator.getLocalPathForWrite(LocalDirAllocator.java:127)

        at org.apache.hadoop.mapred.MapOutputFile.getSpillFileForWrite(MapOutputFile.java:121)

        at org.apache.hadoop.mapred.MapTask$MapOutputBuffer.sortAndSpill(MapTask.java:1247)

        at org.apache.hadoop.mapred.MapTask$MapOutputBuffer.flush(MapTask.java:1155)

        at org.apache.hadoop.mapred.MapTask$NewOutputCollector.close(MapTask.java:582)

        at org.apache.hadoop.mapred.MapTask.runNewMapper(MapTask.java:649)

        at org.apache.hadoop.mapred.MapTask.run(MapTask.java:323)

        at org.apache.hadoop.mapred.Child$4.run(Child.java:270)

        at java.security.AccessController.doPrivileged(Native Method)

        at javax.security.auth.Subject.

해결법

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

    1.마스터 노드는 노예의 파일이 있어야 ssh를 모든 슬레이브에 대한 액세스 및 모든 노드의 목록을 가질 것이다. 그래서 노예의 노드 목록을 반복은 SCP를 사용하여 마스터에 복사에게 파일을 파일 스크립트를 작성.

    마스터 노드는 노예의 파일이 있어야 ssh를 모든 슬레이브에 대한 액세스 및 모든 노드의 목록을 가질 것이다. 그래서 노예의 노드 목록을 반복은 SCP를 사용하여 마스터에 복사에게 파일을 파일 스크립트를 작성.

    이 같은 스크립트를 작동합니다

    호 이름 / IP ($ I)는 cpuinfo의와 meminfo를 파일에 추가 될 것이다. MR 작업이이 작업에 대한 잔인한 것입니다.

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

    2.리눅스 노드에 배포 클러스터에있는 가정, 당신은 / proc 디렉토리 / cpuinfo의 및 / proc 디렉토리 / meminfo 파일 파일에서 CPU 및 메모리 정보를 추출 할 수 있습니다. 당신은 당신이 클러스터의 각 노드 터치 (또는 충분한지도 작업은 각 작업 추적기 노드가 적어도 하나의 작업을 얻을 수 있도록 생성 보장 분할 크기의 텍스트 파일을 처리 보장하는 사용자 정의 입력 형식을 작성해야 실행합니다.

    리눅스 노드에 배포 클러스터에있는 가정, 당신은 / proc 디렉토리 / cpuinfo의 및 / proc 디렉토리 / meminfo 파일 파일에서 CPU 및 메모리 정보를 추출 할 수 있습니다. 당신은 당신이 클러스터의 각 노드 터치 (또는 충분한지도 작업은 각 작업 추적기 노드가 적어도 하나의 작업을 얻을 수 있도록 생성 보장 분할 크기의 텍스트 파일을 처리 보장하는 사용자 정의 입력 형식을 작성해야 실행합니다.

    당신 감속기에서 출력 매퍼에서 쌍 (호스트 이름, 정보) 등의 정보를, 그리고 DEDUP 수

    (호환되는 CPU가있는 경우) 그 cpuinfo의 그렇게 4 코어 하이퍼 스레드의 CPU 아마은 / proc / cpuinfo의 8 '프로세서'를 보여줍니다 아니라 코어의 수보다 하이퍼 스레드 코어의 수를보고합니다

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

    3.ohai 라이브러리 (Opscode 요리사의 일부) 절경입니다; 이 출력 시스템에서 통계의 모든 종류의 JSON 덤프 것이다.

    ohai 라이브러리 (Opscode 요리사의 일부) 절경입니다; 이 출력 시스템에서 통계의 모든 종류의 JSON 덤프 것이다.

    mapred.max.maps.per.node - -이 플래그로 사용되는 하나의 작업이 하나 개의 노드에서 동시에 실행할 수있는 작업의 수를 제한하기를,하지만이 제거되었습니다. 우우. 당신은 그 기능을 제공하기 위해 수정 된 스케줄러를 실행해야합니다.

  4. from https://stackoverflow.com/questions/11523480/how-to-collect-hadoop-cluster-size-number-of-cores-information by cc-by-sa and MIT license