Flume+kafka配置并存储数据

一、flume和kafka为什么要结合使用

1.Flume 和 Kafka 都是用于处理大量数据的工具,但它们的设计目的不同。Flume 是一个可靠地收集、聚合和移动大量日志和事件数据的工具,而Kafka则是一个高吞吐量的分布式消息队列,用于将大量数据流式传输到各个系统中。
因此,结合使用Flume和Kafka可以实现更好的数据处理和分发。Flume可以将数据从多个源收集和聚合,然后将其发送到Kafka中,Kafka可以将数据分发到多个消费者和系统中。这种结合使用可以实现更好的数据流控制和分配,提高数据处理效率和数据可靠性。
2.使用Kafka作为Flume的Sink
将Flume的数据通过Flume-Kafka Sink发送到Kafka Topic中。这种方式可以实现数据的实时转发和分发,同时保证数据的可靠性和可恢复性。

3.使用Flume的Kafka Source
通过Flume的Kafka Source从Kafka Topic中读取数据,然后将数据发送到下游系统中。这种方式可以保证数据的可靠性和高效性,同时可以实现数据的多级处理和转发。

二、 编写Flume+kafka配置文件

1.编写exec-mem-kafka配置文件

①切换目录

cd /opt/server/flume/file/

 ②修改exec-mem-kafka配置文件

vim commodity_click-exec-mem-kafka.conf 

 ③打开Flume中文网

Flume 1.9用户手册中文版 — 可能是目前翻译最完整的版本了 (liyifeng.org)

 ④查找Exec Source

 ⑤查找Memory Channel

 l⑥查找Kafka Sink

 ⑦编辑exec-mem-kafka配置文件

#别名
a1.sources = r1
a1.channels = c1
a1.sinks = k1
#sources
a1.sources.r1.type = exec
a1.sources.r1.command = tail -F /var/log/secure
#channels
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
#sink
a1.sinks.k1.type = org.apache.flume.sink.kafka.KafkaSink
a1.sinks.k1.kafka.topic = mytopic
a1.sinks.k1.kafka.bootstrap.servers = 192.168.229.111:9092
a1.sinks.k1.kafka.flumeBatchSize = 20
a1.sinks.k1.kafka.producer.acks = 1
a1.sinks.k1.kafka.producer.linger.ms = 50
#连接
a1.sources.r1.channels = c1
a1.sinks.k1.channels = c1

 2.编辑kafka-mem-hdfs配置文件

①创建文件

 vim commodity_click-kafka-mem-hdfs.conf 

 ②查看配置参数

 

 ③编辑配置参数

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

#sources
a1.sources.s1.type = org.apache.flume.source.kafka.KafkaSource
a1.sources.s1.batchSize = 100
a1.source.s1.batchDurationMillis = 2000
a1.sources.source1.kafka.bootstrap.servers = 192.168.229.111:9093,192.168.229.112:9093,192.168.229.113:9093
a1.sources.s1.kafka.topics = commodity
a1.sources.s1.kafka.consumer.group.id = first_test
a1.sources.s1.kafka.consumer.auto.offset.reset = earliest

#channels
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

#sink
a1.sinks.k1.type = hdfs
a1.sinks.k1.hdfs.path = /flume/events/%y-%m-%d/%H%M/%S
a1.sinks.k1.hdfs.filePrefix = commodity-
a1.sinks.k1.hdfs.round = true
a1.sinks.k1.hdfs.roundValue = 10
a1.sinks.k1.hdfs.roundUnit = minute
a1.sinks.k1.hdfs.rollInterval = 0
a1.sinks.k1.hdfs.rollSize = 0
a1.sinks.k1.hdfs.rollCount = 5000
a1.sinks.k1.hdfs.useLocalTimeStamp = true

a1.sinks.k1.hdfs.fileType = DataStream

#连接
a1.sources.s1.channels = c1
a1.sinks.k1.channel = c1

3.创建主题

①启动zk集群

./zk.sh start 

 出现的问题:zk脚本文件未启动成功

 首先我们要启动三台zk集群

然后再启动zk脚本文件,就可以了

 

 ②查看zk集群状态

 ./zk.sh status

③启动kafka集群

./kafka.sh start

 ④查看进程

./xcall.sh jps

 ⑤切换kafka的bin目录

cd /opt/server/kafka/bin/

 

⑥创建主题

kafka-topics.sh --create --bootstrap-server hadoop1:9092,hadoop2:9092,hadoop3:9092 --replication-factor 3 --partitions 3 --topic commodity

 ⑦查看主题

