Хранение больших данных и запросы по сравнению с традиционными реляционными / нереляционными БД - PullRequest
1 голос
/ 01 июня 2019

Я начинающий старший специалист по CS в крупном государственном университете, и я работаю стажером в крупной публичной технологической компании в их отделе науки о данных.В школе я узнал о структурах данных и алгоритмах (карты, деревья, графики, алгоритмы сортировки, алгоритмы поиска, MapReduce и т. Д.), И у меня есть некоторый опыт в личных проектах с запросами MySQL и SQL.

Мой проект для этой стажировки - создать инструментальную панель для отображения аналитики, собранной из базы данных Hadoop.Я изо всех сил пытаюсь понять, как эти данные структурированы и опрошены.Я почти уверен, что все данные в Hadoop поступают из производственной базы данных Oracle Relational DB, которая работает на их платформе. Полагаю, мой основной вопрос заключается в том, почему Hadoop и распределенная обработка требуются для сбора аналитики из базы данных, которая уже имеет структурированный формат?Как выглядят данные, хранящиеся в Hadoop?Существуют ли таблицы, подобные MySQL, или документы JSON, такие как MongoDB? Я буду запрашивать Hadoop через Druid, но я не уверен, что находится даже в этой базе данных.

Инженеры, с которыми я работал, прекрасно объяснили мне вещи, особенно вопросы об их конкретной реализации, но у них есть только определенное количество времени, чтобы посвятить помощь стажеру, и я хочу взятьИнициатива научиться чему-то этому самостоятельно.

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

Ответы [ 2 ]

0 голосов
/ 03 июня 2019

Я понял ваш вопрос.По сути, вы пытаетесь понять, что и как представляют данные в Hadoop, и почему это не традиционная база данных, а данные из традиционной базы данных в Hadoop.

Несколько основных моментов, которые необходимо понять, когда речь идет о Hadoop,

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

2. Hadoop - это фреймворк, в котором присутствуют различные компоненты.Наиболее часто используемые компоненты для запроса структурированных данных из HDFS - это Hive и Impala.

3. Что касается структурированных данных, Hadoop имеет HDFS и Hive Metastore для хранения данных в структурированном виде.HDFS хранит только файлы данных (например, текст, avro, parquet, json и т. Д.), А не метаданные (например, имя столбца, количество строк и т. Д.).С другой стороны, Hive Metastore - это, в основном, традиционные базы данных, такие как MySQL, Postgres и т. Д., Которые содержат только метаданные.Таким образом, metastore знает, где хранятся данные таблицы в HDFS, то есть путь к файлу HDFS.Подробнее об этом - вы можете прочитать один из моих постов ЗДЕСЬ

4. Почему Hadoop?Hadoop предназначен для хранения большого количества данных с высокой доступностью благодаря своей распределенной природе.Кроме того, Hadoop предназначен для WRITE один раз и READ много раз - это означает, что он больше предназначен для аналитики и отчетности, а не для транзакций, таких как использование традиционных баз данных.Что еще более важно, его с открытым исходным кодом!

Надеюсь, что это поможет вам в получении базового уровня!

0 голосов
/ 02 июня 2019

Hadoop не является базой данных, и поэтому у него нет такой вещи, как таблицы или какая-либо наследуемая структура отношений или документов.

Вы можете разместить схему над сохраненными файлами различных форматов, таких как CSV, JSON, AvroНапример, Parquet и т. Д. С использованием Hive, Presto, SparkSQL, но это все инструменты, которые читают из файловой системы Hadoop, а не являются частью самого Hadoop.Таблицы и базы данных на этом уровне являются только метаданными и не совсем репрезентативны как то, что необработанные данные выглядят

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

...