고급 하둡 맵리 듀스의 특징은 무엇입니까?

The basic MapReduce programming explains the work flow details. But it does not cover the actual working details inside the MapReduce programming framework. 이 문서의 MapReduce 아키텍처를 통해 데이터 이동을 설명 할 것이며, API 호출은 실제의 처리를 수행하는데 사용. 우리는 또한 응용 프로그램의 특정 요구에 대한 사용자 지정 기술과 기능 오버라이드에 대해 설명합니다.

고급 맵리 듀스 기능은 실행 및 낮은 수준의 세부 사항을 설명. 정상 맵리 듀스 프로그래밍, 만 알고 API와 그 사용은 응용 프로그램을 작성하기에 충분하다. 그러나 맵리 듀스의 내부 정보는 반드시 실제 작업 내용을 이해하고 자신감을 얻을 수 있습니다.

이제 우리는 다음 절에서 고급 기능을 논의하자.

사용자 정의 유형 (Data): 사용자가 제공 매퍼 및 감속기의 경우, 하둡 맵리 듀스 프레임 워크는 항상 입력 된 데이터를 사용. 매퍼 기어를 통과 데이터는 자바 객체에 저장된다.

  • 쓰기 가능한 인터페이스: 기록 가능한 인터페이스는, 가장 중요한 인터페이스이다. 파일에서 네트워크 사용이 인터페이스에 / 마샬링 할 수있는 개체. 하둡 또한 직렬 형태로 데이터를 전송하기 위해이 인터페이스를 사용하여. 쓰기 가능한 인터페이스를 구현하는 클래스 중 일부는 아래에 언급
  1. 텍스트 클래스(그것은 문자열 데이터를 저장)
  2. LongWritable
  3. FloatWritable
  4. IntWritable
  5. BooleanWritable

사용자 정의 데이터 형은 또한 구현 될 수있다 쓰기 가능 interface. 하둡 사용자 정의 데이터 유형을 송신 할 (이는 귀하의 요구 사항에 맞는) 즉, 쓰기 가능한 인터페이스를 구현.

두 가지 방법의 readFields의를 갖고 쓰기되는 쓰기 가능한 인터페이스는 다음과 같다. 첫 번째 방법 (readFields의) '에서에 포함 된 데이터로부터 오브젝트 데이터를 초기화’ 이진 스트림. 두 번째 방법 (쓰다) 이진 스트림 '아웃'에 개체를 복원하는 데 사용됩니다. 전체 공정 중 가장 중요한 계약 이진 스트림을 판독 및 기록의 순서가 동일하다는 것이다.

목록 1: 쓰기 가능한 인터페이스를보기

공용 인터페이스 쓰기 가능 {

무효 readFields의(의 인터페이스 DataInput);

무효 쓰기(DataOutput 인터페이스 아웃);

}

사용자 정의 유형 (키): 이전 섹션에서 우리는 애플리케이션 특정 데이터 요건을 충족시키는 사용자 데이터 형식에 대해서 설명했다. 이 값 부분을 관리 만. 이제 우리는 또한 사용자 지정 키 유형에 대해 논의 할 것이다. 하둡 맵리 듀스에서, 감속기는 정렬 된 순서로 키를 처리. 따라서 사용자 키 입력라는 인터페이스를 구현해야 WritableComparable. 주요 유형은 또한 해시 코드를 구현해야합니다 ().

보여주는 다음 WritableComparable interface. 그것은 나타내는 쓰기 가능 이는 또한 유사한.

Listing2: 전시 WritableComparable interface

공용 인터페이스 WritableComparable<T>

쓰기 가능은 연장, 유사한<T>

