что такое система сериализации данных?

согласно Apache проект AVRO, "Avro является системой сериализации". Путем высказывания системы сериализации данных это означает, что avro является продуктом или API?

также, я не завершен уверенный в том, какова система сериализации данных? на данный момент мое понимание - то, что это - протокол, который определяет, как объект данных передается по сети. Может кто-либо помогать объяснить это интуитивным способом, которым для людей с ограниченным фоном распределенных вычислений легче понять?

Заранее спасибо!

17
задан marcosbeirigo 21 March 2010 в 10:37
поделиться

1 ответ

Итак, когда Hadoop писал Дуг Каттинг, он решил, что стандартный Java-метод сериализации Java-объекта с использованием Java Object Serialization (Java Serialization) не соответствует его требованиям к Hadoop. А именно, эти требования заключались в следующем:

  1. Сериализация данных в компактном двоичном формате.
  2. Будьте быстрыми как по производительности, так и по скорости передачи данных.
  3. Совместимость , что упрощает подключение других языков к Hadoop.

Как он описал сериализацию Java:

Это выглядело большим и непростым, и я подумал, что нам нужно что-то скудное и среднее

Вместо использования сериализации Java они написали свою собственную структуру сериализации. Основные предполагаемые проблемы с сериализацией Java заключались в том, что она записывает имя класса каждого сериализуемого объекта в поток, причем каждый последующий экземпляр этого класса содержит 5-байтовую ссылку на первый вместо имени класса.

Это не только снижает эффективную полосу пропускания потока, но и вызывает проблемы с произвольным доступом, а также с сортировкой записей в сериализованном потоке. Таким образом, сериализация Hadoop не записывает имя класса или требуемые ссылки и предполагает, что клиент знает ожидаемый тип.

Java Serialization также создает новый объект для каждого десериализованного объекта. Записываемые объекты Hadoop, реализующие сериализацию Hadoop, можно использовать повторно.Таким образом, повышается производительность MapReduce, который последовательно сериализует и десериализует миллиарды записей.

Avro вписывается в Hadoop в том смысле, что он по-другому подходит к сериализации. Клиент и сервер обмениваются схемой, описывающей поток данных. Это помогает сделать его быстрым, компактным и, что важно, упрощает смешивание языков.

Таким образом, Avro определяет формат сериализации, протокол для клиентов и серверов для передачи этих последовательных потоков и способ компактного сохранения данных в файлах.

Надеюсь, это поможет. Я подумал, что немного истории Hadoop поможет понять, почему Avro является подпроектом Hadoop и в чем он должен помочь.

27
ответ дан 30 November 2019 в 12:50
поделиться
Другие вопросы по тегам:

Похожие вопросы: