{"id":92508,"date":"2020-08-28T07:42:10","date_gmt":"2020-08-28T05:42:10","guid":{"rendered":"https:\/\/prohoster.info\/blog\/administrirovanie\/kak-my-organizovali-vysokoeffektivnoe-i-nedorogoe-datalake-i-pochemu-imenno-tak"},"modified":"2020-08-28T07:42:10","modified_gmt":"2020-08-28T05:42:10","slug":"kak-my-organizovali-vysokoeffektivnoe-i-nedorogoe-datalake-i-pochemu-imenno-tak","status":"publish","type":"post","link":"https:\/\/prohoster.info\/pt\/blog\/administrirovanie\/kak-my-organizovali-vysokoeffektivnoe-i-nedorogoe-datalake-i-pochemu-imenno-tak","title":{"rendered":"Como organizamos um DataLake altamente eficiente e acess\u00edvel, e por que fizemos assim","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>Vivemos em um momento incr\u00edvel, onde \u00e9 poss\u00edvel conectar rapidamente e facilmente v\u00e1rias ferramentas open-source prontas, configur\u00e1-las com \"consci\u00eancia desligada\" usando conselhos do Stack Overflow, sem se aprofundar em \"muitas letras\", e coloc\u00e1-las em opera\u00e7\u00e3o comercial. E quando for necess\u00e1rio atualizar\/expandir ou algu\u00e9m reiniciar acidentalmente algumas m\u00e1quinas, perceber que come\u00e7ou um pesadelo insistente e confuso, tudo se complicou a ponto de n\u00e3o ser mais reconhec\u00edvel, n\u00e3o h\u00e1 retorno, o futuro \u00e9 nebuloso e, em vez de programar, \u00e9 mais seguro criar abelhas e fazer queijo.<\/p>\n<p>N\u00e3o \u00e9 \u00e0 toa que colegas mais experientes, com cabelos grisalhos e cheios de bugs, contemplando a implanta\u00e7\u00e3o incrivelmente r\u00e1pida de pacotes de \"containers\" em \"cubos\" em dezenas de servidores com \"linguagens da moda\" que possuem suporte embutido para I\/O ass\u00edncrono-n\u00e3o bloqueante, sorriem modestamente. Eles silenciosamente continuam relendo \"man ps\", mergulhando at\u00e9 sangrar os olhos nos c\u00f3digos fontes do \"nginx\" e escrevendo-escrevendo-escrevendo testes unit\u00e1rios. Os colegas sabem que o mais interessante est\u00e1 por vir, quando \"tudo isso\" um dia se tornar um pesadelo no Ano Novo. E s\u00f3 um profundo entendimento da natureza unix, a tabela de estados TCP\/IP e os algoritmos b\u00e1sicos de ordena\u00e7\u00e3o-busca poder\u00e3o ajud\u00e1-los a trazer o sistema de volta \u00e0 vida \u00e0 meia-noite.<br \/>\n<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><br \/>\nAh sim, me distra\u00ed um pouco, mas espero que tenha conseguido transmitir o estado de expectativa.<br \/>\nHoje quero compartilhar nossa experi\u00eancia na implanta\u00e7\u00e3o de um stack acess\u00edvel e conveniente para DataLake, que resolve a maioria das tarefas anal\u00edticas da empresa para diferentes departamentos.<\/p>\n<p>Algum tempo atr\u00e1s, chegamos \u00e0 conclus\u00e3o de que as empresas precisam cada vez mais dos frutos tanto da an\u00e1lise de produto quanto da t\u00e9cnica (sem mencionar a cereja do bolo que \u00e9 o machine learning) e, para compreender tend\u00eancias e riscos, \u00e9 necess\u00e1rio coletar e analisar cada vez mais m\u00e9tricas.<\/p>\n<h3>An\u00e1lise t\u00e9cnica b\u00e1sica em \"Bitrix24\"<\/h3>\n<p>\nH\u00e1 alguns anos, juntamente com o lan\u00e7amento do servi\u00e7o \u00abBitrix24\u00bb, investimos tempo e recursos na cria\u00e7\u00e3o de uma plataforma anal\u00edtica simples e confi\u00e1vel, que ajudasse a identificar rapidamente problemas na infraestrutura e planejar o pr\u00f3ximo passo. \u00c9 claro que os instrumentos deveriam ser prontos, al\u00e9m de serem o mais simples e compreens\u00edveis poss\u00edvel. Como resultado, escolhemos o nagios para monitoramento e o munin para an\u00e1lise e visualiza\u00e7\u00e3o. Agora temos milhares de verifica\u00e7\u00f5es no nagios, centenas de gr\u00e1ficos no munin e os colegas utilizam isso diariamente com sucesso. As m\u00e9tricas s\u00e3o claras, os gr\u00e1ficos s\u00e3o evidentes, o sistema funciona de forma confi\u00e1vel h\u00e1 v\u00e1rios anos e novos testes e gr\u00e1ficos s\u00e3o regularmente adicionados: ao introduzirmos um novo servi\u00e7o, adicionamos v\u00e1rios testes e gr\u00e1ficos. Boa jornada.<\/p>\n<h3>Mantenha o pulso \u2014 an\u00e1lise t\u00e9cnica aprofundada<\/h3>\n<p>\nO desejo de receber informa\u00e7\u00f5es sobre problemas \u00abo mais r\u00e1pido poss\u00edvel\u00bb nos levou a experimenta\u00e7\u00f5es ativas com ferramentas simples e compreens\u00edveis \u2014 pinba e xhprof.<\/p>\n<p>Pinba nos enviava, em pacotes UDP, estat\u00edsticas sobre a velocidade de execu\u00e7\u00e3o das partes das p\u00e1ginas web em PHP, e era poss\u00edvel visualizar em tempo real, no armazenamento MySQL (o pinba vem com seu pr\u00f3prio mecanismo MySQL para an\u00e1lise r\u00e1pida de eventos), uma lista curta de problemas e reagir a eles. O xhprof, de forma autom\u00e1tica, permitia coletar gr\u00e1ficos de execu\u00e7\u00e3o das p\u00e1ginas PHP mais lentas dos clientes e analisar o que poderia ter causado isso \u2014 tranquilamente, enquanto tom\u00e1vamos um ch\u00e1 ou algo mais forte.<\/p>\n<p>Algum tempo atr\u00e1s, o conjunto de ferramentas foi enriquecido com mais um motor bastante simples e compreens\u00edvel, baseado em um algoritmo de indexa\u00e7\u00e3o reversa, brilhantemente implementado na lend\u00e1ria biblioteca Lucene \u2014 Elastic\/Kibana. A ideia simples de grava\u00e7\u00e3o multithread de documentos em um \u00edndice inverso do Lucene, com base em eventos nos logs, e a busca r\u00e1pida por eles utilizando divis\u00e3o em facetas \u2014 revelou-se, de fato, \u00fatil.<\/p>\n<p>Apesar da apar\u00eancia um tanto t\u00e9cnica das visualiza\u00e7\u00f5es no Kibana, com conceitos de baixo n\u00edvel como \u00abbucket\u00bb e uma linguagem reinventada da j\u00e1 esquecida \u00e1lgebra relacional \u2014 a ferramenta tem nos ajudado bastante nas seguintes tarefas:<\/p>\n<ul>\n<li>Quantos erros PHP ocorreram no portal Bitrix24 p1 no \u00faltimo hora e quais foram? Compreender, perdoar e corrigir rapidamente.<\/li>\n<li>Quantas chamadas de v\u00eddeo foram feitas nos portais na Alemanha nas \u00faltimas 24 horas, com que qualidade e houve problemas com o canal\/rede?<\/li>\n<li>Qu\u00e3o bem funciona a funcionalidade do sistema (nossa extens\u00e3o em C para PHP), compilada a partir do c\u00f3digo-fonte na \u00faltima atualiza\u00e7\u00e3o do servi\u00e7o e distribu\u00edda aos clientes? N\u00e3o houve segfaults?<\/li>\n<li>Os dados dos clientes est\u00e3o armazenados na mem\u00f3ria do PHP? N\u00e3o h\u00e1 erros de supera\u00e7\u00e3o da mem\u00f3ria alocada para os processos: \"out of memory\"? Encontrar e neutralizar.<\/li>\n<\/ul>\n<p>\nAqui est\u00e1 um exemplo concreto. Apesar de testes minuciosos e em m\u00faltiplos n\u00edveis, o cliente encontrou um erro frustrante e inesperado em um caso muito n\u00e3o padr\u00e3o e com dados de entrada corrompidos, o alarme soou e iniciou-se o processo de corre\u00e7\u00e3o r\u00e1pida:<\/p>\n<p><img decoding=\"async\" alt=\"Como organizamos um DataLake altamente eficiente e acess\u00edvel, e por que fizemos assim\" src=\"\/wp-content\/uploads\/2020\/08\/8a802dba41b5d1a85c0dc41dfbf8b84e.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nAl\u00e9m disso, a Kibana permite configurar alertas para eventos espec\u00edficos e, em pouco tempo, dezenas de funcion\u00e1rios de diferentes departamentos passaram a usar a ferramenta \u2014 desde suporte t\u00e9cnico e desenvolvimento at\u00e9 QA.<\/p>\n<p>A atividade de qualquer departamento dentro da empresa passou a ser monitorada e medida de forma conveniente \u2014 em vez de an\u00e1lise manual de logs nos servidores, basta configurar uma vez o processamento dos logs e seu envio para o cluster Elastic, para desfrutar, por exemplo, da visualiza\u00e7\u00e3o no dashboard Kibana do n\u00famero de gatinhos de duas cabe\u00e7as impressos em 3D no \u00faltimo m\u00eas lunar.<\/p>\n<h3>An\u00e1lise de neg\u00f3cios b\u00e1sica<\/h3>\n<p>\nTodos sabem que muitas vezes a an\u00e1lise de neg\u00f3cios nas empresas come\u00e7a com o uso extremamente intenso do, sim, sim, Excel. Mas o importante \u00e9 que n\u00e3o termine por l\u00e1. O Google Analytics na nuvem ainda acelera o processo \u2014 voc\u00ea rapidamente se acostuma ao que \u00e9 bom.<\/p>\n<p>Na nossa empresa, que se desenvolve de forma harmoniosa, come\u00e7aram a aparecer por aqui e ali \"profetas\" de um trabalho mais intenso com dados maiores. As necessidades por relat\u00f3rios mais profundos e multifacetados t\u00eam surgido regularmente e, com o esfor\u00e7o da equipe de diferentes departamentos, h\u00e1 algum tempo foi organizado uma solu\u00e7\u00e3o simples e pr\u00e1tica \u2014 uma combina\u00e7\u00e3o de ClickHouse e PowerBI.<\/p>\n<p>Por um bom tempo, essa solu\u00e7\u00e3o flex\u00edvel ajudou bastante, mas gradualmente foi percebido que o ClickHouse n\u00e3o \u00e9 el\u00e1stico e n\u00e3o pode ser tratado de qualquer maneira.<\/p>\n<p>\u00c9 importante entender bem que ClickHouse, assim como Druid, Vertica e Amazon RedShift (que \u00e9 baseado em postgres), s\u00e3o mecanismos anal\u00edticos otimizados para uma an\u00e1lise bastante conveniente (somas, agrega\u00e7\u00f5es, m\u00ednimo-m\u00e1ximo em uma coluna e um pouco de joins), pois s\u00e3o organizados para um armazenamento eficiente de colunas em tabelas relacionais, ao contr\u00e1rio do conhecido MySQL e de outros bancos de dados (orientados a linhas).<\/p>\n<p>Na ess\u00eancia, ClickHouse \u00e9 apenas um banco de dados mais espa\u00e7oso, com uma inser\u00e7\u00e3o pontual n\u00e3o muito conveniente (isso foi intencional, est\u00e1 tudo bem), mas com uma an\u00e1lise agrad\u00e1vel e um conjunto de fun\u00e7\u00f5es poderosas interessantes para trabalhar com dados. Sim, voc\u00ea pode at\u00e9 criar um cluster \u2014 mas, voc\u00ea entende que usar um microsc\u00f3pio para pregar um prego n\u00e3o \u00e9 exatamente o mais adequado, e come\u00e7amos a procurar outras solu\u00e7\u00f5es.<\/p>\n<h3>Demanda por python e analistas<\/h3>\n<p>\nEm nossa empresa, h\u00e1 muitos desenvolvedores que escrevem c\u00f3digo quase todos os dias h\u00e1 10-20 anos em PHP, JavaScript, C#, C\/C++, Java, Go, Rust, Python, Bash. Tamb\u00e9m temos muitos administradores de sistemas experientes, que j\u00e1 enfrentaram v\u00e1rias cat\u00e1strofes que parecem n\u00e3o se encaixar nas leis da estat\u00edstica (por exemplo, quando a maioria dos discos em RAID-10 \u00e9 destru\u00edda durante uma forte descarga el\u00e9trica). Nessas condi\u00e7\u00f5es, h\u00e1 muito tempo era dif\u00edcil entender o que era um 'analista em python'. Python \u00e9 como PHP, s\u00f3 que o nome \u00e9 um pouco mais longo e h\u00e1 menos vest\u00edgios de subst\u00e2ncias que alteram a consci\u00eancia no c\u00f3digo fonte do interpretador. No entanto, \u00e0 medida que novos relat\u00f3rios anal\u00edticos eram criados, os desenvolvedores experientes come\u00e7aram a perceber cada vez mais a import\u00e2ncia da especializa\u00e7\u00e3o em ferramentas como numpy, pandas, matplotlib, seaborn.<br \/>\nUm papel decisivo foi provavelmente desempenhado pelos desmaios repentinos dos funcion\u00e1rios ao ouvir as palavras 'regress\u00e3o log\u00edstica' e a demonstra\u00e7\u00e3o da constru\u00e7\u00e3o eficiente de relat\u00f3rios sobre grandes volumes de dados com a ajuda do, sim, pyspark.<\/p>\n<p>Apache Spark, sua paradigma funcional, para o qual a \u00e1lgebra relacional se encaixa perfeitamente e suas capacidades impressionaram tanto os desenvolvedores acostumados ao MySQL que a necessidade de fortalecer as fileiras com analistas experientes se tornou clara como o dia.<\/p>\n<h3>As tentativas seguintes do Apache Spark\/Hadoop de decolar e o que n\u00e3o saiu exatamente como o planejado<\/h3>\n<p>\nNo entanto, logo ficou claro que havia algo sistematicamente errado com o Spark, ou talvez apenas precis\u00e1ssemos lavar as m\u00e3os com mais frequ\u00eancia. Se as pilhas Hadoop\/MapReduce\/Lucene foram feitas por programadores suficientemente experientes, como \u00e9 \u00f3bvio se olharmos de forma cr\u00edtica o c\u00f3digo fonte em Java ou as ideias de Doug Cutting em Lucene, o Spark, de repente, foi escrito em uma linguagem ex\u00f3tica muito debatida do ponto de vista da praticidade e que atualmente n\u00e3o est\u00e1 sendo desenvolvida, o Scala. O colapso regular das computa\u00e7\u00f5es no cluster Spark devido \u00e0 aloca\u00e7\u00e3o de mem\u00f3ria il\u00f3gica e n\u00e3o muito transparente para opera\u00e7\u00f5es de redu\u00e7\u00e3o (muitos chaves chegam de uma vez) criou ao seu redor a aura de algo que ainda tem espa\u00e7o para crescer. Al\u00e9m disso, a situa\u00e7\u00e3o foi agravada pelo grande n\u00famero de portas abertas estranhas, arquivos tempor\u00e1rios crescendo nos lugares mais inesperados e uma infinidade de depend\u00eancias do jar \u2014 o que provocava nos administradores de sistema uma sensa\u00e7\u00e3o conhecida desde a inf\u00e2ncia: \u00f3dio feroz (ou talvez dever\u00edamos ter lavado as m\u00e3os com sab\u00e3o).<\/p>\n<p>N\u00f3s, como resultado, \"sobrevivemos\" a v\u00e1rios projetos anal\u00edticos internos que utilizavam ativamente o Apache Spark (incluindo Spark Streaming, Spark SQL) e o ecossistema Hadoop (e por a\u00ed vai). Apesar de termos aprendido a \"preparar\" isso de maneira razo\u00e1vel e monitor\u00e1-lo e \"ele\" praticamente parou de falhar repentinamente devido \u00e0 mudan\u00e7a no car\u00e1ter dos dados e ao desbalanceamento do hash uniforme do RDD, o desejo de pegar algo que j\u00e1 estivesse pronto, atualizado e gerenciado em algum lugar na nuvem se intensificou cada vez mais. Foi nesse momento que tentamos usar uma distribui\u00e7\u00e3o cloud ready da Amazon Web Services \u2014 <noindex><a rel=\"nofollow\" href=\"https:\/\/aws.amazon.com\/ru\/emr\/\">EMR<\/a><\/noindex> e, posteriormente, tentamos resolver tarefas j\u00e1 nela. O EMR \u00e9 o Apache Spark preparado pela Amazon com software adicional da ecossistema, aproximadamente como as distribui\u00e7\u00f5es da Cloudera\/Hortonworks.<\/p>\n<h3>\"Armazenamento de arquivos el\u00e1stico para an\u00e1lise \u2014 uma necessidade urgente\"<\/h3>\n<p>\nA experi\u00eancia de \"preparar\" Hadoop\/Spark com queimaduras em diversas partes do corpo n\u00e3o foi em v\u00e3o. Come\u00e7ou a se tornar cada vez mais clara a necessidade de criar um armazenamento de arquivos \u00fanico, acess\u00edvel e confi\u00e1vel, que fosse resistente a falhas de hardware e onde se pudesse armazenar arquivos em diferentes formatos de diferentes sistemas, realizando coletas de dados para relat\u00f3rios de maneira eficiente e em um tempo razo\u00e1vel.<\/p>\n<p>Tamb\u00e9m gostaria que a atualiza\u00e7\u00e3o do software desta plataforma n\u00e3o se tornasse um pesadelo de noite de Ano Novo, com a leitura de rastros Java de 20 p\u00e1ginas e a an\u00e1lise de quil\u00f4metros de logs detalhados do funcionamento do cluster usando o Spark History Server e uma lupa com ilumina\u00e7\u00e3o. Gostaria de ter uma ferramenta simples e transparente que n\u00e3o exigisse mergulhos regulares sob o cap\u00f4, caso o desenvolvedor parasse de executar uma consulta MapReduce padr\u00e3o devido \u00e0 falta de mem\u00f3ria do worker respons\u00e1vel pela redu\u00e7\u00e3o dos dados, devido a um algoritmo de particionamento de dados de entrada mal escolhido.<\/p>\n<h3>Amazon S3 \u2014 um candidato a DataLake?<\/h3>\n<p>\nA experi\u00eancia de trabalhar com Hadoop\/MapReduce me ensinou que precisamos de um sistema de arquivos confi\u00e1vel e escal\u00e1vel e, acima disso, workers escal\u00e1veis que venham mais perto dos dados para n\u00e3o transferir dados pela rede. Os workers devem ser capazes de ler dados em diferentes formatos, mas, preferencialmente, n\u00e3o ler informa\u00e7\u00f5es desnecess\u00e1rias e que seja poss\u00edvel armazenar os dados antecipadamente em formatos convenientes para os workers.<\/p>\n<p><b>Mais uma vez \u2014 a ideia principal.<\/b> N\u00e3o h\u00e1 desejo de \"carregar\" grandes dados em um \u00fanico motor de an\u00e1lise em cluster, que eventualmente vai se afogar e precisar\u00e1 ser shardado de forma pouco est\u00e9tica. Queremos armazenar arquivos, apenas arquivos, em um formato compreens\u00edvel e executar consultas anal\u00edticas eficazes com v\u00e1rias ferramentas, mas claras. E a quantidade de arquivos em diferentes formatos s\u00f3 vai aumentar. E \u00e9 melhor shardar os dados de entrada, n\u00e3o o motor. Precisamos de um DataLake escal\u00e1vel e universal, decidimos n\u00f3s...<\/p>\n<p>E se armazen\u00e1ssemos arquivos em um armazenamento em nuvem escal\u00e1vel e familiar para muitos, como o Amazon S3, sem nos preocuparmos em fazer nossas pr\u00f3prias misturas com o Hadoop?<\/p>\n<p>Entendido, dados pessoais \"n\u00e3o podem\", mas e outros dados, se os transferirmos e os \"usarmos de forma eficaz\"?<\/p>\n<h3>O ecossistema de an\u00e1lise de big data em cluster da Amazon Web Services \u2014 em termos muito simples<\/h3>\n<p>\nCom base na nossa experi\u00eancia com o AWS, o Apache Hadoop\/MapReduce \u00e9 amplamente utilizado l\u00e1 h\u00e1 muito tempo e de v\u00e1rias maneiras, por exemplo, no servi\u00e7o DataPipeline (invejo meus colegas, eles realmente aprenderam a us\u00e1-lo corretamente). Aqui configuramos backups de diferentes servi\u00e7os a partir de tabelas DynamoDB:<br \/>\n<img decoding=\"async\" alt=\"Como organizamos um DataLake altamente eficiente e acess\u00edvel, e por que fizemos assim\" src=\"\/wp-content\/uploads\/2020\/08\/058dc54ed032a7bf3e9e129646202440.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nE eles s\u00e3o executados regularmente em clusters integrados de Hadoop\/MapReduce como um rel\u00f3gio h\u00e1 v\u00e1rios anos. \"Configurou e esqueceu\":<\/p>\n<p><img decoding=\"async\" alt=\"Como organizamos um DataLake altamente eficiente e acess\u00edvel, e por que fizemos assim\" src=\"\/wp-content\/uploads\/2020\/08\/a6569da8cafdb96c63250bb32bf51704.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nAl\u00e9m disso, \u00e9 poss\u00edvel realizar de forma eficaz o datascience, criando notebooks Jupiter na nuvem para analistas e utilizando o AWS SageMaker para treinar e implantar modelos de IA. Veja como isso funciona para n\u00f3s:<\/p>\n<p><img decoding=\"async\" alt=\"Como organizamos um DataLake altamente eficiente e acess\u00edvel, e por que fizemos assim\" src=\"\/wp-content\/uploads\/2020\/08\/c825d979c9278a8edf8e1e747ef6def8.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nE sim, voc\u00ea pode criar um notebook na nuvem para si ou para um analista e conect\u00e1-lo a um cluster Hadoop\/Spark, fazer os c\u00e1lculos e, em seguida, \"apertar os parafusos\":<\/p>\n<p><img decoding=\"async\" alt=\"Como organizamos um DataLake altamente eficiente e acess\u00edvel, e por que fizemos assim\" src=\"\/wp-content\/uploads\/2020\/08\/73cea18c54d2a9ce8d0441463991808b.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\n\u00c9 realmente conveniente para projetos anal\u00edticos individuais e, para alguns, utilizamos com sucesso o servi\u00e7o EMR para c\u00e1lculos em grande escala e an\u00e1lises. E quanto a uma solu\u00e7\u00e3o sistem\u00e1tica para DataLake, ser\u00e1 que conseguimos? Nesse momento, est\u00e1vamos \u00e0 beira da esperan\u00e7a e do desespero, continuando a busca.<\/p>\n<h3>AWS Glue \u2013 uma vers\u00e3o equipada do Apache Spark \"potencializada\".<\/h3>\n<p>\nDescobrimos que a AWS possui uma vers\u00e3o \"pr\u00f3pria\" do stack \"Hive\/Pig\/Spark\". O papel do Hive, ou seja, o cat\u00e1logo de arquivos e seus tipos no DataLake \u00e9 desempenhado pelo servi\u00e7o \"Data catalog\", que n\u00e3o esconde sua compatibilidade com o formato Apache Hive. Nesse servi\u00e7o, voc\u00ea deve adicionar informa\u00e7\u00f5es sobre onde seus arquivos est\u00e3o e em qual formato. Os dados podem estar n\u00e3o apenas no S3, mas tamb\u00e9m em bancos de dados, mas isso n\u00e3o ser\u00e1 discutido neste post. Veja como o cat\u00e1logo de dados DataLake est\u00e1 organizado para n\u00f3s:<\/p>\n<p><img decoding=\"async\" alt=\"Como organizamos um DataLake altamente eficiente e acess\u00edvel, e por que fizemos assim\" src=\"\/wp-content\/uploads\/2020\/08\/adb45d09698fdacbf41c86bbadde8bb2.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nOs arquivos est\u00e3o registrados, \u00f3timo. Se os arquivos forem atualizados, iniciamos manualmente ou programados crawlers que atualizar\u00e3o as informa\u00e7\u00f5es no lago e as salvar\u00e3o. A partir da\u00ed, os dados do lago podem ser processados e os resultados enviados para algum lugar. No caso mais simples, exportamos tamb\u00e9m para o S3. O processamento de dados pode ser feito em qualquer lugar, mas recomenda-se configurar o processo de processamento em um cluster Apache Spark utilizando as funcionalidades avan\u00e7adas via API AWS Glue. Basicamente, voc\u00ea pode pegar o bom e velho c\u00f3digo em Python utilizando a biblioteca pyspark e configur\u00e1-lo para execu\u00e7\u00e3o em N n\u00f3s de um cluster de alguma capacidade, com monitoramento, sem precisar mexer nas entranhas do Hadoop e arrastar cont\u00eaineres de docker, ou resolver conflitos de depend\u00eancia.<\/p>\n<p><b>Mais uma vez \u2013 uma ideia simples.<\/b> N\u00e3o \u00e9 necess\u00e1rio configurar o Apache Spark, basta escrever o c\u00f3digo em Python para pyspark, test\u00e1-lo localmente na sua \u00e1rea de trabalho e, em seguida, execut\u00e1-lo em um grande cluster na nuvem, especificando onde est\u00e3o os dados de origem e onde salvar o resultado. \u00c0s vezes, isso \u00e9 necess\u00e1rio e \u00fatil, e \u00e9 assim que est\u00e1 configurado para n\u00f3s:<\/p>\n<p><img decoding=\"async\" alt=\"Como organizamos um DataLake altamente eficiente e acess\u00edvel, e por que fizemos assim\" src=\"\/wp-content\/uploads\/2020\/08\/dc03181573bb3f5cfcc3a8760bc7e07b.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nAssim, se precisar fazer algum c\u00e1lculo em um cluster Spark com dados no S3 \u2013 escreva o c\u00f3digo em python\/pyspark, teste e siga em frente para a nuvem.<\/p>\n<p>E quanto \u00e0 orquestra\u00e7\u00e3o? E se uma tarefa falhar e desaparecer? Sim, \u00e9 proposto criar um pipeline bonito no estilo Apache Pig e at\u00e9 tentamos isso, mas decidimos por enquanto usar nossa orquestra\u00e7\u00e3o profundamente personalizada em PHP e JavaScript (eu entendo, isso gera um certo disson\u00e2ncia cognitiva, mas funciona, h\u00e1 anos e sem erros).<\/p>\n<p><img decoding=\"async\" alt=\"Como organizamos um DataLake altamente eficiente e acess\u00edvel, e por que fizemos assim\" src=\"\/wp-content\/uploads\/2020\/08\/e00ed2047c5c6492e36fccc82e7278a3.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<\/p>\n<h3>O formato dos arquivos armazenados no lago \u00e9 a chave para o desempenho<\/h3>\n<p>\n\u00c9 muito, muito importante entender mais dois pontos-chave. Para que as consultas sobre os dados dos arquivos no lago sejam executadas da forma mais r\u00e1pida poss\u00edvel e o desempenho n\u00e3o degrade ao adicionar novas informa\u00e7\u00f5es, \u00e9 necess\u00e1rio:<\/p>\n<ul>\n<li>Manter as colunas dos arquivos separadas (para n\u00e3o precisar ler todas as linhas para entender o que h\u00e1 nas colunas). Para isso, adotamos o formato parquet com compress\u00e3o<\/li>\n<li>\u00c9 muito importante shardear os arquivos em pastas, na forma de: idioma, ano, m\u00eas, dia, semana. Motores que compreendem esse tipo de sharding ver\u00e3o apenas as pastas necess\u00e1rias, sem ter que escanear todos os dados.<\/li>\n<\/ul>\n<p>\nBasicamente, dessa forma, voc\u00ea apresenta os dados de origem da maneira mais eficiente para os mecanismos anal\u00edticos que podem acessar e ler seletivamente apenas as colunas necess\u00e1rias dessas pastas shardadas. N\u00e3o \u00e9 necess\u00e1rio 'carregar' dados em nenhum lugar (o armazenamento simplesmente estouraria) \u2014 apenas coloque-os de forma sensata no sistema de arquivos no formato correto. \u00c9 claro que deve ficar claro que armazenar um enorme arquivo csv no DataLake, que precisa ser lido linha por linha pelo cluster para extrair colunas \u2014 n\u00e3o \u00e9 muito sensato. Reflita sobre os dois pontos mencionados acima novamente, se ainda n\u00e3o est\u00e1 claro para que tudo isso.<\/p>\n<h3>AWS Athena \u2014 um 'g\u00eanio' da l\u00e2mpada m\u00e1gica<\/h3>\n<p>\nE aqui, ao criar o lago, nos deparamos casualmente com o Amazon Athena. De repente, ficou claro que, ao organizar adequadamente nossos enormes arquivos de log em shards e pastas no formato de colunas (parquet), \u00e9 poss\u00edvel fazer sele\u00e7\u00f5es extremamente informativas rapidamente e construir relat\u00f3rios SEM, sem um cluster Apache Spark\/Glue.<\/p>\n<p>O mecanismo Athena, que opera sobre dados no s3, \u00e9 baseado no lend\u00e1rio <noindex><a rel=\"nofollow\" href=\"https:\/\/aws.amazon.com\/ru\/big-data\/what-is-presto\/\">Presto<\/a><\/noindex> \u2014 representante da fam\u00edlia de abordagens MPP (processamento paralelo massivo) para processamento de dados, que obt\u00e9m dados onde eles est\u00e3o, de s3 e Hadoop a Cassandra e arquivos de texto comuns. Basta pedir ao Athena para executar uma consulta SQL e ent\u00e3o tudo \"funciona r\u00e1pido e automaticamente\". \u00c9 importante notar que o Athena \u00e9 \"inteligente\", ele acessa apenas as pastas shardadas necess\u00e1rias e l\u00ea apenas as colunas relevantes na consulta.<\/p>\n<p>Os pedidos ao Athena tamb\u00e9m s\u00e3o tarifados de forma interessante. Pagamos por <noindex><a rel=\"nofollow\" href=\"https:\/\/aws.amazon.com\/ru\/athena\/pricing\/\">o volume de dados escaneados<\/a><\/noindex>. Ou seja, n\u00e3o pagamos pelo n\u00famero de m\u00e1quinas no cluster por minuto, mas\u2026 pelos dados realmente escaneados em 100-500 m\u00e1quinas, apenas os necess\u00e1rios para realizar a consulta.<\/p>\n<p>E ao solicitar apenas as colunas necess\u00e1rias das pastas corretamente shardadas, descobrimos que o servi\u00e7o Athena nos custa dezenas de d\u00f3lares por m\u00eas. \u00c9 maravilhoso, quase de gra\u00e7a, em compara\u00e7\u00e3o com a an\u00e1lise em clusters!<\/p>\n<p>Aqui est\u00e1, ali\u00e1s, como shardamos nossos dados no s3:<\/p>\n<p><img decoding=\"async\" alt=\"Como organizamos um DataLake altamente eficiente e acess\u00edvel, e por que fizemos assim\" src=\"\/wp-content\/uploads\/2020\/08\/00bd9ae48c1cd13f3c4f7d32692c9209.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nComo resultado, em pouco tempo, diferentes departamentos da empresa, desde seguran\u00e7a da informa\u00e7\u00e3o at\u00e9 an\u00e1lise, come\u00e7aram a fazer pedidos ao Athena e rapidamente, em segundos, obter respostas \u00fateis de grandes dados ao longo de per\u00edodos consider\u00e1veis: meses, semestres, etc.<\/p>\n<p>Mas fomos al\u00e9m e come\u00e7amos a buscar respostas na nuvem <noindex><a rel=\"nofollow\" href=\"https:\/\/docs.aws.amazon.com\/athena\/latest\/ug\/connect-with-odbc.html\">atrav\u00e9s do driver ODBC<\/a><\/noindex>: analista na console habitual escreve uma consulta SQL que, em 100-500 m\u00e1quinas, \"por centavos\" vasculha os dados no s3 e retorna a resposta geralmente em segundos. Conveniente. E r\u00e1pido. At\u00e9 agora parece inacredit\u00e1vel.<\/p>\n<p>Como resultado, decidindo armazenar dados no s3, em um formato de coluna eficiente e com uma fragmenta\u00e7\u00e3o razo\u00e1vel dos dados por pastas\u2026 obtivemos um DataLake e um motor anal\u00edtico r\u00e1pido e barato \u2014 gratuitamente. E ele se tornou muito popular na empresa, pois entende SQL e funciona ordens de grandeza mais r\u00e1pido do que por meio do in\u00edcio\/parada\/configura\u00e7\u00e3o de clusters. \"E se o resultado \u00e9 o mesmo, por que pagar mais?\"<\/p>\n<p>Uma consulta ao Athena se parece mais ou menos com isto. Se desejado, claro, pode-se formular uma <noindex><a rel=\"nofollow\" href=\"https:\/\/prestodb.io\/docs\/0.172\/index.html\">consulta SQL bastante<\/a><\/noindex>complexa e multi-p\u00e1gina, mas vamos nos limitar a uma simples agrega\u00e7\u00e3o. Vamos ver quais c\u00f3digos de resposta o cliente teve h\u00e1 algumas semanas nos logs do servidor web e garantir que n\u00e3o h\u00e1 erros:<\/p>\n<p><img decoding=\"async\" alt=\"Como organizamos um DataLake altamente eficiente e acess\u00edvel, e por que fizemos assim\" src=\"\/wp-content\/uploads\/2020\/08\/30028991467b9e52f597faa617d374b5.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<\/p>\n<h3>Como resultado, obtemos um servi\u00e7o de \"monitoramento como servi\u00e7o\", automatizado na linha de produ\u00e7\u00e3o de integra\u00e7\u00e3o cont\u00ednua. O desenvolvedor ou testador precisa apenas definir a lista de m\u00e9tricas em um arquivo JSON, e tudo o mais acontece automaticamente. Obtemos um controle de qualidade transparente dos lan\u00e7amentos: todas as notifica\u00e7\u00f5es sobre desempenho, consumo de recursos ou regress\u00f5es arquitet\u00f4nicas.<\/h3>\n<p>\nAp\u00f3s um caminho que n\u00e3o posso dizer que foi longo, mas foi doloroso, avaliando constantemente os riscos, o n\u00edvel de complexidade e o custo de suporte, encontramos uma solu\u00e7\u00e3o para DataLake e an\u00e1lise que nos agrada tanto pela velocidade quanto pelo custo de propriedade.<\/p>\n<p>Descobrimos que construir um DataLake eficiente, r\u00e1pido e barato para as necessidades de departamentos completamente diferentes da empresa \u00e9 uma tarefa que mesmo desenvolvedores experientes, que nunca trabalharam como arquitetos e n\u00e3o sabem desenhar quadrados em quadrados com setas, podem realizar, conhecendo 50 termos da ecossistema Hadoop.<\/p>\n<p>No in\u00edcio do caminho, a cabe\u00e7a do\u00eda com a quantidade de diversos softwares, tanto abertos quanto fechados, e com a compreens\u00e3o do peso da responsabilidade para as futuras gera\u00e7\u00f5es. Comece simplesmente a construir seu DataLake com ferramentas b\u00e1sicas: nagios\/munin -&gt; elastic\/kibana -&gt; Hadoop\/Spark\/s3 ..., coletando feedback e compreendendo profundamente a f\u00edsica dos processos em andamento. O que \u00e9 complexo e obscuro, deixe para os inimigos e concorrentes.<\/p>\n<p>Se voc\u00ea n\u00e3o quer ir para a nuvem e gosta de manter, atualizar e corrigir projetos abertos, pode construir uma estrutura semelhante \u00e0 nossa localmente, em m\u00e1quinas de escrit\u00f3rio baratas com Hadoop e Presto em cima. O principal \u00e9 n\u00e3o parar e seguir em frente, contar, buscar solu\u00e7\u00f5es simples e claras, e tudo dar\u00e1 certo! Boa sorte a todos e at\u00e9 a pr\u00f3xima!<br \/>\n<br \/>Fonte: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/bitrix\/blog\/516374\/\">habr.com<\/a> <\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u041c\u044b \u0436\u0438\u0432\u0435\u043c \u0432 \u0443\u0434\u0438\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0435 \u0432\u0440\u0435\u043c\u044f, \u043a\u043e\u0433\u0434\u0430 \u043c\u043e\u0436\u043d\u043e \u0431\u044b\u0441\u0442\u0440\u043e \u0438 \u043f\u0440\u043e\u0441\u0442\u043e \u0441\u043e\u0441\u0442\u044b\u043a\u043e\u0432\u0430\u0442\u044c \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0433\u043e\u0442\u043e\u0432\u044b\u0445 \u043e\u0442\u043a\u0440\u044b\u0442\u044b\u0445 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u043e\u0432, \u043d\u0430\u0441\u0442\u0440\u043e\u0438\u0442\u044c \u0438\u0445 \u0441 \u00ab\u043e\u0442\u043a\u043b\u044e\u0447\u0435\u043d\u043d\u044b\u043c \u0441\u043e\u0437\u043d\u0430\u043d\u0438\u0435\u043c\u00bb \u043f\u043e \u0441\u043e\u0432\u0435\u0442\u0430\u043c stackoverflow, \u043d\u0435 \u0432\u043d\u0438\u043a\u0430\u044f \u0432 \u00ab\u043c\u043d\u043e\u0433\u043e\u0431\u0443\u043a\u0432\u00bb, \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u0432 \u043a\u043e\u043c\u043c\u0435\u0440\u0447\u0435\u0441\u043a\u0443\u044e \u044d\u043a\u0441\u043f\u043b\u0443\u0430\u0442\u0430\u0446\u0438\u044e. \u0410 \u043a\u043e\u0433\u0434\u0430 \u043d\u0443\u0436\u043d\u043e \u0431\u0443\u0434\u0435\u0442 \u043e\u0431\u043d\u043e\u0432\u043b\u044f\u0442\u044c\u0441\u044f\/\u0440\u0430\u0441\u0448\u0438\u0440\u044f\u0442\u044c\u0441\u044f \u0438\u043b\u0438 \u043a\u0442\u043e-\u0442\u043e \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u043e \u043f\u0435\u0440\u0435\u0437\u0430\u0433\u0440\u0443\u0437\u0438\u0442 \u043f\u0430\u0440\u0443 \u043c\u0430\u0448\u0438\u043d \u2014 \u043e\u0441\u043e\u0437\u043d\u0430\u0442\u044c, \u0447\u0442\u043e \u043d\u0430\u0447\u0430\u043b\u0441\u044f \u043a\u0430\u043a\u043e\u0439-\u0442\u043e \u043d\u0430\u0432\u044f\u0437\u0447\u0438\u0432\u044b\u0439 \u0434\u0443\u0440\u043d\u043e\u0439 \u0441\u043e\u043d \u043d\u0430\u044f\u0432\u0443, \u0432\u0441\u0435 \u0440\u0435\u0437\u043a\u043e \u0443\u0441\u043b\u043e\u0436\u043d\u0438\u043b\u043e\u0441\u044c \u0434\u043e [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":92509,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[688],"tags":[],"class_list":["post-92508","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-administrirovanie"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 5.0.3 - aioseo.com -->\n\t<meta name=\"description\" content=\"\u041c\u044b \u0436\u0438\u0432\u0435\u043c \u0432 \u0443\u0434\u0438\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0435 \u0432\u0440\u0435\u043c\u044f, \u043a\u043e\u0433\u0434\u0430 \u043c\u043e\u0436\u043d\u043e \u0431\u044b\u0441\u0442\u0440\u043e \u0438 \u043f\u0440\u043e\u0441\u0442\u043e \u0441\u043e\u0441\u0442\u044b\u043a\u043e\u0432\u0430\u0442\u044c \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0433\u043e\u0442\u043e\u0432\u044b\u0445 \u043e\u0442\u043a\u0440\u044b\u0442\u044b\u0445 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u043e\u0432, \u043d\u0430\u0441\u0442\u0440\u043e\u0438\u0442\u044c \u0438\u0445 \u0441 \u00ab\u043e\u0442\u043a\u043b\u044e\u0447\u0435\u043d\u043d\u044b\u043c \u0441\u043e\u0437\u043d\u0430\u043d\u0438\u0435\u043c\u00bb \u043f\u043e \u0441\u043e\u0432\u0435\u0442\u0430\u043c stackoverflow, \u043d\u0435 \u0432\u043d\u0438\u043a\u0430\u044f \u0432 \u00ab\u043c\u043d\u043e\u0433\u043e\u0431\u0443\u043a\u0432\u00bb, \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u0432.\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Yuri Gagarin\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/prohoster.info\/pt\/blog\/administrirovanie\/kak-my-organizovali-vysokoeffektivnoe-i-nedorogoe-datalake-i-pochemu-imenno-tak\" \/>\n\t\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.3\" \/>\n\t\t<meta property=\"og:locale\" content=\"pt_PT\" \/>\n\t\t<meta property=\"og:site_name\" content=\"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"\ud83e\udd47\u041a\u0430\u043a \u043c\u044b \u043e\u0440\u0433\u0430\u043d\u0438\u0437\u043e\u0432\u0430\u043b\u0438 \u0432\u044b\u0441\u043e\u043a\u043e\u044d\u0444\u0444\u0435\u043a\u0442\u0438\u0432\u043d\u043e\u0435 \u0438 \u043d\u0435\u0434\u043e\u0440\u043e\u0433\u043e\u0435 DataLake \u0438 \u043f\u043e\u0447\u0435\u043c\u0443 \u0438\u043c\u0435\u043d\u043d\u043e \u0442\u0430\u043a | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u041c\u044b \u0436\u0438\u0432\u0435\u043c \u0432 \u0443\u0434\u0438\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0435 \u0432\u0440\u0435\u043c\u044f, \u043a\u043e\u0433\u0434\u0430 \u043c\u043e\u0436\u043d\u043e \u0431\u044b\u0441\u0442\u0440\u043e \u0438 \u043f\u0440\u043e\u0441\u0442\u043e \u0441\u043e\u0441\u0442\u044b\u043a\u043e\u0432\u0430\u0442\u044c \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0433\u043e\u0442\u043e\u0432\u044b\u0445 \u043e\u0442\u043a\u0440\u044b\u0442\u044b\u0445 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u043e\u0432, \u043d\u0430\u0441\u0442\u0440\u043e\u0438\u0442\u044c \u0438\u0445 \u0441 \u00ab\u043e\u0442\u043a\u043b\u044e\u0447\u0435\u043d\u043d\u044b\u043c \u0441\u043e\u0437\u043d\u0430\u043d\u0438\u0435\u043c\u00bb \u043f\u043e \u0441\u043e\u0432\u0435\u0442\u0430\u043c stackoverflow, \u043d\u0435 \u0432\u043d\u0438\u043a\u0430\u044f \u0432 \u00ab\u043c\u043d\u043e\u0433\u043e\u0431\u0443\u043a\u0432\u00bb, \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u0432.\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/pt\/blog\/administrirovanie\/kak-my-organizovali-vysokoeffektivnoe-i-nedorogoe-datalake-i-pochemu-imenno-tak\" \/>\n\t\t<meta property=\"og:image\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:secure_url\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:width\" content=\"350\" \/>\n\t\t<meta property=\"og:image:height\" content=\"350\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2020-08-28T05:42:10+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2020-08-28T05:42:10+00:00\" \/>\n\t\t<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<meta property=\"article:author\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"\ud83e\udd47Como organizamos um DataLake altamente eficiente e de baixo custo e por que assim | ProHoster","description":"Vivemos em um tempo surpreendente, quando \u00e9 poss\u00edvel conectar rapidamente e facilmente v\u00e1rias ferramentas abertas prontas, configur\u00e1-las com 'consci\u00eancia desligada' seguindo as dicas do stackoverflow, sem se aprofundar em 'multiletras', e colocar para funcionar.","canonical_url":"https:\/\/prohoster.info\/pt\/blog\/administrirovanie\/kak-my-organizovali-vysokoeffektivnoe-i-nedorogoe-datalake-i-pochemu-imenno-tak","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"pt_PT","og:site_name":"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b","og:type":"article","og:title":"\ud83e\udd47\u041a\u0430\u043a \u043c\u044b \u043e\u0440\u0433\u0430\u043d\u0438\u0437\u043e\u0432\u0430\u043b\u0438 \u0432\u044b\u0441\u043e\u043a\u043e\u044d\u0444\u0444\u0435\u043a\u0442\u0438\u0432\u043d\u043e\u0435 \u0438 \u043d\u0435\u0434\u043e\u0440\u043e\u0433\u043e\u0435 DataLake \u0438 \u043f\u043e\u0447\u0435\u043c\u0443 \u0438\u043c\u0435\u043d\u043d\u043e \u0442\u0430\u043a | ProHoster","og:description":"\u041c\u044b \u0436\u0438\u0432\u0435\u043c \u0432 \u0443\u0434\u0438\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0435 \u0432\u0440\u0435\u043c\u044f, \u043a\u043e\u0433\u0434\u0430 \u043c\u043e\u0436\u043d\u043e \u0431\u044b\u0441\u0442\u0440\u043e \u0438 \u043f\u0440\u043e\u0441\u0442\u043e \u0441\u043e\u0441\u0442\u044b\u043a\u043e\u0432\u0430\u0442\u044c \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0433\u043e\u0442\u043e\u0432\u044b\u0445 \u043e\u0442\u043a\u0440\u044b\u0442\u044b\u0445 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u043e\u0432, \u043d\u0430\u0441\u0442\u0440\u043e\u0438\u0442\u044c \u0438\u0445 \u0441 \u00ab\u043e\u0442\u043a\u043b\u044e\u0447\u0435\u043d\u043d\u044b\u043c \u0441\u043e\u0437\u043d\u0430\u043d\u0438\u0435\u043c\u00bb \u043f\u043e \u0441\u043e\u0432\u0435\u0442\u0430\u043c stackoverflow, \u043d\u0435 \u0432\u043d\u0438\u043a\u0430\u044f \u0432 \u00ab\u043c\u043d\u043e\u0433\u043e\u0431\u0443\u043a\u0432\u00bb, \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u0432.","og:url":"https:\/\/prohoster.info\/pt\/blog\/administrirovanie\/kak-my-organizovali-vysokoeffektivnoe-i-nedorogoe-datalake-i-pochemu-imenno-tak","og:image":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:secure_url":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:width":350,"og:image:height":350,"article:published_time":"2020-08-28T05:42:10+00:00","article:modified_time":"2020-08-28T05:42:10+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"92508","title":null,"description":null,"keywords":null,"keyphrases":null,"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":null,"og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"","isEnabled":true},"graphs":[]},"schema_type":null,"schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":null,"robots_max_videopreview":null,"robots_max_imagepreview":"large","priority":null,"frequency":null,"local_seo":null,"seo_analyzer_scan_date":null,"breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-02-28 12:07:39","updated":"2022-10-01 09:50:53","focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/posts\/92508","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/comments?post=92508"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/posts\/92508\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/media\/92509"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/media?parent=92508"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/categories?post=92508"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/tags?post=92508"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}