복붙노트

[HADOOP] 멀티 코어 8 노드 클러스터에서 Hadoop Map 작업을 예약하는 방법은 무엇입니까?

HADOOP

멀티 코어 8 노드 클러스터에서 Hadoop Map 작업을 예약하는 방법은 무엇입니까?

나는 "지도 만"(감소 단계 없음) 프로그램을 가지고 있습니다. 입력 파일의 크기는 7 가지 맵 작업을 생성 할만큼 충분히 커서 생성 된 출력 (part-000 ~ part006)을 확인하여 확인했습니다. 이제 클러스터에는 각각 8 개의 코어와 8GB의 메모리를 갖춘 8 개의 노드와 헤드 노드에서 호스팅되는 공유 파일 시스템이 있습니다.

내 질문은 하나의 노드에서만 7 가지 맵 작업 모두를 실행하거나 7 가지 슬레이브 노드 (노드 당 1 작업)에서 7 가지 맵 작업을 실행하는 것 중에서 선택할 수 있습니다. 그렇게 할 수 있다면 코드와 구성 파일의 변경이 필요합니다.

나는 "mapred.tasktracker.map.tasks.maximum"매개 변수를 내 코드에서 1과 7로 설정하려고 시도했지만 상당한 시간 차이를 찾지 못했습니다. 내 구성 파일에서 1로 설정됩니다.

해결법

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

    1."mapred.tasktracker.map.tasks.maximum"은 각 맵 작업에 사용할 노드 수가 아닌 각 노드에서 시작해야하는 맵 작업 수를 처리합니다. Hadoop 아키텍처에서는 마스터 노드 (마스터)에서 각 노드 (슬레이브)와 작업 추적기에 대해 하나의 작업 추적기가 있습니다. 따라서 mapred.tasktracker.map.tasks.maximum 속성을 설정하면 노드 당 실행될지도 작업 수만 변경됩니다. "mapred.tasktracker.map.tasks.maximum"의 범위는 1 / 2 * cores / node에서 2 * cores / node까지입니다.

    "mapred.tasktracker.map.tasks.maximum"은 각 맵 작업에 사용할 노드 수가 아닌 각 노드에서 시작해야하는 맵 작업 수를 처리합니다. Hadoop 아키텍처에서는 마스터 노드 (마스터)에서 각 노드 (슬레이브)와 작업 추적기에 대해 하나의 작업 추적기가 있습니다. 따라서 mapred.tasktracker.map.tasks.maximum 속성을 설정하면 노드 당 실행될지도 작업 수만 변경됩니다. "mapred.tasktracker.map.tasks.maximum"의 범위는 1 / 2 * cores / node에서 2 * cores / node까지입니다.

    전체 맵 태스크의 수는, setNumMapTasks (int)를 사용해 설정해야한다.

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

    2.헤드 노드를 호스팅하는 공유 파일 시스템을 말하면 데이터가 HDFS 또는 각 노드에 마운트 된 파일 시스템과 같은 일부 NFS에서 호스트된다는 의미입니까? 나는 당신이 HDFS를 의미한다고 생각하지만 NFS 나 유사한 것을 사용한다면 HDFS로 더 높은 처리량을 기대할 것입니다 (데이터를 처리 기계로 옮기는 대신 데이터로 처리 코드를 옮기고 싶습니다) )

    헤드 노드를 호스팅하는 공유 파일 시스템을 말하면 데이터가 HDFS 또는 각 노드에 마운트 된 파일 시스템과 같은 일부 NFS에서 호스트된다는 의미입니까? 나는 당신이 HDFS를 의미한다고 생각하지만 NFS 나 유사한 것을 사용한다면 HDFS로 더 높은 처리량을 기대할 것입니다 (데이터를 처리 기계로 옮기는 대신 데이터로 처리 코드를 옮기고 싶습니다) )

    입력 파일의 크기와 분할 크기, 파일 형식 (텍스트, 시퀀스 등), 복제 요소 및 압축 메쏘프의 크기는 얼마입니까?

    위의 질문에 대한 답변에 따라 8x8 설정을 사용하면 맵 분할 크기를 줄이고 복제 인수를 높이면 처리량을 향상시킬 수 있습니다.

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

    3.가능한 경우 7 개의 다른 노드에서 7 가지 맵 작업을 확실히 실행해야합니다. MapReduce의 모든 장점은 각 작업이 가능한 효율적으로 실행되도록 컴퓨팅을 병렬화 할 수 있다는 것입니다. 하나의 노드에서 7 개의 맵 작업을 실행하면 각 작업은 해당 단일 노드에서 동일한 리소스 (RAM, CPU, IO)를 놓고 경쟁하게됩니다.

    가능한 경우 7 개의 다른 노드에서 7 가지 맵 작업을 확실히 실행해야합니다. MapReduce의 모든 장점은 각 작업이 가능한 효율적으로 실행되도록 컴퓨팅을 병렬화 할 수 있다는 것입니다. 하나의 노드에서 7 개의 맵 작업을 실행하면 각 작업은 해당 단일 노드에서 동일한 리소스 (RAM, CPU, IO)를 놓고 경쟁하게됩니다.

    mapred.tasktracker.map.tasks.maximum의 표준 설정은 코어 당 하나이므로 설정을 8로 변경할 수 있습니다.

    또한지도 전용 작업이있는 경우 매퍼 수를 특정 숫자로 설정하는 것이 좋습니다. 지도 작업 수를 설정하는 것은 작업 추적자에게 실행할지도의 "힌트"일 뿐이지 만 DFS가 입력 데이터를 저장하는 방식에 따라 궁극적으로 작업 추적기가 결정합니다. 이 wiki에는 자세한 내용이 있습니다.

    그러나 특정 경우에 감소 작업 수를 제어하려고합니다. 예를 들어 정렬 된 숫자 목록을 원하면 모든 데이터가 단일 감속기를 통과하도록해야합니다.

  4. from https://stackoverflow.com/questions/10373498/how-to-schedule-hadoop-map-tasks-in-multi-core-8-node-cluster by cc-by-sa and MIT license