O software Apache Hadoop é um framework de código aberto que permite o armazenamento e processamento distribuídos de grandes conjuntos de dados em clusters de computadores usando modelos de programação simples. O Hadoop foi projetado para ser escalonado verticalmente de um único computador para milhares de computadores em cluster, com cada máquina oferecendo computação e armazenamento locais. Dessa forma, o Hadoop pode armazenar e processar com eficiência grandes conjuntos de dados, variando em tamanho de gigabytes a petabytes de dados.
Saiba como usar o Dataproc para executar clusters do Apache Hadoop, no Google Cloud, de maneira mais simples, integrada e econômica.
O Hadoop tem suas origens na era inicial da World Wide Web. À medida que a Web cresceu para milhões e bilhões de páginas, a tarefa de pesquisar e retornar resultados de pesquisa tornou-se um dos desafios mais importantes. Startups como Google, Yahoo e AltaVista começaram a criar estruturas para automatizar os resultados de pesquisa. Um projeto chamado Nutch foi construído pelos cientistas da computação Doug Cutting e Mike Cafarella com base no trabalho inicial do Google no MapReduce (mais sobre isso posteriormente) e no Google File System. No final, o Nutch foi transferido para a base de software de código aberto Apache e dividido entre Nutch e Hadoop. Yahoo, onde a Cutting começou a trabalhar em 2006, abriu o código do Hadoop em 2008.
Embora o Hadoop seja às vezes chamado de Plataforma de Alta Disponibilidade Orientada a Objeto Distribuído, foi originalmente batizado em homenagem ao elefante-brinquedo do filho de Cutting.
O Hadoop é um framework de código aberto baseado em Java que gerencia o armazenamento e o processamento de grandes quantidades de dados para aplicativos. O Hadoop usa armazenamento distribuído e processamento paralelo para lidar com jobs de Big Data e análise, dividindo as cargas de trabalho em cargas de trabalho menores que podem ser executadas ao mesmo tempo.
Quatro módulos compreendem o framework principal do Hadoop e funcionam coletivamente para formar o ecossistema Hadoop:
Hadoop Distributed File System (HDFS): como o componente principal do ecossistema Hadoop, o HDFS é um sistema de arquivos distribuído em que nós individuais do Hadoop operam em dados que residem no armazenamento local. Isso remove a latência da rede, fornecendo acesso de alta capacidade aos dados do aplicativo. Além disso, os administradores não precisam definir esquemas antecipadamente.
Yet Another Resource Negotiator (YARN): o YARN é uma plataforma de gerenciamento de recursos responsável por gerenciar recursos de computação em clusters e usá-los para programar os aplicativos dos usuários. Ele realiza programação e alocação de recursos em todo o sistema Hadoop.
MapReduce: o MapReduce é um modelo de programação para processamento de dados em grande escala. No modelo MapReduce, subconjuntos de conjuntos de dados maiores e instruções para processar os subconjuntos são enviados para vários nós diferentes, onde cada subconjunto é processado por um nó em paralelo com outros jobs de processamento. Após o processamento dos resultados, os subconjuntos individuais são combinados em um conjunto de dados menor e mais gerenciável.
Hadoop Common: o Hadoop Common inclui as bibliotecas e utilitários usados e compartilhados por outros módulos do Hadoop.
Além de HDFS, YARN e MapReduce, todo o ecossistema de código aberto Hadoop continua a crescer e inclui muitas ferramentas e aplicativos para ajudar a coletar, armazenar, processar, analisar e gerenciar Big Data. Eles incluem Apache Pig, Apache Hive, Apache HBase, Apache Spark, Presto e Apache Zeppelin.
O Hadoop permite a distribuição de conjuntos de dados em um cluster de hardware comum. O processamento é realizado em paralelo em vários servidores ao mesmo tempo.
Os clientes de software inserem dados no Hadoop O HDFS lida com metadados e o sistema de arquivos distribuídos. Depois, o MapReduce processa e converte os dados. Por fim, o YARN divide os jobs no cluster de computação.
Todos os módulos do Hadoop são projetados com a suposição fundamental de que as falhas de hardware de máquinas individuais ou racks de máquinas são comuns e devem ser tratadas automaticamente no software pelo framework.
Escalonabilidade
O Hadoop é uma das principais ferramentas para armazenar e processar grandes quantidades de dados rapidamente. Isso é feito usando um modelo de computação distribuída que permite o processamento rápido de dados que podem ser escalonados rapidamente adicionando nós de computação.
Baixo custo
Como um framework de código aberto que pode ser executado em hardware comum e tem um grande ecossistema de ferramentas, o Hadoop é uma opção de baixo custo para o armazenamento e gerenciamento de Big Data.
Flexibilidade
O Hadoop permite flexibilidade no armazenamento de dados, já que os dados não exigem pré-processamento antes de armazená-los, o que significa que uma organização pode armazenar quantos dados quiser para depois usá-los mais tarde.
Resiliência
Por ser um modelo de computação distribuída, o Hadoop permite tolerância a falhas e resiliência do sistema, o que significa que, se um dos nós de hardware falhar, os jobs serão redirecionados para outros nós. Os dados armazenados em um cluster Hadoop são replicados em outros nós dentro do sistema, para evitar a possibilidade de falha de hardware ou software.
Como um sistema com muitos arquivos, o MapReduce pode ser difícil de utilizar para trabalhos complexos, como tarefas analíticas interativas. As funções MapReduce também precisam ser escritas em Java e podem exigir uma curva de aprendizado muito íngreme. O ecossistema do MapReduce é bastante grande, com muitos componentes para diferentes funções que podem dificultar a determinação das ferramentas a serem usadas.
Sensibilidade e proteção de dados podem ser problemas, já que o Hadoop lida com conjuntos de dados tão grandes. Um ecossistema de ferramentas de autenticação, criptografia, auditoria e provisionamento surgiu para ajudar os desenvolvedores a proteger os dados no Hadoop.
O Hadoop não tem muitas ferramentas robustas de governança e gerenciamento de dados, nem para qualidade e padronização de dados.
Como muitas áreas da programação, o Hadoop tem uma lacuna de talentos reconhecida. Encontrar desenvolvedores com as habilidades necessárias combinadas em Java para programar MapReduce, sistemas operacionais e hardware pode ser difícil. Além disso, o MapReduce tem uma curva de aprendizado elevada, o que dificulta a atualização das práticas recomendadas e do ecossistema de novos programadores.
A empresa de pesquisa IDC estimou que 62, 4 zettabytes de dados foram criados ou replicados em 2020, impulsionados pela Internet das Coisas, pelas mídias sociais, pela computação de borda e por dados criados na nuvem. A empresa previu que o crescimento dos dados de 2020 a 2025 era esperado de 23% ao ano. Embora nem todos esses dados sejam salvos (eles são excluídos após o consumo ou substituídos), as necessidades de dados no mundo continuam a crescer.
O Hadoop tem um grande ecossistema de ferramentas de código aberto que podem aumentar e ampliar os recursos do módulo principal. Algumas das principais ferramentas de software usadas com o Hadoop incluem:
Apache Hive:data warehouse em que os programadores podem trabalhar com dados no HDFS usando uma linguagem de consulta chamada HiveQL, semelhante à SQL
Apache HBase:um banco de dados distribuído não relacional de código aberto que geralmente é pareado com o Hadoop
Apache Pig:ferramenta usada como uma camada de abstração sobre MapReduce para analisar grandes conjuntos de dados e ativar funções como filtrar, classificar, carregar e participar
Apache Impala:mecanismo de consulta SQL de código aberto com processamento massivamente paralelo e frequentemente usado com o Hadoop
Apache Sqoop:aplicativo de interface de linha de comando para transferir dados em massa de maneira eficiente entre bancos de dados relacionais e o Hadoop
Apache ZooKeeper:um servidor de código aberto que permite a coordenação distribuída confiável no Hadoop; um serviço para "manter informações de configuração, nomear, fornecer sincronização distribuída e fornecer serviços de grupo"
Apache Oozie: um programador de fluxo de trabalho para jobs do Hadoop
Veja a seguir alguns casos de uso comuns para Apache Hadoop:
Analytics e Big Data
Uma ampla variedade de empresas e organizações usam o Hadoop para pesquisa, processamento de dados de produção e análises que exigem o processamento de terabytes ou petabytes de Big Data, armazenamento de diversos conjuntos de dados e processamento paralelo de dados.
Armazenamento e arquivamento de dados
Como o Hadoop permite o armazenamento em massa em hardware comum, ele é uma opção de armazenamento de baixo custo para todos os tipos de dados, como transações, streams de cliques ou dados de sensores e máquinas.
Data lakes
Como o Hadoop pode ajudar a armazenar dados sem pré-processamento, ele pode ser usado para complementar data lakes, que armazenam grandes quantidades de dados não refinados.
Análise de mercado
Os departamentos de marketing costumam usar o Hadoop para armazenar e analisar dados de gestão de relacionamento com o cliente (CRM).
Gerenciamento de riscos
Bancos, seguradoras e outras empresas de serviços financeiros usam o Hadoop para criar modelos de análise e gerenciamento de risco.
IA e machine learning
Os ecossistemas Hadoop ajudam no processamento de dados e operações de treinamento de modelos para aplicativos de machine learning.
Comece a criar no Google Cloud com US$ 300 em créditos e mais de 20 produtos do programa Sempre gratuito.