HBase
 sql >> Base de Dados >  >> NoSQL >> HBase

Limitações do Hadoop, maneiras de resolver as desvantagens do Hadoop


Discutimos Recursos do Hadoop em nosso tutorial anterior do Hadoop. Agora vamos cobrir as limitações do Hadoop. Existem várias desvantagens das estruturas do Apache Hadoop.

Por exemplo, problema de arquivos pequenos, processamento lento, apenas processamento em lote, latência, problema de segurança, vulnerabilidade, sem armazenamento em cache etc.

Todas essas limitações do Hadoop serão discutidas em detalhes neste tutorial do Hadoop.

O que é Hadoop?


Apache Hadoop é uma estrutura de software de código aberto para armazenamento distribuído e processamento de uma grande quantidade de conjuntos de dados. Open source significa que está disponível gratuitamente e até podemos alterar seu código-fonte de acordo com os requisitos.

O Apache Hadoop também possibilita a execução de aplicativos em um sistema com milhares de nós. Seu sistema de arquivos distribuído oferece taxas rápidas de transferência de dados entre os nós.

Também permite que o sistema continue operando em caso de falha do nó. As principais características do Hadoop são as seguintes:
  • No Apache Hadoop, os dados estão disponíveis apesar da falha da máquina devido a muitas cópias de dados. Portanto, se alguma máquina travar, pode-se acessar os dados de outro caminho.
  • O Apache Hadoop é escalável, pois é fácil adicionar novo hardware ao nó.
  • O Hadoop é altamente tolerante a falhas, pois, por padrão, três réplicas de cada bloco são armazenadas no cluster. Portanto, se qualquer nó no cluster ficar inativo, os dados desse nó podem ser recuperados do outro nó facilmente.
  • O Apache Hadoop é executado em um cluster de hardware comum que não é muito caro.
  • No Apache Hadoop, os dados são armazenados de forma confiável no cluster, apesar da falha de hardware devido à replicação de dados no cluster.

Embora o Hadoop seja a ferramenta mais poderosa de Big Data, existem várias limitações para ele. Devido às limitações do Hadoop, o Apache Spark e o Apache Flink surgiram.

Limitações do Hadoop


Várias limitações do Apache Hadoop são fornecidas abaixo junto com sua solução-

a. Problemas com arquivos pequenos


O principal problema com o Hadoop é que ele não é adequado para dados pequenos. HDFS não tem a capacidade de suportar a leitura aleatória de pequenos devido ao seu design de alta capacidade.

Arquivos pequenos são menores que o tamanho do bloco HDFS (padrão 128 MB). Se você estiver armazenando um grande número de arquivos pequenos, o HDFS não poderá lidar com esses muitos arquivos pequenos.

Como o HDFS foi projetado para trabalhar com um pequeno número de arquivos grandes para armazenar grandes conjuntos de dados, em vez de um grande número de arquivos pequenos. Se houver muitos arquivos pequenos, o NameNode será sobrecarregado, pois armazena o namespace do HDFS.

Solução: 

Basta mesclar os arquivos pequenos para criar arquivos maiores e, em seguida, copiá-los para o HDFS.

Arquivos do Hadoop (arquivos HAR) lida com o problema de muitos arquivos pequenos. O Hadoop Archives funciona construindo um sistema de arquivos em camadas no topo do HDFS.

Com o comando help Hadoop archive, os arquivos HAR são criados; isso executa um trabalho MapReduce para compactar os arquivos que estão sendo arquivados em um pequeno número de arquivos HDFS. Ler arquivos por meio de HAR não é mais eficiente do que ler por HDFS.

Como cada acesso ao arquivo HAR requer a leitura de dois arquivos de índice, bem como a leitura do arquivo de dados, isso o tornará mais lento.

Arquivos de sequência também superam o problema de arquivos pequenos. No qual usamos o nome do arquivo como chave e o conteúdo do arquivo como valor.

Ao escrever um programa para arquivos (100 KB), podemos colocá-los em um único arquivo Sequence e depois processá-los em fluxo contínuo operando no arquivo Sequence.

O MapReduce no Hadoop pode quebrar o arquivo Sequence em partes e operar em cada parte independentemente porque o arquivo Sequence é divisível.

Ao armazenar arquivos no Hbase podemos superar o problema de arquivos pequenos. Na verdade, não estamos armazenando milhões de arquivos pequenos no HBase, mas adicionando o conteúdo binário do arquivo a uma célula.

b. Velocidade de processamento lenta


MapReduce processa uma enorme quantidade de dados. No Hadoop, o MapReduce funciona dividindo o processamento em fases:Map e Reduzir . Assim, o MapReduce requer muito tempo para realizar essas tarefas, aumentando assim a latência. Assim, reduz a velocidade de processamento.

Solução:

Pelo processamento de dados na memória, o Apache Spark supera esse problema. Assim como no processamento na memória, nenhum tempo é gasto para mover os dados/processos para dentro e para fora do disco, o que o torna mais rápido.

O Apache Spark é 100 vezes mais rápido em comparação com o MapReduce porque processa tudo na memória.

O Flink também pode superar esse problema. O Flink processa mais rápido que o Spark devido à sua arquitetura de streaming.

c. Suporte apenas para processamento em lote


