AVRO-개요

네트워크 또는 영구 저장소를 통해 데이터를 전송하려면 데이터를 직렬화해야합니다. 이전serialization APIs Java 및 Hadoop에서 제공하는 특수 유틸리티 인 Avro, 스키마 기반 직렬화 기술.

이 자습서에서는 Avro를 사용하여 데이터를 직렬화 및 역 직렬화하는 방법을 설명합니다. Avro는 다양한 프로그래밍 언어에 대한 라이브러리를 제공합니다. 이 튜토리얼에서는 Java 라이브러리를 사용하는 예제를 보여줍니다.

Avro는 무엇입니까?

Apache Avro는 언어 중립적 인 데이터 직렬화 시스템입니다. Hadoop의 아버지 인 Doug Cutting이 개발했습니다. Hadoop 쓰기 가능 클래스에는 언어 이식성이 없기 때문에 Avro는 여러 언어로 처리 할 수있는 데이터 형식을 처리하므로 매우 유용합니다. Avro는 Hadoop에서 데이터를 직렬화하는 데 선호되는 도구입니다.

Avro에는 스키마 기반 시스템이 있습니다. 언어 독립적 스키마는 읽기 및 쓰기 작업과 연결됩니다. Avro는 기본 제공 스키마가있는 데이터를 직렬화합니다. Avro는 데이터를 모든 애플리케이션에서 역 직렬화 할 수있는 압축 바이너리 형식으로 직렬화합니다.

Avro는 JSON 형식을 사용하여 데이터 구조를 선언합니다. 현재 Java, C, C ++, C #, Python 및 Ruby와 같은 언어를 지원합니다.

Avro 스키마

Avro는 schema. 스키마에 대한 사전 지식없이 모든 데이터를 작성할 수 있습니다. 그것은 빠르게 직렬화되고 결과적으로 직렬화 된 데이터의 크기가 더 작습니다. 스키마는 추가 처리를 위해 파일에 Avro 데이터와 함께 저장됩니다.

RPC에서 클라이언트와 서버는 연결 중에 스키마를 교환합니다. 이 교환은 동일한 이름의 필드, 누락 된 필드, 추가 필드 등 간의 통신에 도움이됩니다.

Avro 스키마는 JSON 라이브러리를 사용하여 언어로 구현을 단순화하는 JSON으로 정의됩니다.

Avro와 마찬가지로 Hadoop에는 다음과 같은 다른 직렬화 메커니즘이 있습니다. Sequence Files, Protocol Buffers,Thrift.

Thrift 및 프로토콜 버퍼와의 비교

ThriftProtocol BuffersAvro와 함께 가장 유능한 라이브러리입니다. Avro는 다음과 같은 점에서 이러한 프레임 워크와 다릅니다.

  • Avro는 요구 사항에 따라 동적 및 정적 유형을 모두 지원합니다. 프로토콜 버퍼 및 Thrift는 IDL (인터페이스 정의 언어)을 사용하여 스키마와 유형을 지정합니다. 이러한 IDL은 직렬화 및 역 직렬화를위한 코드를 생성하는 데 사용됩니다.

  • Avro는 Hadoop 에코 시스템에 구축되었습니다. Thrift 및 프로토콜 버퍼는 Hadoop 에코 시스템에 구축되지 않습니다.

Thrift 및 Protocol Buffer와 달리 Avro의 스키마 정의는 JSON 형식이며 독점 IDL에는 없습니다.

특성 Avro 중고품 및 프로토콜 버퍼
동적 스키마 아니
Hadoop에 내장 아니
JSON의 스키마 아니
컴파일 할 필요가 없습니다. 아니
ID를 선언 할 필요가 없습니다. 아니
최첨단 아니

Avro의 특징

다음은 Avro의 눈에 띄는 기능 중 일부입니다.

  • Avro는 language-neutral 데이터 직렬화 시스템.

  • 다양한 언어 (현재 C, C ++, C #, Java, Python 및 Ruby)로 처리 할 수 ​​있습니다.

  • Avro는 이진 구조화 형식을 생성합니다. compressiblesplittable. 따라서 Hadoop MapReduce 작업에 대한 입력으로 효율적으로 사용할 수 있습니다.

  • Avro는 rich data structures. 예를 들어 배열, 열거 유형 및 하위 레코드가 포함 된 레코드를 만들 수 있습니다. 이러한 데이터 유형은 모든 언어로 생성 할 수 있고 Hadoop에서 처리 할 수 ​​있으며 결과를 제 3의 언어로 제공 할 수 있습니다.

  • Avro schemas 정의 JSON, 이미 JSON 라이브러리가있는 언어로 구현을 용이하게합니다.

  • Avro 는 메타 데이터 섹션의 스키마와 함께 데이터를 저장하는 Avro Data File 이라는 자체 설명 파일을 생성합니다 .

  • Avro는 RPC (원격 프로 시저 호출)에서도 사용됩니다. RPC 동안 클라이언트와 서버는 연결 핸드 셰이크에서 스키마를 교환합니다.

Avro의 일반 작업

Avro를 사용하려면 주어진 워크 플로우를 따라야합니다.

  • Step 1− 스키마를 생성합니다. 여기에서 데이터에 따라 Avro 스키마를 설계해야합니다.

  • Step 2− 프로그램으로 스키마를 읽어보십시오. 두 가지 방법으로 수행됩니다.

    • By Generating a Class Corresponding to Schema− Avro를 사용하여 스키마를 컴파일합니다. 그러면 스키마에 해당하는 클래스 파일이 생성됩니다.

    • By Using Parsers Library − 파서 라이브러리를 사용하여 스키마를 직접 읽을 수 있습니다.

  • Step 3 − Avro 용으로 제공되는 직렬화 API를 사용하여 데이터를 직렬화합니다. package org.apache.avro.specific.

  • Step 4 − Avro에 제공되는 역 직렬화 API를 사용하여 데이터를 역 직렬화합니다. package org.apache.avro.specific.