【flume实时采集mysql数据库的数据到kafka】

最近做了flume实时采集mysql数据到kafka的实验,做个笔记,防止忘记
!!!建议从头看到尾,因为一些简单的东西我在前面提了,后面没提。

Kafka搭建:https://blog.csdn.net/cjwfinal/article/details/120803013

flume搭建:https://blog.csdn.net/cjwfinal/article/details/120441503?spm=1001.2014.3001.5502


一、flume写入当前文件系统

题目:

编写配置文件,设置文件夹mylogs为source位置,文件夹backup为sink写入位置,实现对文件夹的数据备份。
新建两个文本文本文件1.txt与2.txt,在1.txt中输入Hello Flume,在2.txt中输入hello flume将两个文件拖入mylog,查看backup文件夹中出现的文件及其内容。文件可用记事本打开

解题:

1.flume配置文件

#a1表示agent的名字 可以自定义
# 给sources(在一个agent里可以定义多个source)取个名字
a1.sources = r1
# 给channel个名字
a1.channels = c1
# 给channel个名字
a1.sinks = k1

# 对source进行配置
# agent的名字.sources.source的名字.参数 = 参数值

# source的类型 spoolDir(监控一个目录下的文件的变化)
a1.sources.r1.type = spooldir
# 监听哪一个目录
a1.sources.r1.spoolDir = /root/mylogs
# 是否在event的headers中保存文件的绝对路径
a1.sources.r1.fileHeader = true
# 给拦截器取个名字 i1
a1.sources.r1.interceptors = i1
# 使用timestamp拦截器,将处理数据的时间保存到event的headers中
a1.sources.r1.interceptors.i1.type = timestamp

# 配置channel
a1.channels.c1.type = memory
a1.channels.c1.capacity = 1000
a1.channels.c1.transactionCapacity = 100

# 配置sink为logger
# 直接打印到控制台
a1.sinks.k1.type = file_roll
a1.sinks.k1.channel = c1
a1.sinks.k1.sink.directory = /root/backup

# 将source、channel、sink组装成agent
a1.sources.r1.channels = c1
a1.sinks.k1.channel = c1

2.要保证配置文件中的文件的路径都存在,否则会报错

3.启动flume

启动命令:
flume-ng agent -n a1 -f spoolingtest.cong -Dflume.root.logger=DEBUG,console

a1是agent的名字,spoolingtest.cong是配置文件名,如果不一样请修改

在这里插入图片描述

4.测试

1.启动flume

注意:要在配置文件所在的目录启动

2.在mylogs文件夹下创建两个文件1.txt,2.txt,分别写入hello world和Hello World

写入并保存,后flume打印出来的日志会发生改变。

3.查看backup文件夹

backup文件夹中,会产生许多文件,其中某个文件中会保存上面两个文件的内容,自行查找即可。
在这里插入图片描述

二、flume连接kafka

题目

把flume监听到的文件内容,输入到,kafka,并由kafka的消费着消费出来。

解题

1.flume配置文件

 
# a1表示agent的名字 可以自定义
# # 给sources(在一个agent里可以定义多个source)取个名字
a1.sources = r1
# # 给channel个名字
a1.channels = c1
# # 给channel个名字
a1.sinks = k1
# 对source进行配置
# agent的名字.sources.source的名字.参数 = 参数值

# source的类型 spoolDir(监控一个目录下的文件的变化)
a1.sources.r1.type = exec
# 监听哪一个目录
a1.sources.r1.command = tail -F -c +0 /root/dir1/test.log
# 是否在event的headers中保存文件的绝对路径
a1.sources.r1.fileHeader = true
# 给拦截器取个名字 i1
a1.sources.r1.interceptors = i1
# 使用timestamp拦截器,将处理数据的时间保存到event的headers中
a1.sources.r1.interceptors.i1.type = timestamp

# 配置channel
a1.channels.c1.type = memory
a1.channels.c1.capacity = 1000
a1.channels.c1.transactionCapacity = 100

