SlideShare uma empresa Scribd logo
1 de 23
Apache Hadoop
Primeiros Passos
Rafael Henrique Pinotti
www.benner.com.br
Agenda
● Introdução:
○ Visão geral; Características.
● Módulos - componentes common:
○ HDFS; MapReduce; YARN.
● Principais ferramentas:
○ Zookeeper; HBase; Hive; Pig; Spark;
○ Sqoop; WebHDFS; Flume.
● Comandos no HDFS.
● MapReduce (wordcount).
O que é Hadoop?
● Plataforma Open Source mantida pela fundação Apache.
● Armazenagem e acesso a dados estruturados, semi estruturados e não
estruturados.
● Escrito em linguagem Java, permite integração com outras linguagens
(Python, R, C#, etc.).
● Tecnologia base da infraestrutura de big data.
● Permite obter, armazenar e analisar grandes volumes de dados (big data).
● Processamento distribuído e utilização de máquinas de baixo custo.
● Principais distribuições comerciais: Cloudera e Hortonworks.
● Soluções em nuvem: Microsoft (HDInsight), IBM e Amazon (EMR).
Histórico
● 2002: Iniciado o projeto Nutch.
● 2004: Google publica papers sobre MapReduce e Google File System (GFS).
● 2005: Nutch passa a utilizar uma implementação de MapReduce.
● 2006: Nasce o projeto Hadoop a partir do Nutch.
● 2006: Publicado o paper sobre o Google Bigtable.
● 2007: Pig criado pelo Yahoo! Labs.
● 2008: Yahoo! roda o Hadoop em um cluster de 10.000 nós.
● 2009: Yahoo! usa o Hadoop para ordenar um TB em 62s.
● 2011: Hadoop 1.0.
● 2012: Hadoop 2.0.
● 2017: Hadoop 3.0.
Cluster Hadoop
● Hadoop Distributed File System.
● Sistema de arquivos distribuído para armazenamento de big data.
● Tolerante a falhas com recuperação automática.
● Garante a integridade dos arquivos.
● Alto desempenho.
● Divide arquivos grandes em blocos de 64Mb e distribui entre os nós.
● Replica um mesmo bloco em vários nós.
HDFS
Arquitetura HDFS
MapReduce
● Processamento de grandes volumes de dados em paralelo.
● Separado em duas fases principais: mapeamento e redução.
● Mapeamento: cria uma série de pares chave/valor, aplicando funções em
cada elemento de uma lista.
● Redução: aplicar uma função para cada chave
única encontrada.
● As operações map e reduce podem ser
executadas em paralelo.
● Executar funções em grandes arquivos.
● Tolerante a falhas.
MapReduce - exemplo
YARN (Hadoop 2.0)
● Yet Another Resource Negotiator.
● Gerenciador da execução das aplicações no cluster.
● Node manager para gerenciar as tarefas (mais flexível e eficiente que o
task tracker), e não se limita a processar somente mapreduce.
● Trabalha com o conceito de
container, criando um para cada
tarefa.
YARN - requisição
Apache Zookeeper
● Because coordinating distributed systems is a Zoo.
● Serviço centralizado para manutenção de configurações, nomes,
sincronização distribuída e serviços de grupo.
● Gerencia a execução dos jobs ao longo do processo.
● Pré-requisito para alguns componentes do ecossistema.
● Realiza a coordenação de um sistema distribuído.
Apache HBase
● Um dos principais bancos de dados NoSQL do ecossistema hadoop.
● Permite o armazenamento de bilhões de linhas e milhões de colunas.
● Criado a partir do Google Bigtable.
● Roda sobre o HDFS.
● Armazena os dados em sua forma bruta, para posterior análise, limpeza,
preparação e utilização.
Apache Hive
● Solução de data warehouse open source.
● É considerado o banco de dados relacional do Hadoop.
● Facilita a leitura, escrita e manutenção de grandes conjuntos de dados.
● Armazenamento distribuído no HDFS.
● Utiliza linguagem SQL para consultas, o
HiveQL.
● Possui conectores para as principais
ferramentas de BI do mercado.
Apache Pig
● Plataforma para analisar e processar grandes conjuntos de dados (big
data) sem a necessidade de escritas de código Java.
● Executa jobs mapreduce.
● Um dos objetivos é mascarar a complexidade do Java.
● Possui uma linguagem específica que permite a coleta de dados e a
execução de jobs.
● Utiliza linguagem de script própria, o Pig Latin.
● Possui características similares às encontradas em bancos
relacionais, como joins, group, aggregate, etc.
Apache Spark
● Sistema de código aberto para processamento distribuído de dados em
tempo real.
● Diferentemente do hadoop, o Spark armazena as etapas intermediárias
das operações mapreduce em memória.
● Pode rodar sob o ecossistema hadoop ou de forma standalone.
Apache Sqoop
● SQL para Hadoop.
● Movimenta dados de forma bidirecional entre o Hadoop e serviços de
armazenamento estruturados.
● Permite a conexão com diversos bancos de dados relacionais como
Oracle, MySql, DB2, SQL Server, etc.
● Utiliza JDBC para conexão com bancos relacionais.
● Possui integração direta com o Apache Hive.
Apache Flume
● Ferramenta para coletar logs de dados de sistemas distribuídos.
● Os dados são armazenados no HDFS ou HBase.
● Pode ser escalado horizontalmente.
● Muito utilizado para processar logs de transações em servidores de
aplicação e servidores web.
Apache Kafka
● Ferramenta para coletar e processar alto volume de dados de streaming
em tempo real.
● Atua como sistema de mensageria, permitindo um grande número de
publishers e subscribers.
● Armazena grandes quantidades de dados para posterior distribuição.
● Monitora dados para aplicações distribuídas.
● Torna os dados disponíveis para múltiplos assinantes de acordo com seus
interesses.
Outras ferramentas
● WebHDFS: API REST para manipulação de arquivos no HDFS.
● HCatalog: Serviço de metadados para acesso ao Hadoop sem a
necessidade de saber detalhes sobre o armazenamento dos arquivos.
● OOzie: Sistema de agendamento
de fluxo de trabalho para
gerenciar tarefas do Hadoop
(workflow).
VM VirtualBox
Em resumo, o Hadoop...
● É um framework para execução paralela de processamento, realizando o
escalonamento e o balanceamento de carga de forma automática.
● Entrega um recuperação transparente do processamento caso algum nó
da rede falhe durante a execução.
● Possui um grande ecossistema e em constante evolução.
● É provido por diversos fornecedores em nuvem que mantém e escalam
serviços Hadoop.
● Tem uma curva de aprendizado muito grande, mas o uso do ecossistema
traz inúmeros benefícios.
Muito obrigado !!!
rafael.pinotti@benner.com.br
linkedin.com/in/rafael-henrique-pinotti
www.benner.com.br
#benner

Mais conteúdo relacionado

Mais procurados

Aula 15 - Modularização -parte1
Aula 15 - Modularização -parte1Aula 15 - Modularização -parte1
Aula 15 - Modularização -parte1Pacc UAB
 
Orientação a Objetos em Python
Orientação a Objetos em PythonOrientação a Objetos em Python
Orientação a Objetos em PythonLuciano Ramalho
 
Constructor and Destructors in C++
Constructor and Destructors in C++Constructor and Destructors in C++
Constructor and Destructors in C++sandeep54552
 
Aula 16 - Modularização - parte 3 - exercícios
Aula 16 - Modularização - parte 3 - exercíciosAula 16 - Modularização - parte 3 - exercícios
Aula 16 - Modularização - parte 3 - exercíciosPacc UAB
 
O paradigma da orientação a objetos
O paradigma da orientação a objetosO paradigma da orientação a objetos
O paradigma da orientação a objetosNécio de Lima Veras
 
Introduction to Data Warehouse
Introduction to Data WarehouseIntroduction to Data Warehouse
Introduction to Data WarehouseSOMASUNDARAM T
 
Revisão Sobre Programação Orientada a Objetos com Java
Revisão Sobre Programação Orientada a Objetos com Java Revisão Sobre Programação Orientada a Objetos com Java
Revisão Sobre Programação Orientada a Objetos com Java Mario Jorge Pereira
 
constructor and destructor-object oriented programming
constructor and destructor-object oriented programmingconstructor and destructor-object oriented programming
constructor and destructor-object oriented programmingAshita Agrawal
 
Árvores: Conceitos e binárias
Árvores:  Conceitos e bináriasÁrvores:  Conceitos e binárias
Árvores: Conceitos e bináriasSérgio Souza Costa
 
Object-oriented Programming in Python
Object-oriented Programming in PythonObject-oriented Programming in Python
Object-oriented Programming in PythonJuan-Manuel Gimeno
 
Introdução a estruturas de dados em python
Introdução a estruturas de dados em pythonIntrodução a estruturas de dados em python
Introdução a estruturas de dados em pythonAlvaro Oliveira
 
Configuração de Interface de Rede no Linux por comandos
Configuração de Interface de Rede no Linux por comandosConfiguração de Interface de Rede no Linux por comandos
Configuração de Interface de Rede no Linux por comandosWellington Oliveira
 
Introduction to pig & pig latin
Introduction to pig & pig latinIntroduction to pig & pig latin
Introduction to pig & pig latinknowbigdata
 
Components of ddbms
Components of ddbmsComponents of ddbms
Components of ddbmsPooja Dixit
 
Introduction to Data Warehouse
Introduction to Data WarehouseIntroduction to Data Warehouse
Introduction to Data WarehouseShanthi Mukkavilli
 

Mais procurados (20)

Aula 15 - Modularização -parte1
Aula 15 - Modularização -parte1Aula 15 - Modularização -parte1
Aula 15 - Modularização -parte1
 
Orientação a Objetos em Python
Orientação a Objetos em PythonOrientação a Objetos em Python
Orientação a Objetos em Python
 
Constructor and Destructors in C++
Constructor and Destructors in C++Constructor and Destructors in C++
Constructor and Destructors in C++
 
Aula 16 - Modularização - parte 3 - exercícios
Aula 16 - Modularização - parte 3 - exercíciosAula 16 - Modularização - parte 3 - exercícios
Aula 16 - Modularização - parte 3 - exercícios
 
O paradigma da orientação a objetos
O paradigma da orientação a objetosO paradigma da orientação a objetos
O paradigma da orientação a objetos
 
Introduction to Data Warehouse
Introduction to Data WarehouseIntroduction to Data Warehouse
Introduction to Data Warehouse
 
Aula 07 - lista linear
Aula 07 - lista linearAula 07 - lista linear
Aula 07 - lista linear
 
Revisão Sobre Programação Orientada a Objetos com Java
Revisão Sobre Programação Orientada a Objetos com Java Revisão Sobre Programação Orientada a Objetos com Java
Revisão Sobre Programação Orientada a Objetos com Java
 
PostgreSQL
PostgreSQLPostgreSQL
PostgreSQL
 
constructor and destructor-object oriented programming
constructor and destructor-object oriented programmingconstructor and destructor-object oriented programming
constructor and destructor-object oriented programming
 
Árvores: Conceitos e binárias
Árvores:  Conceitos e bináriasÁrvores:  Conceitos e binárias
Árvores: Conceitos e binárias
 
Object-oriented Programming in Python
Object-oriented Programming in PythonObject-oriented Programming in Python
Object-oriented Programming in Python
 
Introdução a estruturas de dados em python
Introdução a estruturas de dados em pythonIntrodução a estruturas de dados em python
Introdução a estruturas de dados em python
 
Configuração de Interface de Rede no Linux por comandos
Configuração de Interface de Rede no Linux por comandosConfiguração de Interface de Rede no Linux por comandos
Configuração de Interface de Rede no Linux por comandos
 
Introduction to pig & pig latin
Introduction to pig & pig latinIntroduction to pig & pig latin
Introduction to pig & pig latin
 
Intro to HBase
Intro to HBaseIntro to HBase
Intro to HBase
 
Components of ddbms
Components of ddbmsComponents of ddbms
Components of ddbms
 
Paradigmas de programação
Paradigmas de programaçãoParadigmas de programação
Paradigmas de programação
 
Introduction to Data Warehouse
Introduction to Data WarehouseIntroduction to Data Warehouse
Introduction to Data Warehouse
 
MongoDB Backup & Disaster Recovery
MongoDB Backup & Disaster RecoveryMongoDB Backup & Disaster Recovery
MongoDB Backup & Disaster Recovery
 

Semelhante a Introdução ao Apache Hadoop e seus principais componentes

Pentaho com Hadoop – O Canivete Suíço do Cientistas de Dados para Big Data An...
Pentaho com Hadoop – O Canivete Suíço do Cientistas de Dados para Big Data An...Pentaho com Hadoop – O Canivete Suíço do Cientistas de Dados para Big Data An...
Pentaho com Hadoop – O Canivete Suíço do Cientistas de Dados para Big Data An...Ambiente Livre
 
Big Data - O que é o hadoop, map reduce, hdfs e hive
Big Data - O que é o hadoop, map reduce, hdfs e hiveBig Data - O que é o hadoop, map reduce, hdfs e hive
Big Data - O que é o hadoop, map reduce, hdfs e hiveFlavio Fonte, PMP, ITIL
 
Filesystem distribuído com hadoop!!!
Filesystem distribuído com hadoop!!! Filesystem distribuído com hadoop!!!
Filesystem distribuído com hadoop!!! Alessandro Binhara
 
Big Data Open Source com Hadoop
Big Data Open Source com HadoopBig Data Open Source com Hadoop
Big Data Open Source com HadoopAmbiente Livre
 
Palestra: Big Data Open Source com Hadoop - FLISOL 2014 - Curitiba
Palestra: Big Data Open Source com Hadoop - FLISOL 2014 - CuritibaPalestra: Big Data Open Source com Hadoop - FLISOL 2014 - Curitiba
Palestra: Big Data Open Source com Hadoop - FLISOL 2014 - CuritibaMarcio Junior Vieira
 
Bigdata - compreendendo Hadoop e seu ecossistema.
Bigdata - compreendendo Hadoop e seu ecossistema. Bigdata - compreendendo Hadoop e seu ecossistema.
Bigdata - compreendendo Hadoop e seu ecossistema. Natalia Raythz
 
Arquitetura para solução Big Data – open source
Arquitetura para solução Big Data – open sourceArquitetura para solução Big Data – open source
Arquitetura para solução Big Data – open sourceFelipe RENZ - MBA TI / Big
 
A importância do ecossistema Java em aplicações baseadas em Big Data
A importância do ecossistema Java em aplicações baseadas em Big DataA importância do ecossistema Java em aplicações baseadas em Big Data
A importância do ecossistema Java em aplicações baseadas em Big DataVinícius Barros
 
Cientista de Dados – Dominando o Big Data com Software Livre
Cientista de Dados – Dominando o Big Data com Software Livre Cientista de Dados – Dominando o Big Data com Software Livre
Cientista de Dados – Dominando o Big Data com Software Livre Ambiente Livre
 
Big Data – HBase, integrando hadoop, bi e dw; Montando o seu big data Cloude...
Big Data – HBase, integrando hadoop, bi e dw; Montando o seu big data  Cloude...Big Data – HBase, integrando hadoop, bi e dw; Montando o seu big data  Cloude...
Big Data – HBase, integrando hadoop, bi e dw; Montando o seu big data Cloude...Flavio Fonte, PMP, ITIL
 
Ciclo 4 - Instalação do Hadoop
Ciclo 4 - Instalação do HadoopCiclo 4 - Instalação do Hadoop
Ciclo 4 - Instalação do HadoopJeane Menegueli
 
Hadoop - Mãos à massa! Qcon2014
Hadoop - Mãos à massa! Qcon2014Hadoop - Mãos à massa! Qcon2014
Hadoop - Mãos à massa! Qcon2014Thiago Santiago
 
Apresentação em Aplicações Distribuídas – Hadoop MapReduce
Apresentação em Aplicações Distribuídas – Hadoop MapReduceApresentação em Aplicações Distribuídas – Hadoop MapReduce
Apresentação em Aplicações Distribuídas – Hadoop MapReduceMatteus Barbosa
 
Introdução ao Apache Hadoop
Introdução ao Apache HadoopIntrodução ao Apache Hadoop
Introdução ao Apache HadoopVinícius Barros
 

Semelhante a Introdução ao Apache Hadoop e seus principais componentes (20)

Pentaho com Hadoop – O Canivete Suíço do Cientistas de Dados para Big Data An...
Pentaho com Hadoop – O Canivete Suíço do Cientistas de Dados para Big Data An...Pentaho com Hadoop – O Canivete Suíço do Cientistas de Dados para Big Data An...
Pentaho com Hadoop – O Canivete Suíço do Cientistas de Dados para Big Data An...
 
Big Data - O que é o hadoop, map reduce, hdfs e hive
Big Data - O que é o hadoop, map reduce, hdfs e hiveBig Data - O que é o hadoop, map reduce, hdfs e hive
Big Data - O que é o hadoop, map reduce, hdfs e hive
 
Filesystem distribuído com hadoop!!!
Filesystem distribuído com hadoop!!! Filesystem distribuído com hadoop!!!
Filesystem distribuído com hadoop!!!
 
Big Data Open Source com Hadoop
Big Data Open Source com HadoopBig Data Open Source com Hadoop
Big Data Open Source com Hadoop
 
Palestra: Big Data Open Source com Hadoop - FLISOL 2014 - Curitiba
Palestra: Big Data Open Source com Hadoop - FLISOL 2014 - CuritibaPalestra: Big Data Open Source com Hadoop - FLISOL 2014 - Curitiba
Palestra: Big Data Open Source com Hadoop - FLISOL 2014 - Curitiba
 
Bigdata - compreendendo Hadoop e seu ecossistema.
Bigdata - compreendendo Hadoop e seu ecossistema. Bigdata - compreendendo Hadoop e seu ecossistema.
Bigdata - compreendendo Hadoop e seu ecossistema.
 
Arquitetura para solução Big Data – open source
Arquitetura para solução Big Data – open sourceArquitetura para solução Big Data – open source
Arquitetura para solução Big Data – open source
 
Hadoop
HadoopHadoop
Hadoop
 
Big data e ecossistema hadoop
Big data e ecossistema hadoopBig data e ecossistema hadoop
Big data e ecossistema hadoop
 
Hadoop
HadoopHadoop
Hadoop
 
A importância do ecossistema Java em aplicações baseadas em Big Data
A importância do ecossistema Java em aplicações baseadas em Big DataA importância do ecossistema Java em aplicações baseadas em Big Data
A importância do ecossistema Java em aplicações baseadas em Big Data
 
Treinamento hadoop - dia3
Treinamento hadoop - dia3Treinamento hadoop - dia3
Treinamento hadoop - dia3
 
Cientista de Dados – Dominando o Big Data com Software Livre
Cientista de Dados – Dominando o Big Data com Software Livre Cientista de Dados – Dominando o Big Data com Software Livre
Cientista de Dados – Dominando o Big Data com Software Livre
 
Big Data – HBase, integrando hadoop, bi e dw; Montando o seu big data Cloude...
Big Data – HBase, integrando hadoop, bi e dw; Montando o seu big data  Cloude...Big Data – HBase, integrando hadoop, bi e dw; Montando o seu big data  Cloude...
Big Data – HBase, integrando hadoop, bi e dw; Montando o seu big data Cloude...
 
Ciclo 4 - Instalação do Hadoop
Ciclo 4 - Instalação do HadoopCiclo 4 - Instalação do Hadoop
Ciclo 4 - Instalação do Hadoop
 
Hadoop
HadoopHadoop
Hadoop
 
Hadoop - Mãos à massa! Qcon2014
Hadoop - Mãos à massa! Qcon2014Hadoop - Mãos à massa! Qcon2014
Hadoop - Mãos à massa! Qcon2014
 
Apresentação em Aplicações Distribuídas – Hadoop MapReduce
Apresentação em Aplicações Distribuídas – Hadoop MapReduceApresentação em Aplicações Distribuídas – Hadoop MapReduce
Apresentação em Aplicações Distribuídas – Hadoop MapReduce
 
Treinamento hadoop - dia4
Treinamento hadoop - dia4Treinamento hadoop - dia4
Treinamento hadoop - dia4
 
Introdução ao Apache Hadoop
Introdução ao Apache HadoopIntrodução ao Apache Hadoop
Introdução ao Apache Hadoop
 

Introdução ao Apache Hadoop e seus principais componentes

  • 1. Apache Hadoop Primeiros Passos Rafael Henrique Pinotti www.benner.com.br
  • 2. Agenda ● Introdução: ○ Visão geral; Características. ● Módulos - componentes common: ○ HDFS; MapReduce; YARN. ● Principais ferramentas: ○ Zookeeper; HBase; Hive; Pig; Spark; ○ Sqoop; WebHDFS; Flume. ● Comandos no HDFS. ● MapReduce (wordcount).
  • 3. O que é Hadoop? ● Plataforma Open Source mantida pela fundação Apache. ● Armazenagem e acesso a dados estruturados, semi estruturados e não estruturados. ● Escrito em linguagem Java, permite integração com outras linguagens (Python, R, C#, etc.). ● Tecnologia base da infraestrutura de big data. ● Permite obter, armazenar e analisar grandes volumes de dados (big data). ● Processamento distribuído e utilização de máquinas de baixo custo. ● Principais distribuições comerciais: Cloudera e Hortonworks. ● Soluções em nuvem: Microsoft (HDInsight), IBM e Amazon (EMR).
  • 4. Histórico ● 2002: Iniciado o projeto Nutch. ● 2004: Google publica papers sobre MapReduce e Google File System (GFS). ● 2005: Nutch passa a utilizar uma implementação de MapReduce. ● 2006: Nasce o projeto Hadoop a partir do Nutch. ● 2006: Publicado o paper sobre o Google Bigtable. ● 2007: Pig criado pelo Yahoo! Labs. ● 2008: Yahoo! roda o Hadoop em um cluster de 10.000 nós. ● 2009: Yahoo! usa o Hadoop para ordenar um TB em 62s. ● 2011: Hadoop 1.0. ● 2012: Hadoop 2.0. ● 2017: Hadoop 3.0.
  • 6. ● Hadoop Distributed File System. ● Sistema de arquivos distribuído para armazenamento de big data. ● Tolerante a falhas com recuperação automática. ● Garante a integridade dos arquivos. ● Alto desempenho. ● Divide arquivos grandes em blocos de 64Mb e distribui entre os nós. ● Replica um mesmo bloco em vários nós. HDFS
  • 8. MapReduce ● Processamento de grandes volumes de dados em paralelo. ● Separado em duas fases principais: mapeamento e redução. ● Mapeamento: cria uma série de pares chave/valor, aplicando funções em cada elemento de uma lista. ● Redução: aplicar uma função para cada chave única encontrada. ● As operações map e reduce podem ser executadas em paralelo. ● Executar funções em grandes arquivos. ● Tolerante a falhas.
  • 10. YARN (Hadoop 2.0) ● Yet Another Resource Negotiator. ● Gerenciador da execução das aplicações no cluster. ● Node manager para gerenciar as tarefas (mais flexível e eficiente que o task tracker), e não se limita a processar somente mapreduce. ● Trabalha com o conceito de container, criando um para cada tarefa.
  • 12. Apache Zookeeper ● Because coordinating distributed systems is a Zoo. ● Serviço centralizado para manutenção de configurações, nomes, sincronização distribuída e serviços de grupo. ● Gerencia a execução dos jobs ao longo do processo. ● Pré-requisito para alguns componentes do ecossistema. ● Realiza a coordenação de um sistema distribuído.
  • 13. Apache HBase ● Um dos principais bancos de dados NoSQL do ecossistema hadoop. ● Permite o armazenamento de bilhões de linhas e milhões de colunas. ● Criado a partir do Google Bigtable. ● Roda sobre o HDFS. ● Armazena os dados em sua forma bruta, para posterior análise, limpeza, preparação e utilização.
  • 14. Apache Hive ● Solução de data warehouse open source. ● É considerado o banco de dados relacional do Hadoop. ● Facilita a leitura, escrita e manutenção de grandes conjuntos de dados. ● Armazenamento distribuído no HDFS. ● Utiliza linguagem SQL para consultas, o HiveQL. ● Possui conectores para as principais ferramentas de BI do mercado.
  • 15. Apache Pig ● Plataforma para analisar e processar grandes conjuntos de dados (big data) sem a necessidade de escritas de código Java. ● Executa jobs mapreduce. ● Um dos objetivos é mascarar a complexidade do Java. ● Possui uma linguagem específica que permite a coleta de dados e a execução de jobs. ● Utiliza linguagem de script própria, o Pig Latin. ● Possui características similares às encontradas em bancos relacionais, como joins, group, aggregate, etc.
  • 16. Apache Spark ● Sistema de código aberto para processamento distribuído de dados em tempo real. ● Diferentemente do hadoop, o Spark armazena as etapas intermediárias das operações mapreduce em memória. ● Pode rodar sob o ecossistema hadoop ou de forma standalone.
  • 17. Apache Sqoop ● SQL para Hadoop. ● Movimenta dados de forma bidirecional entre o Hadoop e serviços de armazenamento estruturados. ● Permite a conexão com diversos bancos de dados relacionais como Oracle, MySql, DB2, SQL Server, etc. ● Utiliza JDBC para conexão com bancos relacionais. ● Possui integração direta com o Apache Hive.
  • 18. Apache Flume ● Ferramenta para coletar logs de dados de sistemas distribuídos. ● Os dados são armazenados no HDFS ou HBase. ● Pode ser escalado horizontalmente. ● Muito utilizado para processar logs de transações em servidores de aplicação e servidores web.
  • 19. Apache Kafka ● Ferramenta para coletar e processar alto volume de dados de streaming em tempo real. ● Atua como sistema de mensageria, permitindo um grande número de publishers e subscribers. ● Armazena grandes quantidades de dados para posterior distribuição. ● Monitora dados para aplicações distribuídas. ● Torna os dados disponíveis para múltiplos assinantes de acordo com seus interesses.
  • 20. Outras ferramentas ● WebHDFS: API REST para manipulação de arquivos no HDFS. ● HCatalog: Serviço de metadados para acesso ao Hadoop sem a necessidade de saber detalhes sobre o armazenamento dos arquivos. ● OOzie: Sistema de agendamento de fluxo de trabalho para gerenciar tarefas do Hadoop (workflow).
  • 22. Em resumo, o Hadoop... ● É um framework para execução paralela de processamento, realizando o escalonamento e o balanceamento de carga de forma automática. ● Entrega um recuperação transparente do processamento caso algum nó da rede falhe durante a execução. ● Possui um grande ecossistema e em constante evolução. ● É provido por diversos fornecedores em nuvem que mantém e escalam serviços Hadoop. ● Tem uma curva de aprendizado muito grande, mas o uso do ecossistema traz inúmeros benefícios.

Notas do Editor

  1. A ideia é conversamos um pouco sobre o hadoop e seu ecossistema, de uma forma introdutória, para que a gente possa entender melhor o que ele faz, e vislumbrar de que maneira podemos aplicar suas ferramentas.
  2. Na nossa agenda de hoje veremos o que é o hadoop, como ele se encaixa no conceito de big data, algumas de suas características principais, componentes core, e as principais ferramentas do seu ecossistema. Existe um sem número de ferramentas que se encaixam no ecossistema hadoop, as que vamos falar aqui são algumas das mais utilizadas. Ao final veremos alguns comandos no sistema de arquivos do hadoop, e uma aplicação de teste que realiza uma contagem de palavras utilizando o modelo mapreduce (hello world do big data).
  3. O que é Hadoop? Plataforma de código aberto mantida pela fundação Apache. Permite a armazenagem e o acesso a dados estruturados (bancos de dados), semi estruturados (xml, logs de aplicação), e não estruturados (imagens, documentos, e-mails). Escrito na linguagem Java, mas possui formas de integração com diversas outras linguagens como Python, R, C#, etc. Uma das tecnologias base da infraestrutura de big data. Atuação em todo o ciclo na obtenção, armazenamento e análise de grandes volumes de dados, o famoso big data. Possui um processamento distribuído (ou seja, divide a carga das tarefas em vários computadores), permitindo a utilização de máquinas de baixo custo. As principais distribuições comerciais são providas pela Cloudera e Hortonworks, inclusive elas disponibilizam máquinas virtuais configuradas para testes e provas de conceito. Grandes nomes também fornecem soluções em nuvem baseadas no hadoop, como Microsoft (HDInsight), IBM e Amazon (na plataforma EMR - elastic mapreduce).
  4. Pelos idos dos anos 2000 muitas (na época) startups de inovação como google e facebook começaram a ter problemas em manipular a grande massa de dados que vinha sendo produzida. Então começaram a desenvolver as próprias ferramentas para ajudar a resolver estas questões de processamento intensivo na web e big data. Em 2002 foi iniciado o projeto Apache Nutch, escrito para ser um web crawler, basicamente um indexador de páginas web. Em 2004 o google publica os papers que explicam o google file system, e o mapreduce. Em 2006 nasce o projeto Hadoop a partir do Nutch. Em 2006 o google publica o paper sobre o Google Bigtable, servindo de base para a criação do HBase. Em 2007 o Yahoo! Labs cria o Pig e doa para a Apache Software Foundation. Em 2008 a indexação de buscas do Yahoo! é gerada através de um cluster Hadoop de 10.000 nós. Em 2009 o Yahoo! utiliza o hadoop para ordenar um TB de dados em 62s. Em 2011 é lançada a versão 1.0 do Hadoop. Em 2012 é lançada a versão 2.0 do Hadoop. Em 2017 é lançada a versão 3.0 do Hadoop.
  5. Cluster é um conjunto de máquinas trabalhando em paralelo. O Hadoop foi desenhado para computação paralela e distribuída. Um cluster hadoop é formado por um namenode e milhares de datanodes Namenode controla e faz a gestão dos outros nós da rede, os datanodes. Os datanodes são os nós da rede onde os dados são armazenados de forma distribuída. Deve existir um segundo namenode para assumir a gestão caso o principal falhe. Job tracker é o gerenciador da execução distribuída do processo de mapreduce (veremos adiante o que é isto). Task tracker é onde acontece a execução dos processos de mapreduce.
  6. Hadoop distributed file system. Baseado no GFS (google file system). Sistema de arquivos distribuído ao longo de vários computadores na rede, através de um cluster. Entrega desempenho similar a um sistema de arquivos tradicional e provê escalabilidade de forma transparente. Não interrompe o sistema caso algum dos nós falhe na rede, tolerante a falhas. Controla as modificações realizadas no arquivo, permitindo acesso somente com permissão garantida. Divide os arquivos grandes em pequenos blocos de 64Mb e distribui entre os nós do cluster. Replica um mesmo bloco em vários nós garantindo a alta disponibilidade e a integridade do arquivo.
  7. Trabalha com arquivos grandes, podendo chegar à ordem de petabytes.
  8. Framework para execução de processamento paralelo em múltiplos nós, combinando os resultados posteriormente. Modelo de programação com propósito de processar grandes volumes de dados, paralelizando o trabalho em conjuntos de tarefas independentes. Criado originalmente pelo google, é utilizado em vários outros sistemas de computação paralela. Map e reduce são os dois tipos de funções comuns. Map: aplica uma função em cada elemento de uma lista, gerando séries de pares chave/valor. Reduce: função de agrupamento ou compressão, aplica funções em um conjunto de dados para retornar um valor. Ambas as funções podem ser executadas em paralelo. Foi desenhado para executar funções em grandes arquivos, com coordenação de tarefas e tolerância a falhas. O job tracker verifica continuamente a saúde dos task trackers, e se algum deles falhar, o seu processamento é enviado ao outro nó. O job tracker é gerenciado no namenode, e os task trackers nos datanodes.
  9. Um dos exemplos clássicos é a contagem de palavras em uma coleção de documentos. Dado um ou vários arquivos armazenados (no HDFS por exemplo), os dados são divididos e enviados aos nós para processamento. Em cada um dos nós é executada a função de mapeamento, gerando os pares chave/valor. Os dados são agrupados, ordenados e salvos no sistema de arquivos. Então são aplicadas as funções de redução nos arquivos gerados para que tenhamos o resultado final da contagem. Em resumo: cada tarefa map processa vários blocos de arquivos; os arquivos gerados são gravados localmente (nos datanodes), e o namenode armazena os metadados destes arquivos. as tarefas reduce recebem os arquivos intermediários e processam as funções de redução. o resultado final é armazenado e disponibilizado no cluster.
  10. A partir da versão 2.0 do hadoop, o YARN é adicionado aos elementos core do ecossistema, e altera um pouco a arquitetura padrão do hadoop resolvendo algumas de suas limitações. Gerenciador da execução das aplicações no cluster. Possui um node manager para gerenciar as tarefas, muito mais eficiente que o task tracker e não se limita a processamento mapreduce. Utiliza o conceito de container, criando um para cada tarefa. Por conta da flexibilidade é orientado a aplicações empresariais.
  11. No momento que um job é enviado ao cluster, o YARN verifica qual, ou quais, nós possuem mais recursos para atender a solicitação. Uma aplicação cliente solicita a execução no cluster. O resource manager inicializa um container do application manager em um node manager. O application manager aloca os recursos em outros node managers, e avisa ao resource manager para gerenciar. O application manager então inicializa a execução das tarefas em containers nos node managers designados.
  12. O ecossistema é considerado um grande zoológico, dados os nomes dos softwares. Serviço centralizado para manutenção de configurações, nomes, sincronização distribuída e serviços de grupos. Gerencia a execução dos jobs ao longo o processo. Pré requisito para vários componentes do ecossistema. Realiza a coordenação de um sistema distribuído, para que não seja necessária a implementação de protocolos complexos para gestão de concorrência, deadlock e consistência dos dados.
  13. Já foi um dos principais bancos de dados NoSQL do ecossistema Hadoop, mas tem sido substituído pelo Cassandra que tem uma evolução mais rápida com mais funcionalidades. Banco de dados colunar. Criado para armazenamento de dados não estruturados, utilizado principalmente para infraestrutura de big data. Criado a partir do Google Bigtable. Roda sobre o HDFS. Armazena os dados em sua forma bruta, para posterior análise, limpeza, preparação e utilização.
  14. Concebido com a ideia de construir uma aplicação de data warehouse open source, utilizando conceitos do hadoop, mapreduce e hdfs. É considerado o banco de dados relacional do Hadoop. Facilita a leitura, escrita e manutenção de grandes conjuntos de dados. Trabalha com o conceito de armazenamento distribuído no HDFS. Utiliza linguagem SQL para consultas, o HiveQL. Possui conectores para as principais ferramentas de BI do mercado, como Microstrategy, Excel, PowerPivot, Tableau, etc.
  15. Plataforma para analisar e processar grandes conjuntos de dados (big data), sem a necessidade de escrever código java. Plataforma que permite a execução de jobs mapreduce. Um dos objetivos é mascarar a complexidade do Java para escrita das consultas e jobs. É uma camada acima da linguagem Java onde existe uma linguagem específica que permite a coleta de dados e a execução dos jobs. Plataforma que utiliza a linguagem Pig Latin, uma linguagem de script. Possui diversas características similares às consultas a bancos relacionais, como joins, group, aggregate, etc.
  16. Sistema de código aberto para processamento distribuído de dados em tempo real. As operações mapreduce no hadoop armazenam as etapas intermediárias em disco. No Spark, estas etapas intermediárias ficam em memória, não possui componente de armazenamento. Permite a integração com um sem número de fontes de dados. Dá suporte à uma grande pilha de bibliotecas para SQL, Machine Learning, Grafos, e stream de dados. Permite a escrita de aplicações em Scala, Python, R e comandos SQL. Poder rodar sob o ecossistema hadoop ou de forma standalone. É uma das ferramentas mais poderosas que fazem parte do ecossistema.
  17. Projeto top-level da Apache, seu nome é uma abreviação para SQL para Hadoop. O seu objetivo é transferir dados do Hadoop para serviços de dados estruturados e vice-versa. Possui ferramentas e conectores para diversos bancos de dados relacionais como Oracle, MySQL, DB2, SQL Server, etc. Utiliza JDBC para conexão com os bancos relacionais. Integração direta com o Apache Hive, sem necessidade de conectores. Esta ferramenta permite também importação de arquivos texto, normalmente arquivos csv que já possuem uma estrutura definida. Também possui opções para importação incremental dos SGDBs, permitindo uma integração mais rápida e eficiente.
  18. Ferramenta utilizada para coletar logs de dados de sistemas distribuídos. Os dados são armazenados no HDFS ou HBase para futura análise. Pode ser escalado horizontalmente, sendo fácil a adição de nós ao cluster caso seja necessário. Muito utilizado para processar logs de transações em servidores de aplicação e servidores web, por exemplo: vendas em e-commerce e lojas físicas, redes sociais, etc.
  19. Ferramenta para coletar e processar alto volume de dados de streaming em tempo real. Atua como sistema de mensageria, permitindo um grande número de publishers (editores) e subscribers (assinantes). Armazena grandes quantidades de dados para posterior distribuição. Monitora os dados para aplicações distribuídas. Torna os dados disponíveis para múltiplos assinantes de acordo com seus interesses. Criado para atender à demandas não contempladas no Flume. Tem sido utilizado para substituir o Apache Flume.
  20. Inúmeras ferramentas vem sido adicionadas ao ecossistema frequentemente, as ferramentas apresentados não chegam perto da lista completa (muito longe disso), mas dá uma ideia do que tem sido desenvolvido. O que é interessante citar: WebHDFS: API REST que permite acesso HTTPS ao HDFS, para manipulação de arquivos. HCatalog: Serviço de metadados para acesso ao Hadoop sem a necessidade de saber detalhes sobre o armazenamento dos arquivos. Possibilita interoperabilidade entre outras ferramentas (como Pig, MapReduce e Hive), e acesso a dados em outros bancos de dados (como SQL Server). Oozie: Sistema de agendamento de fluxo de trabalho para gerenciar tarefas do Hadoop.
  21. Sistema de arquivos: A plataforma utiliza os mesmos comandos do linux para manipulação do sistema de arquivos. hdfs dfs -ls /: para listar os arquivos em um diretório. hdfs dfs -mkdir /diretorio: para criar um novo diretório. hdfs dfs -rmr /diretorio: para excluir um diretório. A manipulação do sistema de arquivos também pode ser realizada através de soluções do ecossistema, como web pages. MapReduce: hadoop fs -copyFromLocal contratos.csv /bigdata hadoop fs -ls /bigdata hadoop fs -cat /bigdata/contratos.csv cd /opt/hadoop/ hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.9.2.jar wordcount /bigdata/contratos.csv /output hdfs dfs -cat /output/*
  22. O Hadoop é um framework para execução paralela de processamento, realizando o escalonamento e o balanceamento de carga de forma automática. Entrega uma recuperação transparente do processamento caso algum nó da rede falhe durante a execução. Possui um grande ecossistema e em constante evolução. É provido por diversos fornecedores em nuvem que mantém e escalam serviços Hadoop. Tem uma curva de aprendizado muito grande, são muitas as ferramentas e conceitos. Mas o uso deste ecossistema traz inúmeros benefícios para as empresas.