海狐海淘实时数据分析系统一期
软件架构:Flume+Kafka+Canal+Spark Streaming+Mysql+Redis +ElasticSearch+Kibana
项目周期:2018.05-2019.09
项目描述:
基于用户启动日志和事件日志,数据经 Flume 发往 Kafka 后 Spark Streaming 直接消
费进行实时计算和监控,实现了用户即时详单查询,业务量监控等。
责任描述:
1. 参与日志采集通道的维护和优化,保障数据顺利传输到 Kafka。
2. 使用 Kibana 对写入 ElasticSearch 中的数据进行可视化与监控。
3. 统计每小时日活和每小时销售额的实时变化趋势。
4. 实现不同条件灵活实时分析用户的购买行为。
5. 实现优惠券领取异常的实时监控。
6. 统计各品类最近一小时内的热门商品 Top10。
技术描述:
1. 用户日志数据直接由 Flume 采集到 Kafka,用户行为数据由 Canal 通过 MySQL 的
binlog 同步更新到 Kafka 中。其中 Canal 搭建高可用,提高稳定性。
2. 数据在 Spark Streaming 中借助 Redis 完成清洗和去重的操作。
3. 设置 kafka.maxRatePerPartition 控制 Spark Streaming 每秒消费多少条。
开启背压解决 Spark Streaming 数据积压问题。
配置 Spark Streaming 优雅关闭。
4. 手动提交偏移量到 MySQL 保证 Spark Streaming 数据不丢失。
5. 使用广播变量将小表数据广播提高小表 join 大表时的效率。
6. Spark Streaming 处理后的明细数据存入 Hbase,异常报警信息存入 ElasticSearch 供
运维人员监控。
7. 在 Redis 端加分布式锁或在 Spark Streaming 内使用 reducebykey 或 groupbykey 解决
线程安全问题。
8. 少数几个 key 造成数据倾斜时可以对两条流过滤出来这些 key 做大流打散小流扩容,
再与正常分布 key 的 join 结果做 union 即可。