# 配置sinks,输出到kafka中
a1.sinks.k1.channel = c1
a1.sinks.k1.type = org.apache.flume.sink.kafka.KafkaSink
# topic是指定kafka的主题
a1.sinks.k1.kafka.topic = events
# master是主机名,也可以是主机IP地址
a1.sinks.k1.kafka.bootstrap.servers = master:9092
a1.sinks.k1.kafka.flumeBatchSize = 20
a1.sinks.k1.kafka.producer.acks = 1
a1.sinks.k1.kafka.producer.linger.ms = 1

# 将source、channel、sink组装成agent![在这里插入图片描述](https://img-blog.csdnimg.cn/13519938e4ba42b9a4294454f2013dc2.png#pic_center)

a1.sources.r1.channels = c1
a1.sinks.k1.channel = c1

2测试

1.创建指定的目录/root/dir1/test.log
2.启动flume
flume-ng agent -n a1 -f spoolingtest.cong -Dflume.root.logger=DEBUG,console
3.启动kafka的消费者
启动命令
#启动消费者之前首先要创建主题
kafka-topics.sh --create --topic events --bootstrap-server master:9092
#启动消费者
kafka-console-consumer.sh --bootstrap-server master:9092 --topic events --from-beginning
kafka主题操作命令
#删除主题
kafka-topics.sh --delete --topic events --zookeeper localhost:2181
#查看主题列表
kafka-topics.sh --list --bootstrap-server master:9092
4.在test.log中写入数据

在这里插入图片描述

5.观察kafka的消费是否消费出数据

在这里插入图片描述

三、flume实时采集mysql数据到kafka

题目

在MySQL中建立数据库school,在数据库中建立表student。SQL语句如下:

#创建数据库
create database school;
#使用数据库
use school;
#创建数据表
create table student(
	id int not null,
	name varchar(40),
	age int,
	grade int,
	primary key(id)
);
# 删除数据
drop database school;
# 删除数据表
drop database student;
# 查看数据表
show tables;

编写配置文件,将student表中的内容输出到控制台。启动Flume,在student表中使用下列命令插入数据,在Kafka消费者中查看相应数据。

#插入数据,sql
insert into student(id,name,age,grade)value(1,'Xiaoming',23,98);
insert into student(id,name,age,grade)value(2,'Zhangsan',24,96);
insert into student(id,name,age,grade)value(3,'Lisi',24,93);
insert into student(id,name,age,grade)value(4,'Wangwu',21,91);
insert into student(id,name,age,grade)value(5,'Weiliu',21,91);

解题

1.flume配置文件

# # 给sources(在一个agent里可以定义多个source)取个名字
a1.sources = r1
# # 给channel个名字
a1.channels = c1
# # 给channel个名字
a1.sinks = k1

#配置source
a1.sources.r1.type = org.keedio.flume.source.SQLSource
#ip地址和数据库名称需要修改,如果连接的本地的mysql改成本机IP地址,如果连接虚拟机上的mysql改成虚拟机的IP地址
a1.sources.r1.hibernate.connection.url = jdbc:mysql://ip地址/数据名称?useSSL=false&allowPublicKeyRetrieval=true
# mysql用户名,一般都是root
a1.sources.r1.hibernate.connection.user = root
# 密码
a1.sources.r1.hibernate.connection.password = 123456
a1.sources.r1.hibernate.connection.autocommit = true
# mysql驱动
a1.sources.r1.hibernate.dialect = org.hibernate.dialect.MySQL5Dialect
# 驱动版本过低会无法使用,驱动安装下文会提及
a1.sources.r1.hibernate.connection.driver_class = com.mysql.jdbc.Driver
a1.sources.r1.run.query.delay=5000

# 自定义查询
a1.sources.r1.start.from = 0
a1.sources.r1.table = student
a1.sources.r1.columns.to.select = *

