Я читал белые бумаги и смотрел видеоролики YouTube за пол дня и считаю, что у меня есть правильное понимание технологии, но прежде чем я начну свой проект, я хочу убедиться, что это правильно ,Прошу прояснить мое понимание Hadoop/HBase
Итак, вот что я думаю, что знаю.
Как я буду понимать архитектуру Hadoop и HBase, они в значительной степени модель, словно этого
-----------------------------------------
| Mapreduce |
-----------------------------------------
| Hadoop | <-- hbase export--| HBase |
| | --apache pig --> | |
-----------------------------------------
| HDFS |
----------------------------------------
В двух словах HBase это совершенно другой двигатель DB настроен для обновления в режиме реального времени и запросов, что происходит в запускается на HDFS и совместим с Mapreduce.
Теперь, полагая, что это правильно, вот что еще я думаю, что знаю.
- Hadoop предназначен для больших данных от начала и до конца. Механизм использует распределенную добавленную систему, что означает, что вы не можете удалять данные после их вставки. Для доступа к данным вы можете использовать Mapreduce или оболочку HDFS и API HDFS.
- Hadoop не любит маленькие куски, и он никогда не предназначался для системы реального времени. Вы не хотели бы хранить ни одного человека и адрес на файл, вы фактически сохранили бы миллион людей и адреса на файл и вставляли большой файл.
- HBase, с другой стороны, довольно типичный движок базы данных NoSql, который по духу сравнивается с CouchDB, RavenDB и т. Д. Значительная разница заключается в том, что он построен с использованием HDFS от hadoop, что позволяет масштабировать его до размеров, ограниченных только вашим кошельком.
- Hadoop представляет собой набор файловой системы (HDFS) и Java API для выполнения вычислений на HDFS. HBase - это механизм базы данных NoSql, который использует HDFS для эффективного хранения данных по кластеру.
- Чтобы создать задание Mapreduce для доступа к данным как из Hadoop, так и HBase, лучше всего использовать экспорт HBase для перевода данных HBase в Hadoop и напишите свою работу для обработки данных, но Mapreduce может обращаться к обоим системам по одному.
- Вы должны быть очень осторожны при разработке своих файлов HBase, поскольку HBase не поддерживает индексирование полей внутри этого файла, HBase только индексирует первичный ключ. Многие советы и рекомендации помогают обойти этот факт.
Хорошо, поэтому, если я все еще точным до этой точки, это будет действительный прецедент.
Вы строите сайт с HBase. Вы используете HBase так же, как и любые другие NoSql или RDBMS для создания вашей функциональности. Как только это будет сделано, вы помещаете свои точки регистрации метрик в код для записи ваших показателей в say, log4j. Вы создаете новый appender в log4j с правилами, которые говорят, когда файл журнала достигает 1 гигабайта, толкайте его в кластер hadoop, удалите его, создайте новый файл, продолжайте жизнь.
Позже разработчик Mapreduce может написать процедуру, которая использует экспорт HBase для захвата набора данных из HBase, скажем, списка идентификаторов пользователя, затем перейдите в журналы, которые хранятся в Hadoop, и найдите след для крошки хлеба для каждого пользователь через систему для заданного промежутка времени.
Хорошо, с этим все сказано, теперь для конкретного вопроса. Являются ли утверждения 1 - 6 точными?
** * ** * *** * Изменить один, я обновил свои убеждения выше на основе полученных ответов.
ничего себе, эта часть индексации действительно может сделать жизнь интересной. Я просто быстро прочитал, почему они это сделали. Я прекрасно понимаю их рассуждения, но тем не менее, это вызовет несколько ночей проклятия, когда компьютер был когда-либо изобретен. Спасибо, что сообщили мне об этом, ОГРОМНОЕ. – scphantm
Нет связи с HBase, хранящейся поверх HDFS, и возможностью Map/Reduce для доступа к ней. Вы, конечно, не хотите касаться существующего HFile вне HBase, так как это нарушит множество предположений, которые HBase делает и, вероятно, уничтожит данные. Однако вы можете создать HFile с M/R и добавить его в HBase (например, массовый импорт) – David