Registrar dados com calha em hdfs
Video: Manutenção | Calhas Aquapluv Style Tigre
Conteúdo
Alguns dos dados que acaba no Hadoop Distributed File System (HDFS) pode pousar lá via operações de carregamento de banco de dados ou outros tipos de processos batch, mas e se você deseja capturar os dados que está fluindo em fluxos de dados de alto rendimento, como dados de registro de candidatura? Apache Flume é a maneira padrão atual para fazer isso facilmente, eficiente e segura.
Apache Flume, outro projeto de nível superior a partir da Apache Software Foundation, é um sistema distribuído para agregar e movendo grandes quantidades de fluxo de dados de diferentes fontes para um armazenamento de dados centralizado.
Dito de outra forma, Flume é projetado para a ingestão contínua de dados em HDFS. Os dados podem ser qualquer tipo de dados, mas Flume é particularmente bem adequado para a manipulação de dados de registo, tais como os dados de registo de servidores web. Unidades dos dados que os processos Flume são chamados eventos- um exemplo de um evento é um registro de log.
Para entender como Flume funciona dentro de um cluster Hadoop, você precisa saber que Flume é executado como um ou mais agentes, e que cada agente tem três componentes conectáveis: fontes, canais e sumidouros:
Fontes recuperar os dados e enviá-lo para os canais.
canais manter filas de dados e servem como condutas entre fontes e destinos, que é útil quando a taxa de fluxo de entrada excede a taxa de fluxo de saída.
pias dados do processo que foi tomado de canais e entregá-lo a um destino, como HDFS.
Video: Calhas instalaçao
Um agente deve ter pelo menos um de cada componente para ser executado, e cada agente está contido dentro de sua própria instância da Máquina Virtual Java (JVM).
Um evento que é escrito para um canal por uma fonte não é removido desse canal até uma pia remove-lo por meio de uma transação. Se ocorrer uma falha de rede, canais de manter seus eventos na fila até que os dissipadores pode escrevê-los ao cluster. Um canal em memória pode processar eventos rapidamente, mas é volátil e não podem ser recuperados, enquanto um canal baseado em arquivos oferece persistência e podem ser recuperados em caso de fracasso.
Cada agente pode ter várias fontes, canais e pias, e apesar de uma fonte pode escrever para muitos canais, uma pia pode levar os dados de apenas um canal.
Um agente é apenas um JVM que está sendo executado Flume, e as pias para cada nó do agente no cluster Hadoop enviar dados para nós coletor, que agregar os dados de muitos agentes antes da gravação em HDFS, onde ela pode ser analisada por outras ferramentas Hadoop.
Video: Дэвид Эпштейн: Быстрее, выше, сильнее… ли?
Os agentes podem ser encadeados para que o dissipador de um agente envia os dados para a fonte de outro agente. Avro, quadro chamado e serialização remoto do Apache, é a maneira usual de enviar dados através de uma rede com Flume, porque serve como uma ferramenta útil para a serialização eficiente ou transformação de dados em um formato binário compacto.
No contexto da Flume, a compatibilidade é importante: Um evento Avro requer uma fonte de Avro, por exemplo, e uma pia deve entregar eventos que são apropriados para o destino.
O que torna esta grande corrente de fontes, canais e pias trabalho é a configuração do agente Flume, que é armazenado em um arquivo de texto local que está estruturado como um arquivo de propriedades Java. Você pode configurar vários agentes no mesmo arquivo. Olhe para um arquivo de amostra, que é nomeado calha-agent.conf - ele é definido como configurar um agente chamado xamã:
# Identificar os componentes de agente xamã: shaman.sources = netcat_s1shaman.sinks = hdfs_w1shaman.channels = in-mem_c1 # Configure a fonte: shaman.sources.netcat_s1.type = netcatshaman.sources.netcat_s1.bind = localhostshaman.sources.netcat_s1. port = 44444 # Descreva a pia: shaman.sinks.hdfs_w1.type = hdfsshaman.sinks.hdfs_w1.hdfs.path = hdfs: //shaman.sinks.hdfs_w1.hdfs.writeFormat = Textshaman.sinks.hdfs_w1.hdfs.fileType = DataStream # Configurar um canal que buffers eventos na memória: shaman.channels.in-mem_c1.type = memoryshaman.channels.in-mem_c1.capacity = 20000shaman.channels.in-mem_c1.transactionCapacity = 100 # Bind a fonte e afundam para o canal: shaman.sources.netcat_s1.channels = = em mem_c1shaman.sinks.hdfs_w1.channels-em-mem_c1
O arquivo de configuração inclui propriedades para cada fonte, canal e pia no agente e especifica como eles estão conectados. Neste exemplo, o agente xamã tem uma fonte que escuta para dados (mensagens para netcat) na porta 44444, um canal que buffers de dados de eventos na memória, e uma pia que registra dados de eventos para o console.
Este arquivo de configuração pode ter sido usado para definir vários agentes- aqui, você está configurando apenas um para manter as coisas simples.
Para iniciar o agente, use um script shell chamado calha-ng, que está localizado no diretório bin da distribuição Flume. Na linha de comando, emitir o comando agente, especificando o caminho para o arquivo de configuração e o nome do agente.
O seguinte comando de exemplo inicia o agente Flume:
caleira-ng agente -f /-n xamã
log do agente Flume deve ter entradas verificando que a fonte, canal e pia iniciado com êxito.
Para testar a configuração, você pode telnet para a porta 44444 de outro terminal e enviar Flume um evento digitando uma seqüência de texto arbitrária. Se tudo correr bem, o original Flume terminal de saída vontade do evento em uma mensagem de log que você deve ser capaz de ver no log do agente.