a1.sources.r1.batch.size = 1000
a1.sources.r1.max.rows = 1000
a1.sources.r1.hibernate.connection.provider_class = org.hibernate.connection.C3P0ConnectionProvider
a1.sources.r1.hibernate.c3p0.min_size=1
a1.sources.r1.hibernate.c3p0.max_size=10
# 存放status文件
a1.sources.r1.status.file.path = /root/dir1
a1.sources.r1.status.file.name = r1.status
# 配置channel
a1.channels.c1.type = memory
a1.channels.c1.capacity = 10000
a1.channels.c1.transactionCapacity = 10000
a1.channels.c1.byteCapacityBufferPercentage = 20
a1.channels.c1.byteCapacity = 800000
# 配置sinks
a1.sinks.k1.channel = c1
a1.sinks.k1.type = org.apache.flume.sink.kafka.KafkaSink
# 指定主题名topic
a1.sinks.k1.kafka.topic = events
a1.sinks.k1.kafka.bootstrap.servers = master:9092
a1.sinks.k1.kafka.flumeBatchSize = 20
a1.sinks.k1.kafka.producer.acks = 1
a1.sinks.k1.kafka.producer.linger.ms = 1

# 将source、channel、sink组装成agent
a1.sources.r1.channels = c1
a1.sinks.k1.channel = c1

2.要保证配置中的文件路径存在,并且根据注释做出相应的修改

3.导入jar包到/flume/lib文件夹下

# flume连接mysqljar包
flume-ng-sql-source-1.4.3.jar
# mysql驱动jar包
mysql-connector-java-5.1.49.jar

5.flume-ng-sql-source项目的官方网址

https://github.com/keedio/flume-ng-sql-source

6.测试

1.创建mysql数据库、数据表
#创建数据库
create database school;
#使用数据库
use school;
#创建数据表
create table student(
	id int not null,
	name varchar(40),
	age int,
	grade int,
	primary key(id)
);
2.启动flume
flume-ng agent -n a1 -f spoolingtest.cong -Dflume.root.logger=DEBUG,console
3.启动kafka消费者
#启动消费者之前首先要创建主题
kafka-topics.sh --create --topic events --bootstrap-server master:9092
#启动消费者
kafka-console-consumer.sh --bootstrap-server master:9092 --topic events --from-beginning
4.student表中插入数据
#插入数据,sql
insert into student(id,name,age,grade)value(1,'Xiaoming',23,98);
insert into student(id,name,age,grade)value(2,'Zhangsan',24,96);
insert into student(id,name,age,grade)value(3,'Lisi',24,93);
insert into student(id,name,age,grade)value(4,'Wangwu',21,91);
insert into student(id,name,age,grade)value(5,'Weiliu',21,91);
5.观察数据

在这里插入图片描述

在这里插入图片描述
为了方便测试我重复插入了一条数据

6.遇到的问题:消费者没有消费出来数据,且flume配置文件没错
解决

删除存放的status文件,也就是我配置文件中/root/dir1文件夹中的东西
在这里插入图片描述

四、Kafka链接Flume,将生产的消息存入到HDFS

题目

编写配置文件,将kafka作为输入,在生产者中输入“HelloFlume”或其他信息,通过Flume将Kafka生产者输入的信息存入hdfs中,存储格式hdfs://localhost:9000/fromkafka/%Y%m%d/,要求存储时文件名为kafka_log。

解答

1.flume配置文件


agent.sources = kafka_source
agent.channels = mem_channel
agent.sinks = hdfs_sink
# 以下配置 source
agent.sources.kafka_source.type = org.apache.flume.source.kafka.KafkaSource
agent.sources.kafka_source.channels = mem_channel
agent.sources.kafka_source.batchSize = 5000
# master为主机名或者主机IP
agent.sources.kafka_source.kafka.bootstrap.servers = master:9092
# 需要指定kafka生产者的主题
agent.sources.kafka_source.kafka.topics = kafka-flume
# 以下配置 sink
agent.sinks.hdfs_sink.type = hdfs
agent.sinks.hdfs_sink.channel = mem_channel
# 输出到HDFS文件的路径
agent.sinks.hdfs_sink.hdfs.path = /data/kafka-flume/%Y%m%d
# HDFS文件前缀
agent.sinks.hdfs_sink.hdfs.filePrefix = kafka_log
# 使用时间戳
a1.sinks.r1.hdfs.useLocalTimeStamp = true

