paint-brush
É possível migrar do Hadoop sem extrair e substituir – veja comopor@minio
3,817 leituras
3,817 leituras

É possível migrar do Hadoop sem extrair e substituir – veja como

por MinIO7m2024/05/31
Read on Terminal Reader

Muito longo; Para ler

MinIO é uma versão moderna do Hadoop que se integra ao Spark e Hive. MinIO criptografa todos os dados usando chaves por objeto, garantindo proteção robusta contra acesso não autorizado. S3a é essencial. endpoint para aplicativos que buscam fazer a transição do Hado.op, oferecendo compatibilidade com uma ampla variedade de aplicativos.
featured image - É possível migrar do Hadoop sem extrair e substituir – veja como
MinIO HackerNoon profile picture
0-item
1-item


Ainda estamos surpresos com o número de clientes que nos procuram querendo migrar do HDFS para o armazenamento de objetos moderno, como o MinIO. A essa altura, pensávamos que todos haviam feito a transição, mas todas as semanas falamos com uma organização importante e altamente técnica que decidiu fazer a transição.


Muitas vezes, nessas discussões, há elementos da sua infraestrutura que pretendem manter após a migração. Existem estruturas e softwares que surgiram do ecossistema HDFS que contam com muita adesão dos desenvolvedores e ainda têm um lugar na pilha de dados moderna. Na verdade, sempre dissemos que muitas coisas boas surgiram do ecossistema HDFS. A questão fundamental está no armazenamento e na computação estreitamente acoplados, não necessariamente com as ferramentas e serviços que vieram da era do Big Data.


Esta postagem do blog se concentrará em como você pode fazer essa migração sem destruir e substituir ferramentas e serviços que têm valor. A realidade é que, se você não modernizar sua infraestrutura, não poderá fazer os avanços em IA/ML que sua organização exige, mas não precisará jogar tudo fora para chegar lá.

Desagregação de armazenamento e computação com Spark e Hive

Já passamos por alguns estratégias para uma migração completa e substituição , que em alguns casos é o caminho a seguir. No entanto, vamos dar uma olhada em outra maneira de modernizar uma implementação do HDFS.


Esse arquitetura envolve o gerenciamento do Kubernetes Apache Faísca e contêineres Apache Hive para processamento de dados; O Spark se integra nativamente ao MinIO enquanto o Hive usa o YARN. MinIO lida com armazenamento de objetos em contêineres com estado e nesta arquitetura depende de configurações multilocatários para isolamento de dados.


Visão geral da arquitetura:

  • Nós de computação: o Kubernetes gerencia com eficiência contêineres Apache Spark e Apache Hive sem estado em nós de computação, garantindo utilização ideal de recursos e escalonamento dinâmico.


  • Camada de armazenamento: MinIO Codificação de apagamento e a proteção BitRot significa que você pode perder até metade do número de unidades e ainda assim recuperar, tudo sem a necessidade de manter as três cópias de cada bloco de dados exigido pelo Hadoop.


  • Camada de acesso: todo o acesso ao armazenamento de objetos MinIO é unificado por meio da API S3, fornecendo uma interface perfeita para interagir com os dados armazenados.


  • Camada de segurança: a segurança dos dados é fundamental. MinIO criptografa todos os dados usando chaves por objeto, garantindo proteção robusta contra acesso não autorizado.


  • Gerenciamento de identidade: MinIO Enterprise integra-se totalmente com provedores de identidade como WSO2, Keycloak, Okta, Ping Identity para permitir a autenticação de aplicativos ou usuários.


Um substituto totalmente modernizado para o Hadoop que permite que sua organização mantenha o Hive, o YARN e qualquer outro produto de dados do ecossistema Hadoop que possa ser integrado ao armazenamento de objetos, que é quase tudo na pilha de dados moderna.

Interoperabilidade na camada de acesso

S3a é um endpoint essencial para aplicativos que buscam migrar do Hadoop, oferecendo compatibilidade com uma ampla variedade de aplicativos dentro do ecossistema Hadoop. Desde 2006, back-ends de armazenamento de objetos compatíveis com S3 foram perfeitamente integrados a diversas plataformas de dados no ecossistema Hadoop como recurso padrão. Esta integração remonta à incorporação de uma implementação de cliente S3 em tecnologias emergentes.


Em todas as plataformas relacionadas ao Hadoop, a adoção do módulo hadoop-aws e aws-java-sdk-bundle é uma prática padrão, garantindo suporte robusto para a API S3. Essa abordagem padronizada facilita a transição suave de aplicativos de back-ends de armazenamento HDFS e S3. Simplesmente especificando o protocolo apropriado, os desenvolvedores podem facilmente alternar aplicativos do Hadoop para o armazenamento de objetos moderno. O esquema de protocolo para S3 é indicado por s3a://, enquanto para HDFS é denotado como hdfs://.

