Índice:
Vídeo: RHadoop - Integrating R with Hadoop | How to Integrate R, Hadoop | R Programming Tutorial | Edureka 2024
No início, grandes dados e R não eram amigos naturais. A programação R exige que todos os objetos sejam carregados na memória principal de uma única máquina. As limitações desta arquitetura são rapidamente percebidas quando grandes dados se tornam parte da equação.
Em contraste, sistemas de arquivos distribuídos, como Hadoop, estão faltando técnicas estatísticas fortes, mas são ideais para escalar operações e tarefas complexas. Soluções de dimensionamento vertical - exigindo investimentos em hardware de supercomputando caro - muitas vezes não podem competir com o retorno de custo-valor oferecido por clusters de hardware distribuídos e de mercadorias.
Para se adequar às limitações da memória R em memória, em uma única máquina, os cientistas de dados geralmente tiveram que restringir a análise a apenas um subconjunto dos dados de amostra disponíveis. Antes de uma integração mais profunda com o Hadoop, os programadores de linguagem R ofereceram uma estratégia de dimensionamento para superar os desafios em memória colocados por grandes conjuntos de dados em máquinas únicas.
Isto foi conseguido usando sistemas de passagem de mensagens e paginação. Esta técnica é capaz de facilitar o trabalho através de conjuntos de dados muito grandes para armazenar na memória principal simultaneamente; no entanto, sua abordagem de programação de baixo nível apresenta uma curva de aprendizado íngreme para aqueles que não estão familiarizados com paradigmas de programação paralela.
As abordagens alternativas buscam integrar as capacidades estatísticas da R com os clusters distribuídos da Hadoop de duas maneiras: interface com linguagens de consulta SQL e integração com Hadoop Streaming. Com o primeiro, o objetivo é aproveitar as plataformas de armazenamento de dados SQL existentes, como a Hive and Pig. Esses esquemas simplificam a programação do trabalho Hadoop usando instruções de estilo SQL para fornecer programação de alto nível para a realização de trabalhos estatísticos sobre dados Hadoop.
Para os programadores que desejam programar trabalhos MapReduce em idiomas (incluindo R) diferentes de Java, uma segunda opção é fazer uso da API de streaming do Hadoop. Os trabalhos MapReduce enviados pelo usuário sofrem transformações de dados com a ajuda de fluxos padrão e serialização UNIX, garantindo a entrada compatível com Java para o Hadoop - independentemente do idioma originalmente inserido pelo programador.
Os desenvolvedores continuam a explorar várias estratégias para alavancar a capacidade de computação distribuída do MapReduce e a capacidade de armazenamento quase infinita do HDFS de formas que podem ser exploradas por R.
A integração do Hadoop com R está em andamento, com ofertas disponíveis da IBM (Big R como parte do BigInsights) e Revolution Analytics (Revolution R Enterprise). Soluções de ponte que integram programação de alto nível e consultas de idiomas com Hadoop, como RHive e RHadoop, também estão disponíveis.
Fundamentalmente, cada sistema tem como objetivo fornecer as capacidades analíticas profundas do idioma R para conjuntos de dados muito maiores.
RHive
A estrutura RHive serve como uma ponte entre o idioma R e a colméia. A RHive entrega as ricas bibliotecas estatísticas e algoritmos de R aos dados armazenados no Hadoop, estendendo a linguagem de consulta semelhante a SQL da Hive (HiveQL) com funções específicas de R. Através das funções RHive, você pode usar o HiveQL para aplicar modelos estatísticos R aos dados em seu cluster Hadoop que você catalogou usando o Hive.
RHadoop
Outra estrutura de código aberto disponível para programadores R é o RHadoop, uma coleção de pacotes destinados a ajudar a gerenciar a distribuição e análise de dados com o Hadoop. Três pacotes de notas - rmr2, rhdfs e rhbase - fornecem a maioria das funcionalidades do RHadoop:
-
rmr2: O pacote rmr2 suporta a tradução do idioma R em trabalhos MapReduce compatíveis com Hadoop (produzindo um código MapReduce eficiente e de baixo nível do código R de nível superior).
-
rhdfs: O pacote rhdfs fornece uma API de linguagem R para gerenciamento de arquivos em lojas HDFS. Usando rhdfs, os usuários podem ler das lojas HDFS para um quadro de dados R (matriz) e, de forma semelhante, gravar os dados dessas matrizes R novamente no armazenamento HDFS.
-
rhbase: pacotes de rhbase também fornecem uma API de idioma R, mas seu objetivo na vida é lidar com o gerenciamento de banco de dados para lojas HBase, em vez de arquivos HDFS.
Revolution R
Revolution R (por Revolution Analytics) é uma oferta R comercial com suporte para integração R em sistemas distribuídos Hadoop. A Revolution R promete oferecer melhor desempenho, funcionalidade e usabilidade para R no Hadoop. Para fornecer análises profundas semelhantes à R, a Revolution R faz uso da biblioteca ScaleR da empresa - uma coleção de algoritmos de análise estatística desenvolvidos especificamente para grandes coleções de dados em grande escala.
O ScaleR visa entregar a execução rápida do código do programa R nos clusters Hadoop, permitindo que o desenvolvedor R se concentre exclusivamente em seus algoritmos estatísticos e não no MapReduce. Além disso, ele administra inúmeras tarefas de análise, como a preparação de dados, a visualização e testes estatísticos.
IBM BigInsights Big R
O Big R oferece integração de ponta a ponta entre o R e a oferta Hadoop da IBM, o BigInsights, permitindo que desenvolvedores R analise dados Hadoop. O objetivo é explorar os paradigmas de sintaxe e codificação de programação de R, garantindo que os dados operados permaneçam no HDFS. Os tipos de dados R servem como proxies para esses armazenamentos de dados, o que significa que os desenvolvedores R não precisam pensar em construções MapReduce de baixo nível ou em linguagens de script específicas do Hadoop (como Pig).
A tecnologia BigInsights Big R suporta múltiplas fontes de dados - incluindo arquivos planos, formatos de armazenamento HBase e Hive - enquanto fornece a execução paralela e particionada do código R no cluster Hadoop. Ele esconde muitas das complexidades nas estruturas HDFS e MapReduce subjacentes, permitindo que as funções Big R executem análises de dados abrangentes - em dados estruturados e não estruturados.
Finalmente, a escalabilidade do mecanismo estatístico da Big R permite aos desenvolvedores R fazer uso de técnicas estatísticas pré-definidas, bem como criar novos algoritmos próprios.