agent.sinks.hdfs_sink.hdfs.rollSize = 0
agent.sinks.hdfs_sink.hdfs.rollCount = 0
agent.sinks.hdfs_sink.hdfs.rollInterval = 3600
agent.sinks.hdfs_sink.hdfs.threadsPoolSize = 30
agent.sinks.hdfs_sink.hdfs.fileType=DataStream
agent.sinks.hdfs_sink.hdfs.writeFormat=Text
# 以下配置 channel
agent.channels.mem_channel.type = memory
agent.channels.mem_channel.capacity = 100000
agent.channels.mem_channel.transactionCapacity = 10000

2.根据配置文件的注释根据自己的情况做出修改

3.hadoop操作文件夹命令

# 创建文件夹
hadoop fs -mkdir 文件夹路径
# 删除文件夹
hadoop fs -rm -r -skipTrash 文件夹路径

4.测试

1.启动flume
#启动命令
flume-ng agent -n agent -f kafka-flume-hdfs.cong -Dflume.root.logger=DEBUG,console
# 参数解释
第二个agent为配置文件中agent的名字,kafka-flume-hdfs.cong为配置文件名,根据自己情况做出修改
2.启动kafka生产者
# 启动命令,根据自己配置变换主题名
kafka-console-producer.sh --broker-list master:9092 --topic kafka-flume
# 启动后,输入HelloFlume
3.观察HDFS界面,寻找并下载文件,查看内容

在这里插入图片描述

记得关闭flume后再下载,不然会下载出来.tmp文件

