如何准备大数据开发项目?
背景
最近非常多的师弟师妹加了老刘的微信,询问如何准备大数据开发项目的问题,如下图所示。
有的师弟师妹想准备一个项目去实习,有的师弟师妹想准备一个项目去秋招,大家都在为自己的未来好好准备。
咱大多数人都因为各种原因没有企业实习经历,没有企业实习经历更加不可能有项目经历了。
为了帮助大家解决项目问题,老刘结合自身特点(没钱),搜寻了一些免费学习资源,直接跳过了一些收费项目,总结了四个免费的大数据项目资源,希望能够对你们有帮助,找到心仪的工作!
需要说明的是,有几个项目是老刘去年在b站上接触的项目,大家今年可能存在搜不到的情况。
离线数仓之在线教育项目
项目介绍
这个项目是网络上能够搜寻到的一个免费的数据仓库项目,它主要讲述了有一个在线教育网站,每天都有很多人进来学习相关视频。
我们通过收集这些用户的数据信息,统计通过各地址跳转注册的用户人数、统计各平台的用户人数、统计花钱买课最多的TopN等。
项目技术选型
- 数据存储:Hdfs
- 数据处理:Hive、Spark
- 任务调度:Azkaban
项目流程
看到这张图,大家就明白老刘为什么说这个项目简单了,只需要按照流程将项目搭建起来即可。
用户注册模块需求分析
首先需要说明的是,用户埋点数据已经通过txt文件的格式给出,我们需要搞清楚原始数据的格式以及字段含义。
然后数据分层,一般数据仓库可以分为4层:ODS层用来存放原始数据、DWD层用来对ods层数据进行清洗、DWS层用来对DWD层的数据进行轻度汇总、ADS层用来做数据报表展示。
最后按照这4层,对数据进行清洗,聚合汇总形成宽表或拉链表,还有将数据导入到MySQL等进行数据展示。
除了这个模块,还有用户做题模块需求分析、用户买课模块分析等,这里就不一一展示了。
项目总结
这个项目比较简单,花两天就能看完相关视频,特别适合大家入门数据仓库等问题,同时也能学习一些组件的知识,例如Hive、HDFS、Spark等。
虽然项目简单,但大家需要掌握每个步骤,相关代码怎么写,相关表怎么设计,相关调优方案等。
老刘当时没有多少时间准备项目,就在这个项目的基础上进行了部分添加和修改,最后拿着这个项目参加了秋招。
项目相关面试问题(重点)
- 为什么分层?怎么分层?
- 表的分类,有哪些表,每个表的相关含义
- 数据同步策略
- 什么是范式理论
- 函数依赖?三范式?
- 关系建模和维度建模
- 星型模型、雪花模型、星座模型
- 什么是拉链表?为什么做拉链表?
- 数据仓库如何划分主题
- 剩下的就是代码、表设计、调优等问题
这些问题属于数据仓库最基本的面试问题了,大家需要牢牢掌握!
实时数仓之在线教育项目
这个项目和上一个项目类似,实时数仓多了几个大数据组件,用到了spark中的sparkstreaming模块,会比离线数仓稍微复杂点!
项目技术选型
- 数据存储:Kafka、MySql
- 数据处理:Spark
- 其他组件:Zookeeper
项目流程
相关需求分析
- 实时统计注册人数
- 实时统计用户播放视频各时长
项目总结
这个项目就是在上一个项目的基础上进行了一个扩展,利用到了Spark中的SparkStreaming实时计算模块,相关问题可以直接参加上一个项目。
电信客服项目
项目介绍
电信运营商每时每刻会产生大量的通信数据,例如通话记录,短信记录等。我们除了要满足用户的实时查询和展示之外,还需要定时定期的对已有数据进行离线的分析处理。例如当日话单,月度话单,季度话单,年度话单等。
于是我们以此为背景,学习其中的一些方法,掌握大数据相关组件。
项目架构及流程
- 我们首先制定好数据结构,然后通过Java代码自定义随机生成手机号、随机生成电话通话时间、生成日志写入文件等
- 利用Flume采集数据,Source选择exec,Channel选择Memory Channel,Sink选择Kafka
- 在Kafka直接打印数据
- 在HBASE中建表预分区、设置保存数据规则等
- 在MapReduce中读取HBASE的数据,进行相关需求分析
- 利用前端框架从MySQL中读取数据进行展示
项目需求分析
- 统计每天每个人的通话次数及时长
- 统计每月每个人的通话次数及时长
- 统计每年每个人的通话次数及时长
项目总结
对于数据生产模块,数据生产这个过程一般不会让我们进行操作,它是一套完整且严密的体系,这样可以保证数据的鲁棒性。但是如果涉及到项目的一体化方案的设计(数据的产生、存储、分析、展示),则必须清楚每一个环节是如何处理的,包括其中每个环境可能隐藏的问题;数据结构,数据内容可能出现的问题。
对于数据采集模块,我们首先清楚流式数据采集框架flume和kafka的定位是什么?
flume:
- 适合下游数据消费者不多的情况
- 适合数据安全性要求不高的操作
- 适合与Hadoop生态圈对接的操作
kafka:
- 适合数据下游消费众多的情况
- 适合数据安全性要求较高的操作(支持replication);
因此我们常用的一种模型是:
线上数据 --> flume --> kafka --> flume(根据情景增删该流程) --> HDFS
对于数据分析模块,首先根据具体的业务分析出对应的解决方案,然后利用MapReduce模块进行数据的各种操作。
对于数据展示模块,这个就是我们需要将某人按照不同维度查询出来的结果,展示到web页面上。
这个项目难度也不大,b站上有完整的资源,包括视频文档代码等,大家如果感兴趣可以去学习。
电商数仓
电商数仓是b站目前最火的大数据开发项目,它有着完整的视频笔记代码等,技术栈比较新比较全面。
如果大家觉得前3个项目比较简单或者技术栈有点老,现在大家完完全全可以花一个星期吃透这个项目,接着把这个项目写在自己的简历里。
由于这个项目实在是太火了,很多加我的师弟师妹已经学习了这个项目,老刘就不对这个项目进行具体介绍了。
总结
老刘一共给大家分享了4个项目,这4个项目虽然看起来比较简单,但是它们都是免费的白嫖的,还有完整的讲解视频,总的来说还是非常不错的,适合我们学习。
学完这些项目后,大家有了一定的基础并且还有多余的时间,可以搜索一些开源的成熟的项目进行学习,用来提高自己。
这次的分享有点仓促,只是给大家介绍了4个免费的项目,并没有教大家如何给面试官描述项目。
让老刘休息几天,下次给大家更新如何进行自我介绍以及如何详细描述自己的项目!
#2022春招##面经##项目##大数据开发工程师#