org.apache.hadoop.mapred 패키지는 Hadoop mapreduce 를 위한 기본 Interface mapreduce 를 위한 기본  부모 클래스를 다양하게 정의함.
org.apache.hadoop.mapred.lib  패키지는 mapreduce 를 위한 hadoop에서 자체 구현한 class 들을 제공.


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

논리적으로 분할된 InputSplitRecord 형식으로 접근하기 위한 Collection을 반환. RecordReaderrecordboundary 를 규정하고 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 형태로 반환하는 함수. OutputCollectormap의 일차 mapping 결과를 Collection 형태로 저장함. OutputCollector를 이용하여 map 결과 이용 가능.

RecordReader

RecordReader inputsplit 로 분할된 데이터를 MapperReducer에세 record 기반으로 쉽게 접근하기 위한 interface 를 제공.

Recordboundary를 규정(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를 통해 동일한 keyValue를 하나로 통합.

Void reduce(K2 key , Iterator<V2> values , OutputCollector<K3, V3> output , Reporter report) throws IOException

Map 의 결과 K2Iterator 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 번호를 반환한다.  


+ Recent posts