복붙노트

[HADOOP] 비 hdfs 파일 시스템에서의 hadoop / yarn 및 작업 병렬 처리

HADOOP

비 hdfs 파일 시스템에서의 hadoop / yarn 및 작업 병렬 처리

필자는 Hadoop 2.4.1 클러스터를 인스턴스화했으며 MapReduce 애플리케이션 실행은 입력 데이터가 어떤 파일 시스템에 있는지에 따라 다르게 병렬화된다는 것을 알았습니다.

MapReduce 작업은 HDFS를 사용하여 사용 가능한 모든 메모리의 사용을 최대화 할 수있는 충분한 컨테이너를 생성합니다. 예를 들어 2GB를 할당하는 각 맵 작업과 172GB의 메모리를 가진 3 노드 클러스터, 약 86 개의 응용 프로그램 컨테이너가 생성됩니다.

HDFS가 아닌 파일 시스템 (예 : NFS 또는 나의 유스 케이스에서는 병렬 파일 시스템)에서 MapReduce 작업은 사용 가능한 작업의 하위 세트 만 할당합니다 (예 : 동일한 3- 노드 클러스터에서 약 25-40 개의 컨테이너가 만들어진). 병렬 파일 시스템을 사용하고 있기 때문에 NFS를 사용한다면 병목 현상을 걱정하지 않을 것입니다.

리소스 사용을 효과적으로 극대화 할 수있는 YARN (yarn-site.xml) 또는 MapReduce (mapred-site.xml) 구성이 있습니까?

해결법

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

    1.파일 시스템에 따라 다릅니다.

    파일 시스템에 따라 다릅니다.

    지역성이 작동하는 방식은 주어진 파일에 대해 Hadoop FileSYstem 인터페이스 내부에 getBlockLocations를 구현해야한다는 것입니다. 예를 들어 다음을 볼 수 있습니다.

    glusterfs-hadoop 파일 시스템 구현의 예제 구현은 다음과 같습니다.

    public BlockLocation[] getFileBlockLocations(FileStatus file,long start,long len) throws IOException{
        File f=pathToFile(file.getPath());
        BlockLocation[] result=null;
    
        result=attr.getPathInfo(f.getPath(), start, len);
        if(result==null){
            log.info("Problem getting destination host for file "+f.getPath());
            return null;
        }
    
        return result;
    }
    

    위에서 파일에 대한 메타 데이터가 gluster 특정 래퍼를 통해 제공되는 것을 볼 수 있습니다.이 래퍼에서는 어떤 노드가 파일의 실제 내용을 저장하는지 확인할 수 있습니다. 그런 다음 BlockLocation [] 배열은 작업 스케줄러에 대한 힌트로 서버를 처리하고, 분할 작업이 블록 위치를 결정하는 위치에 로컬로 작업을 시도합니다.

    하지만 궁극적으로 스케줄러 일은 블록이 아니라 스플릿을 처리하는 것입니다. 따라서 분할은 파일 시스템 블록보다 작거나 클 수 있습니다. 규모가 클수록 분할의 일부가 네트워크를 통해 스트리밍 될 가능성이 높습니다. 그것의 작게 작다면, 당신은 더 많은 지역성을 얻을 수 있지만, 아마도 전체적인 작업 수를 지불해야합니다.

    최적화 할 때, 각 입력 분할은 궁극적으로 매퍼에게 공급되는 것임을 기억하십시오.

    HDFS에서 기본값은 다른 파일 시스템보다 더 잘 조정되는 경향이 있습니다.

    hadoop 호환 파일 시스템에 더 세분화 된 블로킹 (getBlockLocations)을 구현함으로써 블록의 양과 블록의 복제를 늘릴 수 있습니다.

    블록 수를 늘리면 특정 블록을 로컬 컨텍스트에서 실행할 수있는 확률을 높일 수 있습니다.

    또한 런타임에 mapreduce 작업 매개 변수의 일부로 입력 분할 수 (최대 및 최소)를 토글 할 수 있습니다. 이 값을 업데이트하면 성능이 향상 될 수 있지만 지역을 줄일 수도 있습니다 (일부 시스템은 본질적으로 더 빠르면 mapreduce가 비 로컬 시스템으로 분할을 스트리밍 할 수 있음) 많은 작업.)

  2. from https://stackoverflow.com/questions/25269964/hadoop-yarn-and-task-parallelization-on-non-hdfs-filesystems by cc-by-sa and MIT license