Hadoop как база данных хранилища документов - PullRequest
8 голосов
/ 22 февраля 2012

У нас есть большой склад документов, занимающий в настоящее время 3 ТБ в пространстве, и он увеличивается на 1 ТБ каждые шесть месяцев.В настоящее время они хранятся в файловой системе Windows, что иногда вызывало проблемы с точки зрения доступа и поиска.Мы собираемся использовать базу данных Haddop для хранения документов.Это хорошая идея, чтобы продолжить Haddop?Кто-нибудь имеет отношение к тому же?Какие могут быть проблемы, технологические препятствия в достижении того же самого?

Ответы [ 3 ]

11 голосов
/ 23 февраля 2012

Hadoop - это больше для пакетной обработки, чем доступ к высоким данным.Вы должны взглянуть на некоторые системы NoSQL, такие как ориентированные на документы базы данных.Трудно ответить, не зная, на что похожи ваши данные.

Правило номер один для NoSQL-дизайна - сначала определить сценарии запросов.Как только вы по-настоящему поймете, как вы хотите запрашивать данные, вы можете посмотреть на различные решения NoSQL.Единицей распределения по умолчанию является ключ.Поэтому вы должны помнить, что вы должны иметь возможность эффективно разделять ваши данные между вашими узловыми машинами, в противном случае вы получите горизонтально масштабируемую систему со всей работой, выполняемой на одном узле (хотя и лучшие запросы в зависимости от случая).

Вам также необходимо вспомнить теорему CAP: большинство баз данных NoSQL в конечном итоге становятся согласованными (CP или AP), в то время как традиционными реляционными СУБД являются CA.Это повлияет на то, как вы обрабатываете данные и создаете определенные вещи, например, генерация ключей может оказаться хитрой.Очевидно, что файлы в папке немного отличаются.

Также помните, что в некоторых системах, таких как HBase, нет концепции индексирования (я думаю, у вас есть настройка индексации файлов в этом хранилище документов Windows FS).Все ваши индексы должны быть построены с помощью логики вашего приложения, и любые обновления и удаления должны будут управляться как таковые.С Mongo вы можете создавать индексы на полях и запрашивать их относительно быстро, также есть возможность интегрировать Solr с Mongo.Вам не нужно просто выполнять запрос по идентификатору в Mongo, как в HBase, который является семейством столбцов (так называемая база данных в стиле Google BigTable), где у вас по существу есть вложенные пары ключ-значение.

Итак, снова приходитк вашим данным, что вы хотите хранить, как вы планируете хранить их, и, самое главное, как вы хотите получить к ним доступ.Проект Lily выглядит очень многообещающе.В работе, с которой я работаю, мы берем большое количество данных из Интернета и храним их, анализируем, анализируем, анализируем, анализируем, транслируем, обновляем и т. Д. И т. Д. Мы не просто используем одну систему, а многокоторые лучше всего подходят для работы под рукой.Для этого процесса мы используем разные системы на разных этапах, поскольку он дает нам быстрый доступ туда, где он нам нужен, предоставляет возможность потоковой передачи и анализа данных в режиме реального времени и, что важно, отслеживает все по ходу работы (как потеря данных в продуктовой среде).система это большое дело).Я использую Hadoop, HBase, Hive, MongoDB, Solr, MySQL и даже старые добрые текстовые файлы.Помните, что производить систему с использованием этих технологий немного сложнее, чем устанавливать Oracle на сервер, некоторые выпуски не так стабильны, и вам действительно нужно сначала провести тестирование.В конце концов, это действительно зависит от уровня сопротивления бизнеса и критического характера вашей системы.

Еще один путь, который еще никто не упомянул, - это NewSQL, то есть горизонтально масштабируемые СУБД ...Есть несколько таких, как кластер MySQL (я думаю) и VoltDB, которые могут удовлетворить вашу причину. Но опять же, в зависимости от ваших данных (файлы документов Word или текстовые документы с информацией о продуктах, счетах или инструментах или что-то) ...

Опять же, речь идет о понимании ваших данных и моделей доступа. Системы NoSQL также не являются относительными, то есть нереляционными и лучше подходят для нереляционных наборов данных.Если ваши данные по своей природе являются реляционными и вам нужны некоторые функции SQL-запросов, которые действительно должны выполнять такие вещи, как декартовы продукты (также называемые объединениями), тогда вам лучше придерживаться Oracle и тратить некоторое время на индексацию, сегментирование и настройку производительности.

Мой совет - поэкспериментировать с несколькими разными системами.Посмотрите;

MongoDB - Документ - CP

CouchDB - Документ - AP

Кассандра - Семейство столбцов - доступно и допускается разделение (AP)

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

Любой способ, который мой 2c.Игра с системами - это действительно единственный способ узнать, что действительно работает для вашего случая.

0 голосов
/ 13 июня 2014

Я предлагаю вам купить хранилище NAS. Может быть, EMS isilon вид продукта, который вы можете рассмотреть.

Hadoop HDFS не предназначен для хранения файлов. Это хранилище для обработки данных (для отчетов, аналитики ..)

NAS предназначен для обмена файлами

SAN больше для базы данных

http://www.slideshare.net/jabramo/emc-sanoverviewpresentation

Заявление. Я не являюсь сотрудником EMC, поэтому вы можете рассмотреть любой продукт. Я просто использовал EMC для справки.

0 голосов
/ 22 февраля 2012

HDFS не является правильным решением. Он оптимизирован для массовой обработки данных и не должен быть файловой системой общего назначения. В частности, он имеет следующие ограничения, делающие его, вероятно, неудачным выбором:
а) Он чувствителен к количеству файлов. Практический предел должен составлять около десятков миллионов файлов.
б) Файлы доступны только для чтения и могут только добавляться, но не редактироваться. Это хорошо для аналитической обработки данных, но может не соответствовать вашим потребностям.
в) имеет единственную точку отказа - наменоде. Так что его надежность ограничена.

Если вам нужна система с сопоставимой масштабируемостью, но не чувствительная к количеству файлов, я бы предложил OpenStack Swift. Он также не имеет SPOF.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...