Friday 24 November 2017

Cloudera média móvel


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 reduzida 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 acontecerá em um nó, onde todos os registros de uma chave será reduzida. Isso deve resultar em sobrecarga de memória enorme 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á as coisas no disco e lirá somente 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 memória RAM antes de escrever para o disco como tal, ele vai facilmente resgatar ndash Sammaye 16 de maio às 13: 37Cloudera Jobs em Londres A tabela abaixo olha para as estatísticas de conhecimento e experiência de produtos Cloudera e / ou serviços em TI empregos anunciados Para a região de Londres. Está incluído um guia para os salários oferecidos em TI empregos que citaram Cloudera durante os 3 meses a 13 de outubro de 2017 com uma comparação com o mesmo período nos dois anos anteriores. Os números abaixo representam o mercado de trabalho de TI em geral e não são representativos dos salários dentro de Cloudera, Inc. 3 meses a 13 de outubro de 2017 Mesmo período 2017 Cloudera Empregos Demanda Tendência em Londres A tendência de demanda de anúncios de emprego em toda a região de Londres citando Cloudera como um Proporção de todos os trabalhos de TI com uma correspondência na categoria Vendedores. Cloudera Salary Trend em Londres Este gráfico fornece a média móvel de 3 meses para os salários citados em empregos permanentes de TI citando Cloudera em toda a região de Londres. Cloudera Salary Histogram em Londres Este gráfico fornece um histograma de salário para empregos de TI citando Cloudera em toda a região de Londres durante os 3 meses a 13 de outubro de 2017. Cloudera Locais de Emprego em Londres A tabela abaixo analisa a demanda e fornece um guia para os salários médios citados Em empregos de TI citando Cloudera dentro da região de Londres durante os 3 meses a 13 de outubro de 2017. A coluna de mudança de Rank fornece uma indicação da mudança na demanda dentro de cada local com base no mesmo período de 3 meses no ano passado. (Clique em ver estatísticas detalhadas e tendências) Mudança de Rank no Mesmo Período Último ano Correspondência Permanent IT Job Ads Salário Mediano Últimos 3 MesesClouding Engenharia Blog Simple Moving Average, Secundário Sort, e MapReduce (Parte 3) Esta é a peça final para uma parte três Blog série. Se você gostaria de ver as partes anteriores desta série, por favor use o seguinte link: Anteriormente eu expliquei como usar o Excel e R como as ferramentas de análise para calcular a Média Móvel Simples de um pequeno conjunto de preços de fechamento de ações. Nesta peça final para a série de blog de três partes, vou aprofundar usando MapReduce para encontrar a Média Móvel Simples de nosso pequeno conjunto de dados de amostra. Então, vou mostrar-lhe como usando o mesmo código, você será capaz de calcular a média móvel simples de cada preço de fechamento das ações desde 1980. Abaixo do buraco de coelho com Hadoop Nos exemplos acima nós demos uma olhada no cálculo da média móvel simples De uma quantidade relativamente pequena de dados. Para uma grande quantidade de análise, excel e R são ferramentas muito eficazes, mas à medida que escalamos para gigabyte, terabyte e petabyte armazena os dados que correm em alguns problemas com localidade de dados, velocidades de disco e velocidades de processamento. Para ilustrar esses fatores, é possível usar uma máquina mítica que possuía um único disco de 1 petabyte, que operava de forma semelhante às velocidades de disco atualmente. Para os propósitos deste exemplo, utilize uma velocidade de leitura de 40 MB / s. Vamos dizer que é nosso trabalho para digitalizar através destes dados e produzir uma média móvel simples, o processador não impede o cálculo, e podemos sustentar um cálculo de janela em movimento através dos dados no total de 40 MB / s. Vamos também assumir que os dados foram previamente classificados e que só tivemos de realizar uma varredura seqüencial que maximiza a taxa de transferência de dados a partir do disco e que poderia consistentemente entregar 40MB / s para o pipeline de processamento. Baseado em Jeff Deans 12 Números Cada engenheiro deve saber slide este é uma configuração plausível. Com este throughput nosso simples cálculo da média móvel de 1 petabyte de dados levaria cerca de 310 dias para ser concluído. Para a maioria das situações, este custo operacional, em termos de tempo, torna pouco razoável considerar. Felizmente, a mecânica de HDFS e MapReduce mitigar esses fatores de tal forma que podemos fazer este problema um tempo linear e função de capital para nos ajudar a decidir o número de máquinas que queremos implementar de forma eficiente realizar esta varredura de média móvel simples. No exemplo de média móvel simples acima, negligenciamos considerar as restrições de: Armazenar o petabyte de dados em hardware não-mítico. Classificando o petabyte de dados. Considerando falha de hardware durante os 310 dias de tempo de processamento. Normalmente, as aplicações de séries temporais precisam de digitalizar os dados em algum momento, o que cria grandes montanhas para subir, se quisermos abordar grandes volumes de dados de séries temporais nos sistemas atuais. Estavam vendo multi-terabyte e multi-petabyte fontes de dados no domínio de série de tempo todos os dias, incluindo e em cada um destes domínios o cenário acima é um desafio muito real para enfrentar. HDFS resolve os problemas de armazenamento e falha acima, mas o que acontece com os problemas de triagem e processamento Triagem de grandes quantidades de dados em si é um problema não trivial, mas é acessível com alguns truques no MapReduce. Vamos dar uma olhada no código MapReduce real que podemos baixar para compilar e produzir nossa própria média móvel escalável simples, para resolver alguns desses pontos de dor. Média móvel simples em MapReduce Normalmente, um aplicativo MapReduce é composto de duas funções: (você adivinhou) uma função de mapa e uma função de redução. No mundo da programação em Java criamos uma classe de mapa e uma classe de redução, cada uma com herança de métodos úteis para seus propósitos respeitosos. Usamos o modelo de programação MapReduce porque ele é construído para mitigar problemas de concorrência em nossos algoritmos e obtemos nosso paralelismo escalável relativamente sem dor. A função de mapa pode envolver o código que executa uma operação de par por valor-chave, mas sua principal operação lógica é agrupar dados por chaves. Uma maneira muito fácil de pensar sobre uma função de mapa é pensar nela como uma projeção lógica dos dados ou uma cláusula por grupo. A função de redução é usada para levar esses grupos (individualmente) e executar um processo entre os valores que foram agrupados. Operações comuns em funções de redução incluem: Em nosso exemplo de média móvel simples, no entanto, não operamos especificamente por base de valor, nem produzimos um agregado em todos os valores. Nossa operação no sentido agregado envolve uma janela deslizante, que executa suas operações em um subconjunto dos dados em cada etapa. Também temos que considerar que os pontos em nossos dados de séries de tempo não são garantidos para chegar à redução em ordem e precisam ser classificados em seções anteriores. Isso ocorre porque com várias funções de mapa lendo várias seções dos dados de origem, MapReduce não impõe qualquer ordem nos pares de valores-chave que são agrupados na partição padrão e nos esquemas de classificação. Existe o cenário onde temos dados particionados classificados, mas para o bem deste exemplo foram indo para lidar com o jardim mais variedade de dados de séries de tempo não ordenados. Vamos dar uma primeira passagem em como nós poderíamos projetar este trabalho simples médio móvel de MapReduce. Queremos agrupar todos os valores ajustados ajustados de estoque para que possamos aplicar a operação de média móvel simples sobre os dados da série de tempos classificados. Nós queremos emitir cada série de tempo key key pair em um símbolo de estoque para agrupar esses valores juntos. Na fase de redução podemos executar uma operação, aqui a média móvel simples, sobre os dados. Uma vez que os dados mais do que provavelmente não vai chegar ao redutor na ordem ordenada bem necessidade de classificar os dados antes de podermos calcular a média móvel simples. Uma maneira comum de classificar os dados é carregar os dados na memória em uma estrutura de dados, como um heap, bem como como isso é feito em um programa java normal. Neste caso, use a classe de filas de prioridade do Javas para classificar nossos dados. Também precisamos considerar a quantidade de memória usada pelos dados da série de tempo de entrada durante a classificação, pois este é um fator limitante na quantidade de dados que podemos classificar. Neste projeto, temos de carregar todos os dados da série de tempo antes que possamos iniciar o processamento e se a quantidade de dados para classificar exceder o tamanho de heap disponível, temos um problema. Um exemplo desta implementação está hospedado no github: Para executar este código em seu próprio cluster Hadoop, faça o download do CDH do Cloudera e configure um cluster pseudo-distribuído 8211 que é um único nó do Hadoop. Pseudo-modo distribuído é uma ótima maneira de experimentar código com Hadoop. Em seguida, faça o download e compile o código da média móvel em um jar. Para baixar o código diretamente do github (no shell no MacOSX, janela do terminal ssh no linux, ou MINGW32 para win32) we8217ll usar o comando: Nossa primeira passagem é uma solução decente, mas foram limitados pela nossa máquina Java Virtual Machine (JVM) Heap tamanho e estamos tendo tempo para classificar manualmente os dados nós mesmos. Com algumas mudanças de design, podemos resolver ambos os problemas aproveitando algumas propriedades inerentes do MapReduce. Primeiro, queremos olhar para o caso de classificar os dados na memória em cada redutor. Atualmente, temos de nos certificar de que nunca enviamos mais dados para um único redutor do que pode caber na memória. A forma como podemos controlar isso atualmente é dar a cada criança JVM redutor mais heap e / ou particionar nossos dados de séries de tempo na fase do mapa. Neste caso, a partição wed mais pelo tempo, quebrando nossos dados em janelas menores do tempo. Ao contrário de uma maior partição dos dados, outra abordagem para este problema é permitir que o Hadoop classifique os dados para nós no que é chamado de fase de baralhamento do MapReduce. Se os dados chegarem a um redutor já em ordem classificada, poderemos diminuir a pegada de memória e reduzir o número de loops através dos dados, observando somente as N amostras seguintes para cada cálculo de média móvel simples. Isso nos leva ao aspecto crucial deste artigo, que é chamado de shuffles secundário mecânico de classificação. Classificar é algo que podemos deixar Hadoop fazer por nós e Hadoop tem provado ser muito bom em classificar grandes quantidades de dados, ganhando a competição Grey Sort em 2008. Ao usar o mecânico de classificação secundário, podemos resolver tanto as nossas questões heap e classificar de forma bastante simples E eficientemente. Para empregar o tipo secundário em nosso código, precisamos fazer a chave um compósito da chave natural e do valor natural. Abaixo na Figura 1 vemos um diagrama de como isso ficaria visualmente. Figura 1: Diagrama de Teclado Composto A Tecla Composto dá ao Hadoop as informações necessárias durante o shuffle para executar uma classificação não apenas no 8220stock symbol8221, mas também no selo de tempo. A classe que classifica essas teclas composites é chamada de comparador chave ou aqui 8220CompositeKeyComparator8221. O comparador chave deve ordenar pela chave composta, que é a combinação da chave natural e o valor natural. Podemos ver abaixo na Figura 2 onde uma versão abstrata do tipo secundário está sendo executada em uma chave composta de 2 inteiros. Figura 2: CompositeKeyComparator classificando Composite Keys (as chaves são inteiros). Na Figura-3 abaixo vemos um exemplo mais realista onde we8217ve mudou a Chave Composta para ter uma seqüência de símbolo de estoque (K1) e uma marca de tempo (K2, exibido como uma data, mas no código é um longo em ms). O diagrama classificou os pares K / V tanto por 8220K1: símbolo de estoque8221 (chave natural) e 8220K2: marca de tempo8221 (chave secundária). Figura 3: CompositeKeyComparator no trabalho em nossas chaves compostas. A chave composta agora é representada com um símbolo de estoque de cordas (K1) e uma data (K2). Uma vez que nós classificamos nossos dados na chave composta, precisamos agora dividir os dados para a fase de redução. Na Figura 4 abaixo, vemos como os dados da Figura 3 acima foram particionados com o NaturalKeyPartitioner. Figura 4: Particionando pela chave natural com o NaturalKeyPartitioner. Uma vez que we8217ve particionou nossos dados, os redutores agora podem começar a baixar os arquivos de partição e iniciar sua fase de mesclagem. Inf Figura 5 abaixo, vemos como o comparador de agrupamento, ou NaturalKeyGroupingComparator, é usado para garantir que uma chamada de reduce () veja apenas os dados logicamente agrupados significados para essa chave composta. Figura 5: Agrupando Comparator mesclando arquivos de partição. O comparador de partição e agrupamento para a chave composta deve considerar apenas a chave natural para particionamento e agrupamento. Abaixo está uma breve descrição do código Simple Moving Average que é alterado para usar o tipo secundário e está hospedado no github. Se você notar, os nomes das classes correspondem exatamente à terminologia usada nos diagramas acima e em Tom Whites Hadoop: O Guia Definitivo (capítulo 8 MapReduce Recursos) para tornar o código mais fácil de entender. NaturalKey 8211 o que você normalmente usaria como chave ou grupo pelo operador. Nesse caso, a Chave Natural é o símbolo de grupo ou de ações, pois precisamos agrupar dados de estoque potencialmente não ordenados antes de podermos classificá-los e calcular a média móvel simples. Composite Key 8211 Uma chave que é uma combinação da chave natural e do valor natural que queremos classificar por. 5 respostas em ldquo Simple Moving Average, Secundário Sort, e MapReduce (Parte 3) rdquo Cool truque com o dividir classificador / particionador. Tanto quanto eu posso dizer isto trabalha grande até que a série se torne extremamente longa (pense 30 anos de dados do nível do carrapato) 8211 parece como particionar pelo tempo pode ser muito complicado. Você sabe de alguma coisa construída no hadoop como um particionador que pode cuspir os mesmos dados em várias partições que eu experimentei com mapeadores que duplicam valores em várias chaves, mas eu me pergunto se existe uma maneira mais convencional de fazer isso. Evan, Você está morto com o tamanho dos dados em um único espaço de teclas. Eu atingi este mesmo problema quando trabalhava no projeto openPDC para o NERC: Um sensor poderia ter literalmente bilhões de pontos em um período de tempo muito curto, então para os trabalhos de protótipo nós codificamos as coisas para um único dia (3.600.000ms): Versão complexa eu teria usado sobreposição de slots de tempo para que o mapeador obteria dados suficientes de espaços adjacentes para cobrir um único comprimento de janela. Por enquanto, I8217d diz que você está no caminho certo com os valores duplicados. Eu sei que isso não está relacionado a médias móveis, mas quão preciso foi a série de tempo SAX correspondência usado no PDC eu implementado algo como isso (exceto usando o MapReduce API 2), e no loop da função reduce (), sempre que o. Next () método é chamado no Iterator, temos um novo valor, mas a chave também milagrosamente mudanças. Em vez disso, a parte da chave composta que não foi usada como uma chave natural (o timestamp neste exemplo) muda. Isso foi bastante surpreendente. Como isso acontece Postagem de navegação Adotando Apache Hadoop no Governo Federal Blog de Cloudera Engenharia Simple Moving Average, Secondary Sort e MapReduce (Parte 1) Intro Nesta série de blog de três partes eu quero dar uma olhada em como faríamos um Simple Moving Average Com MapReduce e Apache Hadoop. Esta série destina-se a mostrar como traduzir uma função comum do Excel ou R no código MapReduce java com código de trabalho e dados para jogar. A maioria dos analistas pode levar alguns meses de dados de estoque e produzir uma planilha do Excel que mostra uma média móvel, mas fazer isso no Hadoop pode ser uma tarefa mais assustadora. Embora a série de tempo como um tópico é relativamente bem compreendida, eu queria tomar a abordagem de usar um tópico simples para mostrar como ele se traduziu em um poderoso aplicativo paralelo que pode calcular a média móvel simples para um monte de ações simultaneamente com MapReduce e Hadoop. Eu também quero demonstrar o mecânico subjacente de usar a técnica de ordenação secundária147 com a fase de shuffle MapReduce de Hadoop146s, que veremos é aplicável a muitos domínios de aplicação diferentes, como dados de finanças, sensores e genômicos. Este artigo deve ser acessível para o programador iniciante Hadoop que fez um pouco de MapReduce em java e está à procura de um pouco mais desafiador MapReduce aplicação para cortar. No caso de você não estar muito familiarizado com o Hadoop, há algumas informações básicas e CDH. O código neste exemplo é hospedado em github e é documentado para ilustrar como os vários componentes trabalham juntos para alcançar o efeito de classificação secundário. Um dos objetivos deste artigo é ter esse código ser relativamente básico e acessível pela maioria dos programadores. Portanto, devemos dar uma rápida olhada no que os dados da série de tempo são e onde ele é empregado no mundo rapidamente emergente de dados em larga escala. O que são dados de séries temporais Os dados de séries temporais são definidos como uma seqüência de pontos de dados medidos normalmente em intervalos sucessivos espaçados em intervalos de tempo uniformes. Os dados da série de tempo são vistos tipicamente nas estatísticas, no processamento do sinal, e no financiamento junto com outros campos. Exemplos de dados de séries temporais são o preço de fechamento ajustado diariamente de uma ação na NYSE ou as leituras de sensores em uma rede elétrica ocorrendo 30 vezes por segundo. As séries temporais como uma classe geral de problemas habitualmente residiram nos domínios científico e financeiro. No entanto, devido à contínua explosão de dados disponíveis, os dados de séries temporais estão se tornando mais prevalentes em uma faixa mais ampla de indústrias. Os sensores da série de tempo estão sendo ubiquitously integrados nos lugares como: It146s foi mostrado também que as formas nas imagens podem ser decompostas em dados da série de tempo que permite que as formas alcancem a rotação ea invariância da escala permitindo a comparação mais fácil. Outro setor que mostra um crescimento explosivo na quantidade de dados de séries temporais produzidos é o domínio genômico e bioinformático. Nós estamos vendo o custo para seqüenciar o genoma humano continuar a diminuir rapidamente. Deslocando a pressão para as tecnologias de armazenamento e processamento desses genomas. Os dados do genoma em sua representação de texto (GATC) podem ser representados como séries temporais e, portanto, esses problemas são acessíveis por todas as técnicas relevantes para o processamento de séries temporais. O processamento de séries temporais está subjacente a algumas técnicas utilizadas no domínio da genómica, tais como o achado 147motif 148, que pode ser abordado da mesma forma que o problema 148 de cadeia média. O entendimento de como podemos refatorar abordagens tradicionais para esses problemas de séries temporais ao inserir no MapReduce pode potencialmente nos permitir melhorar as técnicas de processamento e análise em tempo hábil. A indústria financeira tem sido muito tempo interessado em dados de séries temporais e têm empregado linguagens de programação como R para ajudar a lidar com este problema. A linguagem de programação R foi criada especificamente para esta classe de dados8211, como mostrado no exemplo R abaixo. Então, por que um setor criaria uma linguagem de programação especificamente para uma classe de dados quando tecnologias como RDBMS existiram por décadas? Na realidade, a tecnologia RDBMs atual tem limitações ao lidar com dados de séries temporais de alta resolução. Esses fatores limitantes incluem: Os dados de séries de tempo de alta freqüência provenientes de uma variedade de fontes podem criar enormes quantidades de dados em muito pouco tempo. Os RDBMS8217 tendem a não gostar de armazenar e indexar bilhões de linhas. Non-distributed RDBMS8217s tendem a não gostar de escalonamento para as centenas de GB146s, muito menos TB146s ou PB146s. RDBMS8217s que podem escalar nessas arenas tendem a ser muito caras, ou requerem grandes quantidades de hardware especializado Problemas com consultas RDBMS8217s em dados de séries temporais de alta resolução: Para processar dados de séries temporais de alta resolução com um RDBMS we8217d precisa usar uma função de agregação analítica em Tandem com predicados janela em movimento (ex: a cláusula 8220OVER8221), o que resulta em quantidades rapidamente crescente de trabalho a fazer como a granularidade dos dados da série de tempo fica mais fino. Os resultados da consulta não são perfeitamente comutáveis ​​e não podem fazer janelas deslizantes de passo variável (ex: passo 5 segundos por movimento de janela) sem trabalho intermedio desnecessário significativo ou funções SQL não padrão. Consultas em RDBMS para séries temporais para certas técnicas podem ser desajeitadas e tendem a exigir subdivisão prematura dos dados e reconstrução dispendiosa durante o processamento (exemplo: mineração de dados, decomposições iSAX) Devido aos fatores acima, com grandes quantidades de dados de séries temporais desempenho RDBMS Degrada enquanto escala. A maioria dos cálculos de séries de tempo simples é realizada com a ferramenta de análise favoritos de todos: a planilha. No entanto, quando precisamos olhar para os dados que estão além do limite de linha de 65k do Excel, como nossa abordagem evoluir como nós escala os nossos dados Neste artigo we146ll parar para dar uma olhada nas questões envolvidas quando a escala de dados antes de saltar para MapReduce E como Hadoop aborda as coisas. Let146s começam com uma média móvel simples em uma pequena amostra de dados no Excel. Vamos progredir para o mesmo exemplo em R e, em seguida, trabalharemos para o nosso caminho em direção a um pleno MapReduce soprado aplicação em java (código incluído). Uma vez que tenhamos nossos dados de amostra funcionando bem com MapReduce, calcularemos a média móvel simples de todas as ações da NYSE de 1970 até o presente em uma só passagem sem alterar nenhum código. Média Móvel Simples Uma média móvel simples é a série de médias não ponderadas em um subconjunto de pontos de dados da série de tempo à medida que uma janela deslizante progride no conjunto de dados da série de tempo. Cada vez que a janela é movida, recalculamos a média dos pontos na janela. Isso produz um conjunto de números que representam a média móvel final. Normalmente, a técnica de média móvel é usada com séries temporais para destacar tendências de longo prazo ou suavizar o ruído de curto prazo. As médias móveis são semelhantes aos filtros passa-baixas no processamento de sinal, e matematicamente são consideradas um tipo de convolução. Em outros termos, pegamos uma janela e a preenchemos de uma maneira First In First Out (FIFO) com pontos de dados da série de tempo até termos N pontos nele. Em seguida, tomamos a média desses pontos e adicionamos isso à nossa lista de respostas. Deslizamos nossa janela para a frente por pontos de dados M e novamente tomamos a média dos pontos de dados na janela. Este processo é repetido até que a janela não pode mais ser preenchida em que ponto o cálculo é completo. Agora que temos uma idéia geral do que estamos olhando, let146s dar uma olhada em algumas maneiras de fazer uma média móvel simples. Coming Up Nas partes 2 e 3 desta série we8217ll blog levar o leitor de média móvel simples no Excel, através de R, e depois em um exemplo real com o código da média móvel simples em MapReduce. 3 respostas sobre ldquo Simple Moving Average, Secundário Sort, e MapReduce (Parte 1) rdquo Tenho que nitpick um pouco aqui 8211 R não foi criado especificamente para lidar com dados de séries temporais no setor de serviços financeiros. É a implementação open source da linguagem de programação 8220S8221, que foi criada como uma linguagem de programação estatística de uso geral. Pessoalmente, acho R8217s manipulação de dados de séries de tempo bastante fraco em comparação com outros sistemas analíticos I8217ve usado. (Don8217t me interpretem mal, I8217m um fã R-time grande e usuário.) Em segundo lugar 8211 após anos de trabalhar e estudar essas coisas, minha crença é que, fundamentalmente, RDBMS8217s são aleijadas quando se trata de olhar para os dados de séries temporais, porque eles confiam Na teoria dos conjuntos. Os conjuntos são naturalmente desordenados, enquanto as dimensões do tempo têm uma ordem natural muito clara. A natureza desordenada de conjuntos faz o trabalho de matemática muito bem em favor de RDBMS para processamento transacional, mas menos assim para processamento analítico. Tudo isso dito, I8217m realmente ansioso para ver a análise de séries temporais em Hadoop Evan Quando você afirma que você encontrar outras análises mais poderoso do que R para séries de tempo, você pode compartilhar quais. Seria bom comparar notas. Jay Você se importa de adicionar os links para a parte 2 e 3 Eu vi um exemplo onde o mapeador reuniu todos os dados e durante a fase de redução os valores foram calculados. Se você tem uma média móvel simples (SMA) esta é uma boa solução. Ele começa a sofrer se você implementar um backtesting em um GARCH (1, 1) mais de 3000 pontos de dados. Mensagem navegação Evitar completa GCs em HBase com tampões de alocação MemStore-Locais: Parte 3 Média Móvel Simples, Secundário Sort, e MapReduce (Parte 2) Parece que estamos tendo um problema onde ao longo do dia alertas NAMENODERPCLATENCY irá disparar, em seguida, claro logo depois. Este é um de hoje de manhã: NAMENODERPCLATENCY tornou-se ruim: A média móvel da latência RPC é 11,7 segundo (s) durante o anterior 5 minuto (s). A média móvel do tempo de fila é de 5,3 segundo (s). A média móvel do tempo de processamento é 6,4 segundo (s). Limiar crítico: 5 segundo (s). Eu não fui capaz de encontrar qualquer coisa em meus livros ou na internet sobre como mitigar isso (além de talvez adicionar mais namenodes usando HDFS federação). Quando eu olho para o servidor executando o namenode eu não estou vendo qualquer utililzation pesado de CPU nem estou vendo memória sendo tensas. A única indicação de qualquer coisa neste período de tempo é um pico de rede. Existe alguma coisa que eu possa fazer para mitigar este problema. Nós não temos frames jumbo habilitado se isso faz a diferença. Verificou o log de serviço que você mencionou, não vendo nada relacionado ao namenode (também procurou log inteiro para NAMENODERPCLATENCY e nada encontrado). Aqui estão os argumentos da JVM passados ​​para o início. (Ext xmx XMS) HADOOPNAMENODEOPTS-Xms2779774976 - Xmx2779774976 XX: UseParNewGC XX: UseConcMarkSweepGC XX: - CMSConcurrentMTEnabled XX: CMSInitiatingOccupancyFraction70 XX: CMSParallelRemarkEnabled - Dcom. sun. management. jmxremote - Dcom. sun. management. jmxremote. port3000 - Dcom. sun. management. jmxremote. sslfalse - Dcom. sun. management. jmxremote. authenticatefalse XX: OnOutOfMemoryError / killpa rent. sh HADOOPLOGFILEhadoop-CMF-hdfs-NameNode-usapname01.ihtech. log. out HADOOPAUDITLOGGERINFO, RFAAUDIT HADOOPROOTLOGGERINFO, RFA CDHVERSION5 HADOOPLOGDIR / var / log / hadoop-hdfs HADOOPSECURITYLOGGERINFO, RFAS Aqui estão as estatísticas da página dfshealth do namenode. Resumo A segurança está desativada. Safemode está desligado. 816955 arquivos e diretórios, 953582 blocos 1770537 total filesystem object (s). Heap Memory usou 1,2 GB de memória Heap de 2,5 GB. A memória do Heap máximo é de 2,5 GB. Não Memória Heap usada 70.28 MB de 97.38 MB Comprometida Memória não Heap. Máximo memória não heap é 130 MB. Capacidade configurado: DFS Usado: não DFS Usado: DFS restante: DFS Usado: DFS restante: Bloco Piscina Usado: Bloco Piscina Usado: DataNodes usos (Min / Median / Max / stdDev): Ao vivo NodesDead NodesDecommissioning NodesNumber de Sub-replicado BlocksNumber de Blocos eliminação pendente 503,99 TB 199,13 TB 25,21 TB 279,64 TB 39,51 55,49 199,13 TB 39,51 33,93 / 40,66 / 43,58 / 2,85 12 (Decommissioned: 0) 0 (Decommissioned: 0) 0 0 Estado 0 NameNode Jornal atual ID da transação: 140817035 Jornal State Manager QJM para 10.32.88.30:8485, 10.32.88.23:8485, 10.32.88.24:8485 segmento de escrita a partir das txid 140817035. 10.32.88.30:8485 (Escrito txid 140.817.035), 10.32.88.23:8485 (Escrito txid 140.817.035), 10.32.88.24: 8485 (Txid escrito 140817035) Obrigado pela sua resposta. Eu realmente resolvi este problema que foi causado por uma combinação de dois fatores. 1 - Way para muitos pequenos arquivos sendo criados por desnaturalização porco empregos. Trabalhos que processam esses dados de resultado estavam fazendo muitas chamadas RPC ao mesmo tempo, basicamente realizando um ataque de negação de serviço no namenode (cerca de 1800 chamadas RPC um segundo no ponto de falha). 2º - Logo depois de resolver o problema dos arquivos pequenos, surgiu outro problema. Aparentemente aleatória alta fila de processamento de carga, no momento parecia muito estranho, porque o problema de arquivos pequenos tinha sido resolvido ea quantidade de chamadas RPC estava bem dentro do limite estável. A primeira questão revelou-se bastante fácil de resolver. Os trabalhos de porco foram modificados para enrolar todos esses arquivos pequenos em arquivos muito maiores (não grandes na escala do hadoop) para que, em vez de centenas de milhares de arquivos, pudéssemos obtê-los para apenas algumas centenas. A segunda questão era muito mais interessante. Isso era difícil de solucionar e realmente resolvido por acidente. Na verdade, não há quase nenhuma documentação sobre o que causaria alta carga de processamento de fila que me levou a puxar o código fonte para HDFS. Ele acabou por ser causado pelo servidor JobHistory tentando puxar os logs de / tmp / logs. O servidor JobHistory estava executando em falhas de permissões ao tentar puxar logs disse, o que levaria ao tempo de fila de processamento de alta e, eventualmente, um atraso na fila RPC. ProTip da minha dor: processamento de alta fila acontece quando um trabalho / alguém tenta operar contra arquivos em HDFS que eles não têm permissões para. O grande problema com isso é que mesmo os usuários menos privilegiados podem causar instabilidade de cluster apenas tentando operar contra arquivos aos quais eles não têm permissão. Eu encontrei um problema com os logs JobHistory sendo recuperados no navegador. Na minha causa isso acabou por ser causada por algum trabalho de limpeza que eu tinha feito no diretório HDFS / tmp. Eu tinha acidentalmente removido / tmp / logs sem perceber que este é o local de armazenamento dos logs do servidor JobHistory YARN. A pasta foi recriada automaticamente pelo processo do fio, mas com as permissões erradas necessárias para que o servidor JobHistory funcione. Acontece que este problema foi causado por esforços anteriores para limpar o espaço de arquivos / tmp em HDFS. O diretório / tmp / logs é usado pelo servidor JobHistory para armazenar logs para recuperação. Quando o diretório foi removido como sendo envelhecida para fora foi automaticamente recriado, mas com as permissões erradas (Foi recriado com fios: supergrupo em vez de mapred: hadoop). A maneira como o diretório funciona é que ele alavanca o bit pegajoso para forçar a herança das permissões de grupo em todos os novos arquivos criados. Sob as condições corretas, isso forçaria todos os novos arquivos e pastas a serem propriedade do hadoop. Neste caso, levou a todas as novas pastas e arquivos sendo de propriedade do supergrupo, o que impediu o servidor JobHistory de ser capaz de ler os logs. Você pode ver onde eu comentei neste tópico sobre como corrigir isso .. drwxrwxrwt - fios de superusuário 0 2017/05/10 09:28 / tmp / logs rootnamenode hadoop-hdfs sudo - u hdfs hdfs dfs - ls / tmp / logs / Drwxrwx --- - usuário1 supergrupo 0 2017-05-10 09:28 / tmp / logs / user1 drwxrwx --- - usuário2 supergrupo 0 2017-05-06 12:46 / tmp / logs / user2 drwxrwx --- - user3 supergroup 0 2017-05-06 12:54 /tmp/logs/user3 drwxrwxrwt - mapred hadoop 0 2017-05-10 09:28 /tmp/logs rootnamenode hadoop-hdfs sudo - u hdfs hdfs dfs - ls /tmp/logs/ drwxrwx--- - user1 hadoop 0 2017-05-10 09:28 /tmp/logs/user1 drwxrwx--- - user2 hadoop 0 2017-05-06 12:46 /tmp/logs/user2 drwxrwx--- - user3 hadoop 0 2017-05-06 12:54 /tmp/logs/user3

No comments:

Post a Comment