Потоковые данные и Hadoop? (не Hadoop Streaming)

Я бы хотел проанализировать непрерывный поток данных (доступ через HTTP) с использованием подхода MapReduce, поэтому я изучал Apache Hadoop. К сожалению, похоже, что Hadoop рассчитывает начать работу с входного файла фиксированного размера, вместо того, чтобы передавать новые данные потребителям по мере их поступления. Это действительно так, или я что-то упускаю? Есть ли другой инструмент MapReduce, который работает с данными, считываемыми из открытого сокета? Масштабируемость здесь является проблемой, поэтому я бы предпочел, чтобы MapReducer обрабатывал беспорядочные материалы распараллеливания.

Я играл с Cascading и смог запустить задание на доступном статическом файле через HTTP, но это фактически не решает мою проблему. Я мог бы использовать curl в качестве промежуточного шага, чтобы сбрасывать данные где-то в файловой системе Hadoop и писать сторожевой таймер, чтобы запускать новое задание каждый раз, когда новый кусок данных готов, но это грязный взломать; должен быть более элегантный способ сделать это. Есть идеи?

Ответ 1

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

Поверните свои журналы; когда вы поворачиваете их, выгружайте их в HDFS. Имейте сторожевой процесс (возможно, распределенный, скоординированный с использованием ZooKeeper), отслеживающий места захоронения и запускающие новые рабочие задания. Вы хотите, чтобы задания выполнялись на входах, достаточно больших, чтобы гарантировать накладные расходы.

Hbase - это клон BigTable в экосистеме hadoop, который может быть вам интересен, поскольку он позволяет использовать непрерывный поток вставок; однако вам все равно нужно запускать аналитические запросы в пакетном режиме.

Ответ 2

Как насчет http://s4.io/. Он предназначен для обработки потоковых данных.

Update

Новый продукт растет: Storm - Распределенное и отказоустойчивое вычисление в реальном времени: обработка потока, непрерывное вычисление, распределенный RPC и более

Ответ 4

Yahoo S4 http://s4.io/

Он обеспечивает вычисление потоков в реальном времени, например уменьшение карты

Ответ 5

Twitter Storm - это то, что вам нужно, вы можете попробовать!

Ответ 6

Несколько вариантов здесь. Я предлагаю комбинацию Kafka и Storm + (Hadoop или NoSql) в качестве решения. Мы уже строим нашу большую платформу данных с помощью этих инструментов openource, и она работает очень хорошо.

Ответ 7

Ваш случай использования похож на проблему написания веб-искателя с использованием Hadoop - потоки данных назад (медленно) из сокетов, открытых для извлечения удаленных страниц через HTTP.

Если да, то см. Почему выборка веб-страниц не очень хорошо отображает карту-сокращение. И вы можете проверить класс FetcherBuffer в Bixo, который реализует поточный подход в редукторе (через Cascading), чтобы решить эту проблему тип проблемы.

Ответ 8

Как вы знаете, основными проблемами с Hadoop для использования в потоковой разработке являются тот факт, что во-первых, он использует HFDS, который является операцией на диске и диске, приносит задержку, что приведет к отсутствию данных в потоке. во-вторых, что трубопровод не параллелен. Map-reduce обычно работает с партиями данных, а не с экземплярами, такими как потоковые данные.

Недавно я прочитал статью о M3, которая решает первую проблему, по-видимому, путем обхода HDFS и выполнения вычислений в памяти в базе данных объектов. И для второй проблемы они используют инкрементных учащихся, которые больше не выполняются в пакетном режиме. Стоит проверить его M3 : Обработка потоков по Main-Memory MapReduce. Я не мог найти исходный код или API этого M3 где угодно, если кто-то нашел его, пожалуйста, поделитесь ссылкой здесь.

Кроме того, Hadoop Online также является еще одним прототипом, который позволяет решать те же проблемы, что и M3: Hadoop Online

Однако Apache Storm является ключевым решением проблемы, однако этого недостаточно. Вам нужен какой-то euqivalent права на изменение карты, вот почему вам нужна библиотека под названием SAMOA, которая на самом деле имеет отличные алгоритмы для онлайн-обучения, что mahout вид не хватает.

Ответ 9

На рынке доступны несколько зрелых структур обработки и продуктов обработки. Рамки с открытым исходным кодом являются, например, Apache Storm или Apache Spark (которые могут запускаться поверх Hadoop). Вы также можете использовать такие продукты, как IBM InfoSphere Streams или TIBCO StreamBase.

Взгляните на эту статью InfoQ, в которой подробно описывается обработка потока и все эти структуры и продукты: Обработка потока в реальном времени/потоковая аналитика в сочетании с Hadoop. Кроме того, в статье также объясняется, как это дополняет Hadoop.

Кстати, многие поставщики программного обеспечения, такие как Oracle или TIBCO, называют эту обработку потоковой обработки/потоковой аналитики "быстрыми данными" вместо "больших данных", поскольку вам приходится действовать в режиме реального времени, а не пакетной обработки.

Ответ 10

Вам следует попробовать Apache Spark Streaming. Он должен хорошо работать для ваших целей.