Escriturário Informática Parte 11 Prof. Márcio Hunecke
Informática FERRAMENTAS DE INGESTÃO DE DADOS (SQOOP 1.4.6, FLUME 1.7.0, NIFI 1.3.0 E KAFKA 0.11.0) Visão geral sobre os quatro componentes Fazem parte do Ecossistema Hadoop. Baseados em Software Livre. Com escalabilidade horizontal (para melhor desempenho, basta adicionar mais computadores). Soluções distribuídas (usam diversos computadores). Trabalham com grande volume de dados. Sqoop Sqoop é um aplicativo de interface de linha de comando para a transferência de dados entre bancos relacionais e Hadoop. Sqoop oferece suporte a cargas incrementais de uma única tabela ou uma consulta SQL (parte de uma tabela), bem como trabalhos salvos que podem ser executados várias vezes para importar atualizações feitas em um banco de dados desde a última importação. As importações também podem ser usadas para preencher tabelas em Hive ou HBase. As exportações podem ser usadas para colocar dados do Hadoop em um banco de dados relacional. Sqoop tem o nome do SQL + Hadoop. Sqoop tornou-se um projeto Apache em março de 2012. www.acasadoconcurseiro.com.br 3
Realiza apenas a função de MAP (não faz Reduce) e pode conectar em qualquer banco de dados relacional compatível com o padrão de mercado JDBC (Java Database Connectivity) e as tarefas de importação ou importação podem ser automatizadas com o uso de Jobs (tarefas agendadas). Normalmente os dados importados para o Hadoop (HDFS) são divididos com base na chave primária e em quatro partes, chamadas de mappers (da palavra Map). A importação de dados é realizada através do comando: Outros comandos do Sqoop: import-all-tables export eval list-tables list-databases Fluxo de dados de importação de um banco de dados relacional (tabela 4 www.acasadoconcurseiro.com.br
Banco do Brasil - TI (Escriturário) Informática Márcio Henecke Visão do sistema de arquivos HDFS após importação de dados. Flume Apache Flume é um serviço distribuído, confiável e disponível via linha de comando para coletar eficientemente, agregar e mover grandes quantidades de dados de log. Tem uma arquitetura simples e flexível baseada em fluxos de dados de streaming (dados contínuos, que vão chegando com o passar do tempo). É robusto e tolerante a falhas com mecanismos de confiabilidade ajustáveis e muitos mecanismos de failover e recuperação. Ele usa um modelo de dados extensível simples que permite a aplicação analítica online (OLAP), colocando dados em memória (Memory Channel) para depois enviar ao HDFS. O Flume é muito utilizado para coletar e transformar e armazenar os dados não estruturados, como os gerados pelas redes sociais. Já vem com agentes para as redes sociais Facebook e Twitter. Comando utilizado para coletar e agregar em tempo real os dados do Twitter: Flume-ng agent n TwitterAgent c conf f path/flume.conf. www.acasadoconcurseiro.com.br 5
Fluxo de dados do Flume para agregação de dados. Ideia inicial do Flume - coletar eventos de servidores de internet (Web Servers). NiFi Apache NiFi (abreviação de Niagara Files) é um projeto de software da Apache Software Foundation utilizado no navegador e projetado para automatizar o fluxo de dados entre sistemas de software. É baseado no "Niagara Files" software previamente desenvolvido pela NSA em software livre. Com seus fluxos, é possível realizar roteamento, transformação e mediação lógica de dados. 6 www.acasadoconcurseiro.com.br
Banco do Brasil - TI (Escriturário) Informática Márcio Henecke O software é baseado no modelo de programação em fluxos e oferece recursos que incluem a capacidade de operar em clusters, segurança usando criptografia TLS, extensibilidade (os usuários podem escrever seu próprio software para estender suas habilidades) e recursos de usabilidade aprimorados como um portal que pode ser usado para visualizar e modificar o comportamento visualmente. O desenvolvimento de software e suporte comercial é oferecido atualmente pela Hortonworks. Fluxo simples para exportar eventos de um arquivo para HDFS Processos: GetFile e PutHDFS. NiFi é um programa em Java que roda em uma máquina virtual Java. Seus principais componentes são: Web Server componente baseado em HTTP usado para controlar visualmente o software e monitorar os eventos. Também é possível verificar o histórico de cada processo. Flow Controller serve como o cérebro do NiFi. Controla a execução, agenda e alocação de recursos. Extensions vários plug-ins que permitem ao NIFI interagir com vários tipos de sistemas. FlowFile repository usado pelo NiFi para manter e controlar o status do fluxo em tempo real. Content repository repositório por onde os dados processados passam. Provenance repository mantém informações sobre a origem dos dados. Fluxo complexo desenvolvido com o Nifi www.acasadoconcurseiro.com.br 7
Kafka Apache Kafka é uma plataforma de software Open-Source de processamento de fluxo desenvolvido pela Apache Software Foundation escrito em Scala e Java. O projeto tem como objetivo fornecer uma plataforma de baixa latência unificada e de alta produtividade para a manipulação de dados em tempo real. Sua camada de armazenamento é essencialmente uma fila de mensagens massivamente escalável arquitetada como um log de transações distribuída, tornando-o altamente valioso para as infraestruturas corporativas processarem dados de streaming. Além disso, Kafka se conecta a sistemas externos (para importação de dados/exportação) via Kafka Connect e fornece Kafka streams, uma biblioteca de processamento Java Stream. A primeira versão do Kafka foi criada pela equipe de TI do LinkedIn, que necessitava coletar informações (logs) de todos seus servidores sendo que nenhuma ferramenta de mercado atendia a necessidade pelo grande volume de dados. É uma plataforma de streaming com três recursos essenciais: Publicar e assinar fluxos de registros, semelhante a uma fila de mensagens ou sistema de mensagens corporativas. Armazenar fluxos de registros de maneira durável e tolerante a falhas. Processar fluxos de registros à medida que ocorrem. Principais componentes: Producer Aplicação externa que envia mensagens para Kafka. Cluster Conjunto de servidores Kafka / Zookeeper. Topic Item a ser coletado na aplicação (producer). Partition Armazenamento dos dados. Pode ser criada uma ou mais partições para cada Topic. Consumer Aplicação que lê ou recebe os dados do Kafka. 8 www.acasadoconcurseiro.com.br
Banco do Brasil - TI (Escriturário) Informática Márcio Henecke Resumo Sqoop Transferência de dados de banco de dados relacionais para HDFS. Flume Coleta e Agregação de dados streaming (Twitter) ou Logs (dados não estruturados) para HDFS. NiFi Ferramenta Web para criar processos automatizados de coleta de dados. Kafka Coleta e Agregação de Logs para HDFS. www.acasadoconcurseiro.com.br 9