Algoritmos de fluxo de dados "Divida e conquiste"

12

Quais algoritmos úteis existem que funcionam em enormes fluxos de dados e também seus resultados são razoavelmente pequenos e pode-se calcular o resultado para uma mistura de dois fluxos, de alguma forma, mesclando seus resultados?

Eu posso citar alguns:

  • Coisas óbvias como soma, mínimo, máximo, contagem, top-K etc.
  • Algoritmos de fluxo "baseados em esboço" aproximados para histogramas, contando itens distintos ou quantis de computação

Que outros existem?

(Estou interessado porque estou escrevendo um projeto de hobby para monitorar sistemas distribuídos cuja utilidade é diretamente determinada pela utilidade de tais algoritmos)

jkff
fonte
Acho muito mais difícil pensar em qualquer algoritmo de streaming que não seja "dividir e conquistar" / associativo. Talvez algum tipo de função de hash rotativo ... Você tem exemplos naturais desse algoritmo de fluxo?
Thomas Ahle

Respostas:

9

Guha et al. '03 fornece um algoritmo de aproximação para k-median clustering no modelo de streaming. O algoritmo deles divide os dados em partes separadas, encontra O (k) centros para cada parte separada e, em seguida, combina os resultados para obter os k centros. Este parece ser o tipo de algoritmo que você está procurando.

Lev Reyzin
fonte
7

εεith(i1)thnível de fluxo e o nível 0 é o fluxo original). Essa é essencialmente uma renderização de baixo para cima de uma estratégia de dividir e conquistar. com atualizações ao longo da "borda" da árvore de recursão. Em estrutura, é muito semelhante ao artigo de Guha et al mencionado por Lev.

Suresh Venkat
fonte
6

Eu encontrei um documento ( "Distribuindo cálculos de fluxo de dados dependentes da frequência" ) que diz que todas as funções da distribuição de frequência do fluxo são mescláveis (embora não forneçam uma construção explícita e eficiente para a operação de mesclagem). E a prova parece ser muito interessante, envolvendo alguma teoria dos anéis. É necessário ler o artigo anterior do mesmo autor ( "Limites inferiores na estimativa de frequência de fluxos de dados" ) cujo principal resultado é usado como base para este.

Isso me lembra o Terceiro Teorema do Homomorfismo ...

jkff
fonte
Não acho que o artigo de Ganguly implique que uma estratégia de divisão e conquista possa funcionar para streaming. Esse modelo parece reduzir-se ao modelo Mapreduce / MUD, no qual pode haver várias passagens sobre os dados.
Suresh Venkat
Ao ler, parece-me que ele não usa várias passagens, afinal.
JKFF
4

A pesquisa em linguagens de consulta de fluxo contínuo pode fornecer algumas dicas. Uma dessas linguagens é o CQL , que acredito estar sendo adotada pela Oracle. Os idiomas permitem que as funções sejam computadas em janelas deslizantes do fluxo (incluindo janelas de tamanho 1). Esta tese de bacharel fornece uma visão geral recente do idioma, incluindo alguns exemplos. Este artigo fornece uma visão geral de algumas linguagens de processamento de fluxo, que devem ser úteis para encontrar links para outras pesquisas relacionadas.

Sei que isso não responde diretamente à sua pergunta, mas deve colocá-lo em contato com pesquisas feitas por pessoas que partem do mesmo ponto de partida.

Dave Clarke
fonte
4

Esta pergunta parece um pouco circular para mim. Se o problema tiver a propriedade que você deseja, existe um algoritmo baseado em desenho e mesclagem para ele. Como mencionado acima, há trabalho em cluster, aproximações e conjuntos de cores que fornecem isso. Além disso, a maioria dos algoritmos de streaming permite a fusão de fluxos concatenando apenas (conceitualmente) um fluxo ao outro.

Além disso, não tenho certeza de que os algoritmos top-k de streaming sejam mescláveis ​​- mas posso estar errado.

Sariel Har-Peled
fonte
O top-k é mesclável trivialmente: para mesclar duas listas de itens de k, você os mescla e recebe k últimos itens do resultado :) No entanto, talvez você tenha desejado "top k mais frequente", mas eu quis dizer esse (que também é um problema útil, por exemplo, para a computação distribuída de algo como uma parede facebook)
JKFF
3

Desculpe por não ser necromante disso, mas pensei que você poderia querer examinar alguns trabalhos sobre monitoramento contínuo distribuído em fluxos, onde você recebe vários fluxos e o objetivo é monitorar algumas estatísticas agregadas em um site central de monitoramento, minimizando a comunicação. O modelo me parece intimamente relacionado à sua motivação. Veja as referências no livro de Muthu . Um artigo é esse .

O artigo de Ganguly também é muito interessante.

Sasho Nikolov
fonte