Eu tropecei sobre este artigo: que menciona como calcular a média móvel usando Hadoop. Observe que todos os registros para uma chave devem ser classificados e, em seguida, reduzido. Agora suponha que os registros de uma determinada chave estão espalhados por todos os fragmentos do cluster Mongo. Em tal caso, seria possível calcular a média móvel entendo que Mongo faz o mapa reduzir em cada nó. A principal exigência para resolver este problema é certificar-se de todos os emite para um mapa ser reduzido em uma única fase de redução. Se for esse o caso, Mongo Mapa Reduzir nunca será capaz de resolver tais problemas. Existe algum mal-entendido básico Também, com bilhões de linhas, e petabytes de dados, por que é que a fase Hadoop Reduzir a falha doesnt crash de memória, uma vez que tem de lidar com pelo menos vários TBs de dados mapeados. Perguntou May 16 13 at 7:31 Você pode explicar por que Hadoop doesn39t falhar de memória para tal computação De minha compreensão, toda a redução vai acontecer em um nó, onde todos os registros de uma chave será reduzida. Isso deve resultar em enorme sobrecarga de memória nesse nó, uma vez que TBs de dados precisa estar presente lá. Como o Hadoop lida com uma quantidade tão grande de dados ndash P. Prasad May 16 13 at 8:29 Acredito que, ao contrário do MongoDB, o hadoop, assim como o SQL ao processar uma grande join, escreverá coisas para o disco e só será lido quando necessário com O sistema operacional usando swap como um suporte de memória temporária para certas coisas provavelmente. MongoDB faz mais na RAM antes de escrever para o disco como tal ele irá facilmente resgatar ndash Sammaye 16 de maio 13 às 8: 37David, Sim, MapReduce é destinado a operar em uma grande quantidade de dados. E a idéia é que, em geral, o mapa e as funções de redução não devem se preocupar com quantos mapeadores ou quantos redutores existem, essa é apenas a otimização. Se você pensar cuidadosamente sobre o algoritmo que eu postei, você pode ver que não importa qual mapeador obtém que partes dos dados. Cada registro de entrada estará disponível para cada operação de redução que precisar dele. Ndash Joe K Sep 18 12 at 22:30 No melhor de minha compreensão média móvel não é muito bem mapeia para MapReduce paradigma desde seu cálculo é essencialmente deslizando janela sobre dados classificados, enquanto MR é o processamento de intervalos não intersected de dados classificados. A solução que vejo é a seguinte: a) Para implementar particionador personalizado para ser capaz de fazer duas partições diferentes em duas execuções. Em cada corrida, seus redutores obterão diferentes faixas de dados e calcularão a média móvel quando apropriado. Eu tentarei ilustrar: Na primeira execução, os dados para os redutores devem ser: R1: Q1, Q2, Q3, Q4 R2: Q5, Q6, Q7, Q8 . Aqui você vai cacluate média móvel para alguns Qs. Na próxima execução seus redutores devem obter dados como: R1: Q1. Q6 R2: Q6. Q10 R3: Q10..Q14 E caclulate o resto de médias móveis. Então você precisará agregar resultados. Ideia de particionador personalizado que terá dois modos de operação - cada vez dividindo em intervalos iguais, mas com algum deslocamento. Em um pseudocódigo ele ficará assim. Partição (keySHIFT) / (MAXKEY / numOfPartitions) onde: SHIFT será retirado da configuração. MAXKEY valor máximo da chave. Eu suponho para a simplicidade que começam com zero. RecordReader, IMHO não é uma solução, uma vez que é limitado a divisão específica e não pode deslizar sobre divide limites. Outra solução seria implementar lógica personalizada de dividir dados de entrada (é parte do InputFormat). Pode ser feito para fazer 2 slides diferentes, semelhante ao particionamento. Respondeu Set 17 12 at 8: 59Calculando médias móveis com Hadoop e Map-Reduce Por favor, note que o artigo por tecnologias Attain é uma cópia direta deste artigo. Este artigo, o que você está lendo, é o original e foi publicado em 29 de agosto de 2012. Eu não dei permissão para ele e só descobriu por acidente. Uma média móvel, também chamada de média deslizante ou média de rolamento, é uma técnica para suavizar a variação de curto prazo nos dados, a fim de revelar tendências. Tem usos em processamento de sinal, análise de dados e estatísticas. Em termos de engenharia é como um filtro de resposta de impulso finito, enquanto matematicamente é uma convolução. Para grandes conjuntos de dados este alisamento pode demorar muito tempo e tratá-lo como um grande problema de dados pode permitir mais rápido, possivelmente em tempo real, suavização de dados. O padrão De Facto para processamento de Big Data é o Hadoop, embora outros frameworks possivelmente sejam superiores em termos de desenvolvimento, tempo de manutenção e throughput. Alguns até afirmam que permitem o processamento em tempo real de dados grandes em um laptop padrão. Hadoop é centrado no paradigma Map-Reduce, um paradigma que é maior do que Hadoop, e pode até certo ponto ser implementado com a fila de discussão baseada thread. O código apresentado aqui é prova de conceito de código Java para Hadoop desenvolvido em parte como um exercício de aprendizagem e em parte como uma maneira de sair da gaiola Big Data em que Map-Reduce atualmente reside. Como tais detalhes necessários para sistemas de produção, tais como a capacidade de escolher o comprimento da janela, a requantise dos dados ou as médias ponderadas e exponenciais não foram discutidas. O código aqui será atualizado à luz dos comentários dos usuários e desenvolvimento futuro. O deslizamento significa que conheci pela primeira vez a média deslizante no contexto da análise de dados de telemetria. Os dados foram contaminados pelo ruído de várias fontes: vibração, ruído elétrico e assim por diante. Uma solução foi suavizar os dados. Como o tempo dos eventos era importante e os dados podiam estar sujeitos a vieses sistemáticos, e o ruído não, portanto, centrado em torno de um valor médio, os dados suavizados tiveram que ser deslocados para compensar. Para ser concreto, considere uma seqüência de mil pontos de dados ruidosos, que são números inteiros entre 0 e 128. Uma média de deslizamento com uma janela de amostra de 9 pontos (A razão de 9 não dez é explicada abaixo) é calculada tomando a média de Pontos 1 a 9 e colocando-o na posição 1 dos dados suavizados, calculando então a média dos pontos 2 a 10 e colocando-a na posição 2 e assim sucessivamente até que a matriz suavizada seja preenchida. Se os dados não estiverem centralizados em torno de um valor médio, a média atrasa o ponto de dados mais recente pela metade do comprimento da janela. Às vezes, o deslocamento de tempo implicado no último parágrafo não é desejado, neste caso, a média móvel central é calculada: neste caso, a sequência suavizada começa na posição 5 e termina na localização 995 com os pontos finais normalmente descartados. Uma sugestão de matemática A média de deslizamento é apenas uma convolução 2ou esmaecimento fraco da série de tempo com um pulso quadrado, que é uma função que é zero fora da janela de amostra. Como tal, uma maneira de calcular a média de deslizamento é tomar a Transformada de Fourier Rápida (FFT) dos dados e multiplicá-la por meio da FFT do pulso quadrado (ou no caso das médias ponderadas pela FFT da função de ponderação) . Em termos computacionais, o esforço de cálculo da FFT pode superar a poupança feita substituindo divisão por multiplicação. Perseguindo a noção de Sliding Mean como convolução leva em áreas como Fracional Cálculo 3 e está fora do âmbito desta nota. Usando a abordagem de convolução leva à observação de que o pulso quadrado da média móvel simples tem uma transformada de Fourier que cai rapidamente em altas freqüências, de modo que a suavização elimina as altas freqüências. Quanto maior a janela de amostra, menor a frequência máxima que é passada. Isso é intuitivamente óbvio, mas é bom ter isso confirmado por uma análise mais rigorosa. Como os dados chegam Existem basicamente duas situações, a primeira é onde toda a seqüência está disponível, por exemplo, dados de pós-teste de sistemas eletromecânicos ea situação em que Os pontos de dados chegam um a um, possivelmente em tempos aleatórios. Aqui assume-se que os dados chegam a tempos fixos. Um caso intermediário é onde os dados são armazenados em um buffer com dados antigos sendo removidos quando novos dados chegam. Aqui, o alisamento deve ser rápido o suficiente para garantir que todos os dados sejam processados antes que novos dados cheguem, mesmo que isso signifique que o sistema esteja inativo aguardando novos dados. A fim de desenvolver a prova de conceito rapidamente os dados de teste foram armazenados em um arquivo de texto, um valor para uma linha, simulando assim a situação onde os valores de dados chegam um a um. Como os dados não estão todos disponíveis de uma só vez, a técnica padrão de calcular um total uma vez, em seguida, avançar subtraindo o ponto mais antigo e adicionando o ponto mais novo não foi possível. Em vez disso, uma técnica essencialmente semelhante ao método add () de uma lista circular foi desenvolvida para uso na classe Mapper com a lista sendo convertida em uma string e enviada para o redutor com cada novo ponto que é adicionado, após a lista ficar cheia. Novamente como o código evolui métodos mais inteligentes serão utilizados eo código aqui atualizado. Código de amostra
No comments:
Post a Comment