sexta-feira, 24 de abril de 2015

Um Spark Streaming pode sobreviver ao Chaos Monkey?

Traduzido por Carla Matheus Carneiro

A Netflix é uma organização orientada a dados que prioriza a qualidade dos dados coletados e processados. Em nosso post anterior, nós destacamos os casos de processamento de fluxo em tempo real no contexto das recomendações online e do monitoramento de dados. Ao escolhermos o Spark Streaming como nosso processador de fluxo, nós nos propusemos a avaliar e compartilhar o histórico de resiliência do Spark Streaming no ambiente da nuvem AWS.  Uma abordagem baseada no Chaos Monkey, que finalizou aleatoriamente instâncias ou processos, foi empregada para simular falhas.

O Spark na Amazon Web Services (AWS) é importante já que a Netflix transmite seu serviço principalmente fora da nuvem AWS. Sistemas de processamento de fluxo precisam operar em 24/7, além de serem tolerantes a falhas. Instâncias na AWS são efêmeras, o que torna imprescindível garantir a resiliência do Spark.

Componentes do Spark

O Apache Spark é um sistema de computação em cluster rápido e genérico. O Spark pode ser implantado no Mesos, no próprio gerenciador de cluster do Yarn ou Spark, que aloca os recursos do nó de trabalho para uma aplicação. O Spark Driver se conecta ao gerenciador de cluster e é responsável pela conversão de uma aplicação em um grafo acíclico direto (DAG) de tarefas individuais que são executadas dentro de um processo nos nós de trabalho.

Criando o Chaos

Os dispositivos de transmissão Netflix enviam periodicamente eventos que capturam as atividades dos membros, o que tem um papel significativo na personalização. Esses eventos vão para nossas aplicações no servidor e são encaminhados para o Kafka. Nossa aplicação de transmissão Spark utiliza esses eventos do Kafka e calcula métricas. A arquitetura de implantação está demonstrada abaixo:


Figura 2: Arquitetura de Implantação

Nosso objetivo é assegurar que não haja interrupção no cálculo de métricas quando os diferentes componentes Spark falham. Para simular tais falhas, nós aplicamos uma abordagem "whack-a-mole" (processo repetitivo de eliminação) e eliminamos os vários componentes Spark.

Nós executamos nossa aplicação de transmissão spark no Spark Standalone. O exercício de resiliência foi executado com o Spark v1.2.0, Kafka v0.8.0 e Zookeeper v3.4.5.

A Resiliência do Spark Streaming

Resiliência do Driver: O Spark Standalone suporta dois modos de iniciar o aplicativo de driver. No modo cliente, o aplicativo de driver é iniciado no mesmo processo como aquele em que o cliente envia a aplicação.  Quando esse processo morre, o aplicativo é abortado.  No modo cluster, o aplicativo é iniciado a partir de um processo de trabalho no cluster.  Além disso, o modo standalone cluster suporta uma opção de supervisão que permite reiniciar o aplicativo automaticamente em códigos de saída diferente de zero.

Resiliência do Master:  A agenda Spark utiliza o Master para tomar decisões agendadas.  Para evitar qualquer ponto de falha, é melhor configurar um multi master standalone cluster. O Spark utiliza o Zookeeper para definir um líder. Um dos nós master se torna um nó ATIVO e todos os nós de trabalho ficam registrados nele. Quando esse nó master morre, um dos nós master STANDBY se torna o nó ATIVO e todos os nós de trabalho ficam automaticamente registrados nele. Se houver qualquer aplicação sendo executada no cluster durante a falha do master, elas ainda continuarão funcionando sem nenhuma falha.

Resiliência do Processo de Trabalho: O processo de trabalho inicia e monitora o Executor e o Driver como processos primários. Quando o processo de trabalho morre, todos os seus processos primários também morrem.  O processo de trabalho reinicia automaticamente, que por sua vez reinicia o processo do Driver e/ou do Executor.

Resiliência do Executor: Quando o processo Executor morre, eles são automaticamente reiniciados pelo processo de trabalho e quaisquer tarefas que estiverem suspensas são reagendadas.

Resiliência do Receptor: O Receptor é executado como uma longa tarefa em um Executor e tem as mesmas características de resiliência de um executor.

O efeito sobre as métricas calculadas, em função do término de vários componentes Spark, está demonstrado abaixo.


Figura 3: O comportamento na falha do Receptor/Driver/Master

Falha do Driver: O principal impacto está na contra-pressão acumulada devido a uma falha do nó, o que resulta em uma queda brusca no processamento de mensagens, seguido de um pico, antes que o grafo fique estável.

Falha do Receptor: A queda nas métricas calculadas ocorreu devido ao fato do receptor padrão Kafka ser um receptor não confiável.  O Spark streaming 1.2 traz um recurso experimental chamado write ahead logs que faz do kafka um receptor confiável.  Quando estiver habilitado, as aplicações terão êxito com o receptor de transferência Kafka.  No entanto, isso pode ser abordado através do aumento do número de receptores.

 Resumo