사용자 정의 유형을 사용하는 방법: 우리는 이미 하둡에서 처리 할 수​​있는 사용자 정의 값 및 키 유형을 설명했다. 하둡은 그것을 이해할 수 있도록 이제 우리는 메커니즘을 논의 할 예정. JobConf 객체 (어떤 작업을 정의) 라는 두 가지 방법이 있습니다 setOutputKeyClass ()setOutputValueClass () 이러한 방법은 키 값 데이터 유형을 제어하기 위해 사용되는. 매퍼가 다른 유형을 생성하는 경우 JobConf의 다음 감속기 일치하지 않는 setMapOutputKeyClass ()setMapOutputValueClass () 감속기가 예상 방법은 입력 타입을 설정하는데 사용될 수있다.

빠른 성능: 먼저 다음 바이트 스트림을 구문 분석 스트림에서 키 유형을 읽는 기본 정렬 프로세스가 조금 느립니다 (사용 readFields의() 방법) 다음 마지막으로 전화 compareTo와 () 키 클래스의 방법. 빠른 접근 방식은 전체 데이터 세트를 분석하지 않고 바이트 스트림을 선택하여 키 사이의 순서를 결정하는 것. 이 비교 빠른 메커니즘을 구현할, WritableComparator 클래스는 데이터 유형에 특정한 비교하여 확장 될 수있다. 다음 클래스 선언 인.

Listing3: 전시 WritableComparator 클래스

공용 클래스 WritableComparator

개체를 확장

RawComparator는 구현

그래서 사용자 데이터와 키 유형 하둡 프레임 워크에서 높은 수준의 데이터 구조를 사용하도록 허용. 실제 하둡 애플리케이션 정의 데이터 타입의 가장 중요한 요건 중 하나이다. 그래서이 기능은 사용자 정의 쓰기 유형을 사용하실 수 있습니다 상당한 성능 향상을 제공합니다.

입력 형식: The InputFormat MapReduce의 작업의 입력 사양을 정의하는 가장 중요한 인터페이스이다. 하둡은 다른 유형을 제공합니다 InputFormat 다양한 형태의 입력 데이터의 해석. 가장 일반적이고 기본이다 TextInputFormat 텍스트 파일의 라인을 읽을 때 사용되는. 비슷하게 SequenceFileInputFormat 바이너리 파일 형식을 읽는 데 사용됩니다.

의 기본 작업 InputFormat 입력 파일의 데이터를 판독하는 것. 사용자 정의의 구현 InputFormat 응용 프로그램의 필요에 따라 가능하다. 기본에 대한 TextInputFormat 구현 키는 라인과 가치의 오프셋 (offset) 바이트는 ' n을 종료 라인의 내용입니다’ character. 사용자 정의 구현, 분리는 임의의 문자와 수 있습니다 InputFormat 이에 따라 구문 분석.

의 다른 작업 InputFormat 입력 파일을 분할하는 (데이터 소스) 태스크 매핑하는 입력 조각으로. 이 단편 / 분할은 InputSplit 인터페이스의 경우에 캡슐화. 입력 데이터 소스는 데이터베이스 테이블과 같은 것이 될 수있다, XML 파일 또는 다른 파일. 분할은 애플리케이션의 요구 사항에 기초하여 수행 될 수 있도록. 가장 중요한 점은 분할 작업을 빠르고 저렴해야한다는 것입니다.

