복붙노트

[HADOOP] hadoop의 작업 클라이언트가 inputSplits를 계산하는 방법

HADOOP

hadoop의 작업 클라이언트가 inputSplits를 계산하는 방법

지도 축소 통찰력을 얻으려고 노력하고 있습니다. 나는이 http://answers.oreilly.com/topic/2141-how-mapreduce-works-with-hadoop/ 기사를 컨설팅하고있다. mapduduce 프레임 워크의 JobClient 구성 요소에 관한 몇 가지 질문이 있습니다. 내 질문은 다음과 같습니다.

JObClient가 데이터에서 입력 분할을 계산하는 방법?

내가 컨설팅하는 자료에 따르면 작업 클라이언트는 작업을 실행하는 동안 지정된 HDFS의 입력 경로에있는 데이터에 대한 입력 분할을 계산합니다. 이 기사에서는 Job Client가 리소스 (jar 및 compued input split)를 HDFS에 복사한다고 말합니다. 이제 입력 데이터가 HDFS에있을 때 jobClient가 계산 된 inputsplits를 HDFS로 복사하는 이유를 묻습니다.

작업 클라이언트가 입력 분할을 HDFS로 복사한다고 가정 해 봅시다. JOb이 작업 추적기에 제출되고 작업 추적자가 작업을 알리고 HDFS에서 입력 분할을 검색하는 이유는 무엇입니까?

내 질문에 명확하지 않은 경우 사과드립니다. 나는 초보자이다. :)

해결법

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

    1.JobClient는 입력 분할을 HDFS에 복사하지 않습니다. 당신은 스스로 답을 인용했습니다 :

    JobClient는 입력 분할을 HDFS에 복사하지 않습니다. 당신은 스스로 답을 인용했습니다 :

    입력 자체는 클러스터를 사용합니다. 클라이언트는 namenode (블록 크기, 데이터 길이, 블록 위치)에서 가져온 메타 정보만을 계산합니다. 이러한 계산 된 입력 스플릿들은 메타 정보를 태스크들, 예를 들어, 블록 오프셋 및 계산할 길이를 나타냅니다.

    org.apache.hadoop.mapreduce.lib.input.FileSplit을 살펴보면 파일 경로에 시작 오프셋과 단일 태스크가 입력으로 처리 할 청크의 길이가 포함되어 있습니다. 살펴볼 수있는 직렬화 가능 클래스는 org.apache.hadoop.mapreduce.split.JobSplit.SplitMetaInfo입니다.

    이 메타 정보는 실행될 각 타스크에 대해 계산되고 실제로이 타스크를 실행할 노드에 jar와 함께 복사됩니다.

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

    2.입력 분할의 계산은 입력 형식에 따라 다릅니다. 일반적인 텍스트 입력 형식의 경우 분할 크기를 계산하기위한 일반 수식은 다음과 같습니다.

    입력 분할의 계산은 입력 형식에 따라 다릅니다. 일반적인 텍스트 입력 형식의 경우 분할 크기를 계산하기위한 일반 수식은 다음과 같습니다.

      max(mapred.min.split.size, min(mapred.max.split.size, dfs.block.size))
    

    또는 기본적으로

    입력 분할 크기 = mapred.min.split.size

    어디에      mapred.min.split.size = 최소 분할 크기      mapred.max.split.size - 최대 분할 크기      dfs.block.size = DFS 블록 크기

    DB 입력 형식의 경우 분할 크기는 다음과 같습니다.   (총 레코드 수 / 매퍼 수)

    위와 같이 입력 스플릿 및 크기의 수는 매퍼 작업 및 레코드 판독기에 지정된 메타 정보입니다.

  3. from https://stackoverflow.com/questions/16078547/how-job-client-in-hadoop-compute-inputsplits by cc-by-sa and MIT license