A tabela abaixo resume as características de resiliência dos diferentes componentes Spark:


Componente
Tipo
Comportamento na Falha do Componente
Resiliente
Driver
Processo
Modo Cliente: A aplicação inteira morre

Modo Cluster com supervisão: O Driver é reiniciado em um nó de trabalho diferente

Master
Processo
Master Único: A aplicação inteira morre

Multi Master: Um master STANDBY se torna ATIVO

Processo de Trabalho
Processo
Todos os processos primários (executor ou driver) também são finalizados e um novo processo de trabalho é iniciado

Executor
Processo
Um novo executor é iniciado pelo processo de trabalho

Receptor
Tópico(s)
O mesmo que o Executor, pois estão executando longas tarefas dentro do Executor

Nó de Trabalho
Processos de Trabalho, Executor e Driver são executados em nós de trabalho e o comportamento é o mesmo ao matá-los individualmente


Nós encontramos alguns erros (SPARK-5967, SPARK-3495, SPARK-3496, etc.) durante este exercício, porém a equipe Spark Streaming foi capaz de corrigí-los em tempo. A performance Spark ainda está em teste e os resultados serão divulgados em posts no blog.


No geral, estamos satisfeitos com a resiliência do spark standalone e animados para chegar ao próximo nível em que estamos trabalhando a fim de construir uma Arquitetura Lambda unificada que envolve uma combinação de lote e transmissão em tempo real de processamento.  Estamos nos estágios iniciais desse desenvolvimento, por isso, se você tiver interesse em contribuir, por favor entre em contato conosco.

quarta-feira, 1 de abril de 2015

Cloud  File    Services
Mude sua empresa para
a nuvem! Por John Reed,
membro da SNIA ESF, NetApp.

Traduzido por Carla Matheus Carneiro
Artigo Original





QUAIS SÃO SEUS DESAFIOS ao utilizar a nuvem? Enquanto muitas empresas obtêm sucesso começando com uma infraestrutura na nuvem, outras encontram dificuldade em fazer essa transição. Uma das razões é que muitas empresas executam suas aplicações em protocolos File Services (NAS-based), como SMB ou NFS, e há pouquíssimas arquiteturas em nuvem com esse tipo de oferta.

Não é viável para os clientes terem que reescrever suas aplicações para armazenamento em nuvem. Dessa maneira, como é possível que uma empresa a adote?

Como eu escrevi no artigo do ano passado "Leve seu Datacenter para o futuro com o SMB 3.0", mais do que nunca as aplicações - especialmente nas empresas - estão adotando File Services. Novas versões de protocolo como SMB 3 e NFS 4.1 são especialmente projetadas para aplicações, e mais importante, File Services são mais fáceis de desenvolver e gerenciar. Aplicativos tradicionais em SAN e aplicativos especializados de quase todos os setores foram (ou estão sendo) atualizados para NAS.

File services + Nuvem

Com muitas empresas usando o File Services, e agora, com todas as lojas e T.I. do mundo mudando seu foco para a nuvem, precisamos de uma solução que atenda essas duas tendências juntas.

Essa solução não só precisa fornecer File Services na nuvem, como também precisa diminuir as desconfianças sobre mobilidade de dados e aplicações, oferecendo uma experiência de gerenciamento consistente em todas as localizações. Com certeza esse é um grande objetivo, mas para alcançá-lo há um caminho a ser percorrido.

Apresentando o Cloud File Services

O Cloud File Services é uma plataforma comum a todos os seus ambientes, inclusive em Nuvens Privadas pré existentes, Service Providers, e ambientes Hyperscalars (nuvens públicas de larga escala). Administradores de Storage podem ter a mesma experiência em todas as suas localizações, regiões geográficas, e modelos de desenvolvimento.

Como chegar ao Cloud File Services? A resposta mais simples é colocar seu sistema de armazenamento favorito em todos os lugares em que você opera. Para explicar como fazer isso, vamos rever as funções de computação e armazenamento nos datacenters públicos e privados.

A maioria dos datacenters modernos têm conceitos de computação e armazenamento em "camadas", que são logica ou fisicamente separados. Tradicionalmente, na computação em camada, aplicações e hosts são executados nos sistemas de servidores físicos. Hoje, a maioria desses sistemas de servidores são virtuais (em VMs) em hypervisors, o que permite que uma máquina física execute várias máquinas virtuais. Além disso, essa virtualização permite que VMs se movam entre máquinas e plataformas. Assim como os servidores de computação, os servidores de storage também executam um sistema operacional, e eles podem ser virtualizados de maneira similar.

