Este tópico explica como usar o Flume para transmitir dados de um cluster E-MapReduce (EMR) Kafka para o serviço OSS-HDFS do Alibaba Cloud.
Pré-requisitos
O serviço OSS-HDFS está ativado e você tem as permissões de acesso necessárias. Para mais informações, consulte Ativar o serviço OSS-HDFS.
Você criou um cluster DataLake e selecionou o serviço Flume. Para mais informações, consulte Criar um cluster.
Você criou um cluster DataFlow e selecionou o serviço Kafka. Para mais informações, consulte Criar um cluster.
Procedimento
-
Configure o Flume.
-
Acesse a página de configuração do Flume.
Faça login no console do E-MapReduce.
Na barra de navegação superior, selecione uma região e um grupo de recursos.
Na página EMR on ECS, localize o cluster desejado e clique em Services na coluna Actions.
Na aba Services, clique em Configure na área do serviço FLUME.
-
Defina o tamanho máximo do heap da Java Virtual Machine (JVM) (Xmx).
Gravar dados do Flume no serviço OSS-HDFS consome muita memória. Recomendamos aumentar o valor de Xmx do agente do Flume.
-
Clique em flume-env.sh.
Este tópico usa a configuração global. Para configurar um nó específico, selecione Independent Node Configuration na lista suspensa da página Configure do serviço FLUME.
-
Modifique o valor do parâmetro JAVA_OPTS.
Por exemplo, para definir o tamanho máximo do heap da JVM como 1 GB, altere o valor do parâmetro para
-Xmx1g. Clique em Salve.
-
-
Modifique a configuração do arquivo flume-conf.properties.
-
Clique em flume-conf.properties.
Este tópico usa a configuração global. Para configurar um nó específico, selecione Independent Node Configuration na lista suspensa da página Configure do serviço FLUME.
-
No editor do arquivo flume-conf.properties, insira a seguinte configuração.
NotaO valor de default-agent no exemplo abaixo deve corresponder ao valor do parâmetro agent_name na página Configure do serviço FLUME.
default-agent.sources = source1 default-agent.sinks = k1 default-agent.channels = c1 default-agent.sources.source1.type = org.apache.flume.source.kafka.KafkaSource default-agent.sources.source1.channels = c1 default-agent.sources.source1.kafka.bootstrap.servers = <kafka-host1:port1,kafka-host2:port2...> default-agent.sources.source1.kafka.topics = flume-test default-agent.sources.source1.kafka.consumer.group.id = flume-test-group default-agent.sinks.k1.type = hdfs default-agent.sinks.k1.hdfs.path = oss://{yourBucketName}.{yourBucketRegion}.oss-dls.aliyuncs.com/{path} default-agent.sinks.k1.hdfs.fileType=DataStream # Use a memory channel to buffer events default-agent.channels.c1.type = memory default-agent.channels.c1.capacity = 100 default-agent.channels.c1.transactionCapacity = 100 # Bind the source and sink to the channel default-agent.sources.source1.channels = c1 default-agent.sinks.k1.channel = c1Parâmetro
Descrição
default-agent.sources.source1.kafka.bootstrap.servers
Nomes de host e números de porta dos brokers no cluster Kafka.
default-agent.sinks.k1.hdfs.path
O caminho do OSS-HDFS deve seguir o formato oss://{yourBucketName}.{yourBucketRegion}.oss-dls.aliyuncs.com/{path}. Exemplo: oss://flume-test.cn-hangzhou.oss-dls.aliyuncs.com/result.
Componentes do caminho:
-
{yourBucketName}: Insira o nome do bucket com o serviço OSS-HDFS ativado.
-
{yourBucketRegion}: Insira o ID da região do bucket.
-
{path}: Insira o nome do diretório do serviço OSS-HDFS.
default-agent.channels.c1.capacity
Número máximo de eventos que o canal pode armazenar. Ajuste esse valor conforme o ambiente.
default-agent.channels.c1.transactionCapacity
Número máximo de eventos que uma source pode gravar ou um sink pode recuperar do canal por transação. Ajuste esse valor conforme o ambiente.
-
Clique em Salve.
-
-
-
Teste a sincronização de dados.
Conecte-se ao cluster EMR Dataflow via SSH. Para mais informações, consulte Fazer login em um cluster.
-
Crie um tópico chamado flume-test.
kafka-topics.sh --partitions 10 --replication-factor 2 --zookeeper master-1-1:2181/emr-kafka --topic flume-test --create -
Gere dados de teste.
kafka-console-producer.sh --topic flume-test --broker-list master-1-1:9092Por exemplo, insira
abce pressione Enter.Um arquivo é gerado no caminho oss://flume-test.cn-hangzhou.oss-dls.aliyuncs.com/result. O nome do arquivo segue o formato FlumeData.xxxx, com o timestamp atual em milissegundos como sufixo.