Benefícios da migração

É possível falar longamente sobre os benefícios da migração do Hadoop para o armazenamento de objetos moderno. Se você está lendo isso, já está ciente de que, sem a migração de plataformas legadas como o Hadoop, os avanços em IA e outros produtos de dados modernos provavelmente estarão fora de questão. A razão se resume ao desempenho e à escala.


Não há dúvida de que as cargas de trabalho modernas exigem um desempenho excepcional para competir com o volume de dados processados e a complexidade das tarefas exigidas atualmente. Quando o desempenho não é apenas uma questão de benchmarking de vaidade, mas um requisito difícil, o campo de candidatos a substitutos do Hadoop cai drasticamente .


O outro elemento que impulsiona as migrações é a escala nativa da nuvem. Quando o conceito de nuvem é menos uma localização física e mais uma modelo operacional torna-se possível fazer coisas como implantar uma pilha de dados inteira em minutos a partir de um único arquivo .yaml. Uma implementação tão rápida que faria qualquer engenheiro de Hadoop cair da cadeira.


Parte integrante desse conceito são os benefícios econômicos decorrentes da liberação da dependência do fornecedor, o que permite que uma organização escolha as melhores opções para cargas de trabalho específicas. Sem falar na dispensa de manter três cópias separadas dos dados para protegê-los, coisa do passado com replicação ativa-ativa e codificação de apagamento. Investir em tecnologia preparada para o futuro geralmente também significa que será mais fácil encontrar e recrutar profissionais talentosos para trabalhar em sua infraestrutura. As pessoas querem trabalhar em coisas que impulsionem um negócio, e não há quase nada que faça isso melhor do que dados . Juntos, esses fatores contribuem para uma pilha de dados que não é apenas mais rápida e barata, mas também mais adequada às necessidades atuais e futuras baseadas em dados.

Começando

Antes de mergulhar nas especificidades da nossa arquitetura, você precisará colocar alguns componentes em funcionamento. Para migrar do Hadoop, obviamente você precisará instalá-lo para começar. Se quiser simular essa experiência, você pode iniciar este tutorial configurando a distribuição Hortonworks do Hadoop aqui .


Caso contrário, você pode começar com as seguintes etapas de instalação:


  1. Configurar o Ambari: próximo, instalar o Ambari , o que simplificará o gerenciamento de seus serviços configurando automaticamente o YARN para você. Ambari fornece um painel fácil de usar para gerenciar serviços no ecossistema Hadoop e manter tudo funcionando perfeitamente.


  2. Instale o Apache Spark: Spark é essencial para processar dados em grande escala. Segue o instalação padrão procedimentos para colocar o Spark em funcionamento.


  3. Instale o MinIO : Dependendo do seu ambiente, você pode escolher entre duas abordagens de instalação: Kubernetes ou Gráfico do Helm .


Depois de instalar esses elementos com êxito, você pode configurar o Spark e o Hive para usar MinIO em vez de HDFS. Navegue até a UI do Ambari http://<ambari-server>:8080/ e faça login usando as credenciais padrão: username: admin, password: admin ,



No Ambari, navegue até serviços, depois HDFS e depois até o painel Configurações como na imagem abaixo. Nesta seção, você está configurando o Ambari para usar S3a com MinIO em vez de HDFS.



Role para baixo e navegue até Custom core-site . É aqui que você configurará o S3a.



 sudo pip install yq alias kv-pairify='yq ".configuration[]" | jq ".[]" | jq -r ".name + \"=\" + .value"'


A partir daqui, sua configuração dependerá da sua infraestrutura. Porém, o que está abaixo pode representar uma maneira de core-site.xml configurar S3a com MinIO rodando em 12 nós e 1,2TiB de memória.


 cat ${HADOOP_CONF_DIR}/core-site.xml | kv-pairify | grep "mapred" mapred.maxthreads.generate.mapoutput=2 # Num threads to write map outputs mapred.maxthreads.partition.closer=0 # Asynchronous map flushers mapreduce.fileoutputcommitter.algorithm.version=2 # Use the latest committer version mapreduce.job.reduce.slowstart.completedmaps=0.99 # 99% map, then reduce mapreduce.reduce.shuffle.input.buffer.percent=0.9 # Min % buffer in RAM mapreduce.reduce.shuffle.merge.percent=0.9 # Minimum % merges in RAM mapreduce.reduce.speculative=false # Disable speculation for reducing mapreduce.task.io.sort.factor=999 # Threshold before writing to drive mapreduce.task.sort.spill.percent=0.9 # Minimum % before spilling to drive