有什么问题评论区提问!

  • 3
    点赞
  • 45
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
基于Vue+SpringBoot实现的基于朴素贝叶斯的敏感词判断和视频智能推荐前后端源码+数据库.zip 基于Vue+SpringBoot实现的基于朴素贝叶斯的敏感词判断和视频智能推荐前后端源码+数据库.zip 基于Vue+SpringBoot实现的基于朴素贝叶斯的敏感词判断和视频智能推荐前后端源码+数据库.zip 【资源说明】 该项目是个人毕设项目源码,评审分达到95分,调试运行正常,确保可以运行!放心下载使用。 该项目资源主要针对计算机、自动化等相关专业的学生或从业者下载使用,也可作为期末课程设计、课程大作业、毕业设计等。 具有较高的学习借鉴价值!基础能力强的可以在此基础上修改调整,以实现类似其他功能。 ### 语言: Java、Scala ### 数据库Mysql、MongoDB ### 前端页面 由vue实现多页面搭建 创作中心由vue-cli搭建 图表等运用Echarts 视频详情页运用vue-nuxt 服务端渲染 利于SEO优化 ### 后端 由SpringBoot + Spring + SpringJpa 完成三层架构 ### 视频上传部分 采用Rabbitmq消息队列实现对视频的HLS处理 形成m3u8文件 ### 视频部分 采用Dplayer 完成视频弹幕互动 ### 评论部分 采用基于朴素贝叶斯算法的敏感词判断 进行输入限制 ### 数据部分 用户行为随机生成 视频数据采用Webmagic实现爬虫爬取 ### 视频智能推荐部分 #### 离线推荐 基于用户行为的统计 采用了基于隐语义的协同过滤算法(LFM) 用最小交替二乘法(ALS)进行偏差值估计调优\ 基于内容的离线推荐 采用词频-逆文档算法(TF-IDF) 对标签进行计算相似度矩阵 #### 实时推荐 采用KafkaStream和SparkStream以及Flume完成对日志的采集、过滤、处理
在移动互联网时代,各式各样的新业务和新产品不断出现,通信市场的用户总体规模增长速度变缓,使运营商之间的竞争愈加激烈,新产品营销的时效性和准确度问题亟需解决。实时营销作为新的营销方式,具有较高的实时性,通过运用大数据分析技术分析用户上网行为特征,并在合适的时间、合适的地点向用户推荐合适的内容,从而提升用户感知、增加用户粘性。如何运用大数据技术实现实时营销是本文的重要内容。本文深入调研分析了大数据实时流式处理技术,并结合其在满足非功能性需求方面的独特优势,设计了一个可以同时满足大数据存储、大数据实时性分析的实时营销系统。该系统采用了实时数据处理与离线数据处理相结合的架构。其中离线数据处理系统通过采用Hadoop集群将用户数据进行标签。实时数据处理系统首先将实时数据以日志的形式存储在Flume中,然后再通过Strom和Spark Streaming工具对实时数据进行实时处理与分析,并对数据进行标签。将生成的标签存储在Redis数据库中。实时营销系统的核心是通过分析电信用户DPI(Deep Packet Inspection,深度包检测)数据、挖掘用户上网特征、添加用户标签、发现目标用户,并采用个性化插件包对用户提供个性化的营销服务。本文的主要研究内容为:(1)实时营销系统的需求分析。结合电信运营商的营销系统的时效性差并且效率低下的现状,通过运用大数据的技术手段和方案,在基于上海电信海量的DPI数据的基础上,为用户进行实时性的推荐。在明确系统目标的前提下,完成对整个系统的需求分析,包括功能性需求(如营销商品管理、营销任务管理、营销规则管理、发送规则管理、营销效果评估)和非功能性需求(如流式框架每秒处理10万条DPI数据,时延少于500毫秒,可处理TB级以上的数据)。然后采用用例图对功能性需求进行建模。(2)实时性营销系统的总体架构设计。基于实时营销系统需求分析的基础上,提出了离线数据处理与实时数据处理相结合的总体架构。首先选择出流式处理平台的相应组件,然后采用流式处理组件串联结构,同时以CORE为核心调用相关模块进行实时营销的策略模式,对系统进行了全面的部署。通过对离线数据实时数据分别进行标签处理,利用标签对用户进行多维度的画像,全面反应用户特征,使得营销过程更加精准化。(3)实时性营销系统的具体设计与实现。根据系统的总体架构设计,本文主要从三个方面完成了基于流式计算的电信实时营销系统的设计与实现。解决实时数据的传输问题:流式计算数据处理系统需要进行对实时信息进行及时、不间断地处理。Flume从节点上实时采集数据并将数据以日志的形式存储。Kafka负责低时延的收发日志数据。Storm系统读取Kafka中的数据,并及时的处理,保证处理的稳定性和时效性。Spark Streaming完成对数据实时分析,保证在复杂度高的分析时具有较高的实时性。Storm系统与Spark Streaming系统共同部署在YARN上,完成了平台的整合与数据资源共享,节省了网络开销。解决精准性营销的问题:通过对电信的DPI数据进行分析,建立用户标签库,对用户进行画像。通过数据挖掘算法发现目标用户群以及用户的触点事件,建立相应的营销规则,当事件发生时触发实时营销动作。这是一个需要不断更新和完善的过程,通过建立正确的营销反馈体系和良好的反馈机制,使实时营销更加精准。利用个性化插件包解决个性化业务的需求问题:利用Mysql数据库和自定义应用程序接口,针对不同的业务场景开发不同的插件包,使实时营销具有可拓展性。(4)实时性营销系统的测试及结果分析。从系统的可行性和性能方面进行了验证和分析。在可行性方面,系统能够实现预期的功能,同时输出相对应的结果,并以明星机推送的场景实例对系统进行验证;在性能方面,分别对Storm和Spark Streaming的性能进行测试,并给出了结果分析。本文提出的实时营销系统能够清晰全面的掌握用户特征与习惯信息,为用户提供个性化定制的营销服务。在竞争激烈的移动增值业务市场中,率先满足用户的需要,得到用户的青睐,同时减少用户的流失。
数据处理流程 ⼤数据处理流程 1. 数据处理流程 ⽹站流量⽇志数据分析是⼀个纯粹的数据分析项⽬,其整体流程基本上就是依据数据的处理流程进⾏。有以下⼏个⼤的步骤: 1.1 数据采集 数据采集概念,⽬前⾏业会有两种解释:⼀是数据从⽆到有的过程(web服务器打印的⽇志、⾃定义采集的⽇志等)叫做数据采集; 另⼀⽅⾯也有把通过使⽤Flume等⼯具把数据采集到指定位置的这个过程叫做数据采集。 关于具体含义要结合语境具体分析,明⽩语境中具体含义即可。 1.2 数据预处理 通过mapreduce程序对采集到的原始⽇志数据进⾏预处理,⽐如清洗,格式整理,滤除脏数据等,并且梳理成点击流模型数据。 1.3 数据⼊库 将预处理之后的数据导⼊到HIVE仓库中相应的库和表中。 1.4 数据分析 项⽬的核⼼内容,即根据需求开发ETL分析语句,得出各种统计结果。 1.5 数据展现 将分析所得数据进⾏数据可视化,⼀般通过图表进⾏展⽰。 扩展: 1、数据处理主要技术 Sqoop:作为⼀款开源的离线数据传输⼯具,主要⽤于Hadoop(Hive) 与传统数据库MySql,PostgreSQL)间的数据传递。它可以 将⼀个关系数据库数据导⼊Hadoop的HDFS中,也可以将HDFS中的数据导⼊关系型数据库中。 Flume实时数据采集的⼀个开源框架,它是Cloudera提供的⼀个⾼可⽤⽤的、⾼可靠、分布式的海量⽇志采集、聚合和传输的系 统。⽬前已经是Apache的顶级⼦项⽬。使⽤Flume可以收集诸如⽇志、时间等数据并将这些数据集中存储起来供下游使⽤(尤其是数据流 框架,例如Storm)。和Flume类似的另⼀个框架是Scribe(FaceBook开源的⽇志收集系统,它为⽇志的分布式收集、统⼀处理提供⼀个 可扩展的、⾼容错的简单⽅案) Kafka:通常来说Flume采集数据的速度和下游处理的速度通常不同步,因此实时平台架构都会⽤⼀个消息中间件来缓冲,⽽这⽅⾯ 最为流⾏和应⽤最为⼴泛的⽆疑是Kafka。它是由LinkedIn开发的⼀个分布式消息系统,以其可以⽔平扩展和⾼吞吐率⽽被⼴泛使⽤。⽬前 主流的开源分布式处理系统(如Storm和Spark等)都⽀持与Kafka 集成。Kafka是⼀个基于分布式的消息发布-订阅系统,特点是速度快、 可扩展且持久。与其他消息发布-订阅系统类似,Kafka可在主题中保存消息的信息。⽣产者向主题写⼊数据,消费者从主题中读取数据。作 为⼀个分布式的、分区的、低延迟的、冗余的⽇志提交服务。和Kafka类似消息中间件开源产品还包括RabbiMQ、ActiveMQ、ZeroMQ 等。 MapReduce是Google公司的核⼼计算模型,它将运⾏于⼤规模集群上的复杂并⾏计算过程⾼度抽象为两个函数:map和reduce。 MapReduce最伟⼤之处在于其将处理⼤数据的能⼒赋予了普通开发⼈员,以⾄于普通开发⼈员即使不会任何的分布式编程知识,也能将⾃ ⼰的程序运⾏在分布式系统上处理海量数据。 Hive:MapReduce将处理⼤数据的能⼒赋予了普通开发⼈员,⽽Hive进⼀步将处理和分析⼤数据的能⼒赋予了实际的数据使⽤⼈员 (数据开发⼯程师、数据分析师、算法⼯程师、和业务分析⼈员)。Hive是由Facebook开发并贡献给Hadoop开源社区的,是⼀个建⽴在 Hadoop体系结构上的⼀层SQL抽象。Hive提供了⼀些对Hadoop⽂件中数据集进⾏处理、查询、分析的⼯具。它⽀持类似于传统RDBMS 的SQL语⾔的查询语⾔,⼀帮助那些熟悉SQL的⽤户处理和查询Hodoop在的数据,该查询语⾔称为Hive SQL。Hive SQL实际上先被 SQL解析器解析,然后被Hive框架解析成⼀个MapReduce可执⾏计划,并按照该计划⽣产MapReduce任务后交给Hadoop集群处理。 Spark:尽管MapReduce和Hive能完成海量数据的⼤多数批处理⼯作,并且在打数据时代称为企业⼤数据处理的⾸选技术,但是其 数据查询的延迟⼀直被诟病,⽽且也⾮常不适合迭代计算和DAG(有限⽆环图)计算。由于Spark具有可伸缩、基于内存计算能特点,且可以 直接读写Hadoop上任何格式的数据,较好地满⾜了数据即时查询和迭代分析的需求,因此变得越来越流⾏。Spark是UC Berkeley AMP Lab(加州⼤学伯克利分校的 AMP实验室)所开源的类Hadoop MapReduce的通⽤并⾏框架,它拥有Hadoop MapReduce所具有的优 点,但不同MapReduce的是,Job中间输出结果可以保存在内存中,从⽽不需要再读写HDFS ,因此能更好适⽤于数据挖掘和机器学习等 需要迭代的MapReduce算法。Spark也提供类Live的SQL接⼝,即Spark S
好的,我可以回答这个问题。您可以按照以下步骤来使用Flume采集Kafka数据到HDFS和Hive中: 1. 首先,确保您已经安装了FlumeKafka、HDFS和Hive等必要的软件。 2. 然后,在Flume的配置文件中添加Kafka作为Source和HDFS/Hive作为Sink。例如,以下是一个简单的配置文件示例: ``` agent.sources = kafka-source agent.channels = hdfs-channel agent.sinks = hdfs-sink hive-sink agent.sources.kafka-source.type = org.apache.flume.source.kafka.KafkaSource agent.sources.kafka-source.batchSize = 1000 agent.sources.kafka-source.kafka.bootstrap.servers = localhost:9092 agent.sources.kafka-source.kafka.topics = my-topic agent.sources.kafka-source.kafka.consumer.group.id = my-group agent.channels.hdfs-channel.type = memory agent.channels.hdfs-channel.capacity = 10000 agent.channels.hdfs-channel.transactionCapacity = 100 agent.sinks.hdfs-sink.type = hdfs agent.sinks.hdfs-sink.hdfs.path = hdfs://localhost:9000/flume/kafka agent.sinks.hdfs-sink.hdfs.fileType = DataStream agent.sinks.hdfs-sink.hdfs.writeFormat = Text agent.sinks.hdfs-sink.channel = hdfs-channel agent.sinks.hive-sink.type = hive agent.sinks.hive-sink.hive.metastore = thrift://localhost:9083 agent.sinks.hive-sink.hive.database = my-db agent.sinks.hive-sink.hive.table = my-table agent.sinks.hive-sink.hive.partition = dt=%Y-%m-%d agent.sinks.hive-sink.channel = hdfs-channel ``` 在上面的配置文件中,我们使用Kafka作为Source,将数据写入到HDFS和Hive中。我们使用Memory Channel将数据缓存在内存中,然后将其写入到HDFS和Hive中。在Hive Sink中,我们还定义了一个分区,以便按日期对数据进行分区。 3. 最后,运行Flume代理以开始从Kafka读取数据并将其写入到HDFS和Hive中。您可以使用以下命令来启动Flume代理: ``` $ bin/flume-ng agent -n agent -c conf -f conf/flume-kafka-hdfs-hive.conf ``` 这样,Flume代理就会开始从Kafka读取数据,并将其写入到HDFS和Hive中。 希望这些信息能够帮助您采集Kafka数据到HDFS和Hive中。如果您有任何其他问题,请随时问我。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值