Compreendendo em profundidade
Hadoop
Hadoop
é um projeto de código aberto da Apache
fundação. É uma estrutura escrita Java
originalmente, desenvolvida por Doug Cutting em 2005. Foi criada para oferecer suporte à distribuição Nutch
do mecanismo de busca de texto. Hadoop
usa o Google Map Reduce
e o Google File System Technologies como base.
Recursos do Hadoop
- É otimizado para lidar com grandes quantidades de dados estruturados, semiestruturados e não estruturados usando hardware comum.
- Não compartilhou nada de arquitetura.
- Ele replica seus dados em vários computadores para que, se um deles cair, os dados ainda possam ser processados a partir de outra máquina que armazena sua réplica.
Hadoop
é para alta taxa de transferência e não baixa latência. É uma operação em lote que manipula grandes quantidades de dados; portanto, o tempo de resposta não é imediato.
- Complementa o processamento de transações online e o processamento analítico online. No entanto, não é um substituto para um
RDBMS
.
- Não é bom quando o trabalho não pode ser paralelo ou quando há dependências nos dados.
- Não é bom para o processamento de arquivos pequenos. Funciona melhor com grandes arquivos de dados e conjuntos de dados.
Versões do Hadoop
Existem duas versões Hadoop
disponíveis:
- Hadoop 1.0
- Hadoop 2.0
Hadoop 1.0
Tem duas partes principais:
1. Estrutura de Armazenamento de Dados
É um sistema de arquivos de uso geral chamado Hadoop Distributed File System ( HDFS
).
HDFS
é sem esquema
Ele simplesmente armazena arquivos de dados e esses arquivos podem estar em praticamente qualquer formato.
A idéia é armazenar os arquivos o mais próximo possível da sua forma original.
Isso, por sua vez, fornece às unidades de negócios e à organização a flexibilidade e agilidade necessárias, sem se preocupar demais com o que pode implementar.
2. Estrutura de Processamento de Dados
Este é um modelo de programação funcional simples, popularizado inicialmente pelo Google como MapReduce
.
Essencialmente, ele usa duas funções: MAP
e REDUCE
para processar dados.
Os "Mapeadores" coletam um conjunto de pares de valores-chave e geram dados intermediários (que é outra lista de pares de valores-chave).
Os "Redutores" atuam nessa entrada para produzir os dados de saída.
As duas funções aparentemente funcionam isoladamente, permitindo assim que o processamento seja altamente distribuído de maneira altamente paralela, tolerante a falhas e escalável.
Limitações do Hadoop 1.0
A primeira limitação foi a exigência de MapReduce
conhecimento em programação.
Ele suportava apenas o processamento em lote, que embora seja adequado para tarefas como análise de logs, projetos de mineração de dados em larga escala, mas praticamente inadequado para outros tipos de projetos.
Uma das principais limitações foi o fato de Hadoop 1.0
estar intimamente associado à computação MapReduce
, o que significava que os fornecedores estabelecidos de gerenciamento de dados ficaram com duas opiniões:
Reescreva sua funcionalidade MapReduce
para que ela possa ser executada Hadoop
ou
Extraia HDFS
ou processe dados fora de Hadoop
.
Nenhuma das opções era viável, pois levou a ineficiências do processo causadas pela entrada e saída de dados do Hadoop
cluster.
Hadoop 2.0
In Hadoop 2.0
,HDFS
continua a ser a estrutura de armazenamento de dados.
No entanto, uma estrutura nova e independentes de gestão de recursos chamado Y et Um utro R esource N egotiater ( FIO ) foi adicionado.
Qualquer aplicativo capaz de se dividir em tarefas paralelas é suportado pelo YARN.
O YARN coordena a alocação de subtarefas do aplicativo enviado, melhorando ainda mais a flexibilidade, escalabilidade e eficiência dos aplicativos.
Ele funciona com um Application Master no lugar do Job Tracker , executando aplicativos nos recursos controlados pelo novo Node Manager .
O ApplicationMaster é capaz de executar qualquer aplicativo e não apenas MapReduce
.
Isso significa que ele não suporta apenas o processamento em lote, mas também o processamento em tempo real. MapReduce
não é mais a única opção de processamento de dados.
Vantagens do Hadoop
Ele armazena dados em sua origem a partir de. Não há estrutura imposta ao digitar ou armazenar dados. HDFS
é um esquema menos. Somente mais tarde, quando os dados precisam ser processados, a estrutura é imposta aos dados brutos.
É escalável. Hadoop
pode armazenar e distribuir conjuntos de dados muito grandes em centenas de servidores baratos que operam em paralelo.
É resistente ao fracasso. Hadoop
é tolerância a falhas. Ela pratica a replicação de dados diligentemente, o que significa que sempre que dados são enviados para qualquer nó, os mesmos dados também são replicados para outros nós no cluster, garantindo assim que, em caso de falha do nó, sempre haverá outra cópia dos dados disponíveis para uso.
É flexível. Uma das principais vantagens Hadoop
é que ele pode trabalhar com qualquer tipo de dados: estruturado, não estruturado ou semiestruturado. Além disso, o processamento é extremamente rápido Hadoop
devido ao paradigma "mover código para dados".
Ecossistema Hadoop
A seguir estão os componentes do Hadoop
ecossistema:
HDFS : Hadoop
sistema de arquivos distribuídos. Ele simplesmente armazena arquivos de dados o mais próximo possível da forma original.
HBase : É o banco de dados do Hadoop e se compara bem a um RDBMS
. Ele suporta armazenamento de dados estruturados para tabelas grandes.
Hive : Permite a análise de grandes conjuntos de dados usando uma linguagem muito semelhante ao padrão ANSI SQL
, o que implica que qualquer pessoa familiar SQL
deve poder acessar dados em um Hadoop
cluster.
Porco : É uma linguagem de fluxo de dados fácil de entender. Ajuda na análise de grandes conjuntos de dados, o que é bastante adequado Hadoop
. Pig
scripts são convertidos automaticamente em MapReduce
trabalhos pelo Pig
intérprete.
ZooKeeper : É um serviço de coordenação para aplicativos distribuídos.
Oozie : É um schedular
sistema de fluxo de trabalho para gerenciar Hadoop
tarefas do Apache .
Mahout : É uma biblioteca de aprendizado de máquina e mineração de dados escalável.
Chukwa : É um sistema de coleta de dados para gerenciar um grande sistema distribuído.
Sqoop : É usado para transferir dados em massa entre Hadoop
e armazenamentos de dados estruturados, como bancos de dados relacionais.
Ambari : É uma ferramenta baseada na Web para provisionar, gerenciar e monitorar Hadoop
clusters.
Colmeia
Hive
é uma ferramenta de infraestrutura de data warehouse para processar dados estruturados Hadoop
. Ele reside em cima de Hadoop
resumir o Big Data e facilita a consulta e a análise.
Colmeia não é
Um banco de dados relacional
Um design para o Processamento de transações on-line ( OLTP
).
Um idioma para consultas em tempo real e atualizações no nível da linha.
Recursos do Hive
Ele armazena o esquema no banco de dados e processa os dados HDFS
.
É projetado para OLAP
.
Ele fornece uma SQL
linguagem de tipo para consultas chamadas HiveQL
ou HQL
.
É mais familiar, rápido, escalável e extensível.
Arquitetura do Hive
Os seguintes componentes estão contidos na Hive Architecture:
Interface do usuário : Hive
é uma data warehouse
infraestrutura que pode criar interação entre usuário e HDFS
. As interfaces de usuário Hive
compatíveis são a interface do usuário da Web do Hive, a linha de comando do Hive e o Hive HD Insight (no Windows Server).
MetaStore : Hive
escolhe o respectivo database
servers
para armazenar o esquema ou Metadata
de tabelas, bancos de dados, colunas em uma tabela, seus tipos de dados e HDFS
mapeamento.
HiveQL Process Engine : HiveQL
é semelhante ao SQL
para consultar informações de esquema no Metastore
. É uma das substituições da abordagem tradicional para o MapReduce
programa. Em vez de escrever MapReduce
em Java
, podemos escrever uma consulta para MapReduce
e processá-lo.
Mecanismo de Exceção : A parte conjunta do HiveQL
mecanismo de processo e MapReduce
é o Hive
Mecanismo de Execução. O mecanismo de execução processa a consulta e gera resultados da mesma forma que MapReduce results
. Ele usa o sabor de MapReduce
.
HDFS ou HBase : Hadoop
sistema de arquivos distribuídos ou HBase
são as técnicas de armazenamento de dados para armazenar dados no sistema de arquivos.