Org.apache.hadoop.mapred 주요 interface
interface 명
|
interface 설명
|
주요 Method 설명
|
InputFormat |
InputFormat 은 Map-reduce 잡의 Input의 여러가지 타입과 형태를 기술하게 지원. Map-reduce는 다양한 format 으로 input 을 받을 수 있는데(주로 Text 형) , 이렇게 input file 들이 특정 key,value 로 구성되었다면 KeyValueTextInputFormat 클래스로 지원 가능함. Input으로 주어지는 파일들의 text format, key-value, 특정 length 고정, 특정 라인씩 무조건 분할 등 여러 조건으로 input file의 특성을 기재할 수 있다. 대표적인 구현 클래스는 TextInputFormat 임. |
InputSplit[] getSplits(JobConf job , int numSplits) throws IOException
논리적으로 InputFormat으로 정의된 Input 들을 정해진 numSplits 개수만큼 분할함. 이때 논리적으로 분할된 InputSplit가 물리적인 Chunk 단위를 의미하지 않는다. |
RecordReader<K,V> getRecordReader(InputSplit split, JobConf job , Reporter reporter) throws IOException
논리적으로 분할된 InputSplit를 Record 형식으로 접근하기 위한 Collection을 반환. RecordReader는 record의 boundary 를 규정하고 record를 보다 쉽게 접근할 수 있는 api를 제공함. |
||
InputSplit |
개별 Mapper에 의해 처리되어야 할 분할 데이터를 나타냄. 각 Data Node 별로 존재하는 개별 Mapper에 원본 데이터를 분할하여 전달 되어야 함. 이렇게 분할 전달되는 입력 데이터의 기본 셋이 InputSplit 임.
InputSplit 는 RecordReader 를 통해서 쉽게 record 기반의 데이터 처리 가능 |
|
Mapper |
Input 으로 받은 key/value 쌍들을 reducer로 전달하거나 또 다른 mapper 전달을 위한 중간 형태의 key/value 쌍으로 mapping 중요한 map 메소드를 정의함.
다양한 Mappling 형태를 지원하기 위해 hadoop에서는 Mapper Interface 를 여러가지 형태로 구현한 Class 제공. IdentityMapper, InverseMapper, RegexMapper , TokenCountMapper 를 제공. |
Void map(K1 key , V1 value , OutputCollector<K2,V2> output , Reporter reporter) throws IOException
K1, V1 으로 Input mapping 하여 OutputCollector 형태로 반환하는 함수. OutputCollector에 map의 일차 mapping 결과를 Collection 형태로 저장함. OutputCollector를 이용하여 map 결과 이용 가능. |
RecordReader |
RecordReader 는 inputsplit 로 분할된 데이터를 Mapper와 Reducer에세 record 기반으로 쉽게 접근하기 위한 interface 를 제공. Record의 boundary를 규정(Iterator와 유사하게 다음 record가 있는지로 검사 )하고 쉽게 Access가능하게 해줌. |
Boolean next(K key , V value) throws IOException
다음 key ,value 값을 읽어서 K , V 에 입력한다. Key/value가 읽히면 true 그렇지 않고 EOF 일경우 false; |
K createKey() : Key 로 사용될 적절한 타입의 object 생성.
K createValue() : Value로 사용될 적절한 타입의 object생성. |
||
Reducer |
Reducer<K2,V2,K3,V3> Mapper로 부터의 output을 받아 동일한 key 를 가지는 값들을 하나로 묶는 중간 Set를 제공. Shuffle 과 Sort 를 통해 동일한 key 값을 가지는 결과를 효율적인 병렬처리를 위해 최적화 함. Reduce를 통해 동일한 key의 Value를 하나로 통합. |
Void reduce(K2 key , Iterator<V2> values , OutputCollector<K3, V3> output , Reporter report) throws IOException
Map 의 결과 K2와 Iterator value 값을 받아 shuffle/sort/reduce 결과를 OutputCollector에 저장. |
OutputFormat |
출력데이터를 파일형태로 편리하게 만들 수 있는 기능 제공을 위한 인터페이스. RecordWriter 객체를 반환할 수 있는 메소드를 제공하여 쉽게 파일 형태로 Write 가능하게 해줌. |
RecordWriter<K,V> getRecordWriter(FileSystem ignored, JobConf job, String name,Progressable progress) throws IOException
해당 job 의 RecordWriter 객체를 반환함. Name 파라미터는 output의 이름을 결정. |
Partitioner |
Map 에 중간 결과 partitioning을 조정할 수 있는 기능을 제공. 일반적인 partitioning 방법은 key 값에 대한 hash 함수를 적용하는 것이다. Partitioning의 개수는 reduce task의 개수와 동일하다. |
Int getPartition( K2 key , V2 value , int numPartitions)
Numpartitions에 주어진 총 partition개수 중에서 주어진 key 에 따른 partition 번호를 반환한다. |