sqoop和flume区别
Flume和Sqoop是Hadoop数据集成和收集系统,两者的定位不一样。Flume有集群的概念,是一种分布式,可靠且可用的服务,主要用于高效地收集,汇总和移动大量日志数据。而我们的Sqoop是一种用于在Apache Hadoop和结构化数据存储(如关系数据库)之间高效传输批量数据的工具(没有集群的概念)。Sqoop有助于在hadoop和其他数据库之间移动数据,并且可以并行传输数据以提高性能。两者可以做同样的工作,但是各自擅长的领域不同,因此应用场景也不同。
flume模型
source channel sink
source:采集数据
channel:memory channel(速度快)/file channel(不丢数据)/kafka channel(省去sink阶段)
sink:输出到下游,sink是完全事务性的。在flume进行sink的时候,每个sink用Channel 启动一个事务。批量事件一旦成功写入到下游,Sink 就利用 Channel 提交事务。事务提交之后,该 Channel 从自己的内部缓冲区删除事件。如果写入失败,将缓冲区takeList中的数据归还给Channel。
flume数据流基本单元
event
flume监控
使用第三方框架Ganglia
flume和kafka区别
1.侧重点方面:
(1)flume追求的是数据和数据源、数据流向的多样性,适合多个生产者的场景;flume有自己内置的多种source和sink组件,通过配置文件的修改可以实现
(2kafka追求的是高吞吐,高负载,同一topic下可以有多个partition,由于是pull模式拉取数据,因此适合多个消费者的场景
2.安全性方面:
(1)flume适合数据安全性要求不高的操作,因为数据没有备份、没有副本
(2)kafka适合数据安全性要求较高的操作,kafka支持replication(多副本)。
3.flume更适合与Hadoop生态圈对接的操作,比如hdfs,hbase等
4.flume和kafka也可以结合使用,充分发挥两者优势:
线上数据 --> flume --> kafka --> 计算 --> HDFS
flume 调优
source :
1 ,增加 source 个数,可以增大 source 读取能力。
2 ,具体做法 : 如果一个目录下生成的文件过多,可以将它拆分成多个目录。每个目录都配置一个 source 。
3 ,增大 batchSize : 可以增大一次性批处理的 event 条数,适当调大这个参数,可以调高 source 搬运数据到 channel 的性能。
channel :
1 ,memory :性能好,但是,如果发生意外,可能丢失数据。
2 ,使用 file channel 时,dataDirs 配置多个不同盘下的目录可以提高性能。
3 ,transactionCapacity 需要大于 source 和 sink 的 batchSize 参数
sink :
增加 sink 个数可以增加消费 event 能力