kafka-topics.sh --list --bootstrap-server hadoop1:9092,hadoop2:9092,hadoop3:9092

 ⑧关闭kafka集群

⑨关闭zk集群

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
该资源真实可靠,代码都经测试过,能跑通。 快速:Apache Spark以内存计算为核心。 通用 :一站式解决各个问题,ADHOC SQL查询,流计算,数据挖掘,图计算完整的生态圈。只要掌握Spark,就能够为大多数的企业的大数据应用场景提供明显的加速。存储层:HDFS作为底层存储,Hive作为数据仓库 (Hive Metastore:Hive管理数据的schema) 离线数据处理:SparkSQL (做数据查询引擎<===> 数据ETL) 实时数据处理:Kafka + Spark Streaming 数据应用层:MLlib 产生一个模型 als算法 数据展示和对接:Zeppelin 选用考量: HDFS不管是在存储的性能,稳定性 吞吐量 都是在主流文件系统中很占有优势的 如果感觉HDFS存储还是比较慢,可以采用SSD硬盘等方案。存储模块:搭建和配置HDFS分布式存储系统,并Hbase和MySQL作为备用方案。 ETL模块:加载原始数据,清洗,加工,为模型训练模块 和 推荐模块 准备所需的各种数据。 模型训练模块:负责产生模型,以及寻找最佳的模型。 推荐模块:包含离线推荐和实时推荐,离线推荐负责把推荐结果存储存储系统中实时推荐负责产生实时的消息队列,并且消费实时消息产生推荐结果,最后存储存储模块中。 数据展示模块:负责展示项目中所用的数据数据流向:数据仓库怎么理解?两种东西,其一是IBM微软数据产品为代表的,其二是Hadoop+Hive+Apache Hive数据仓库软件有助于使用SQL读取,写入和管理驻留在分布式存储中的大型数据集。 可以将结构投影到已经存储数据上。 提供了命令行工具和JDBC驱动程序以将用户连接到Hive。
本资源为大数据基础到中高级教学资源,适合稍微有点大数据或者java基础的人群学习,资源过大,上传乃是下载链接,不多说,上目录: 1_java基础2 l3 a2 a$ t7 J2 b+ `- p 2_java引入ide-eclipse 3_java基础知识-循环-类型转换 4_循环-函数-数组-重载 5_多为数组-冒泡-折半-选择排序 6_oop-封装-继承-static-final-private 7_多态-接口-异常体系 8_适配器/ k% N! Y7 j/ |- c) O5 M' V6 S 9_多线程-yield-join-daemon-synchronized; o, E; \* I: E2 W 10_多线程-同步代码块-同步方法 11_多线程-生产消费问题 12_多线程-死锁问题 13_字符集问题' X4 e; v9 q' U2 W% f" l7 f$ F 14_String-StringBuffer-StringBuilder 15_集合-list-arrayList-linkedlist 16_集合-hashset-hashmap-迭代器-entryset$ d3 b$ ~5 b! @- Z* }- C 17_快捷键设置* L* C. y4 Z1 v0 p) [8 p3 A 18_IO& f, H- i' w( B; P% V; Q" z. L( n/ q 19_IO2 20_文件归档和解档 21_TCP+udp协议-广播 22_UDP实现屏广程序-教师端3 m7 l; D) p! p$ q' H- L5 t1 s 23_UDP实现屏广程序-教师端2% |) h# a9 r) z6 b 24_GOF-设计模式$ k0 Y6 b) s& m% J 25_qq消息通信2 T! n* ^2 ? | l# ]- ^ 26_qq消息通信2 27_qq消息通信-群聊 28_qq消息通信-群聊-手动刷新好友列表-下线通知0 P+ D" ]/ f. q* O! d9 Z& L 29_qq消息通信-群聊-私聊消息' a3 S6 a2 d+ Y6 s( Z 30_qq消息通信-群聊-私聊消息2 31_虚拟机内存结构-反射 32_虚拟机内存结构-JVM-$ j; l* n7 g' u 33_代理模式 34_RDBMS 35_MySQL安装' `/ h# t# o# s& y1 \# ?* R5 f) p4 Z 36_MySQL常用命令-CRUD 37_java JDBC-insert 38_java JDBC-sql注入问题-preparedstatemnt 39_java 事务管理-批量插入0 X, w! w5 [- E( `( f* V1 [ 40_java事务管理-批量插入-存储过程 41_java mysql 函数 42_java mysql LongBlob + Text类型8 @9 ^) y7 s* L, _3 w7 Q9 q9 ^ 43_连接查询2 R: d" J9 J1 O3 D* B1 }2 u( {2 v 44_事务并发现象-脏读-幻读-不可重复读-隔离级别 45_隔离级别-并发现象展示-避免 46_表级锁-行级锁-forupdate 47_mysql数据源连接池 48_NIO" d% v1 P# ~3 S/ L 49_NIO程序- u5 T2 a5 N" {! @8 q4 c 50_Vmware安装-client centos7机安装2 Q. l/ r7 y) ^% n8 |4 _. k 51_centos文件权限-常用命令 52_网络静态ip-NAT连接方式-YUM安装, e9 j% z; B' ?! p1 D* Y 53_常用命令2 L V5 k8 y8 S h( Q0 `2 O4 s- I- N 54_for-while-if-nc6 z# I2 D6 f- D* |6 Y @ 55_jdk安装-环境变量配置2 C6 x4 C; s) M: {$ }- p 56_hadoop安装-配置 57_hadoop伪分布模式8 I/ e; `1 Y$ b+ p1 R5 ^ 58_编写分发脚本-xcall-rsync1 X% G: Y' Q; }5 I$ [ 59_hadoop完全分布式-hdfs体验 60_hadoop的架构原理图 61_临时文件 62_hadoop的简单介绍, p5 P$ @+ O2 V. p } 63_通过京东的流程讲解hadoop的处理过程; b1 Q* b- v& N, S4 G) j' Y 64_项目流程图 65_架构2 66_跑一个应用程序 67_hadoop的搭建的复习6 h) {. C, f( J( @& F0 G 68_脚本分析的过程" ?' q# U7 B/ ~" W, e- I 69_开启和关闭一个进程 70_hadoop常用的命令和关闭防火墙) Q" A0 B3 M8 s3 ? 71_hadoop存储为何是128M 72_hadoop的存储问题 73_hadoop的高可用 74_配置hadoop临时目录 75_hadoop的hdfs的jar包 76_hadoop的存储问题+ B: J K& G* B4 Z 77_hadoop的hdfs常用的命令 78_hadoop的存储过程 79_hadoop的大数据节点% K S, J! U3 W& o2 d) Q 80_hdfs-maven-hdfs API访问8 s8 J# W* l- i% x, ]: L! L 81_hdfs-maven-idea的集成处理 82_hdfs-block大小-副本数设定9 o$ I! k4 |+ ]9 q2 h8 ]# x6 B, S* Y$ W 83_hdfs-网络拓扑-写入剖析2 g4 Z0 j& K; Z, K 84_hdfs-写入剖析2-packet-chunk 85_hdfs-压缩编解码器, u" o: K/ V5 B 86_hdfs-MR原理 87_hdfs-wordcount$ ?% ?& }' U. [0 M9 b 88_hadoop-mapreduce-切片演示-mapper 89_hadoop-mapreduce-url演示1 B% m, V- Z) ~. B9 |9 m2 u 90_job提交流程剖析 91_job split计算法则-读取切片的法则 92_job seqfile5 v! h+ R9 L1 w, U* T6 J# M 93_job 全排序-自定义分区类2 n% h" `: b4 c) C3 J9 S 94_job二次排序5 t3 Z2 R- ]( a: s* c0 Z 95_从db输入数据进行mr计算: L. M4 I6 y, R2 l/ u/ L 96_输出数据到db中 97_NLineInputFormat& u( k1 T& z( O# P, S* y1 Y 98_KeyValueTextInputFormat* p$ O1 z- h, n" e( x1 s& c% z' v 99_join mapper端连接- N, S# O2 }6 m0 T 100_join reduce端连接0 N1 |* R5 n* D8 C+ i 101_hadoop Namenode HA配置8 [( ^7 Q1 W' y3 q 102_avro串行化4 [! T( [, J# e5 h P' w' {% I 103_google pb串行化& S- V% x6 v) {( Y" W 104_hive安装-使用: r/ Q& x. ~6 `- d* Y& R U4 X 105_hive beeline-hiveserver2 106_hive beeline-外部表-内部标 107_hive 分区表-桶表 108_hive word count 109_hive连接查询-union查询-load数据 110_hbase概述 111_zk架构-集群搭建-容灾演练avi 112_zk API-观察者-临时节点-序列节点-leader选举 113_hadoop namenode HA自动容灾" X3 `' ^/ U+ u+ U" F: } b 114_hadoop RM HA自动容灾 115_hbase集群搭建 116_hbase名字空间-表 117_hbase大批量操作7 [! ^" m3 B$ C. {1 S$ h. X 118_hbase架构-表和区域切割( p4 _0 k) J9 A/ ~; [ F 119_hbase架构-区域的合并 120_hbase get-scan-范围指定 121_扫描缓存-超时-切片' O; n; m' P; a6 T/ H$ S! ^ 122_hbase的HA配置演示-和Hadoop的HA集成 123_hbase版本机制 124_hbase-ttl-min-versions-keep-deleted-cells" @- N5 [2 s; S3 T$ H' C 125_keep-deleted-cells控制是否保留删除的shell$ V8 |; Q7 g" ]- C# j% |! y 126_过滤器rowkey-family 127_过滤器-分页-row-col 128_filterList 129_rowkey2 h5 Y+ y9 _1 j0 K0 Q) n 130_区域观察者 131_区域观察者实现和部署" s o7 p+ F& p/ a) ]& W/ ? 132_重写区域观察者的postPut和postScannext方法实现数据统一处理0 H) Q' Z- b; P# K 133_hbase的bulkload命令实现hbase集群之间数据的传输2 D6 d; F6 S8 x+ I/ I0 B0 @ 134_hive同hbase集成,统计hbase数据表信息% Q/ R! Z1 J3 J) k+ H! {6 D# M 135_使用TableInputFormat进行MR编程! m& C6 B/ v6 N" `, I' O& }4 u 136_使用phoenix交互hbase& h* s5 S- ~6 ]: u7 \ 137_squirrel工具. |+ E; g* R9 l3 E 138_flume简介 139_nc收集日志# [3 O7 K& n; f; y( f 140_hdfs sink收集日志到hdfs b9 o, k, j( G4 l! {* u: | 141_使用spooldir实现批量收集/ s8 F* }% o- n6 g& a9 w 142_使用exec结合tail命令实现实时收集 143_使用seq源和压力源实现测试 144_使用avro源 145_导入avro maven-avro-client 146_导入avro maven-avro-client 147_使用hbasesink收集日志到hbase数据库 148_内存通道配置6 U/ X5 L3 ]7 b6 `5 x 149_source的通道选择器-复制策略-multiplexing 150_source的数据流程 151_sinkgroup的处理器-loadbalance- ^6 B0 j4 Z5 f9 d 152_sinkgroup的处理器-failover) y- ^1 Y. ~5 s9 G8 S! ^! a5 o 153_kafka集群安装与启动4 ^; K& j3 @6 p0 M 154_kafka创建主题以及查看主题结构 155_考察zk中kafka结构9 N: Y8 u4 {# m/ z1 d3 H 156_kafka分区服务器服务方式 157_kafka编程API实现生产者和消费者+ w9 l1 N( D8 E% z( D; G 158_kafka手动修改zk的偏移量实现消费处理( w7 s! K9 v7 U3 P7 T4 j 159_kafkaflume集成-source集成- _, G+ K) y% I4 D" q9 \ 160_kafkaflume集成-sink集成4 o6 W; v5 a; p9 s. X% I7 @ 161_kafkaflume集成-channel集成/ x' w3 g3 z& d: w 162_kafka简介!
flume是一个分布式、可靠、高可用的数据采集、聚合和传输系统。在数据采集方面,flume可以很好地与nginx、kafka、mongodb等常见的数据处理工具和数据库进行集成。下面介绍一下基于nginx+flume+kafka+mongodb实现埋点数据采集的步骤: 1. 配置nginx服务器,将所有的http请求都转发到flume服务器上。可以使用nginx的proxy_pass指令来实现。 2. 在flume服务器上,配置flume agent来接收nginx服务器转发过来的http请求,并将请求数据转发给kafka服务器。flume配置文件中需要设置source、channel和sink三个部分,具体配置可以参考flume官方文档。 3. 在kafka服务器上,创建一个topic来存储flume发送过来的http请求数据。可以使用kafka的命令行工具kafka-topics来创建topic。 4. 在flume服务器上,配置一个kafka sink来将http请求数据发送到kafka服务器上的指定topic中。 5. 在mongodb数据库中创建一个collection来存储http请求数据。可以使用mongodb的命令行工具mongo来创建collection。 6. 在flume服务器上,配置一个mongodb sink来将http请求数据kafka服务器中消费,并将其存储到mongodb数据库中的指定collection中。 7. 启动nginx、flumekafka和mongodb服务,并进行测试。可以使用curl等工具模拟http请求,并查看数据是否能够被成功采集、存储到mongodb中。 以上就是基于nginx+flume+kafka+mongodb实现埋点数据采集的基本步骤。需要注意的是,具体的配置和实现过程可能会因为不同的业务需求而有所差异。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值