Pergunta

Eu gostaria de analisar um fluxo contínuo de dados (acessado através de HTTP) usando uma abordagem MapReduce, então eu estive olhando para Apache Hadoop. Infelizmente, parece que o Hadoop espera para iniciar um trabalho com um arquivo de entrada de tamanho fixo, em vez de ser capaz de entregar novos dados para os consumidores como ela chega. É este realmente o caso, ou estou faltando alguma coisa? Existe uma ferramenta MapReduce diferente que trabalha com os dados lidos a partir de uma tomada aberta? A escalabilidade é um problema aqui, então eu prefiro deixar o MapReducer lidar com as coisas paralelização confuso.

Eu tenho jogado ao redor com Cascading e foi capaz de executar um trabalho em um arquivo estático acessado via HTTP, mas isso realmente não resolver o meu problema. Eu poderia usar onda como um passo intermediário para despejar o lugar de dados em um sistema de arquivos Hadoop e escrever um cão de guarda para disparar um novo emprego a cada vez que um novo bloco de dados está pronto, mas isso é um truque sujo; tem que haver alguma maneira mais elegante de fazer isso. Alguma ideia?

Foi útil?

Solução

O hack que você descreve é ??mais ou menos a maneira padrão de fazer as coisas - Hadoop é fundamentalmente um sistema orientado para o lote (para uma coisa, se não há fim para os dados, de redução não pode nunca começar, como eles deve começar após a fase de mapa é terminado).

Girar seus registros; como você girá-los para fora, despejá-los em HDFS. Ter um processo watchdog (possivelmente uma distribuídos, coordenado usando ZooKeeper) monitorar os motivos de dumping e iniciar novos trabalhos de processamento. Você vai querer certificar-se os trabalhos executados em entradas grande o suficiente para justificar a sobrecarga.

HBase é um clone BigTable no ecossistema Hadoop, que pode ser interessante para você, pois permite um fluxo contínuo de inserções; você ainda vai precisar para executar consultas analíticas em modo de lote, no entanto.

Outras dicas

E sobre http://s4.io/ . É feito para o processamento de streaming de dados.

Atualização

Um novo produto está subindo: tempestade - Distribuída e tolerante a falhas de computação em tempo real: processamento de fluxo contínuo computação, RPC distribuídos, e mais

Eu acho que você deve ter um olhar sobre Esper CEP ( http://esper.codehaus.org/).

Yahoo S4 http://s4.io/

É fornecer em tempo real fluxo de computação, como mapa reduzir

O Twitter tempestade é o que você precisa, você pode ter uma tentativa!

Várias opções aqui. I sugerem a combinação de Kafka e tempestade + (Hadoop ou noSQL) como a solução. Nós já construímos nossa plataforma de dados grande usando essas ferramentas opensource, e ele funciona muito bem.

O seu caso de uso soa semelhante à questão de escrever um rastreador web usando Hadoop - os fluxos de dados de volta (lentamente) de soquetes abertos para buscar páginas remotos via HTTP

.

Se sim, então veja Por que buscar páginas da web não mapeia bem para map-Reduce . E você pode querer verificar o FetcherBuffer classe em Bixo, que implementa uma abordagem de rosca em um redutor (via Cascading) para resolver este tipo de problema.

Como você conhecer os principais problemas com Hadoop para uso em mineração fluxo são o fato de que em primeiro lugar, ele usa HFDS que é um disco e disco operações trazem latência que irá resultar em falta de dados no fluxo. segunda, é que o oleoduto não é paralelo. Map-Reduce geralmente opera em lotes de dados e não instâncias como é com o fluxo de dados.

Recentemente li um artigo sobre M3 que aborda a primeira edição aparentemente ignorando HDFS e realizar cálculos em memória no banco de dados de objetos. E para a segunda questão, eles estão usando aprendizes incrementais que não são mais realizados em lote. Pena conferir M3 : Processamento de fluxo em Main-Memória MapReduce . Eu não poderia encontrar o código-fonte ou API deste M3 em qualquer lugar, se alguém achou por favor, compartilhe o link aqui.

Além disso, Hadoop on-line também é outro protótipo que tentativas para resolver as mesmas questões que M3 faz: Hadoop online

No entanto, Apache tempestade é a solução chave para o problema, no entanto, não é suficiente. Você precisa de algum euqivalent de Map-Reduce bem, aqui é porque você precisa de uma biblioteca chamada SAMOA que realmente tem grandes algoritmos para a aprendizagem on-line que mahout carece meio.

Várias estruturas e produtos maduros de processamento de fluxo estão disponíveis no mercado. estruturas abertas são, por exemplo de origem Apache tempestade ou Apache faísca (que tanto pode ser executado no topo do Hadoop). Você também pode usar produtos como o IBM InfoSphere Streams ou TIBCO StreamBase.

Dê uma olhada neste artigo InfoQ, o que explica processamento de fluxo e todas essas estruturas e produtos em detalhes: Tempo real Stream Processing / Transmissão Analytics em combinação com Hadoop . Além do artigo também explica como isso é complementar ao Hadoop.

A propósito:. Muitos fornecedores de software como Oracle ou TIBCO chamada esta processamento de fluxo / streaming de análise de abordagem de "dados rápidos" em vez de "big data", como você tem que agir em tempo real, em vez de processamento em lote

Você deve tentar Apache faísca Streaming. Ele deve funcionar bem para seus propósitos.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top