Existem algumas otimizações que podem ser exploradas verificando a documentação sobre este padrão de migração aqui , e também na documentação do Hadoop no S3 aqui e aqui .


Reinicie tudo quando estiver satisfeito com a configuração.



Você também precisará navegar até o painel de configuração do Spark2.



Role para baixo até Custom spark-defaults e adicione a seguinte propriedade para configurar com MinIO:



 spark.hadoop.fs.s3a.access.key minio spark.hadoop.fs.s3a.secret.key minio123 spark.hadoop.fs.s3a.path.style.access true spark.hadoop.fs.s3a.block.size 512M spark.hadoop.fs.s3a.buffer.dir ${hadoop.tmp.dir}/s3a spark.hadoop.fs.s3a.committer.magic.enabled false spark.hadoop.fs.s3a.committer.name directory spark.hadoop.fs.s3a.committer.staging.abort.pending.uploads true spark.hadoop.fs.s3a.committer.staging.conflict-mode append spark.hadoop.fs.s3a.committer.staging.tmp.path /tmp/staging spark.hadoop.fs.s3a.committer.staging.unique-filenames true spark.hadoop.fs.s3a.committer.threads 2048 # number of threads writing to MinIO spark.hadoop.fs.s3a.connection.establish.timeout 5000 spark.hadoop.fs.s3a.connection.maximum 8192 # maximum number of concurrent conns spark.hadoop.fs.s3a.connection.ssl.enabled false spark.hadoop.fs.s3a.connection.timeout 200000 spark.hadoop.fs.s3a.endpoint http://minio:9000 spark.hadoop.fs.s3a.fast.upload.active.blocks 2048 # number of parallel uploads spark.hadoop.fs.s3a.fast.upload.buffer disk # use disk as the buffer for uploads spark.hadoop.fs.s3a.fast.upload true # turn on fast upload mode spark.hadoop.fs.s3a.impl org.apache.hadoop.spark.hadoop.fs.s3a.S3AFileSystem spark.hadoop.fs.s3a.max.total.tasks 2048 # maximum number of parallel tasks spark.hadoop.fs.s3a.multipart.size 512M # size of each multipart chunk spark.hadoop.fs.s3a.multipart.threshold 512M # size before using multipart uploads spark.hadoop.fs.s3a.socket.recv.buffer 65536 # read socket buffer hint spark.hadoop.fs.s3a.socket.send.buffer 65536 # write socket buffer hint spark.hadoop.fs.s3a.threads.max 2048 # maximum number of threads for S3A


Reinicie tudo depois que as alterações de configuração forem aplicadas.



Navegue até o painel Hive para finalizar a configuração.



Role para baixo até Custom hive-site e adicione a seguinte propriedade:




 hive.blobstore.use.blobstore.as.scratchdir=true hive.exec.input.listing.max.threads=50 hive.load.dynamic.partitions.thread=25 hive.metastore.fshandler.threads=50 hive.mv.files.threads=40 mapreduce.input.fileinputformat.list-status.num-threads=50


Você pode encontrar mais informações de configuração de ajuste fino aqui . Reinicie tudo após as alterações de configuração terem sido feitas.



É isso, agora você pode testar sua integração.

Explore por conta própria

Esta postagem do blog descreveu uma abordagem moderna para migrar do Hadoop sem a necessidade de revisar completamente os sistemas existentes. Ao aproveitar o Kubernetes para gerenciar o Apache Spark e o Apache Hive e integrar o MinIO para armazenamento de objetos com estado, as organizações podem obter uma arquitetura equilibrada que oferece suporte ao dimensionamento dinâmico e à utilização eficiente de recursos. Essa configuração não apenas retém, mas também aprimora os recursos dos seus ambientes de processamento de dados, tornando-os mais robustos e preparados para o futuro.


Com o MinIO, você se beneficia de uma solução de armazenamento que oferece alto desempenho em hardware comum, reduz custos por meio de codificação de eliminação (eliminando a redundância da replicação de dados do Hadoop) e contorna limitações como dependência de fornecedor e a necessidade de armazenamentos de metadados baseados em Cassandra. Essas vantagens são cruciais para organizações que buscam aproveitar cargas de trabalho avançadas de IA/ML sem descartar os elementos principais de seus sistemas de dados existentes.


Sinta-se à vontade para entrar em contato para discussões mais detalhadas ou orientações específicas sobre como você pode adaptar esta estratégia de migração para atender às necessidades exclusivas da sua organização. Seja através do e-mail [email protected] ou em nossa comunidade Folga canal, estamos aqui para ajudá-lo a aproveitar ao máximo seus investimentos em infraestrutura de dados.