电商数仓项目-用户行为采集注意事项

文章目录

  • flume
    • 一、组成结构
    • 二、三个器
    • 三、优化及挂了的处理方法
  • kafka(20件事)
    • 一、基础
    • 二、挂了
    • 三、丢失
    • 四、重复
    • 五、积压
    • 六、优化

1.生成不同日期数据时,一定要先停止集群,再去修改时间,否则flume消费不到kafka的数据

flume

一、组成结构

1、source
taildir:多目录、 断点续传
    挂了之后重启
    如果数据重复,再次修改源码,修改成事务; 下级去重(hive,spark去重)
  taildir 默认不支持递归遍历读取文件,需要修改源码
2、channel

  • filechannel:可靠性高、效率低 基于磁盘 100万event
  • memory:可靠性差、效率高 基于内存 100event
  • kafka:可靠性高、效率高 下一级必须为kafka

3、sink

  • hdfs sink:需要注意小文件问题
    时间1小时 or128m or event 0 文件名lzo.tmp => .lzo

4、put/ take

二、三个器

  • 拦截器:
    ETL:简单的清洗 判断json的完成性 { }
    分类型:启动日志 、事件日志
    实现im接口(初始化、单event、多event、close builder)打包上传flume\lib
    不用也可以,在下一级进行处理
  • 选择器
    r(默认):发往所有通道
    m:选择发往不同的通道{start,event}
  • 监控器
    g 监控 put take 尝试提交次数,远远大于最终提交次数,说明flume性能有问题,进行优化:提高自己(增加内存flume_env.sh 4g-6g内存)or 增加台数

三、优化及挂了的处理方法

1.hdfs sink 小文件问题
2.监控器:优化:提高自己(增加内存flume_env.sh 4g-6g内存)or 增加台数
3.filecchannel 能多目录就多目录提高吞吐量
4.kafka channel 优化 比 memory+kafkasink快
5.flume挂了有哪些影响

kafka(20件事)

一、基础

1、组成 :生产者、broker 、消费者、zk:没有生产者信息,存放broker-id,消费者信息、分区信息、副本等
2.台数 2*(生产者峰值生产速率*副本/100)+1
3.压测:生产者峰值生产速率,一般低于50m/s
4.副本:2-3个,2个居多(作用:提高可靠性;副本太多:磁盘IO大)
5.数据默认保存7天,生产环境调整到3天
6.磁盘空间:每天的数据量(100g)*副本(2)*3天/0.7,留30%预量
7.kafka监控:KafkaManager、 KafkaMonitor
8.ISR :leader 挂了 延迟时间、延迟条数 ;新:延迟时间
9.分区分配策略:

  • range(默认,没除开,数据放在地分区,造成数据倾斜)
  • RoundRobin(随机打散hash,轮询)

10.分区数设置:期望的吞吐量/min(生产者峰值生产速率,消费者消费速率)

二、挂了

1.Flume 记录
2.日志有记录
3.短期没事

三、丢失

Ack=0, producer 不等待 kafka broker 的 ack, 一直生产数据。
Ack=1, leader 数据落盘就发送 ack, producer 收到 ack 才继续生产数据。
Ack=-1, ISR 中的所有副本数据罗盘才发送 ack, producer 收到 ack 才继续生产数据。

四、重复

1.幂等性
2.事务
3.下一级处理 hive spark

五、积压

增加分区:消费者也得增加线程数
增加消费者消费速度:flume+kafka+flume(batchsize)+hdfs

六、优化

IO密集任务:数据进入-》出去 :cpu*2
计算密集任务:加减乘除运算 cpu+1

压缩

内存:默认1g;生产环境4-6g;不能大于6g,增加台数

你可能感兴趣的:(大数据)