Flume采集Kafka并把数据sink到OSS

安装环境

  1. Java环境, 略 (Flume依赖Java)
  2. Flume下载, 略
  3. Scala环境, 略 (Kafka依赖Scala)
  4. Kafak下载, 略
  5. Hadoop下载, 略 (不需要启动, 写OSS依赖)

配置Hadoop

下载JindoSDK(连接OSS依赖), 下载地址Github

解压后配置环境变量

复制代码
export JINDOSDK_HOME=/usr/lib/jindosdk-x.x.x
export HADOOP_CLASSPATH=$HADOOP_CLASSPATH:${JINDOSDK_HOME}/lib/*

修改Hadoop配置, core-site.xml

复制代码
<property>
        <name>fs.oss.credentials.provider</name>
        <value>com.aliyun.jindodata.oss.auth.SimpleCredentialsProvider</value>
    </property>
    <property>
        <name>fs.oss.accessKeyId</name>
        <value>xxxx</value>
    </property>
    <property>
        <name>fs.oss.accessKeySecret</name>
        <value>xxxx</value>
    </property>
    <property>
        <name>fs.oss.endpoint</name>
        <value>xxxxx</value>
    </property>
    <property>
        <name>fs.AbstractFileSystem.oss.impl</name>
        <value>com.aliyun.jindodata.oss.JindoOSS</value>
    </property>
    <property>
        <name>fs.oss.impl</name>
        <value>com.aliyun.jindodata.oss.JindoOssFileSystem</value>
    </property>

配置可参考非EMR集群接入OSS-HDFS服务快速入门

配置Flume

此部分全文最关键, 请仔细看

  1. 基础配置部分, Flume配置

    a1.sources = source1
    a1.sinks = k1
    a1.channels = c1

    a1.sources.source1.type = org.apache.flume.source.kafka.KafkaSource
    a1.sources.source1.channels = c1
    a1.sources.source1.kafka.bootstrap.servers = xxx
    a1.sources.source1.kafka.topics = test
    a1.sources.source1.kafka.consumer.group.id = flume-sink-group # 消费者组, 云组件需要先在管理后台创建
    a1.sources.source1.kafka.consumer.auto.offset.reset = earliest # 从头消费Kafka里数据

    a1.sinks.k1.channel = c1
    a1.sinks.k1.type = hdfs
    a1.sinks.k1.hdfs.path = oss://xxx/test/%Y%m%d # 自动按天分文件夹
    a1.sinks.k1.hdfs.fileType=DataStream

    a1.channels.c1.type = memory
    a1.channels.c1.capacity = 1000
    a1.channels.c1.transactionCapacity = 1000

可参考使用Flume同步EMR Kafka集群的数据至OSS-HDFS服务

  1. 进阶配置, 根据自己情况按需配置

    a1.sinks.k1.hdfs.rollInterval = 600 # 5分钟切换一个新文件
    a1.sinks.k1.hdfs.rollSize = 134217728 # 或者文件大小达到128M则切换新文件
    a1.sinks.k1.hdfs.rollCount = 0 # 写入多少条数据切换新文件, 0为不限制

我这里是为了防止sink的文件过于零碎, 但因为使用的memory channel, 缓存时间过长容易丢数据

  1. Flume JVM参数

默认启动时-Xmx20m, 过于小了, 加大堆内存可以直接放开flume-env.shJAVA_OPTS的注释

复制代码
export JAVA_OPTS="-Xms100m -Xmx2000m -Dcom.sun.management.jmxremote"
  1. Channel问题
    如果对数据一致性要求较高, 可以把memory channel改用file channel, 请自行研究

XX启动!

几条测试命令

复制代码
bin/zookeeper-server-start.sh config/zookeeper.properties # 启动zookeeper
bin/kafka-server-start.sh config/server.properties # 启动kafak服务

bin/flume-ng agent --conf conf --conf-file conf/flume-conf.properties --name a1 # 启动flume

bin/kafka-console-producer.sh --topic flume-test --bootstrap-server localhost:9092 # 启动一个生产者写测试数据
相关推荐
SelectDB技术团队6 分钟前
AB 实验指标计算场景:Apache Doris / SelectDB 的技术能力、选型对比与实践
大数据·数据库·数据分析·apache·用户运营·apache doris·selectdb
湘美书院--湘美谈教育24 分钟前
湘美谈教育湘美书院绥宁文学系列:AI时代的小说,雪峰号
大数据·人工智能·深度学习·机器学习·生活
汤姆yu29 分钟前
面向具身智能的物理视频模拟器:蚂蚁灵波LingBot-Video开源模型全解析
java·大数据·人工智能·gpt·开源·大模型·音视频
一枚NPC32 分钟前
Timbal AI 音乐创作与商业应用实战指南
大数据·人工智能·机器学习
Daorigin_com33 分钟前
合同管理进入“自动驾驶”时代:道本×DeepSeek的三重穿透
大数据·人工智能·深度学习·数据挖掘·数据库开发·业界资讯·改行学it
阿标在干嘛35 分钟前
政策快报平台的全文检索:从ES到向量检索的演进
大数据·elasticsearch·全文检索
泰和英杰1 小时前
2026华为数字能源实操考点迭代:数据中心与光伏储能通用排错方法论
大数据
QiLinkOS1 小时前
企业知识产权战略的“X光”透视报告:从“外包代工”到“法律军火库”的终极分野
大数据·人工智能·dna双螺旋归因模型·技术专利避坑指南·qilink·技术专利风险情报·技术专利洞察
IT新视界11 小时前
大数据开发工具-Transwarp Data Studio
大数据
donoot11 小时前
Linux系统下图书馆级电子书全自动标准化分类整理完整实施方案
大数据·linux·运维·电子书管理