O Hadoop suporta apenas processamento em lote, não é adequado para streaming de dados. Portanto, o desempenho geral é mais lento. A estrutura MapReduce não aproveita ao máximo a memória do cluster Hadoop.

Solução

O Apache Spark resolve esse problema, pois oferece suporte ao processamento de fluxo. Mas o processamento de stream do Spark não é tão eficiente quanto o Flink, pois usa processamento de microlote. O Apache Flink melhora o desempenho geral, pois fornece tempo de execução único para o streaming, bem como o processamento em lote.

d. Sem processamento em tempo real


Apache Hadoop é uma estrutura de processamento em lote. Isso significa que leva uma enorme quantidade de dados na entrada, processa e produz o resultado.

O processamento em lote é muito eficiente para processar um grande volume de dados, mas depende do tamanho dos dados que estão sendo processados ​​e do poder computacional do sistema; uma saída pode ser retardada significativamente. O Apache Hadoop não é adequado para processamento em tempo real.

Solução:

O Spark é adequado para processamento de fluxo. O processamento de vapor fornece dados de entrada/saída contínuos. Ele processa dados dentro do pequeno período de tempo.

O Flink fornece tempo de execução único para streaming e processamento em lote.

e. Processamento Iterativo


O Apache Hadoop não é muito eficiente para processamento iterativo. Como o Hadoop não é suportado, fluxo de dados cíclico (ou seja, uma cadeia de estágios em que cada saída do estágio anterior é a entrada para o próximo estágio).

Solução:

O Spark supera esse problema. Como o Apache Spark acessa dados da RAM em vez do disco. Isso melhora drasticamente o desempenho de um algoritmo iterativo que acessa o mesmo conjunto de dados repetidamente.

No Apache Spark, para processamento iterativo, cada iteração deve ser agendada e executada separadamente.

f. Latência


O MapReduce no Hadoop é mais lento porque oferece suporte a diferentes formatos, estrutura e grande quantidade de dados. No MapReduce, Map pega um conjunto de dados e o converte em outro conjunto de dados, onde um elemento individual é dividido em um par chave-valor.

Reduzir recebe a saída do mapa como e Reduzir recebe a saída do mapa como entrada e processa ainda mais. O MapReduce requer muito tempo para executar essas tarefas, aumentando assim a latência.

Solução:

O Apache Spark pode reduzir esse problema. Embora o Spark seja o sistema em lote, ele é relativamente mais rápido, pois armazena em cache grande parte dos dados de entrada na memória por RDD. O streaming de dados do Apache Flink atinge baixa latência e alta taxa de transferência.

g. Sem facilidade de uso


O desenvolvedor do MapReduce no Hadoop precisa entregar o código para cada operação, o que dificulta muito o trabalho. No Hadoop, o MapReduce não tem modo interativo, mas adicionar colmeia e porco torna o trabalho com o MapReduce um pouco mais fácil.

Solução:

O Spark superou esse problema, pois o Spark possui um modo interativo. Assim, desenvolvedores e usuários podem ter feedback intermediário para consultas e outras atividades.

Como o Spark tem muitos operadores de alto nível, é fácil programar o Spark. Pode-se também usar o Apache Flink, pois também possui operadores de alto nível.

h. Problema de segurança


O Apache Hadoop é um desafio na manutenção de aplicativos complexos. O Hadoop não tem criptografia nos níveis de armazenamento e rede, o que é um grande ponto de preocupação. O Apache Hadoop oferece suporte à autenticação Kerberos, que é difícil de gerenciar.

Solução:

O Apache Spark oferece bônus de segurança. Se você executar o Apache Spark no HDFS, ele poderá usar ACLs do HDFS e permissões de nível de arquivo.

eu. Vulnerável por Natureza


Apache Hadoop é escrito em Java. Java, é a linguagem mais popular, daí o Java mais explorado pelos cibercriminosos.

j. Sem cache


O Apache Hadoop não é eficiente para armazenamento em cache. O MapReduce não pode armazenar em cache os dados intermediários na memória para o requisito adicional e isso diminui o desempenho do Hadoop.

Solução:

Spark e Flink superam esse problema. Os dados de cache do Spark e do Flink na memória para iterações adicionais que melhoram o desempenho geral.

k. Código longo


Apache Hadoop tem 1.20.000 linhas de código. O número de linhas produz o número de bugs. Portanto, levará mais tempo para executar os programas.

Solução:

Spark e Flink são escritos em Scala e Java. Mas a implementação é em Scala, então o número de linhas de código é menor que o Hadoop. Assim, leva menos tempo para executar os programas.

Conclusão


Como resultado da limitação do Hadoop, surgiu a necessidade de Spark e Flink. Assim, torne o sistema mais amigável para jogar com uma enorme quantidade de dados.

O Apache Spark fornece processamento de dados na memória, melhorando assim a velocidade de processamento. O Flink melhora o desempenho, pois fornece tempo de execução único para o streaming, bem como o processamento em lote.

Spark oferece bônus de segurança. Portanto, é possível resolver todas essas limitações do Hadoop usando outras tecnologias de big data, como Apache Spark e Flink.

Se você encontrar outras limitações do Hadoop, informe-nos deixando um comentário em uma seção abaixo.