Baixe o app para aproveitar ainda mais
Prévia do material em texto
A BASE DA INFRAESTRUTURA DO DATA SCIENCE: HADOOP 2 UNIDADE Infraestrutura de Data Science e Cloud Computing - Unidade2.indd 43 12/06/19 15:05 Objetivos da unidade Tópicos de estudo Entender a arquitetura da infraestrutura de Big Data e seu histórico; Aprofundar sobre os componentes básicos do Hadoop e seus funcionamentos; Conhecer os componentes do ecossistema do Hadoop. Componentes principais do Hadoop O que é o Hadoop? HDFS e MapReduce YARN Seek time x transfer time, o que faz diferença em soluções de Big Data Arquitetura Hadoop Cluster Hadoop Processamento MapReduce Cache distribuído e segurança Segurança Identidade do usuário Ecossistema Hadoop INFRAESTRUTURA DE DATA SCIENCE E CLOUD COMPUTING 44 Infraestrutura de Data Science e Cloud Computing - Unidade2.indd 44 12/06/19 15:05 Componentes principais do Hadoop O Data Science é ávido por dado, sua matéria-prima. Ele necessita de rápido acesso à maior quantidade de dados possível para obtenção de resultados signifi cativos (volume e velocidade). Sempre houve uma competição de recursos nas corporações entre transações OLTP (On-line Transaction Processing) e OLAP (On-line Analytical Processing). A primeira delas se dedica à ob- tenção de desempenho para que as transações únicas sejam realizadas de forma mais acurada e rápida, com integridade de dados e de forma rápida, acontecendo em menos de uma dezena de segundos. As soluções de OLTP garantem que o tempo de resposta seja adequado, mesmo com milhões de transações iguais ocorrendo simultaneamente. EXEMPLIFICANDO Um bom exemplo é o funcionamento das transações fi nanceiras, como compra por car- tão de crédito. Os objetivos dela são a verifi cação de identidade (cartão válido, senha e estabelecimento), a análise de saldo e limites, a baixa de valores, o registro de paga- mento, confi rmações e a atualização de saldo. A segunda delas, por sua vez, procura acelerar as análises que agrupam várias tran- sações por diferentes ângulos ou dimensões (tempo, sequência, tipo, valores, região, etc.) para criar conclusões ou insights. No passado, por racionamento de recursos com- putacionais, a concorrência entre esses dois tipos de transação acabava por priorizar as OLTPs, deixando as OLAPs para grupos menores dentro das corporações – os chamados silos –, gerando informações incompletas, não integradas ou conceitualmente diferentes sob o ponto de vista corporativo. Com a chegada das tecnologias de Big Data, inicialmente criadas para resolver os problemas de empresas que necessitavam de enormes volumes de dados, como Yahoo! e Google, e ao mesmo tempo tinham que analisar e buscar dados para os seus mecanismos de pesquisa na web – a abordagem dos bancos de dados relacionais (RDBMS – Relational Data Base Manage- ment Systems) foi profundamente transformada. No entanto, colocar conteúdos não estruturados em RDBMS continua sendo um desafi o. Ele é mais indicado para transações OLTPs e o que temos na web são arquivos HTML, imagens, vídeos, links para outras páginas, que não precisam seguir um padrão predefi nido. Imaginemos que uma pesquisa por qualquer palavra na internet traga todas as páginas já publicadas a respeito dela, com uma apresentação por relevância e atualização. A base dos RDBMS são os índices, arquivos secundários que organizam os dados registrados em formato INFRAESTRUTURA DE DATA SCIENCE E CLOUD COMPUTING 45 Infraestrutura de Data Science e Cloud Computing - Unidade2.indd 45 12/06/19 15:05 O que é o Hadoop? O Hadoop é um framework de código aberto criado pela Apache Software Foundation para processar e analisar imensos volumes de dados. Ele consiste em um ambiente de pro- cessamento distribuído entre clusters de servidores para armazenar e processar dados. Para conseguir o que promete, o Hadoop usa seu próprio sistema de arquivos chamado HDFS (Hadoop Distributed File System). Seu diferencial é “entender” onde os dados estão, para que possa distribuir o processamento para o local correto e mais adequado. Os componentes de lógica do Hadoop são versões compiladas de programas em Java. de tabela; se a busca acontecer por uma coluna (campo) indexado, a velocidade de pesquisa é imediata, mesmo para grandes bancos de dados, mas se não houve um índice, o RDBMS buscará a informação linha a linha da tabela (Table Scan). Sendo assim, a modelagem de dados relacionais procura identifi car as formas de uso da base e criar estruturas que geram o melhor desempenho transacional. No entanto, vale uma observação: para as transações OLAP, que precisam analisar os dados a partir de vários ângulos, seria necessário ter índices para todos os campos. Isso, na verdade, construiu uma nova forma de estruturar os dados com a estratégia contrária da normalização, isto é, a desnormalização. Como o volume de dados da internet cresce exponencialmente, mesmo as estruturas OLAPs não são suficientes para os enormes volumes de dados. A estratégia foi considerar que o Table Scan precisa ser mais rápido. Essa premissa mudou completamente a forma de pensar dos engenheiros de dados. Eles concluíram que uma ótima forma de aumentar o desempenho do Table Scan é não guardar as informações em tabelas e sim em colunas. Esse foi o “ovo de Colombo” das soluções de Big Data. Com essa separação, os scans por coluna podem ser divididos por processos e, por consequência, podem ser paraleli- zados. Assim, haverá processos em vários servidores. As pesquisas, então, são mapeadas, divididas por colunas, distribuídas para outros servido- res dedicados às colunas envolvidas na consulta. Elas preparam os resultados e devolvem para um orquestrador que junta os dados resultantes e controla a forma como são consumidos, pois o tamanho da resposta sempre é muito grande também. Hoje, todo esse conhecimento está disponível em plataformas Open Source. Há um ecos- sistema chamado Apache Hadoop que é o motor por trás da maioria das tecnologias de Big Data do mercado. Ele está em evolução contínua para manter o desempenho de soluções que manipulam muitos dados em formatos variados. INFRAESTRUTURA DE DATA SCIENCE E CLOUD COMPUTING 46 Infraestrutura de Data Science e Cloud Computing - Unidade2.indd 46 12/06/19 15:05 CURIOSIDADE O Hadoop foi desenvolvido em Java e, atualmente, compõe as soluções de companhias como Facebook, Google, Twitter, LinkedIn, Yahoo, Netfl ix, dentre outras. Quais são os componentes do Hadoop? Seus principais componentes são: HDFS, MapReduce e YARN. Figura 1. Componentes do Hadoop. HDFS e MapReduce O HDFS é um sistema de arquivos distribuído na base de armazenamento (storage) do Hadoop. Tudo é guardado em uma estrutura de combinação de chave (key) e conteúdo (value). Uma rotina (daemon) chamada NameNode roda no HDFS no servidor master da instalação. Outra rotina, denominada DataNode, roda em todos os servidores escravos. O propósito dos NameNodes é armazenar os metadados (informações sobre os dados, como, por exemplo, seu tipo, localização, etc.) e também coordenar os DataNodes escravos. Os DataNodes, por outro lado, armazenam o dado e fi cam responsáveis pela a execução de Tarefas em Java Cluster master MapReduce HDFS: NameNode YARN: NodeManager YARN: Resource Manager Tarefas em Java YARN: NodeManager HDFS: DataNodeHDFS: DataNode Cluster escravo Cluster escravo INFRAESTRUTURA DE DATA SCIENCE E CLOUD COMPUTING 47 Infraestrutura de Data Science e Cloud Computing - Unidade2.indd 47 12/06/19 15:06 tarefas com os dados que estão armazenados no seu servidor. É dessa maneira que o HDFS garante a entrega de escalabilidade (propriedade de aumentar sua capacidade), tolerância a falhas (pois estamos falando de distribuição de processamento entre clusters), confiabilidade e armazenamento de dados em termos de gigabytes (GB) e terabytes (TB) com recurso de replicação. Os dados são divididos em blocos e distribuídos em várias máquinas separadasfísica e geograficamente. O tamanho default de cada bloco de dados é de 128 MB. Figura 2. Arquitetura do HDFS. A estratégia de redundância do HDFS é a replicação de dados entre servidores nós do cluster. Essa configuração pode ser mudada com a parametrização, mas o default (normal) é a replica- ção em três servidores nós diferentes para cada bloco, com uma combinação na qual sempre é possível recuperar todo o arquivo se algum nó de servidor falhar. Além desse recurso, há ainda o SecondaryNameNode que possui a capacidade de fazer checkpoints a cada hora, tornando-se uma réplica para o caso de falha. Os dados são sempre gravados em logs para possibilitar a re- plicação. O arquivo original é chamado de fsImage e o log de edit log. O SecondaryNode avisa o primário que quer fazer um checkpoint; o primário fecha o arquivo de log atual (edit log), começa a trabalhar em um segundo arquivo e libera o atual edit log para o servidor secundário trabalhar. O secundário, por estar em modo de espera, pode se dedicar a carregar o edit log e a aplicar as mudanças na sua versão do arquivo em questão. Ao terminar, transfere o novo arquivo para o primário atualizado, avisa o primário de que o checkpoint foi terminado e o edit log antigo é descartado. O tamanho default de cada bloco de dados é de 128 MB. Cluster escravo Cluster escravo HDFS: DataNode HDFS: DataNode Rack 1 Rack 2 HDFS: NameNode Metadata (nome, réplicas etc.) Replicação Bloco de dados Bloco de dados INFRAESTRUTURA DE DATA SCIENCE E CLOUD COMPUTING 48 Infraestrutura de Data Science e Cloud Computing - Unidade2.indd 48 12/06/19 15:06 YARN O YARN (Yet Another Resource Negotiator) é uma camada de gestão de recursos do Hadoop. Em um cluster com muitos servidores nós, é um trabalho árduo gerenciar, alocar e libe- rar recursos, tais como processamento (CPU ou GPU), memória e discos. O YARN é respon- sável por esses recursos no cluster com o Ha- doop, respondendo a solicitações das aplica- ções. O nome do daemon que executa essa tarefa é ResourceManager, que fi ca no servi- dor master, enquanto o daemon NodeMana- ger fi ca em todos os servidores escravos. Figura 3. Processo de checkpoint do NameNode. CURIOSIDADE O YARN nasceu devido à necessidade de aumentar o desempenho de processos em concorrência com o MapReduce, permitindo que outros componentes possuam priori- dades no processamento e ampliando a gestão de tarefas entre os clusters. NameNode SecondaryNode editlog editlog fslmage fslmage copiado anteriormente Novo fslmageNovo edilog usado durante checkpoint Troca durante checkpoint Merge INFRAESTRUTURA DE DATA SCIENCE E CLOUD COMPUTING 49 Infraestrutura de Data Science e Cloud Computing - Unidade2.indd 49 12/06/19 15:06 Cliente ResourceManager NodeManager NodeManager NodeManager App Manager DataNode DataNode DataNode Container App Manager Container App Manager Container Figura 4. Arquitetura do YARN. O ResourceManager centraliza a distribuição dos recursos e dimensiona as necessidades entre os serviços. O NodeManager é responsável por receber as instruções do ResourceManager e execu- tá-las nos clusters. O Container é criado para executar as requisições que chegam no NodeManager e cada aplicação pode rodar em um ou mais contêineres. O Container é uma unidade de processa- mento com memória e CPU alocada pelo NodeManager. O ApplicationMaster é responsável pelo MapReduce e pode solicitar a criação de mais contêineres para rodar aplicações. O CapacityScheduler no YARN foi projetado para executar aplicativos do Hadoop, como um cluster compartilhado multi-tenant, de maneira amigável, maximizando a taxa de trans- ferência e a utilização do cluster. Tradicionalmente, cada organização possui um conjunto pri- vado de recursos de computação que tem capacidade suficiente para atender ao SLA da or- ganização em condições de pico ou quase pico. Isso geralmente leva à má utilização média e sobrecarga de gerenciamento de vários clusters independentes, um para cada organização. O compartilhamento de clusters entre organizações é uma maneira econômica de executar grandes instalações do Hadoop, pois isso permite que eles colham benefícios de economias de escala sem criar clusters privados. No entanto, as organizações estão preocupadas em com- partilhar um cluster, porque não querem que outras pessoas compartilhem os recursos que são essenciais para seus SLAs. O CapacityScheduler é projetado para permitir o compartilhamento de um grande cluster, dando garantias de capacidade de cada organização. A ideia central é que os recursos disponíveis no cluster do Hadoop sejam compartilhados entre várias organizações que coletivamente financiam o cluster com base em suas necessidades de computação. Há um benefício adicional, que é a situação na qual INFRAESTRUTURA DE DATA SCIENCE E CLOUD COMPUTING 50 Infraestrutura de Data Science e Cloud Computing - Unidade2.indd 50 12/06/19 15:06 uma organização pode acessar qualquer excesso de capacidade que não esteja sendo usado por outros. Isso proporciona elasticidade para as empresas de uma forma rentável. O compartilhamento de clusters entre organizações necessita de um forte suporte para multilocação, já que cada organização deve ter a capacidade garantida e os recursos de se- gurança para garantir que o cluster compartilhado seja impenetrável para um aplicativo ou usuário desonesto. O CapacityScheduler fornece um conjunto estrito de limites para garantir que um único aplicativo – ou usuário ou fila – não possa consumir uma quantidade desproporcional de re- cursos no cluster. Além disso, o CapacityScheduler fornece limites em aplicativos inicializados e pendentes de um único usuário e fila para garantir a equidade e a estabilidade do cluster. A abstração primária fornecida pelo CapacityScheduler é o conceito de filas. Normalmen- te, essas filas são configuradas pelos administradores, gerando a economia do cluster com- partilhado. Para fornecer mais controle e previsibilidade no compartilhamento de recursos, o CapacityScheduler suporta filas hierárquicas para garantir que os recursos sejam compar- tilhados entre as subfilas de uma organização antes que outras filas tenham permissão para usar recursos livres, proporcionando, assim, afinidade, compartilhando recursos livres entre as aplicações de uma determinada organização. As características do CapacityScheduler são: • Filas hierárquicas: a hierarquia de filas é suportada para garantir que os recursos sejam compartilhados entre as subfilas de uma organização antes que outras filas tenham permissão para usar recursos livres, proporcionando, assim, mais controle e previsibilidade. • Garantias de capacidade: as filas são alocadas com uma fração da capacidade do grid (conjunto de clusters), no sentido que uma determinada capacidade dos recursos estará a sua disposição. Todos os aplicativos enviados a uma fila terão acesso à capacidade alocada para a fila. Os administradores podem configurar limites flexíveis e limites rígidos opcionais na capa- cidade alocada para cada fila. • Segurança: cada fila tem ACLs estritas que controlam quais usuários podem enviar aplicativos para filas individuais. Além disso, existem guardas de segu- rança para garantir que os usuários não possam visualizar e/ou modificar aplicativos de outros usuários. Além disso, as fun- ções de administrador de sistema e por fila são suportadas. • Elasticidade: os recursos sem elasticidade podem ser alocados para qualquer fila além de sua capacidade. Quando há demanda por esses recursos de filas que execu- tam abaixo da capacidade em um momento futuro, conforme INFRAESTRUTURA DE DATA SCIENCE E CLOUD COMPUTING 51 Infraestrutura de Data Science e Cloud Computing - Unidade2.indd 51 12/06/19 15:06 Seek time x transfer time, o que faz diferença em soluções de Big Data Ocorre ao separar os arquivos em blocos de 128 MB (ou conforme confi guração),e também armazenar de forma redundante (três nós por default) cada bloco, de forma que o arquivo as tarefas agendadas nesses recursos forem concluídas, elas serão atribuídas aos aplicativos em fi las em execução abaixo da capacidade (a preempção também é suportada). Isso garante que os recursos estão disponíveis de forma previsível e elástica para fi las, evitando assim silos artifi ciais de recursos no cluster que ajuda na utilização. • Multi-tenancy: conjunto abrangente de limites que são fornecidos para impedir que um único aplicativo, usuário e fi la de recursos monopolize a fi la ou o cluster como um todo, garan- tindo que o cluster não fi que sobrecarregado. • Operabilidade: o Confi guração de tempo de execução: as defi nições de fi la e propriedades, como capacidade e ACLs, podem ser alteradas, em tempo de execução, por administradores de for- ma segura para minimizar a interrupção para os usuários. Além disso, um console é fornecido para que os usuários e administradores visualizem a alocação atual de recursos em várias fi las no sistema. Os administradores podem adicionar fi las em tempo de execução, mas as fi las não podem ser excluídas em tempo de execução. o Aplicativos que drenam recursos: os administradores podem interromper fi las em execução para garantir que os aplicativos existentes cheguem à conclusão, sem que nenhum novo aplicativo seja enviado. Se uma fi la estiver no estado parado, novos aplicativos não po- dem ser enviados para ela ou para qualquer uma de suas fi las-fi lho. Aplicativos existentes na fi la continuam executando até a conclusão, portanto, a fi la pode ser drenada graciosamente. Os administradores também podem reiniciar as fi las interrompidas. • Agendamento baseado em recursos: suporte para aplicativos com uso intensivo de recursos, onde um aplicativo pode opcionalmente especifi car recursos mais altos do que o padrão, acomodando assim aplicativos com requisitos de recursos diferentes. Atualmente, a memória é o requisito de recurso suportado. • Mapeamento de fi las com base em usuário ou grupo: esse recurso permite que o usuá- rio direcione um trabalho para uma fi la específi ca com base no usuário ou grupo. • Agendamento prioritário: este recurso permite que os aplicativos sejam enviados e agen- dados com prioridades diferentes. Valor inteiro maior indica prioridade maior para um aplicati- vo. Atualmente, a prioridade do aplicativo é suportada apenas para a política de ordenação FIFO. INFRAESTRUTURA DE DATA SCIENCE E CLOUD COMPUTING 52 Infraestrutura de Data Science e Cloud Computing - Unidade2.indd 52 12/06/19 15:06 também esteja protegido. Por exemplo, um arquivo de 300 MB é dividido em três blocos: dois com 128 MB (A e B) e um com 44 MB (C), somente o último arquivo fica com tamanho menor que 128 MB para economia de espaço em disco, e cada bloco será gravado em DataNodes di- ferentes. À primeira vista pode parecer mais lento, contudo, como cada bloco será distribuído por mais que um nó, eles podem ser armazenados em paralelo, isto é, a somatória do tempo para quebrar o arquivo em blocos (não muito custoso), o tempo de se armazenar um bloco de 128 MB (todos ao mesmo tempo), o tempo de checagem final. O que gera um desempenho muito mais rápido para arquivos maiores. Figura 5. Blocos de Dados do HDFS. São usados pipelines para gravação, uma espécie de negociação para garantir que os dados a serem gravados passem por um “túnel” virtual entre os DataNodes. As vantagens para a leitura tam- bém são maiores, pois podem ser paralelizadas, reduzindo o tempo de transferência (transfer time). EXEMPLIFICANDO Podemos comparar esse mapeamento em metadados no NameNode com a seguinte situação: um professor que conta quantas palavras há em um livro. Ele pode dividir, en- tre os alunos, os capítulos do livro e pedir para que cada um conte a palavra escolhida. Ele, então, compila os resultados e sabe a quantidade de vezes que a palavra aparece no livro muito mais rápido do que se fosse fazer sozinho. Ele ainda poderia colocar mais alunos por capítulo, para ter uma redundância de leitura e ter a certeza do resultado, caso algum aluno falte na próxima aula ou tenha sido desatento. O que o MapReduce faz é justamente o que esse professor fez, mas de uma forma muito mais eficiente no que diz respeito a grandes volumes de dados. Arquivo 3.000 MB Preparação NameNode DataNode 1 DataNode 2 DataNode 3 DataNode 4 A 128 MB B 128 MB B 128 MB C 44 MB C 44 MB A 128 MB A 128 MB C 44 MB Gravação paralela A 128 MB B 128 MB C 44 MB Em caso de falha, as réplicas são usadas. INFRAESTRUTURA DE DATA SCIENCE E CLOUD COMPUTING 53 Infraestrutura de Data Science e Cloud Computing - Unidade2.indd 53 12/06/19 15:06 Arquitetura Hadoop A arquitetura do Hadoop é baseada em clusters de serviços desenvolvidos em Java, com as camadas de gestão de arquivos (HDFS), de gestão de processos (YARN), de gestão de infraestrutura (Zookeeper e Ambari), de Metadados (HCatalog), de integração interna (Pig, Hive), de análise (Mahout) e computação distribuída (MapReduce). O Quadro 1 mostra, para melhor entendimento, essa arquitetura. QUADRO 1. HADOOP Cluster Hadoop O cluster do Hadoop é uma instalação em que vários servidores são conectados e agem como se fossem um só, permitindo redundância e desempenho. Existem três tipos de instalação do Hadoop: • Standalone Mode (ou instalação local): não há processos em background (daemon), com todos os processos rodando em uma JVM ( Java Virtual Machine). Esta confi guração é indicada para rodar programas MapReduce durante o desenvolvimento ou aprendizado. • Pseudo Distributed Mode: todos os processos em background (daemon) rodam na mes- Hadoop Aquisição Aquisição Gestão Gestão Acesso Inteligência Computação distribuída e gestão de recursos YARN Hbase Spark Kafka Impala Interno / Batch Pig Hive Spark Metadados HCatalog Flume Kafka Ambari Zookeeper Scoop MahoutSpark Computação distribuída MapReduce HDFS Sistema de arquivos distribuído Sistema operacional Java VM Acesso externo INFRAESTRUTURA DE DATA SCIENCE E CLOUD COMPUTING 54 Infraestrutura de Data Science e Cloud Computing - Unidade2.indd 54 12/06/19 15:06 ma máquina local, mas com independência. Pode ser usado como um ambiente intermediário entre desenvolvimento ou homologação, mas não é indicado para produção. • Multi-Node Cluster Mode: todos os serviços rodam em clusters de servidores. CORE SWITCH SWITCH RACK 1 RACK 2 RACK 3 NameNode SlaveNodes SlaveNodes Secondary NameNode SlaveNodes SlaveNodes SlaveNodes SlaveNodes SlaveNodes SWITCH SWITCH Figura 6. Cluster do Hadoop. Processamento MapReduce O MapReduce é um modelo de programação desenhado para manipular dados de ma- neira paralela, isto é, executando várias tarefas ao mesmo tempo, dividindo o trabalho de uma forma coerente e independente. CURIOSIDADE O MapReduce consegue levar o processamento para o mais próximo possível de onde os dados se encontram, uma premissa muito importante para o Big Data: é mais barato mover o processamento do que os dados. Como já vimos que os componentes são em Java, a portabilidade do código não se torna problema neste caso, ajudando na escalabilidade. A combinação das capacidades de distribui- ção de armazenamento e processamento entre o HDFS e o MapReduce é o que faz o Hadoop INFRAESTRUTURA DE DATA SCIENCE E CLOUD COMPUTING 55 Infraestrutura de Data Science e Cloud Computing - Unidade2.indd 55 12/06/19 15:06 ser o que é hoje: a espinha dorsal do Big Data. Um processo de contagem de palavras usando o MapReduce é parecido com o esquema da Figura 7, lembrando que pode parecer mais traba- lhoso para um exemplo simples ou arquivos pequenos, mas quando extrapolamos o volume de dados para terabytes, este processo se torna muito mais efi ciente. Quem sabia que o sabiá sabia assobiar O sabiá sabia assobiar Entrada Splitting Mapping Shuffl ing Reducing Resultadofi nal O,1 sabiá,1 sabia,1 assobiar,1 O (1,1) O (2) sabiá (1,1) sabiá (2) assobiar (1,1) assobiar (2) sabia (1,1,1) sabia (3) Quem (1) Quem (1) que (1) que (1) Quem,1 sabia,1 que,1 o,1 sabiá,1 sabia,1 assobiar,1 O sabiá sabia assobiar Quem sabia que o sabiá sabia assobiar ? O,1 sabiá,2 sabia,3 assobiar,2 Quem,1 que,1 Figura 7. Processo de contagem de palavra do MapReduce. Cache distribuído e segurança O gerenciamento de cache centralizado no HDFS é um mecanismo de cache explícito que permite aos usuários especifi car caminhos (paths) a serem armazenados em cache pelo HDFS. O NameNode se comunicará com DataNodes que têm os blocos desejados no disco e infor- ma-os a armazenar em cache os blocos no caches fora da heap (off -heap). O gerenciamento de cache centralizado no HDFS tem muitas vantagens signifi cativas: • A fi xação explícita (pinning) impede que os dados usados com frequência sejam removidos da memória. Isso é particularmente importante quando o tamanho do conjunto de trabalho excede o tamanho da memória principal, o que é comum para muitas cargas HDFS. • Como os caches DataNode são gerenciados pelo NameNode, os aplicativos podem consultar os locais de cache com bloqueio para tomar decisões de posicionamento de tarefas. A localização conjunta de uma tarefa com uma réplica de bloco em cache melhora o desempenho de leitura. • Quando o bloco foi armazenado em cache por um DataNode, os clientes podem usar uma nova API de leitura de cópia zero, mais efi ciente. Uma vez que a verifi cação de checksum de dados armazenados em cache é feita uma vez pelo DataNode, os clientes podem reduzir a sobrecarga ao usar essa nova API. INFRAESTRUTURA DE DATA SCIENCE E CLOUD COMPUTING 56 Infraestrutura de Data Science e Cloud Computing - Unidade2.indd 56 12/06/19 15:06 • O cache centralizado pode melhorar a utilização geral da memória do cluster. Ao de- pender do cache de buffer do sistema operacional em cada DataNode, leituras repetidas de um bloco resultarão em todas as réplicas n do bloco que está sendo puxado para o cache de buffer. Com o gerenciamento de cache centralizado, um usuário pode fixar ex- plicitamente apenas um número m das réplicas n economizando a memória da diferença entre n - m. O gerenciamento centralizado de cache é útil para arquivos que são acessados re- petidamente. Por exemplo, uma pequena tabela de fatos no Hive – que é frequentemente usada para junções – é um bom candidato para armazenamento em cache. Por outro lado, armazenar em cache a entrada de uma consulta de relatório anual é provavelmente me- nos útil, uma vez que os dados históricos podem ser lidos uma vez só. O gerenciamento centralizado de cache também é útil para cargas de trabalho mistas com SLAs de desem- penho. Armazenar em cache um conjunto de trabalho, de uma workload de alta prioridade, assegura que ele não vai concorrer com a E/S de disco com uma carga de trabalho de baixa prioridade. A configuração de caches se dá no nível de arquivos ou pastas, não de blocos. NameNodes e DataNodes se comunicam através de heartbeats periódicos; os Name- Nodes verificam a necessidade de cache conforme os namespaces, gerencia as localida- des dos caches nos DataNodes, criando cache pools. Os pools de cache são uma entidade administrativa usada para gerenciar grupos de diretivas de cache. Eles têm permissões semelhantes às do UNIX, que restringem quais usuários e grupos têm acesso ao pool. As permissões de gravação permitem que os usuá- rios adicionem e removam diretivas de cache ao pool. Permissões de leitura permitem aos usuários listar as diretivas de cache em um pool, bem como metadados adicionais. As permissões de execução não são utilizadas. Pools de cache também são usados para gerenciamento de recursos. Pools podem impor um limite máximo, que restringe o nú- mero de bytes que podem ser armazenados em cache em agregação por diretivas no pool. Normalmente, a soma dos limites do pool será aproximadamente igual à quantidade de memória agregada reservada para o cache do HDFS no cluster. Os pools de cache também rastreiam várias estatísticas para ajudar os usuários de cluster a determinar o que deve ser armazenado em cache. Os pools também podem ter um tempo máximo de vida. Isso restringe o tempo máximo de expiração das direti- vas que estão sendo adicionadas ao pool. INFRAESTRUTURA DE DATA SCIENCE E CLOUD COMPUTING 57 Infraestrutura de Data Science e Cloud Computing - Unidade2.indd 57 12/06/19 15:06 Segurança O sistema de arquivos distribuído Hadoop (HDFS) implementa um modelo de permissões para arquivos e diretórios que compartilha grande parte do modelo POSIX. Cada arquivo e dire- tório está associado a um proprietário e a um grupo. O arquivo ou o diretório tem permissões separadas entre as que são do usuário proprietário e os outros usuários que são membros do grupo e ainda para todos os outros usuários. Para arquivos, a permissão “r” (read, “ler”, “leitura”) é necessária para ler o arquivo; a permissão “w” (write, “escrever”, “escrita”) é necessária para gravar ou acrescentar ao arquivo. Para diretórios, a permissão “r” é necessária para listar o con- teúdo do diretório, a permissão “w” é necessária para criar ou excluir arquivos ou diretórios, e a permissão “x” (execute, “executar”) é necessária para acessar uma pasta-fi lha do diretório. Em contraste com o modelo POSIX, não há nenhum bit “setuid” (set user id) ou “setgid” (set group id) para arquivos, pois não existe nenhuma necessidade de arquivos executáveis. Para diretórios, não há nenhum diretório com os bits setuid ou setgid com o objetivo simplifi cação. O sticky bit (bit de owner) pode ser ajustado em diretórios, impedindo que qualquer um, exceto o superusuário, o proprietário do diretório ou o proprietário do arquivo, de suprimir ou de mover os arquivos dentro do diretório. Defi nir o sticky bit para um arquivo não tem efeito. Coletivamente, as permissões de acesso de um arquivo ou diretório dentro do HDFS são controladas pelos mesmos “modos” do Linux ou Unix. São fl ags binários que identifi cam o tipo de acesso permitido por usuário, grupo ou usuário root (administrador). Em geral, os formatos UNIX para representar e exibir modos serão usados, incluindo o uso de números octais nesta descrição. Quando um arquivo ou um diretório é criado, seu proprietário é a identidade do usuário do processo do cliente e seu grupo é o grupo do diretório-pai (a regra BSD). O HDFS também fornece suporte opcional para POSIX ACLs (listas de controle de aces- so) para aumentar as permissões de arquivo, com regras mais refi nadas para usuários nomeados específi cos ou grupos nomeados. Cada processo de cliente que acessa o HDFS tem uma identidade de duas partes composta pelo nome de usuário e lista de grupos. Situações em que o HDFS deve fazer uma verifi cação de permissões para um arquivo ou diretório foo acessado por um processo de cliente: • Se o nome de usuário corresponder ao proprietário do foo, as permissões do proprietário serão testadas; • Caso contrário, se o grupo de foo corresponder a qualquer um dos membros da lista de grupos, as permissões de grupo serão testadas; • Caso contrário, as outras permissões de foo são testadas. Se uma verifi cação de permissões falhar, a operação do cliente falhará. INFRAESTRUTURA DE DATA SCIENCE E CLOUD COMPUTING 58 Infraestrutura de Data Science e Cloud Computing - Unidade2.indd 58 12/06/19 15:06 Identidade do usuário A partir do Hadoop 0.22, ele oferece suporte a dois modos de operação diferentes para deter- minar a identidade do usuário, especifi cada pela propriedade hadoop.security.authentication: • Simples: neste modo de operação, a identidade de um processo de cliente é determinada pelo sistema operacional do host. Em sistemas Unix-like, o nome de usuário é o equivalente a “whoami”; • Kerberos: neste tipo de operação, a identidade de um processo de clienteé determinada por suas credenciais de Kerberos. Por exemplo, em um ambiente com Kerberos, um usuário pode usar o utilitário kinit para obter um tíquete de concessão de permissão Kerberos (TGT) e usar klist para determinar seu principal atual. Ao mapear uma entidade Kerberos para um nome de usuário do HDFS, todos os componentes, exceto os primários, são descartados. Por exemplo, um principal Todd/foobar@CORP.COMPANY.COM atuará como o simples nome de usuário Todd no HDFS. Independentemente do modo de operação, o mecanismo de identidade do usuário é ex- trínseco para o próprio HDFS. Não há nenhuma provisão no HDFS para criar identidades de usuário, estabelecer grupos ou processar credenciais de usuário. Figura 8. Captura de tela do ecossistema do Hadoop. Ecossistema Hadoop O ecossistema do Hadoop é uma plataforma integrada, um framework, no qual podemos resolver os principais problemas do Big Data. Com esse ecossistema, é possível implementar um grande número de serviços, controlando o ciclo de vida das aplicações mais avançadas. Tal ecossistema possui ferramentas para a aquisição ou ingestão de dados, armazenamento, trans- formação, análise, manutenção e disponibilização de enormes quantidades de dados. INFRAESTRUTURA DE DATA SCIENCE E CLOUD COMPUTING 59 Infraestrutura de Data Science e Cloud Computing - Unidade2.indd 59 12/06/19 15:06 Flume O Flume é um serviço distribuído, confiável e disponível para coletar, agregar e mover gran- des quantidades de dados de log eficientemente. Ele tem uma arquitetura simples e flexível baseada em fluxos de dados de streaming. É robusto e tolerante a falhas com mecanismos de confiabilidade ajustáveis e muitos mecanismos de recuperação de falhas. Sqoop O Sqoop é uma ferramenta projetada para transferir dados entre o Hadoop e os ban- cos relacionais ou mainframes. Podemos usar o Sqoop para importar dados de um RDBMS (Sistema de Gerenciamento de Banco de Dados Relacional), como MySQL ou Oracle, ou um mainframe para o sistema de arquivo distribuído Hadoop (HDFS), transformar os dados no Hadoop MapReduce e, em seguida, exportar os dados de volta para um RDBMS. MapReduce O Hadoop MapReduce é uma estrutura de software para escrever facilmente aplicações que pro- cessam vastas quantidades de dados (conjuntos de dados de vários terabytes) em paralelo em gran- des clusters (milhares de nós) de hardware mais comuns, de forma confiável e tolerante a falhas. Zookeeper O ZooKeeper é um serviço centralizado para manter informações de configuração, nomear, fornecer sincronização distribuída e serviços de grupo. Todos esses tipos de serviços são usados de alguma forma ou de outra por aplicativos distribuídos. Cada vez que eles são implementados, há muitas tarefas que são necessárias para corrigir os bugs e condições de execução, as vezes ine- vitáveis. Por serem de implementação mais complexa, as aplicações geralmente econo- mizam no seu desenvolvimento, o que os torna frágeis na presença de mudança e de difícil gestão. Mesmo quando feito corretamente, diferentes implementações desses servi- ços levam à complexidade de gerenciamento, após a implantação dos aplicativos. Oozie O Oozie é um aplicativo web em Java usado para agendar trabalhos do Apache Hadoop. Ele combina vários trabalhos em MapReduce ou Pig sequencialmente em um fluxo (workflow), criando uma unidade lógica de trabalho. Essa unidade lógica é executada em um servlet-container Java. INFRAESTRUTURA DE DATA SCIENCE E CLOUD COMPUTING 60 Infraestrutura de Data Science e Cloud Computing - Unidade2.indd 60 12/06/19 15:07 Para os propósitos do Oozie, um fluxo de trabalho é uma coleção de ações (MapReduce ou Pig) organizadas em uma dependência de controle DAG (Directed Acyclic Graph). A dependência entre ações significa que a segunda ação não pode ser executada até que a primeira ação seja concluída. As definições de fluxos de trabalho do Oozie são escritas em hPDL (uma linguagem de defini- ção de processo XML semelhante ao JBOSS JBPM jPDL). O Oozie inicia as ações de fluxo de trabalho em sistemas remotos. Após a conclusão da ação, o sistema retorno chama o Oozie para notificar a conclusão da ação. Nesse momento, Oozie prossegue para a próxima ação no fluxo de trabalho. O Oozie usa um SecurityManager personalizado dentro do seu lançador para capturar cha- madas exit(), capturando o código de saída definido pelo usuário. O workflow do Oozie contém nós de fluxo de controle e nós de ação. Os nós de fluxo de controle definem o início e o fim de um fluxo de trabalho (nós de início, término e falha) e fornecem um mecanismo para controlar o caminho de execução do fluxo de trabalho (decisão, bifurcação e nós de junção). Os nós de ação são o mecanismo pelo qual um fluxo de trabalho aciona a execução de uma tarefa de computação/processamento. O Oozie fornece suporte para diferentes tipos de ações: MapReduce, sistema de arquivos Hadoop, Pig, SSH, HTTP, eMail e subfluxo de trabalho do Oozie, que pode ser estendido para suportar o tipo adicional de ações. Os fluxos de trabalho do Oozie podem ser parametrizados – usando variáveis, como $ {inputDir}, dentro da definição do workflow. Ao enviar uma tarefa de fluxo de trabalho, valores para os parâme- tros devem ser fornecidos. Se corretamente parametrizada (ou seja, usando diferentes diretórios de saída), vários trabalhos de fluxo de trabalho idênticos podem ser executados simultaneamente. Ambari O Apache Ambari é uma ferramenta para provisionamento, gerenciamento e monitoramento de clusters do Apache Hadoop. O Ambari consiste em um conjunto de APIs RESTful e uma interface de gerenciamento baseada em navegador. O Ambari permite aos administradores de sistema os seguintes serviços: • Provisionar um cluster do Hadoop: o Ambari fornece um assistente passo a passo, fácil de usar, para instalar os serviços do Hadoop em qualquer número de hosts. O Ambari lida com a confi- guração dos serviços do Hadoop para o cluster. • Gerenciar um cluster do Hadoop: o Ambari fornece gerenciamento central para iniciar, inter- romper e reconfigurar os serviços do Hadoop em todo o cluster. • Monitorar um cluster do Hadoop: o Ambari fornece um painel para monitorar a integridade e o status do cluster do Hadoop. O Ambari enviará e-mails quando houver necessidade de atenção, como por exemplo, um nó cai, ou espaço em disco restante é baixo etc. INFRAESTRUTURA DE DATA SCIENCE E CLOUD COMPUTING 61 Infraestrutura de Data Science e Cloud Computing - Unidade2.indd 61 12/06/19 15:07 Figura 9. Captura de tela do Ambari. Apache Kafka É uma plataforma versátil de armazenamento e também de streaming com três princi- pais recursos: • Permite a publicação e a assinatura de fluxos de registros, semelhante a uma fila de men- sagens ou a um sistema de mensagens corporativo; • Armazena fluxos de registros em uma maneira durável e tolerante a falhas; • Processa fluxos de registros à medida que ocorrem. Storm Apache Storm é um sistema de computação em tempo real distribuído. Ele facilita o proces- so de fluxos de dados não limitados (streaming) de maneira confiável, fazendo para processa- mento em tempo real o que o Hadoop fez para processamento em lote (batch). Ele é simples e pode ser usado com qualquer linguagem de programação. O Storm tem muitos casos de uso: análise em tempo real, aprendizado de máquina on-line, computação contínua, RPC (Remote Procedure Call) distribuído, ETL, etc. Ele é rápido: seu parâ- metro de velocidade é um benchmark que foi cronometrado com um processamento de mais de um milhão de tuplas (linhas de dados) processadas por segundo, em cada nó de servidores em cluster. É escalável e tolerante a falhas, garante que os dados sejam processados e possui facilidade de configuração e operação. INFRAESTRUTURA DE DATA SCIENCE E CLOUD COMPUTING 62 Infraestrutura de Data Science e Cloud Computing - Unidade2.indd 62 12/06/19 15:07O Storm se integra a tecnologias de queueing (enfileiramento) e de banco de dados que você já usa. Uma topologia Storm consome fluxos de dados e processa esses fluxos de maneiras arbitrariamente complexas, particionando os fluxos entre cada estágio da computação que se possa necessitar. Solr O Solr é uma plataforma de busca corporativa de código aberto, construído sobre Apache Lucene. É altamente confiável, escalável e tolerante a falhas, fornecendo indexação distribuída, replicação e consultas com balanceamento de carga, failover e recuperação automatizados e possui configuração centralizada. É utilizada por recursos de pesquisa e navegação dos maiores sites do mundo. O Solr é um servidor autônomo de pesquisa corporativa com uma API REST. Colocam-se os documentos nele – chamado de indexação – via JSON, XML, CSV ou binário sobre HTTP. As con- sultas podem ser feitas via HTTP GET e receber JSON, XML, CSV ou resultados binários. Suas principais características são: • Recursos avançados de pesquisa de texto completo: empoderado por Lucene, o Solr permite capacidades de pesquisa avançadas, incluindo frases, curingas, junções e agrupamen- to em qualquer tipo de dados. • Interfaces de administração abrangentes: o Solr é fornecido com uma interface de usuário administrativa integrada e responsiva para facilitar o controle de suas instâncias. • Indexação quase em tempo real: o Solr aproveita os recursos de indexação em tempo real do Lucene para garantir que seja visto o conteúdo muito rapidamente. • Desempenho para tráfego de alto volume: o Solr é provado por empresas que possuem largas escalas de conteúdos em todo o mundo. Figura 10. Tela do Apache Storm. INFRAESTRUTURA DE DATA SCIENCE E CLOUD COMPUTING 63 Infraestrutura de Data Science e Cloud Computing - Unidade2.indd 63 12/06/19 15:07 • Padrões de interfaces abertas baseadas em XML, JSON e HTTP: o Solr usa as ferramen- tas mais avançadas para a criação de interfaces de usuário. • Altamente escalável e tolerante a falhas: construído sobre o Apache Zookeeper testado em ambientes de alto desempenho, o Solr facilita a expansão para horizontal e vertical. Ele possui replicação, distribuição, (re)balanceamento e tolerância a falhas. • Arquitetura capaz de se expandir: o Solr publica muitos pontos de extensão bem defini- dos que facilitam a conexão de plugins de indexação e de consulta. E ainda sendo uma ferra- menta de código aberto, é possível alterar qualquer parte do sistema. Figura 11. Captura de tela do Solr. Lucene O Apache Lucene fornece uma biblioteca de tecnologia de indexação e pesquisa baseada em Java, bem como verificação ortográfica, realce de ocorrências e recursos avançados de análise/tokenização. Spark O Apache Spark é um sistema de computação de cluster rápido e de uso geral. Ele fornece APIs de alto nível em Java, Scala, Python e R e um mecanismo otimizado que oferece suporte a gráficos de execução geral. Ele também suporta um rico conjunto de ferramentas de nível INFRAESTRUTURA DE DATA SCIENCE E CLOUD COMPUTING 64 Infraestrutura de Data Science e Cloud Computing - Unidade2.indd 64 12/06/19 15:07 Figura 12. Captura de tela do Spark. Pig Apache Pig é uma plataforma para a análise de grandes conjuntos de dados que consistem em uma linguagem de alto nível, para expressar programas de análise de dados, juntamente com a infraestrutura para avaliar esses programas. A propriedade mais importante dos pro- gramas em Pig é que sua estrutura é favorável ao processamento paralelização, que, por sua vez, permite que eles manipulem conjuntos de dados muito grandes. No momento, a camada de infraestrutura do Pig consiste em um compilador que produz sequências de programas MapReduce, para os quais já existem implementações paralelas de grande escala (por exemplo, o subprojeto Hadoop). A camada de linguagem do Pig consiste atualmente em uma linguagem textual chamada Pig Latin, que tem as seguintes propriedades-chave: • Facilidade de programação. É trivial para alcançar a execução paralela de simples tarefas de análise de dados de paralelismo complexo. Tarefas complexas, compostas de várias transformações de dados inter-relacionados, são explicitamente codificadas como sequências de fluxo de dados, tornando-as fáceis de escrever, entender e manter. • Oportunidades de otimização. A forma como as tarefas são codificadas permite que o sistema otimize sua execução automaticamente, permitindo que o usuário se concentre na semântica em vez de se concentrar na eficiência. superior, incluindo o Spark SQL para SQL e processamento de dados estruturados, MLlib para aprendizado de máquina, GraphX para processamento de gráfico e Spark streaming. O Spark usa as bibliotecas de cliente do Hadoop para HDFS e YARN. INFRAESTRUTURA DE DATA SCIENCE E CLOUD COMPUTING 65 Infraestrutura de Data Science e Cloud Computing - Unidade2.indd 65 12/06/19 15:07 • Extensibilidade. Os usuários podem criar suas próprias funções para fazer o processa- mento de propósito especial. Hive A linguagem do Apache Hive facilita a lei- tura, a escrita e o gerenciamento de grandes datasets que residem em armazenamento distribuído e a consulta usando a sintaxe SQL. Construído em cima do Apache Hadoop, o Hive fornece os seguintes recursos: • Ferramentas para permitir o acesso fá- cil aos dados via SQL, permitindo, em conse- quência, tarefas de armazenamento de da- dos, como extração/transformação/carga (ETL), relatórios e análise de dados; • Um mecanismo para impor estrutura em uma variedade de formatos de dados; • Acesso a arquivos armazenados diretamente no Apache HDFS ou em outros sistemas de armazenamento de dados, como o Apache HBase; • Execução de consultas via Apache Tez, Apache Spark ou MapReduce; • Linguagem processual com HPL-SQL • Recuperação em menos de segundos via consulta Hive LLAP, Apache YARN e Apache Slider. Drill Consulta vários datastores não relacionais. Com o Drill, é possível suportar uma variedade de bancos de dados e sistemas de arquivos NoSQL, incluindo HBase, MongoDB, MapR-DB, HDFS, MapR-FS, Amazon S3, armazenamento de BLOBs do Azure, Google Cloud Storage, Swift, NAS e arquivos locais. Uma única consulta pode unir dados de vários datastores. Por exemplo, é possível unir em uma coleção armazenada em MongoDB com um diretório de logs de even- tos no Hadoop. O otimizador com reconhecimento de datastore da Drill reestrutura automaticamente um plano de consulta para aproveitar os recursos de processamento internos do datas- tore. Além disso, o Drill oferece suporte à localidade de dados, portanto, é uma boa solu- ção instalar o Drill e o datastore nos mesmos nós. Os mecanismos de consulta tradicionais exigem uma intervenção de especialistas em TI antes que os dados possam ser consultados. O Drill libera essa sobrecarga para que os usuários possam apenas consultar os dados brutos como estão. Não é necessário carregar os dados, criar e manter esquemas ou transformá-los antes que ele possa ser processado. Em vez disso, basta incluir o caminho para um diretório do Hadoop, a coleção MongoDB ou o Bucket do S3 na consulta SQL. INFRAESTRUTURA DE DATA SCIENCE E CLOUD COMPUTING 66 Infraestrutura de Data Science e Cloud Computing - Unidade2.indd 66 12/06/19 15:08 O Drill aproveita as técnicas avançadas de compilação e recompilação de consultas para maximizar o desempenho sem exigir conhecimento inicial do esquema. SELECT * FROM dfs.root.̀ /web/logs̀ ; SELECT country, count(*) FROM mongodb.web.users GROUP BY country; SELECT timestamp FROM s3.root.̀ clicks.jsoǹ WHERE user_id = ‘jdoe’; Trate os dados como uma tabela mesmo quando não o são. O Drill apresenta um modelo de dados JSON que permite consultas em dados complexos ou aninhados, bem como estrutu- ras em rápida evolução usadas em aplicativos modernos e datastores não relacionais. O Drill também fornece extensões intuitivas para SQL paraconsultar facilmente dados complexos. Drill é o único mecanismo de consulta colunar que oferece suporte a dados complexos. Ele pos- sui uma representação colunada em memória fragmentada para dados complexos que permite que Drill atinja a velocidade colunar com a flexibilidade de um modelo de documento JSON interno. O Drill suporta SQL padrão. Usuários corporativos, analistas e cientistas de dados podem usar ferramentas padrão de BI/Analytics, como Tableau, Qlik, MicroStrategy, Spotfire, SAS e Excel, para interagir com datastores não relacionais, aproveitando os drivers JDBC e ODBC do Drill. Os desenvolvedores podem aproveitar a API REST simples do Drill em seus aplicativos personalizados para criar visualizações bonitas. Os conjuntos de dados virtuais da Drill permitem que até mesmo os mais complexos e não relacionais sejam mapeados em estruturas amigáveis ao BI, que os usuários podem explorar e visualizar usando sua ferramenta escolhida. A escalabilidade do Drill vai desde um laptop até 1.000 servidores. Ele pode ser executado em Mac, Windows e Linux e, dentro de um minuto ou dois, você estará explorando seus da- dos. Quando estiver tudo pronto para utilizar, o Drill pode ser implantado em um cluster de servidores comuns e o mecanismo de execução mais escalável e de alto desempenho estará à disposição da aplicação. A arquitetura simétrica do Drill (todos os servidores nós são iguais) e a instalação simples facilita a implantação e o funcionamento de clusters muito grandes. Drill combina flexibilidade e velocidade. Para conseguir isso, o Drill apresenta uma arquite- tura radicalmente diferente que permite o desempenho de quebra de registro sem sacrificar a flexibilidade oferecida pelo modelo de documento JSON. O projeto do Drill inclui: • Mecanismo de execução colunar (o primeiro a oferecer suporte a dados complexos). • Compilação e recompilação orientadas por dados em tempo de execução. INFRAESTRUTURA DE DATA SCIENCE E CLOUD COMPUTING 67 Infraestrutura de Data Science e Cloud Computing - Unidade2.indd 67 12/06/19 15:08 Figura 13. Captura de tela do Drill. HBase O HBase não é adequado para todos os problemas. Primeiro, é necessário certificar-se do volume de dados suficiente. Se a solução precisa gerenciar centenas de milhões ou bilhões de linhas, então HBase é um bom candidato. Se forem apenas alguns milhares/milhões de linhas, então é melhor usar um RDBMS tradicional, devido ao fato de que todos os dados podem ocupar apenas um único nó (ou dois) e o resto do cluster pode estar ocioso. Segundo, certifique-se de que haverá a possibilidade de não haver todos os recursos extras que um RDBMS fornece (por exemplo, colunas com tipos de dados especiais, índi- ces secundários, transações, linguagens de consulta avançadas etc.). Um aplicativo criado com base em um RDBMS não pode ser portado para o HBase simplesmente alterando um • Gerenciamento especializado que reduz a necessidade de memória e elimina o garbage collection (mecanismos de liberação de memória). • Execução com reconhecimento de localidade que reduz o tráfego de rede quando o Drill é instalado no mesmo datastore. • Otimizador avançado baseado em custo que envia o processamento para o datastore quando possível. INFRAESTRUTURA DE DATA SCIENCE E CLOUD COMPUTING 68 Infraestrutura de Data Science e Cloud Computing - Unidade2.indd 68 12/06/19 15:08 driver JDBC, por exemplo. Considere a mudança de um RDBMS para HBase como uma re- formulação completa em contraposição a uma simples estratégia de portar conectividade. Terceiro, certifique-se de ter hardware sufi- ciente. Mesmo o HDFS não desempenha bem com menos de cinco DataNodes (devido a coi- sas como a replicação de bloco do HDFS que tem como padrão de três nós), além de um NameNode. O HBase pode funcionar muito bem em um laptop, mas isso deve ser considerado uma configuração de desenvolvimento apenas. O uso do Apache HBase é indicado quan- do precisamos de acesso de leitura/gravação em tempo real ao Big Data. O objetivo dele é a hospedagem de tabelas muito grandes – bilhões de linhas x milhões de colunas – em cima de clusters de hardware comuns. O Apache HBase é um banco de dados de código aberto, distribuído, com versionamento e não relacional, modelado após o BigTable do Google: um sistema de armazenamento distri- buído para dados estruturados. Assim como o BigTable aproveita o armazenamento de dados distribuído fornecido pelo sistema de arquivos do Google, o Apache HBase oferece recursos como BigTable em cima do Hadoop e do HDFS. Algumas características dele: • Escalabilidade linear e modular; • Leituras e gravações estritamente consistentes; • Fragmentação automática e configurável de tabelas; • Suporte a failover automático entre RegionServers; • Classes base convenientes para fazer backup de trabalhos do Hadoop MapReduce com tabelas Apache HBase; • API Java fácil de usar para acesso de cliente; • Cache de blocos e filtros Bloom para consultas em tempo real; • Filtros de consulta são enviados para servidores escravos por intermédio de Server side filters; • Gateway de thrift e um serviço da Web REST-ful que oferece suporte a XML, Protobuf e opções de codificação de dados binários; • Shell com base em JRuby extensível ( JIRB); • Suporte para exportar métricas através do subsistema de métricas do Hadoop para arqui- vos ou Ganglia; ou via JMX. INFRAESTRUTURA DE DATA SCIENCE E CLOUD COMPUTING 69 Infraestrutura de Data Science e Cloud Computing - Unidade2.indd 69 12/06/19 15:08 Mahout Apache Mahout (TM) é uma biblioteca de álgebra linear com capacidade de computação distribuí- da projetada para permitir que matemáticos, estatísticos e cientistas de dados implementem rapi- damente seus próprios algoritmos. Possui ferramentas de machine learning para recomendação (de produtos, por exemplo), classifi cação e clustering. Suporte para vários backends distribuídos (incluin- do o Apache Spark) e possui solvers nativos modulares para aceleração de CPU/GPU/CUDA. Spark MLlib O Spark MLlib é uma biblioteca de machine learning oferecida pelo Spark. Ela possui facilidade de uso e pode ser integrada às linguagens Java, Scala, Python e R. A MLlib está embutida nas APIs do Spark e interage com o NumPy em Python (a partir da ver- são 0.9) e bibliotecas R (a partir da versão 1,5). Interage com qualquer fonte de dados do Hadoop (por exemplo, HDFS, HBase ou arquivos locais), facilitando a conexão em fl uxos de trabalho do Hadoop. Os seus algoritmos de alta qualidade são até 100 vezes mais rápidos que o MapReduce. O Spark se destaca na computação interativa, permitindo que o MLlib rode rápido. Ao mes- mo tempo, preocupa-se com o desempenho algorítmico: MLlib contém algoritmos de alta qua- lidade que aproveitam a iteração e podem produzir melhores resultados do que as aproxima- ções on-pass usadas no MapReduce. O Spark é executado em Hadoop, Apache Mesos, Kubernetes, autônomo ou em cloud e ou- tras diversas fontes de dados. Ainda pode ser usado em modo de cluster autônomo, no EC2, no Hadoop YARN, no Mesos ou no Kubernetes. Acessando dados em HDFS, Apache Cassandra, Apache HBase, Apache Hive e centenas de outras fontes de dados. Figura 14. Captura de tela de Confi guração do HBase. INFRAESTRUTURA DE DATA SCIENCE E CLOUD COMPUTING 70 Infraestrutura de Data Science e Cloud Computing - Unidade2.indd 70 12/06/19 15:08 MLlib contém muitos algoritmos e utilitários. Os algoritmos de ML incluem: • Classificação: regressão logística, naive Bayes etc.; • Regressão: regressão linear generalizada, regressão de sobrevivência (survival regression) etc.; • Árvores de decisão (decision trees), florestas aleatórias (random forest) e gradient-booster trees. • Recomendação: mínimos quadrados alternados (ALS); • Clustering: K-means, misturas gaussianas (GMMs) etc.; • Modelagem de tópicos: alocação de Dirichlet latente (LDA); • Conjuntosde itens frequentes, regras de associação e mineração de padrão sequencial. Os utilitários de fluxo de trabalho ML incluem: • Transformações de recursos: padronização, normalização, hashing; • Construção de pipeline de ML; • Avaliação do modelo e ajuste do Hyper-parâmetro; • Persistência de ML: salvando e carregando modelos e pipelines. Outros utilitários incluem: • Álgebra linear distribuída: SVD, PCA etc. • Estatísticas: estatísticas resumidas, testes de hipóteses etc. MLlib é desenvolvido como parte do projeto Apache Spark. Ele é, portanto, testado e atualizado a cada lançamento do Spark. É um projeto da Apache que continua a ter um rápido crescimento. INFRAESTRUTURA DE DATA SCIENCE E CLOUD COMPUTING 71 Infraestrutura de Data Science e Cloud Computing - Unidade2.indd 71 12/06/19 15:08 Sintetizando As verdadeiras soluções de Data Science necessitam de dados corretos oriundos das fontes mais confiáveis. Isso incorre em conectar as fontes mais diversas ao processo de Big Data. Um verdadeiro sistema nervoso precisa ser criado para alimentar a criatividade e a necessidade de relacionamentos e o dinamismo que as corporações necessitam. O Hadoop é este framework e também um ecossistema que integra soluções flexíveis, escaláveis e tolerantes a falhas. Por ser modular, facilita sua flexibilidade, por ser flexível, atende a um enorme número de aplicações e se adapta a diferentes tipos de servidores, que podem ser agregados conforme a necessidade das aplicações, maximizando os investimentos em infraestrutura. Graças ao HDFS, o Hadoop consegue gerenciar arquivos imensos, dis- tribuídos em clusters, com alta capacidade de processamento paralelo. O MapReduce oferece uma forma de processar os dados de forma distribuída, simultanea- mente e com confiabilidade. O YARN controla todos os recursos dos clusters, inclusive o MapReduce. O Hadoop implementa a premissa de que é mais fácil e barato mover o processamento do que os dados. Podemos comparar o problema do Big Data à seguinte situação: um cozinheiro abre um restaurante, no centro da cidade. No início ele dá conta de tudo, atendendo até qua- tro pedidos por hora, mas, com o sucesso do restaurante, mais pessoas começam a frequentá-lo, exigindo seis pedidos por hora. Ele se vê necessitado de um outro cozi- nheiro e o contrata, contudo, há um só fogão e uma geladeira. A concorrência entre eles, para acessar os ingredientes e preparar a comida, não está dando mais certo, e agora o restaurante precisa atender 10 pedidos por hora. A solução é contratar ajudantes de cozinha, que preparam os ingredientes com seus respectivos armários, e os dois cozi- nheiros preparam os pratos em dois fogões, criando uma estrutura funcional. Os armários com os ingredientes nunca se movem, pois guardam o que é mais pesado. As pessoas se tornam especialistas (que representam os pro- cessos) e se movem para levar os itens para a preparação de acordo como pedido dos clientes. Se alguma coisa acontece com um armário, ou o ingrediente de um armário acaba (falha), o ajudante pode buscar em outros armários, ou os outros ajudantes assumem o seu papel, enquanto ele vai ao supermercado (reparo). INFRAESTRUTURA DE DATA SCIENCE E CLOUD COMPUTING 72 Infraestrutura de Data Science e Cloud Computing - Unidade2.indd 72 12/06/19 15:08 Junto com o Hadoop, há soluções de Data Science prontas para o uso em análise de dados, tais como: • O HBase, que é um bando baseado em coluna e noSQL para consultas; • O Hive, que implementa acesso usando SQL; • O Drill, que se conecta com as principais ferramentas de análise de dados, tais como Tableau, Excel etc.; • O Mahout, que é uma biblioteca de álgebra linear e de machine learning e recomendação; • O Spark com a MLlib, que é uma biblioteca de machine learning integrável com mui- tas linguagens tais como: Python, Java, Scala e R. INFRAESTRUTURA DE DATA SCIENCE E CLOUD COMPUTING 73 Infraestrutura de Data Science e Cloud Computing - Unidade2.indd 73 12/06/19 15:08 Referências bibliográficas APACHE HADOOP. Apache Hadoop 2.9.2. Disponível em: <http://hadoop.apache.org/docs/ current/>. Acesso em: 27 mai. 2019. APACHE HADOOP. Welcome to Apache Pig! Disponível em: <http://pig.apache.org/>. Acesso em: 27 mai. 2019. CAVANILLAS, J. M. et al (eds.). New Horizons for a Data-Driven Economy: a Roadmap for Usa- ge and Exploitation of Big Data in Europe. Nova Iorque: Springer Open, p. 39-61, 2016. D-WAVE. Quantum Computing. Disponível em: <https://www.dwavesys.com/quantum-com- puting>. Acesso em: 27 mai. 2019. NEWGENAPPS. What Is Hadoop and How It Changed Data Science? 13 mar. 2018. Disponível em: <https://www.newgenapps.com/blog/what-is-hadoop-and-how-it-changed-data-scien- ce>. Acesso em: 27 mai. 2019. O’REILLY MEDIA. Big Data Now – Current Perspectives from O’Reilly Media. Califórnia: O’Reilly Media, 2012. SQREAM. Dead or Alive and Kicking? Big Data Helps Retail Revive. 11 jul. 2017. Disponível em: <https://sqream.com/dead-or-alive-and-kicking-big-data-helps-retail-revive/>. Acesso em: 27 mai. 2019. INFRAESTRUTURA DE DATA SCIENCE E CLOUD COMPUTING 74 Infraestrutura de Data Science e Cloud Computing - Unidade2.indd 74 12/06/19 15:08
Compartilhar