2013-02-15 3 views
2

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

Итак, вот что я думаю, что знаю.

Как я буду понимать архитектуру Hadoop и HBase, они в значительной степени модель, словно этого

----------------------------------------- 
|    Mapreduce    | 
----------------------------------------- 
| Hadoop | <-- hbase export--| HBase | 
|   | --apache pig --> |   | 
----------------------------------------- 
|  HDFS       | 
---------------------------------------- 

В двух словах HBase это совершенно другой двигатель DB настроен для обновления в режиме реального времени и запросов, что происходит в запускается на HDFS и совместим с Mapreduce.

Теперь, полагая, что это правильно, вот что еще я думаю, что знаю.

  1. Hadoop предназначен для больших данных от начала и до конца. Механизм использует распределенную добавленную систему, что означает, что вы не можете удалять данные после их вставки. Для доступа к данным вы можете использовать Mapreduce или оболочку HDFS и API HDFS.
  2. Hadoop не любит маленькие куски, и он никогда не предназначался для системы реального времени. Вы не хотели бы хранить ни одного человека и адрес на файл, вы фактически сохранили бы миллион людей и адреса на файл и вставляли большой файл.
  3. HBase, с другой стороны, довольно типичный движок базы данных NoSql, который по духу сравнивается с CouchDB, RavenDB и т. Д. Значительная разница заключается в том, что он построен с использованием HDFS от hadoop, что позволяет масштабировать его до размеров, ограниченных только вашим кошельком.
  4. Hadoop представляет собой набор файловой системы (HDFS) и Java API для выполнения вычислений на HDFS. HBase - это механизм базы данных NoSql, который использует HDFS для эффективного хранения данных по кластеру.
  5. Чтобы создать задание Mapreduce для доступа к данным как из Hadoop, так и HBase, лучше всего использовать экспорт HBase для перевода данных HBase в Hadoop и напишите свою работу для обработки данных, но Mapreduce может обращаться к обоим системам по одному.
  6. Вы должны быть очень осторожны при разработке своих файлов HBase, поскольку HBase не поддерживает индексирование полей внутри этого файла, HBase только индексирует первичный ключ. Многие советы и рекомендации помогают обойти этот факт.

Хорошо, поэтому, если я все еще точным до этой точки, это будет действительный прецедент.

Вы строите сайт с HBase. Вы используете HBase так же, как и любые другие NoSql или RDBMS для создания вашей функциональности. Как только это будет сделано, вы помещаете свои точки регистрации метрик в код для записи ваших показателей в say, log4j. Вы создаете новый appender в log4j с правилами, которые говорят, когда файл журнала достигает 1 гигабайта, толкайте его в кластер hadoop, удалите его, создайте новый файл, продолжайте жизнь.

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

Хорошо, с этим все сказано, теперь для конкретного вопроса. Являются ли утверждения 1 - 6 точными?

** * ** * *** * Изменить один, я обновил свои убеждения выше на основе полученных ответов.

ответ

2
  1. Вы можете получить доступ к файлу в HDFS напрямую через HDFS shell или HDFS API.
  2. Исправить.
  3. Я не знаком с CouchDB или RavenDB, но в HBase у вас нет вторичного индекса, поэтому вы должны тщательно спроектировать свой ключ строки, чтобы ускорить ваш запрос. В Интернете есть много советов по дизайну схемы HBase, для которых вы можете использовать Google.
  4. Я думаю, что более уместно сказать, что Hadoop является вычислительной машиной для ядра базы данных. Если вы хотите импортировать данные HDFS в HBase, вы можете использовать Apache Pig, как указано в this post. Если вы хотите экспортировать данные HBase в HDFS, вы можете использовать export utility.
  5. MapReduce - это компонент структуры Hadoop, и он не сидит на вершине HBase. Вы можете получить доступ к данным HBase в задании MapReduce, поскольку HBase использует HDFS для хранения. Я не думаю, что вы хотите получить доступ к HFile непосредственно из задания MapReduce, потому что исходный файл закодирован в special format, его нелегко разобрать, и это может измениться в будущих выпусках.
+0

ничего себе, эта часть индексации действительно может сделать жизнь интересной. Я просто быстро прочитал, почему они это сделали. Я прекрасно понимаю их рассуждения, но тем не менее, это вызовет несколько ночей проклятия, когда компьютер был когда-либо изобретен. Спасибо, что сообщили мне об этом, ОГРОМНОЕ. – scphantm

+0

Нет связи с HBase, хранящейся поверх HDFS, и возможностью Map/Reduce для доступа к ней. Вы, конечно, не хотите касаться существующего HFile вне HBase, так как это нарушит множество предположений, которые HBase делает и, вероятно, уничтожит данные. Однако вы можете создать HFile с M/R и добавить его в HBase (например, массовый импорт) – David

1
Since HBase and Hadoop are different database engines, one can not access the data in the other directly. For HBase to get something out of Hadoop, it must go thru Mapreduce and vice versa. 

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

Кроме того, Map Reduce - это не технология, это модель, где вы можете работать параллельно с данными HDFS.

Смежные вопросы