课程大纲
一、需求分析1.1背景 | 1、如何更好的了解用户的行为以及属性以便更好的服务用户是当今互联网公司必须要做的事情,我们可以收集用户在手机上用了哪些应用,当然这个是需要经过用户同意的,如果用户同意上报自己的数据,那么根据用户的使用情况会给用户一些奖励,比如成长值、各种特权(优惠券、电影票等)、游戏币、游戏礼包,进一步刺激用户的使用情况,同时让用户实时看到应用使用情况。 2、随着业务的规模以及用户量越来越大,对系统接口的响应情况需要实时监控,比如PV、UV、接口响应时间; |
1.2总体要求 | 1、搭建高可用的实时计算框架,在框架的中的每个部分必须是高可用的 2、实时计算用户手机中App应用的使用情况,比如每小时、每天手机APP应用的使用时长、流量消耗等。 3、实时计算每个接口的PV、UV、响应时间 4、对用户的请求做到毫秒级响应 |
1.3难点分析 | 1、业务系统很多,如何实时聚合日志并对业务侵入性很小,这么多的系统的日志格式肯定都不一样,统一聚合后如何区分日志; 2、数据量很大如何达到高并发,让处理速度远高于写入速度 3、如何分布和处理数据才能对后续的系统减少压力,比如处理好的数据写入hbase,如何减少写次数; 4、我们的系统是大数据和业务系统紧密结合的,那么在大数据大量用户的情况下如何做到低延时; |
1.4解决问题的思路 | 1、需求分析并找出实现难点 2、设计每个难点的详细解决方案 3、程序或者脚本编码 4、项目测试 5、项目部署 6、项目交付 |
二、知识要点
2.1Flume要点 | 1、什么是agent,组件有哪些 2、支持的拓扑结构有哪些,怎么实现负载均衡 3、根据我们的实战项目该怎么选择source、channel、sink 4、根据我们的实战项目怎么设计拓扑以达到高可用 5、如何自己开发拦截器来实现我们特殊的要求,比如区分日志、均匀的写kafka分区 6、写kafka是同步写还是异步写 7、KafkaSink配置 |
2.2Kafka要点 | 1、kafka体系结构:broker、topic、partition 2、kafka的高可用 3、建立topic,创建分区,分区副本设置 4、kafka高级消费者、低级消费者 5、查看分区消息量以及消费进度 |
2.3spark-streaming要点 | 1、kafka低级消费者stream还是高级消费者stream 2、各种算子的功能 3、如何实现二次排序 4、根据业务情况如何优化计算逻辑使计算结果对后续压力减少 |
2.4Hbase要点 | 1、Hbase的数据模型 2、计数器、过滤器 3、根据我们的项目需求如何设计rowkey和表结构 4、如何批量写hbase减少网络通信时间 5、项目开发中如何选择合适的拦截器以避免全表扫描 |
三、难点攻克
3.1难点攻克1:如何收集不同业务系统的日志 | 1、不同的业务员系统由不同的团队开发运维,故产生的日志格式以及内容都不一样 2、每个业务系统会有多个日志机器,所以多个业务系统可能至少有十几台日志服务器 3、日志服务器上面一般都有业务系统的服务再跑,如何在采集日志的时候不影响业务系统 4、多个业务系统的日志被聚合在一起后如何在后续计算中区分日志 |
3.2难点攻克2:数据容错和提高并发处理能力 | 1、业务系统产生的数据都是海量的,少则千万多则上亿,数据容错性如何保障,我们辛苦采集的数据不能再处理之前丢失; 2、这些海量日志如何被均匀发布到多台机器上来提高并发处理能力 3、采集的数据不只为一种计算需求所使用,数据要重复被不同的需求使用,那么如何保证 |
3.3难点攻克3:减少写hbase的读写次数 | 1、我们不能每条日志处理后都写一次hbase,那么怎么减少写hbase的次数又不失准确性呢 2、hbase里面的结果数据是要被查询的,如何减少查询次数又能满足需求 |
四、解决方案设计
4.1技术选型 | 1、Flume:内置十几种数据采集方式、几种存储队列、十几种数据写出方式,组件轻量不会影响业务系统并吞吐量很高,消息可带消息头可区分日志来源 2、Kafka:高可用高并发的分布式消息队列,数据一旦进入kafka则不会丢失,并且数据可用重复使用,存储日志分布在集群各个机器上提高后续并发处理能力 3、spark-streaming:基于内存的流式计算框架,可用在内存中对数据批量快速处理,具有高吞吐量低延迟的特效 4、Hbase:亿级行百万列并可达到毫秒级查询的数据库,可以满足毫秒级低延迟查询 |
4.2架构设计 | 构架分层设计: 1、日志采集层 2、日志存储层 3、日志处理层 4、结果存储层 5、查询接口 |
4.3部署方案 | 1、拓扑图,哪些服务部署在哪些机器上 2、高可用方案 hadoop hdfs HA hadoop resource HA Flume高可用拓扑 Kafka高可用集群 Spark on YARN Hbase HA |
4.4业务日志采集 | 1、提供Flume全拓扑图 2、采用两层agent设计 3、第一层在业务系统服务器上部署 4、第二层做日志聚合 |
五、集群部署
1、Zookeeper集群 |
2、Hadoop YARN集群 |
3、Hbase集群 |
4、Kafka集群 |
5、Spark 集群 |
六、业务实现
6.1模拟搭建业务系统 | 1、搭建tomcat、nginx服务器 2、编写服务器接口 3、模拟访问接口产生用户行为日志和nginx日志 |
6.2Flume采集agent | 1、配置采集agent的Source、Channel、Sink、sinkGroup 2、采用负载均衡模式可达到高可用 |
6.3Flume聚合agent | 1、编写自定义拦截器区分业务类型 2、配置聚合agent的Source、Channel、Sink 3、配置写入kafka的生产者 4、如何让日志均匀的分布到Kafka分区 |
6.4编写Spark-streaming程序 | 1、根据需求创建hbase表、设计rowkey 2、建立读取topic的DStream 3、根据需求组合各种算子统计数据,如 map/mapRoPair/filter/reduceByKey/groupByKey/sortByKey/transform 4、将消费进度写入zookeeper以便监控消费情况 5、写入HBASE 6、查看监控页面以查看作业执行情况 |
6.5Hbase Java访问数据 | 1、编写访问Hbase的Java接口供实时访问 2、根据rowKey查询、范围查询 3、使用拦截 |
6.6spark程序提交 | 1、YARN程序简介 2、提交作业的不同方式 |
七、项目总结
大数据项目需要综合运用各种技术 | 1、介绍实际生产环境的注意事项 2、谈谈项目需要改进的地方 3、各个项目中遇到的坑 |
下载链接:https://pan.baidu.com/s/1skTNTTj(回复可见百度云提取密码)
密码:
购买主题
本主题需向作者支付 30 下载币 才能浏览