Se os sistemas de armazenamento podem funcionar como uma VM, eles também podem ter a flexibilidade necessária para tirar proveito de diferentes plataformas de hardware. Na verdade, os principais fornecedores de gerenciamento de storage oferecem uma variedade de plataformas virtualizadas (incluindo hardware- e hypervisor-based), e modelos de desenvolvimento (incluindo ambientes pré existentes, Service Providers próximos à nuvem, e na nuvem).





Servidores tradicionais de armazenamento baseados em hardware podem ser executados com o mesmo sistema de armazenamento executado em um hypervisor. Enquanto essa linha tênue existir entre os recursos de computação e armazenamento (leia-se: hardware), a computação e o armazenamento em camadas serão definidos pelos sistemas operacionais e os diferentes papéis que desempenham.

De certa maneira, ambientes Hyperscalars (por exemplo, sua nuvem pública favorita) parecem muito com infraestruturas locais, com ambas as camadas de computação e armazenamento. A camada de computação (baseada inclusive em um hypervisor) oferece uma plataforma escalável que permite a execução de VMs, memória e ciclos, enquanto a camada de armazenamento oferece vários níveis de desempenho e latência.

SMB e NFS na Nuvem

Como tudo isso pode levá-lo ao Cloud File Services? Como já foi dito, se você virtualizar o seu sistema de armazenamento, ele aparecerá como qualquer outra VM. Então você coloca essa VM na camada do ambiente Hyperscalar, e pronto! Você terá a mesma plataforma de armazenamento local, disponível em uma nuvem pública.

O sistema poderá então distribuir os dados entre os diferentes níveis de armazenamento do ambiente Hyperscalar, oferecendo as mesmas interfaces já utilizadas nas suas aplicações.

Estas interfaces não estão limitadas à gestão, elas também incluem os protocolos de armazenamento. Lembre-se que esse S.O. é o mesmo que você tem no seu datacenter: é um servidor que fornece arquivos de armazenamento SMB e NFS para suas aplicações...sendo executado em qualquer lugar.

Usando seu sistema operacional como uma VM, você terá File Services sendo executados no ambiente Hyperscalar de sua escolha. Com File Services na nuvem, você também terá seus aplicativos corporativos lá.

Mobilidade de dados e aplicação

"Uau!" você diria. "Agora eu posso executar todos os meus aplicativos corporativos na nuvem! Mas como faço para conseguir isso?" Essa é a melhor parte! Ao executar a mesma plataforma em todos os seus ambientes, você pode aproveitar a camada de armazenamento daquelas plataformas que são tão úteis. Os mesmos processos e operações que você já utiliza para mover dados entre dois arranjos físicos podem ser aplicados aqui também. Isso significa melhor eficiência na movimentação de dados, sem copiá-los nos servidores. Cópias normais e de VM também funcionam da mesma maneira. Depois da transferência dos dados, estes poderão ser utilizados da mesma maneira que em seu datacenter.

Essa facilidade na movimentação de dados faz com que muitos dos que adotam a nuvem deixem uma lacuna: uma estratégia de saída. Vamos dizer que o Service Provider não está funcionando como você esperava, e você precisa mover tudo para o local de origem. Movimentando os dados em nível de storage, seus dados estarão de volta em um segundo. "Mas agora eu tenho que mudar minhas aplicações novamente", você diria. Não com o Cloud File Services! Seus dados são acessados e gerenciados exatamente da mesma maneira. Sem mudanças nas suas aplicações, ou em suas ferramentas de gerenciamento, e sem a necessidade de um novo treinamento.




Há muitas possibilidades com esse conceito. Você pode se mover entre qualquer combinação de Service Providers, ambientes Hyperscalars, e Nuvens Privadas pré existentes dependendo das suas necessidades, dos preços e da disponibilidade. Será que um ambiente Hyperscalar funciona offline? Alterne para outro ambiente Hyperscalar. É uma aplicação complicada que você portou para a nuvem? Mova-a de volta. Esta flexibilidade recém descoberta pode proporcionar oportunidades incríveis e novos modelos de negócios.

O Cloud File Services permite que você tenha seus dados onde quiser sem ter que alterar as aplicações existentes. Independentemente de qual arquitetura você tenha, use ou planeje implementar (Nuvens Privadas pré existentes, Service Provider, e/ou ambiente Hyperscalar), você terá a mesma plataforma de dados, os mesmos serviços, e a mesma experiência em seu ambiente inteiro. "Ir para a Nuvem!" finalmente é uma realidade.

O SNIA Ethernet Storage Forum (ESF) é responsável por difundir a adoção de tecnologias e soluções de rede de armazenamento ligados à Ethernet. Para mais informações sobre a SNIA e a Ethernet Storage, acesse www.snia.org/forums/esf e para seguir a ESF e o blog de John Reed, acesse http://sniaesfblog.org/?p=365