Como usar o Apache Hadoop para análise preditiva
Apache Hadoop é uma plataforma de software livre, open-source para escrever e executar aplicações que processam uma grande quantidade de dados para análise preditiva. Ele permite um processamento paralelo distribuído de grandes conjuntos de dados gerados a partir de fontes diferentes. Essencialmente, é uma poderosa ferramenta para armazenar e processar dados grandes.
Hadoop lojas de qualquer tipo de dados, estruturados ou não, a partir de diferentes fontes - e, em seguida, agrega os dados em praticamente qualquer maneira que você quer. Hadoop manipula dados heterogêneos utilizando processamento paralelo distribuído - o que o torna um quadro muito eficiente para usar em software analítico lidar com dados grandes. Não admira que algumas grandes empresas estão adotando Hadoop, incluindo Facebook, Yahoo !, Google, IBM, Twitter e LinkedIn.
Antes Hadoop, as empresas não foram capazes de tirar proveito de big data, que não foi analisado e quase inutilizável. O custo para armazenar os dados em um banco de dados relacional de propriedade e criar um formato estruturado em torno dele não justificam os benefícios de analisar os dados e fazer uso dele.
Hadoop, por outro lado, está fazendo essa emenda tarefa - em uma fração do custo - permitindo que as empresas para encontrar informações valiosas nos dados abundantes que adquiriram e estão se acumulando.
O poder do Hadoop reside na manipulação de tipos diferentes - na verdade, qualquer tipo - de dados: texto, voz, e-mails, fotos, mensagens, tweets, you name it. Hadoop cuida de agregar esses dados, em toda a sua variedade, e oferece-lhe a capacidade de consultar todos os dados a sua conveniência.
Você não tem que construir um esquema antes você pode fazer sentido do seu de dados Hadoop permite-lhe consultar os dados em seu formato original.
Além de lidar com grandes quantidades de dados variadas, o Hadoop é tolerante a falhas, utilizando programas simples que lidam com a programação do processamento distribuído por várias máquinas. Estes programas podem detectar falha de hardware e desviar uma tarefa para outra máquina executando. Esse arranjo permite Hadoop para proporcionar alta disponibilidade, independentemente de falha de hardware.
Hadoop usa dois componentes principais (subprojetos) para fazer o seu trabalho: MapReduce e Hadoop Distributed File System. Os dois componentes trabalhar cooperativamente:
MapReduce: Implementação de MapReduce do Hadoop é baseado em pesquisas do Google sobre modelos de programação para processar grandes conjuntos de dados dividindo-os em pequenos blocos de tarefas. MapReduce usa algoritmos distribuídos, em um grupo de computadores em um cluster, para processar grandes conjuntos de dados. É constituída de duas funções:
o Mapa () função que reside no mestre nó (Computador em rede). Ele divide a consulta de entrada ou tarefa em subtarefas menores, que depois distribui para nós trabalhadores que processa as tarefas menores e passar as respostas de volta para o nó mestre. As subtarefas são executadas em paralelo em vários computadores.
o Reduzir ( ) função recolhe os resultados de todas as subtarefas e combina-los para produzir um resultado final agregada - que ele retorna como a resposta para a consulta grande originais.
Sistema Hadoop Distributed File (HDFS): HDFS replica os blocos de dados que residem em outros computadores em seu centro de dados (para garantir a confiabilidade) e controla a transferência de dados para as várias partes do seu sistema distribuído.
Considere um banco de dados de dois bilhões de pessoas, e assumir que você quer para calcular o número de amigos sociais de Mr. X e organizá-los de acordo com suas localizações geográficas. Isso é uma ordem de altura.
Os dados para dois bilhões de pessoas podem ter origem em amplamente diferentes fontes, como redes sociais, e-mail listas de endereços de contatos, posts, tweets, históricos de navegação - e isso é só para começar. Hadoop pode agregar essa massa enorme, diversificado de dados para que você possa investigá-lo com uma consulta simples.
Você usaria recursos de programação MapReduce para resolver esta consulta. Definindo Mapa e reduzir os procedimentos faz mesmo este grande conjunto de dados gerenciável. Usando as ferramentas que o quadro Hadoop oferece, você criaria uma implementação de MapReduce que iria fazer o cálculo em duas subtarefas:
Calcula-se o número médio de amigos sociais do Sr. X.
Organizar amigos do Sr. X por localização geográfica.
O seu programa de implementação MapReduce iria executar esses subtasks em paralelo, gerir a comunicação entre as sub-tarefas, e montar os resultados. Fora de dois bilhões de pessoas, você saberia que os amigos on-line do Sr. X são.
Hadoop oferece uma gama de Mapa Processadores- qual (is) você selecionar dependerá de sua infra-estrutura.
Cada um dos seus processadores vai lidar com um certo número de registros. Suponha que cada processador lida com um milhão de registros de dados. Cada processador executa um procedimento Mapa que produz vários registros de pares chave-valor, quando G (Key) é a localização geográfica de uma pessoa (país) e N (Valor) é o número de contatos que a pessoa tem.
Suponha que cada processador Mapa produz muitos pares da forma , tais como a seguinte:
Processador Mapa # 1:
Processador Mapa # 2:
Processador Mapa # 3:
Processador Mapa # 4:
Processador Mapa # 5:
Processador Mapa # 6:
Na fase Reduzir, Hadoop atribui uma tarefa a um certo número de processadores: Execute o procedimento Reduzir que agrega os valores das mesmas teclas para produzir um resultado final. Para este exemplo a implementação Reduzir resume a contagem de valores para cada chave - localização geográfica. Assim, após a fase de Mapa, o Reduza fase produz o seguinte:
------ ----
Claramente, o Sr. X é um cara popular - mas este foi um exemplo muito simples de como MapReduce pode ser usado. Imagine que você está lidando com um grande conjunto de dados onde você deseja executar operações complexas como clustering bilhões de documentos onde a operação e os dados é muito grande para uma única máquina de manusear. Hadoop é a ferramenta a considerar.