2012-12-19 4 views
0
  1. HDFS는 데이터를 64MB/128MB 블록으로 저장하고 데이터는 이러한 블록 크기의 작업 노드를 통해 복제됩니다. 이 블록은 노드의 하드 디스크에 저장됩니다. 이 진술에 내가 틀렸다면 나를 바로 잡으십시오.Hadoop DFS 및 MapReduce에 대한 의문점

  2. 이 블록이 RAM에 완전히로드되었거나 라인별로 스트리밍해야합니까? 아니면 둘 다 가능합니까?

  3. 내가 CSV 파일의 각 행에 대해 독립적이지 않은 계산을 수행하고자하는 1GB CSV 파일이 있다고 가정 해 보겠습니다. 나는 계산이 연속적인 10 개의 행을 처리해야한다는 것을 의미한다. 예를 들면 다음과 같습니다. 행 1:10, 2:11, 3:12 등. 내 옵션은 무엇입니까? 이 1GB 다중 행 데이터를 단일 라인 데이터로 변환 한 다음 하나의 단일 행렬로로드하는 것이 좋습니다 (전체 64MB/128MB 블록에서 계산이 복잡하면 RAM 오버플로가 발생합니다).

답변

0

1) 데이터는 데이터 노드를 따라 복제됩니다. 대부분의 구성에서는 작업 노드가 데이터 노드이기를 원합니다. 그리고 네, 그것은 물리적으로 저장됩니다.

2) 입력 판독기에서 bufferedreaders와 같은 것을 사용하고 표준 판독기를 사용하는 경우 라인별로 데이터를 "스트리밍"합니다. 다른 독자도 있고 독자도 구현할 수 있습니다.

3) 파일 행을 10 행 처리하려면 몇 가지 방법이 있습니다. 하나는 파일을 분할 불가능으로 설정하는 것입니다. 그런 다음 전체 CSV가 하나의 매퍼로 처리된다는 것이 보장됩니다. 많은 매퍼가 작동하도록 파일을 나눌 수 있습니다. 내가 생각할 수있는 다른 접근법은 훨씬 더 복잡하거나 경계에서 문제가 있습니다. 나는 전체 파일을로드하는 것이 가장 좋은 생각이 아니라고 생각합니다. 앞으로는 .csv가 커지면 접근이 실패해야합니다.

작업이지도 전용 작업 인 경우 감축 단계를 추가하고 해당 10 개의 행에 대한 특수 키를 계산할 수 있습니다 (예 : 특별한 문제와 관련됨). 그리고 감속기와 관련된 모든 행을 가져올 수 있습니다. 불행하게도 내가 link

0

1) 당신은 (올바른 블록 크기를 구성 할 수 있습니다에 당신이 얻을 도움이 될 것을, 당신의 일이 당신이 하둡를 처음 사용하는 경우

구체적 방법에 대해 충분히 알지 못했지만 Hadoop은 Hadoop 아키텍처를 간략하게 살펴볼 것이며 Hadoop은 NameNode/DataNode/SecondaryNameNode (SNN)과 JobTracker/TaskTracker라는 두 개의 데몬 그룹이있는 마스터/슬레이브 아키텍처를 가지고 있습니다 .NamesNode는 데이터 파일의 분류 방법을 관리합니다 DataNode는 HDFS 블록을 로컬 파일 시스템 (디스크)에 읽고 쓰고 복제를 위해 다른 DataNode와 통신합니다 .SNN은 통신을 담당하는 보조 데몬입니다 es를 NameNode와 함께 사용하고 Single-point-of-failure NameNode가 다운 될 때 중단 시간과 데이터 손실을 최소화하는 역할을합니다. JobTracker 마스터는 코드의 실행 계획을 결정하고 TaskTracker 슬레이브는 JobTracker가 할당 한 개별 작업을 실행합니다.

2) NameNode는 RAM에있는 모든 데이터 노드 네임 스페이스를 추적합니다. 데이터가 HDFS로로드되면 처리를 위해 디스크에서 스트리밍됩니다 (HDFS는 순차적 데이터 액세스에 최적화 됨). 스트리밍은 데이터가 저장되는 드라이브의 최대 I/O 속도에 의해서만 제한됩니다. 최적의 HDFS 블록 크기를 보려면이 Cloudera 포스트를 참조하십시오. http://blog.cloudera.com/blog/2009/02/the-small-files-problem/

3) 사용 사례를 좀 더 설명 할 수 있습니까? 공정하게 참여할 수있는 자신의 InputSplit을 정의해야 할 수도 있습니다 (http://developer.yahoo.com/hadoop/tutorial/module4.html 참조).데이터 집합을 제어 할 수 있다면 미리 처리 할 수 ​​있습니다. 또는 파일 크기를 제어 할 수 있다면 파일을 64KB의 블록 크기로 62MB의 크기로 작성할 수 있습니다.

+0

대용량 파일을 약 60MB 정도의 크기로 나누겠습니까? 각 단일 데이터 블록에는 ~ 60MB 파일이 포함되어 있습니까? –

+0

그 방법을 직접 시도하지는 않았지만 HDFS가 어떻게 작동하는지에 따라 실험을해볼 가치가 있어야합니다. – fjxx

0

) 3 대답하기 :

을 당신이 당신의 10 개 라인 세트, 그렇지 않으면,이 필드는 비어가 LineReader 주위에 코드의 비트를 구축 매우 간단하고 빠른 솔루션의 소수의 손실을 신경 쓰지 않는 경우 - 처음을 매퍼가 키/값 쌍을 요청하면 LineReader 버전에서 10 줄을 읽습니다. 모든 후속 호출에 대해 한 줄씩 읽습니다. 이렇게하려면 몇 줄의 추가 코드가 필요합니다.

관련 문제