파일을 분할 한 후, 개별 분할이 매우 중요하다에서 작업을 읽어. RecordReader는 스플릿로부터 데이터를 판독하기위한 책임. The RecordReader 스플릿은 항상 줄 끝에 깔끔하게 끝나지 않는 사실을 처리하기에 충분히 효율적이어야. The RecordReader 이 분리의 이론 단을 통과하는 경우에도, 항상 라인의 끝까지 읽는. 이 기능은 InputSplit 경계를 넘어 수도 기록의 누락하지 않도록하는 것이 매우 중요합니다.

  • 사용자 정의 InputFormat: 기본 응용 프로그램에서 InputFormat 직접 사용. 그러나 사용자 정의를 위해 가장 좋은 방법은 하위 클래스 읽기 FileInputFormat. 이 추상 클래스는 응용 프로그램의 요구 사항에 따라 파일을 조작하는 기능을 제공. 사용자 정의 구문 분석, the getRecordReader () 방법의 인스턴스를 반환하는 오버라이드 (override) 할 수 있어야합니다 RecordReader. 이 RecordReader 읽기와 해석에 대한 책임이있다.
  • 다른 소스 (Data): InputFormat 두 가지를 설명합니다, 먼저 매퍼 데이터의 표현이고, 두 번째는 데이터 소스이고. 구현의 대부분은에 기초 FileInputFormat, 데이터 소스는 HDFS의 로컬 파일 시스템 어디 (Hadoop Distributed File System).그러나, 데이터 소스의 다른 유형, InputFormat의 사용자 정의 구현이 필요합니다. For example, 되는 NoSQL 데이터베이스 HBase를 제공​​처럼 TableInputFormat 데이터베이스 테이블에서 데이터를 판독. 그래서 데이터 소스 사용자 정의 구현을 처리 할 수​​있는 모든 것을 할 수 있습니다.

출력 형식: The OutputFormat 기록 동작을 담당. 우리는 이미 있다고 설명했다 InputFormat RecordReader 인터페이스 MapReduce의 프로그램으로 데이터 판독에 대한 책임. 데이터를 처리 한 후, 영구 저장 장치에 기록 동작에 의해 관리되고 OutputFormatRecordWriter 인터페이스. 기본 형식은 TextOutputFormat 이는 출력 파일에 문자열로 키 / 값 쌍을 쓴다. 다른 출력 형식은 SequenceFileOutputFormat 그것은 바이너리 형식의 데이터를 유지. 이러한 모든 클래스는 사용 쓰다 ()readFields의 () 방법 쓰기 가능 클래스.

The OutputFormat 구현은 사용자 정의 형식으로 데이터를 작성하는 사용자 정의 할 필요가있다. The FileOutputFormat 추상 클래스는 사용자 지정을 확장해야합니다. The JobConf.setOutputFormat () 방법은 다른 사용자 포맷을 사용하도록 수정해야.

데이터 파티션: 파티션이있는 중간 키 / 값 쌍을받을 것이다 감속기 예를 결정하는 과정으로 정의 할 수 있습니다. 각 매퍼는 모든 출력 키 / 값 쌍의 대상 감속기를 결정해야한다. 가장 중요한 점은 그 관계없이 매퍼 인스턴스의 키에 대한, 대상 파티션은 동일. 성능 이유 맵퍼 특정 키의 파티션으로 서로 통신하지 들어.

The 분할기 인터페이스는 키 / 값 쌍에 대한 대상 파티션을 결정 하둡 시스템에 의해 사용되는. 파티션의 개수는 감소 태스크의 수에 일치해야. 작업이 시작될 때의 MapReduce 프레임 워크는 파티션의 수를 결정.

파티션 설정 인터페이스의 서명은 다음과.

Listing 4: 파티션 설정 인터페이스를 표시

공용 인터페이스 분할기<K2, V2>

JobConfigurable를 확장

결론: 이 논의에서 우리는 가장 중요한 하둡 맵리 듀스 기능을 적용했다. 이러한 기능은 사용자 지정 목적에 도움이됩니다. 실제 맵리 듀스 응용 프로그램에서, API를 기본 구현은 많이 사용하지 않습니다. Rather, 사용자 정의 기능 (노출 된 API에 대한 기초가되는) 상당한 영향을 미칠. 개념이 명확하면 이러한 모든 사용자 정의를 쉽게 수행 할 수 있습니다. 이 문서는 고급 기능과 구현을 이해하는데 도움이 될 것입니다 희망.

 

Tagged on: , ,
============================================= ============================================== 아마존에서 최고의 Techalpine 책을 구입하십시오,en,전기 기술자 CT 밤나무 전기,en
============================================== ---------------------------------------------------------------- electrician ct chestnutelectric
error

Enjoy this blog? Please spread the word :)

Follow by Email
LinkedIn
LinkedIn
Share