2013-05-02 1 views
4

Hadoop에서는 큰 입력 파일이 작은 파일로 분할되고 맵 기능을 통해 다른 노드에서 처리된다는 것을 알고 있습니다. 또한 InputSplit을 사용자 정의 할 수 있음을 알아야합니다. 내가 알고 싶은 점은 InputSplit에 대해 다음과 같은 유형의 사용자 정의가 가능한지 여부입니다.Hadoop의 InputSplit 사용자 정의

큰 입력 파일을 Hadoop으로 가져 왔는데, 파일의 서브 세트, 즉 파일의 행 집합이 필요합니다. 모든 입력 분할과 함께 가기. 큰 파일의 모든 데이터 청크는 파일이 분할되는 방식에 관계없이 이러한 일련의 행을 포함해야합니다.

내 질문이 더 명확하게하기 위해, 우리는 모든 InputSplit s는 map 기능을 필요로가는 경우에, 파일 내용의 나머지 부분과 입력 파일의 일부 (예를 들어 A)을 비교해야하는 경우 같은 이 부분은 A과 비교할 부분이 있습니다. 친절하게 안내합니다.

답변

1

큰 파일 (A, B, C, D, ...)을 이론적으로는 (A, B), (A, C), (A, D), ...으로 나눌 수 있습니다. 그러나이 목적을 위해 많은 사용자 정의 클래스를 작성해야합니다. 현재 FileSplitInputSplit으로 확장되며 기본적으로 file의 스플릿은 start 위치에서 시작하여 고정 length입니다. 파일에 대한 실제 액세스는 RecordReader (예 : LineRecordReader)입니다. 따라서 실제 분할뿐만 아니라 파일의 헤더 (부분 A)도 읽을 코드를 구현해야합니다.

나는 당신이 찾고있는 접근법은 실용적이지 않다고 주장 할 것이다. 레코드 판독기가 위치 (시작, 시작 + 길이)에만 액세스하는 이유는 데이터 지역입니다. 매우 큰 파일의 경우 AZ 부분은 두 개의 다른 노드에 있습니다.

A 부품의 크기에 따라 DistributedCache에이 일반 부품을 보관하는 것이 더 좋습니다.이 방법으로 효율적인 방식으로 각 맵퍼의 공통 데이터에 액세스 할 수 있습니다. 자세한 내용은 javadoc 및 http://developer.yahoo.com/hadoop/tutorial/module5.html#auxdata을 참조하십시오.

0

다음은 Hadoop MapReduce의 작동 방식에 대한 간단한 설명입니다.

당신은 카드 덱이 있고 우리는 새로운 갑판을 얻을 때와 마찬가지로 카드를 짝을 지어 순서대로 정렬하려고합니다. 1 매퍼/1 감속기

하둡 당신은 매퍼/2 기어

(컬러, 2 색, 2 감속기를 기반으로지도 것) 1 갑판 주문 스스로

하둡을

당신은 데크를 가져 와서 모든 흑인 카드와 다른 누군가에게 모든 적색 카드를줍니다. 나는 내 카드를 주문하고 그들에게 당신을 돌려 주며 똑같이합니다. 당신은 2를 함께 넣습니다. 2 매퍼/4 기어와

하둡은

당신을 (소송을 기반으로 매핑하는 것) 나는 반 갑판에서 갑판을 분할합니다. 우리는 각각 갑판을 각 소송 더미 4 개로 분류합니다. 각자는 한 벌을 가지고 주문합니다. 4 개의 더미가 반환되고 마지막 단계에서 원하는대로 정렬합니다.

그렇습니다. "감속기"부분의 모든 데이터에는 몇 가지 공통 부분이 있어야합니다.이 부분은 사용자가 매핑하는 부분입니다. 사람이지도로 나타낼 수있는 것들은 날마다 또는 내 경우에는 색이나 정장으로 나타납니다.

+0

이것은 파일 시작 부분의 입력 분할 및 공통 데이터에 대한 OP의 질문과 어떤 관련이 있습니까? – harpun

+0

MR 시스템에 대한 OP의 지식이 확실하지 않습니다. 우리가 실제 기초부터 시작해서 OP –

+0

의 의견을 바탕으로 거기에서부터 구축하겠다고 생각했습니다. 예를 들어 MR을 설명해 주셔서 감사합니다. 그러나 Harpun이 개요를 제공 한 InputSplit 문제를 찾고있었습니다. –