首页 > 如何准备大数据开发项目?
头像
大数据老刘
编辑于 2022-05-05 17:02
+ 关注

如何准备大数据开发项目?

背景

最近非常多的师弟师妹加了老刘的微信,询问如何准备大数据开发项目的问题,如下图所示。

有的师弟师妹想准备一个项目去实习,有的师弟师妹想准备一个项目去秋招,大家都在为自己的未来好好准备。

咱大多数人都因为各种原因没有企业实习经历,没有企业实习经历更加不可能有项目经历了。

为了帮助大家解决项目问题,老刘结合自身特点(没钱),搜寻了一些免费学习资源,直接跳过了一些收费项目,总结了四个免费的大数据项目资源,希望能够对你们有帮助,找到心仪的工作!

需要说明的是,有几个项目是老刘去年在b站上接触的项目,大家今年可能存在搜不到的情况。

离线数仓之在线教育项目

项目介绍

这个项目是网络上能够搜寻到的一个免费的数据仓库项目,它主要讲述了有一个在线教育网站,每天都有很多人进来学习相关视频。

我们通过收集这些用户的数据信息,统计通过各地址跳转注册的用户人数、统计各平台的用户人数、统计花钱买课最多的TopN等。

项目技术选型

  1. 数据存储:Hdfs
  2. 数据处理:Hive、Spark
  3. 任务调度:Azkaban

项目流程

看到这张图,大家就明白老刘为什么说这个项目简单了,只需要按照流程将项目搭建起来即可。

用户注册模块需求分析

首先需要说明的是,用户埋点数据已经通过txt文件的格式给出,我们需要搞清楚原始数据的格式以及字段含义。

然后数据分层,一般数据仓库可以分为4层:ODS层用来存放原始数据、DWD层用来对ods层数据进行清洗、DWS层用来对DWD层的数据进行轻度汇总、ADS层用来做数据报表展示。

最后按照这4层,对数据进行清洗,聚合汇总形成宽表或拉链表,还有将数据导入到MySQL等进行数据展示。

除了这个模块,还有用户做题模块需求分析、用户买课模块分析等,这里就不一一展示了。

项目总结

这个项目比较简单,花两天就能看完相关视频,特别适合大家入门数据仓库等问题,同时也能学习一些组件的知识,例如Hive、HDFS、Spark等。

虽然项目简单,但大家需要掌握每个步骤,相关代码怎么写,相关表怎么设计,相关调优方案等。

老刘当时没有多少时间准备项目,就在这个项目的基础上进行了部分添加和修改,最后拿着这个项目参加了秋招。

项目相关面试问题(重点)

  1. 为什么分层?怎么分层?
  2. 表的分类,有哪些表,每个表的相关含义
  3. 数据同步策略
  4. 什么是范式理论
  5. 函数依赖?三范式?
  6. 关系建模和维度建模
  7. 星型模型、雪花模型、星座模型
  8. 什么是拉链表?为什么做拉链表?
  9. 数据仓库如何划分主题
  10. 剩下的就是代码、表设计、调优等问题

这些问题属于数据仓库最基本的面试问题了,大家需要牢牢掌握!

实时数仓之在线教育项目

这个项目和上一个项目类似,实时数仓多了几个大数据组件,用到了spark中的sparkstreaming模块,会比离线数仓稍微复杂点!

项目技术选型

  1. 数据存储:Kafka、MySql
  2. 数据处理:Spark
  3. 其他组件:Zookeeper

项目流程

相关需求分析

  1. 实时统计注册人数
  2. 实时统计用户播放视频各时长

项目总结

这个项目就是在上一个项目的基础上进行了一个扩展,利用到了Spark中的SparkStreaming实时计算模块,相关问题可以直接参加上一个项目。

电信客服项目

项目介绍

电信运营商每时每刻会产生大量的通信数据,例如通话记录,短信记录等。我们除了要满足用户的实时查询和展示之外,还需要定时定期的对已有数据进行离线的分析处理。例如当日话单,月度话单,季度话单,年度话单等。

于是我们以此为背景,学习其中的一些方法,掌握大数据相关组件。

项目架构及流程

  1. 我们首先制定好数据结构,然后通过Java代码自定义随机生成手机号、随机生成电话通话时间、生成日志写入文件等
  2. 利用Flume采集数据,Source选择exec,Channel选择Memory Channel,Sink选择Kafka
  3. 在Kafka直接打印数据
  4. 在HBASE中建表预分区、设置保存数据规则等
  5. 在MapReduce中读取HBASE的数据,进行相关需求分析
  6. 利用前端框架从MySQL中读取数据进行展示

项目需求分析

  1. 统计每天每个人的通话次数及时长
  2. 统计每月每个人的通话次数及时长
  3. 统计每年每个人的通话次数及时长

项目总结

对于数据生产模块,数据生产这个过程一般不会让我们进行操作,它是一套完整且严密的体系,这样可以保证数据的鲁棒性。但是如果涉及到项目的一体化方案的设计(数据的产生、存储、分析、展示),则必须清楚每一个环节是如何处理的,包括其中每个环境可能隐藏的问题;数据结构,数据内容可能出现的问题。

对于数据采集模块,我们首先清楚流式数据采集框架flume和kafka的定位是什么?

flume:

  1. 适合下游数据消费者不多的情况
  2. 适合数据安全性要求不高的操作
  3. 适合与Hadoop生态圈对接的操作

kafka:

  1. 适合数据下游消费众多的情况
  2. 适合数据安全性要求较高的操作(支持replication);

因此我们常用的一种模型是:

线上数据 --> flume --> kafka --> flume(根据情景增删该流程) --> HDFS

对于数据分析模块,首先根据具体的业务分析出对应的解决方案,然后利用MapReduce模块进行数据的各种操作。

对于数据展示模块,这个就是我们需要将某人按照不同维度查询出来的结果,展示到web页面上。

这个项目难度也不大,b站上有完整的资源,包括视频文档代码等,大家如果感兴趣可以去学习。

电商数仓

电商数仓是b站目前最火的大数据开发项目,它有着完整的视频笔记代码等,技术栈比较新比较全面。

如果大家觉得前3个项目比较简单或者技术栈有点老,现在大家完完全全可以花一个星期吃透这个项目,接着把这个项目写在自己的简历里。

由于这个项目实在是太火了,很多加我的师弟师妹已经学习了这个项目,老刘就不对这个项目进行具体介绍了。

总结

老刘一共给大家分享了4个项目,这4个项目虽然看起来比较简单,但是它们都是免费的白嫖的,还有完整的讲解视频,总的来说还是非常不错的,适合我们学习。

学完这些项目后,大家有了一定的基础并且还有多余的时间,可以搜索一些开源的成熟的项目进行学习,用来提高自己。

这次的分享有点仓促,只是给大家介绍了4个免费的项目,并没有教大家如何给面试官描述项目。

让老刘休息几天,下次给大家更新如何进行自我介绍以及如何详细描述自己的项目!

更多模拟面试

全部评论

(9) 回帖
加载中...
话题 回帖