Mongo big data
Por: pqrebeca • 6/5/2015 • Trabalho acadêmico • 1.615 Palavras (7 Páginas) • 443 Visualizações
Nos últimos anos, tem havido uma explosão de dados. A IDC prevê que o universo digital vai crescer para 2,7 zettabytes em 2012, um aumento de 48% a partir de 2011. Em 2015, esse número deverá crescer para 8 zettabytes de dados. 1 Zettabyte = 1.000.000.000.000.000.000.000 bytes. Mais da metade disso são os dados não estruturados a partir de redes sociais, dispositivos móveis, aplicações web e outras fontes similares. Os sistemas tradicionais de RDBMS são soluções de armazenamento de dados que foram concebidas décadas atrás. Naquela época, a maioria dos dados foi estruturado e tinha um formato diferente do que é hoje. Precisamos de soluções que abordam problemas de Big Data e foram concebidos com base em recentes mudanças na natureza dos dados.
Há muitas soluções que abordam o problema de Big Data. Algumas destas soluções são ajustes e / ou hacks ao redor soluções RDBMS padrão. Alguns são estruturas de processamento de dados independentes, soluções de armazenamento de dados ou ambos. Existe um site que lista muitos deles.
De acordo com a Jaspersoft, existem duas tecnologias de liderança neste novo campo. Primeiro é o Apache Hadoop, uma estrutura que permite o processamento distribuído de grandes conjuntos de dados utilizando um modelo de programação simples. O outro é o MongoDB, um NoSQL escalável, banco de dados distribuído open source. Ambas as soluções têm seus pontos fortes, pontos fracos e características únicas.
MongoDB e Hadoop são sistemas fundamentalmente diferentes. MongoDB é um banco de dados enquanto Hadoop é uma estrutura de processamento e análise de dados. MongoDB incide sobre armazenamento e recuperação eficiente de dados Hadoop enquanto se concentra em processamento de dados usando MapReduce. Apesar dessa diferença básica, ambas as tecnologias têm uma funcionalidade semelhante. MongoDB tem o seu próprio framework e o Hadoop MapReduce tem o HBase. HBase é um banco de dados escalável semelhante ao MongoDB.
O principal defeito em Hadoop é que ele tem um único ponto de falha, isto é, a "NameNode". Se o NameNode vai para baixo, todo o sistema torna-se indisponível. Existem algumas soluções para este que envolvem a restauração manualmente o NameNode. Independentemente disso, o ponto único de falha existe. MongoDB não tem tal ponto único de falha. Se em algum ponto do tempo, uma das primárias, config-servidores, ou nós vai para baixo, há um recurso replicado que pode assumir a responsabilidade do sistema automaticamente.
MongoDB suporta consultas ricos, como sistemas RDBMS tradicionais e é escrito em um shell JavaScript padrão. Hadoop tem duas componentes diferentes para escrever MapReduce (MR) código, Pig e Hive. Pig é uma linguagem de scripting (semelhante ao Python, Perl) que gera código MR, enquanto Hive é uma linguagem SQL-like mais. Hive é usado principalmente para estruturar os dados e fornece um rico conjunto de consultas. Dados tem que ser em JSON ou CSV a ser importado para o MongoDB. Hadoop, por outro lado pode aceitar dados em praticamente qualquer formato. Estruturas de dados Hadoop usando Hive, mas pode lidar com dados não estruturados facilmente usando Pig. Com a ajuda do Apache Sqoop, Pig pode até mesmo traduzir entre RDBMS e Hadoop.
MongoDB (escrito em C ++) gerencia a memória mais custo-eficiente do que HBase do Hadoop (escrito em Java). Enquanto Java usa o Garbage Collection (GC), em teoria, ser tão CPU / hora eficiente como memória não gerenciado, ele requer 5-10x tanta memória para fazê-lo. Na prática, há um custo de desempenho grande para GC sobre esses tipos de sistemas de grande escala distribuída. Ambos os sistemas também ter uma abordagem diferente para a utilização do espaço. MongoDB pré-aloca espaço para armazenamento, melhorando o desempenho, mas o desperdício de espaço. Hadoop otimiza o uso do espaço, mas acaba com menor desempenho de gravação em comparação com MongoDB.
Hadoop não é um produto único, mas sim uma família de software. Seus componentes comuns consistem no seguinte:
• Pig, uma linguagem de script usado para escrever rapidamente o código MapReduce para lidar com fontes não estruturadas
• Hive, utilizado para facilitar a estrutura de dados
• HCatalog, usado para fornecer inter-operatability entre estes sistemas internos (15)
• HBase, que é essencialmente um banco de dados construído em cima do Hadoop
• HDFS, o sistema de arquivo real para o Hadoop. (16)
MongoDB é um produto independente com binários suportados. A curva de aprendizagem para MongoDB é geralmente mais baixa do que a do Hadoop. Recentemente, tem havido muita conversa sobre segurança com os bancos de dados NoSQL. Ambos MongoDB e Hadoop tem segurança básica. MongoDB tem autenticação simples e hash MD5 e Hadoop oferta segurança bastante rudimentar em suas várias estruturas. Esta não é uma falha. NoSQL bases de dados como MongoDB nunca foram projetados para lidar com a segurança, eles foram projetados para lidar eficientemente com Big Data que fazem efetivamente. É simples de implementar a segurança em seu aplicativo em vez de esperar que a partir de seus dados solução.
Para processamento de dados e análise de dados não há quase nenhuma tecnologia, Open Source ou não, que bate Hadoop. Hadoop foi projetado especificamente para resolver este problema e, assim, ele contém todos os componentes necessários para processar rapidamente terabytes para petabytes de informações. Escrever código MapReduce no Hadoop é elementar. Pig é fácil de aprender e torna mais simples de escrever funções definidas pelo usuário. MongoDB tem seu próprio quadro MapReduce, que, embora abaixo da média para Hadoop, faz bem o trabalho. Quando tudo se resume a números absolutos, o Hadoop está à frente. Yahoo tem um cluster Hadoop com 4000 nós e está com o objetivo de testar um com 10000 nós em breve. MongoDB é normalmente usado em clusters com cerca de 30-50 cacos e um cluster de 100 caco em fase de testes. Tipicamente, MongoDB é utilizado com sistemas de menos do que cerca de 5 TB de dados. Hadoop, por outro lado, tem sido utilizado para sistemas maiores do que 100 TB, incluindo os sistemas que contêm petabytes de dados.
Há vários casos de uso de ambos os sistemas.
Hadoop
• Processamento de Log (melhor caso de uso) - Os arquivos de log são geralmente muito grande e normalmente há muitos deles. Isso cria enormes quantidades de dados. Uma única máquina pode não ser capaz de processá-los de forma eficiente. Hadoop é a melhor resposta para este problema; dividindo o log em pedaços menores e viáveis atribuindo-os a resultados trabalhadores em processamento muito rápido.
• ETL - para dados não estruturados de streaming em tempo real, digamos, de uma aplicação web, Hadoop é uma boa escolha para estruturar os dados e armazená-lo. Além disso, o Hadoop fornece maneiras de dados previamente a estruturação-processo de pré.
...