课程特色
1、基于知名手机厂商线上项目需求进行讲解,快速提升Spark项目经验,解决手机应用实时分析、实时查询需求。
2、涵盖大数据实时计算一体化的处理流程,包括Flume采集不同来源不同类型的日志(用户行为日志,Nginx日志等等),Kafka消息队列缓存数据并提供高并发的处理以及供后续多种系统消费数据,spark-streaming根据业务需求实时计算数据,Hbase用来存储大数据量和低延迟的访问。
3、特别注重企业级Spark项目开发的系统性、完整性,拒绝小demo小案例,提升视野与高度。
(项目总体架构图)
项目涉及技术
Java,hadoop YARN,Flume,Kafka,Spark-streaming,Hbase
Hadoop YARN:分布式文件存储系统、资源管理平台,负责spark-streaming的文件存储和资源分配
Flume:实时收集、过滤、聚合各种日志数据
Kafka:分布式高并发消息队列,负责缓存Flume采集的数据并为下游的各种计算提供高并发的数据处理
Spark-streaming:基于内存的高吞吐量实时流式计算
Hbase:亿级行百万列并可毫秒级查询的数据库,可快速查询我们的计算数据
【提醒】参团即送基础课,先买先学,夯实基础,事半功倍!!
适用人群
1、对大数据有简单了解的学员;
2、有java编程基础想做大数据实时计算的学员;
3、想转行或者从事海量数据实时计算的学员;
4、想提升大数据相关技能和积累项目经验的学员;
课程目标
1、熟悉掌握大数据实时计算一体化的处理流程,包括数据采集、数据存储、数据处理、处理结构毫秒级查询
2、熟悉掌握Flume数据采集、过滤、聚合不同来源不同类型的海量日志
3、熟悉掌握Kafka的体系结构、生产者、消费者、分区以及上下游的结合
4、熟悉掌握spark-streaming流式计算编程,熟悉各种算子的计算逻辑
5、熟悉掌握hbase表、列族、列、rowkey、过滤器、计数器的使用以及设计
6、能够让学员在以后的工作中举一反三,对不同的需求有能力独立设计方案,真正掌握大数据实时计算
讲师介绍
-
杨哲
大讲台大数据特聘讲师 | 国内知名手机厂商大数据资深工程师
某大型手机厂商大数据小组Team Leader,对离线计算和实时计算都有丰富的经验。从业时间10年,曾在社交网络、移动广告、视频等行业研发大数据平台,擅长Hadoop、Flume、Kafka、Spark 、hbase大数据相关技术。在高可用高并发的业务系统的研发以及构架设计也有丰富的经验,热衷于将业务系统和大数据系统相结合的项目开发与设计。
开课时间
18小时直播,已结束,有完整视频回放和资料,随买随学
学习方式
观看直播回放视频 + QQ群交流答疑
视频可在线反复观看,有效期1年
课程大纲
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、第二层做日志聚合 |
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、提交作业的不同方式 |
常见问题
Q:会有实际上机演示和动手操作吗?
A:本课程为项目拆解课,全程实操演练!不仅仅是简单演示,而是手把手带你操练真实项目。
Q:在线直播课程怎么答疑?
A: 每个班级会建立专门的班级QQ群,学员可以针对课程中的问题,或者自己学习与动手实践中的问题,向老师提问,老师会进行相应解答。同时,强烈推荐大家到官网技术问答区提问,方便知识的沉淀,同时也避免因为QQ群信息刷屏而导致你的问题被老师错过。