Подтвердить что ты не робот

Hadoop и Django, возможно ли это?

Из того, что я понял, Hadoop - это распределенная система хранения данных. Однако то, что я действительно не получаю, может ли мы заменить обычные RDBMS (MySQL, Postgresql, Oracle) на Hadoop? Или Hadoop - это еще один тип файловой системы, и мы можем запустить RDBMS на нем?

Кроме того, может ли Django интегрироваться с Hadoop? Обычно, как веб-фреймворки (ASP.NET, PHP, Java (JSP, JSF и т.д.)) Интегрируются с Hadoop?

Я немного смущен Hadoop vs RDBMS, и я был бы признателен за любое объяснение. (Извините, я много раз читал документацию, но, возможно, из-за моего незнания на английском языке, я считаю, что документация немного запутывает большую часть времени)

4b9b3361

Ответ 1

Что такое Hadoop?

Представьте себе следующий вызов: у вас много данных, и я имею в виду, по крайней мере, терабайты. Вы хотите преобразовать эти данные или извлечь некоторую информацию и обработать ее в формате, который индексируется, сжимается или "переваривается" таким образом, что вы можете работать с ним.

Hadoop может распараллеливать такое задание обработки и, в данном случае, играет большую роль, заботится о таких вещах, как избыточное хранение файлов, распределение задачи на разных компьютерах в кластере и т.д. (Да, вам нужен кластер, в противном случае Hadoop не сможет компенсировать потерю производительности фреймворка).

Если вы впервые взглянете на экосистему Hadoop, вы найдете 3 больших термина: HDFS (файловая система Hadoop), сам Hadoop (с MapReduce) и HBase (иногда база данных "база данных", которая не подходит)/p >

HDFS - это файловая система, используемая как Hadoop, так и HBase. Это дополнительный слой поверх обычной файловой системы на ваших хостах. HDFS разрезает загруженные файлы в кусках (обычно 64 МБ) и сохраняет их в кластере и заботится о их репликации.

Когда Hadoop получает задание для выполнения, он получает путь к входным файлам на HDFS, желаемом пути вывода, Mapper и Reducer Class. Mapper и Reducer обычно являются Java-классом, переданным в JAR файле (но с Hadoop Streaming вы можете использовать любой инструмент коммандной линии, который вы хотите). Преобразователь вызывается для обработки каждой записи (обычно по строке, например: "return 1, если строка содержит плохое F * слово" ) входных файлов, выход передается редуктору, который объединяет отдельные выходы в желаемый другой формат (например: добавление номеров). Это простой способ получить счетчик "плохих слов".

Прохладная вещь: вычисление отображения выполняется на node: вы обрабатываете куски линейно, и вы перемещаете только полупереваренные (обычно меньшие) данные по сети в редукторы.

И если один из узлов умирает: есть еще один с теми же данными.

HBase использует распределенное хранилище файлов и сохраняет свои таблицы, разделенные на куски кластера. HBase дает, вопреки Hadoop, случайный доступ к данным.

Как вы видите, HBase и Hadoop сильно отличаются от RDMBS. Также в HBase отсутствует множество концепций РСУБД. Моделирование данных с помощью триггеров, подготовленных данных, внешних ключей и т.д. - это не то, что считалось HBase (я не уверен на 100% об этом, так исправляйте меня;-))

Может ли Django интегрироваться с Hadoop?

Для Java это просто: Hadoop написан на Java, и все API есть, готовы к использованию.

Для Python/Django я пока не знаю (но), но я уверен, что вы можете сделать что-то с потоком Hadoop/Jython в качестве последнего средства. Я нашел следующее: Hadoopy и Python в Mappers и редукторы.

Ответ 3

Django может подключаться к большинству RDMS, поэтому вы можете использовать его с помощью решения Hadoop.

Имейте в виду, что Hadoop - это много вещей, поэтому вы хотите что-то с низкой задержкой, например HBase, не пытайтесь использовать его с Hive или Impala.

Python имеет привязку на основе привязки, happybase, которая позволяет вам запрашивать Hbase.

Ответ 4

Базовый (!) пример интеграции Django с Hadoop [УДАЛЕННАЯ ЛИНИЯ]

Я использую Oozie REST api для выполнения задания и "hasoop cat" для захвата результатов работы (из-за распределенной природы HDFS). Лучшее приложение - использовать что-то вроде Hoop для получения данных HDFS. Во всяком случае, это не простое решение.

P.S. Я отредактировал этот код и поместил его в https://github.com/Obie-Wan/django_hadoop. Теперь это отдельное приложение django.