大数据课程中实际项目案例分析

以实际项目开发过程教学,让编程学习变得更简单

项目式教学方式分析



       学习软件开发课程,最终的目标就是开发软件项目,基于IT课程的学习特点, 项目式教学才能让学猿更好更全面的掌握技术,也能让学到的技术更实用。 学习猿地采用多个项目贯穿式教学,每个课程关联的技术点很多, 在有限的时间内很难讲解全面,而通过项目植入到课程中,就可以赛选出实际应用的知识点重点讲解。 另外,通过项目功能模块应用的技术反推出来的知识点,能让学猿更容易理解知识点的应用,达到学以致用的目的, 又可以举一反三,可以快速提高。也可以通过项目实战挖掘课程中没有讲到的新知识点, 扩展一下应用的知识面。

       大多数有丰富经验的程序员拥有自己的私人开发库,可以让程序猿在开发新项目时使用大约30%的重用代码来开发软件, 课程中的多个不同类型的项目也可以为学猿积累自己的私人开发代码库。

       另外,教学中的项目应用和实际商业项目还是有一些区别的,首先,并不是项目越大、需求越复杂越好, 因为用大项目教学让学员感觉很混乱,达不到学习的目标,有可能起到反作用。其次,教学项目使用的都是学员比较常见的类型项目,这样的项目需求不需要讲解学猿也很清除业务,能直接联想到开始步骤上, 就可以把精力都放在功能实现上。还有就是在教学项目中不会去实现商业项目中所有的功能, 而是会去简化功能和业务流程, 去除重复的功能模块, 同时也会在项目中应到一些反例代码,为了讲解不同的知识点的应用。 而教学项目和商业项目相同的地方也很多, 比如在软件工程方面的软件开发流程、开发工具使用、代码管理、团队合作,以及与客户沟通等方面是一致的。 当然,教学项目也有一些超过商业项目的地方,例如在具体的一些项目模块基础上,会设想多情况扩展开发下去,为让学员接触到更多的知识点。

       学员在项目阶段学习时,不仅只为实现表面的功能, 一定要做到像素级别的还原, 只有问题考虑周全, 注重每个细节,反复实验, 才能在项目开发课程中得到全面的提高。

项目一 数据采集系统



       在我国政策的大力扶持下,大数据技术在政企项目中得到了广泛的应用,但随着大数据所涉及的领域越来越广泛, 所处理的业务越来越深入,所要采集与处理的数据类型也变得越来越复杂和多样。近年来,政企客户的数据类型已经由传统的关系型数据向非关系型数据转变,且有高速度、 大容量、多样性、高价值的特点,这就给大数据采集提出了新的挑战,但现阶段数据采集并不能满足新的采集需求,数据采集还面临诸如采集数据的数据类型较为单一, 采集过程较为复杂,不能提供友好的用户体验,不能将数据采集过程进行良好的封装,对采集流程的监控也较为缺乏,不能给用户提供较为详细的采集状态信息等问题。

项目背景:

        本采集系统其有针对性的解决了目前业内对于数据采集的相关问题, 本采集系统可对结构化数据,半结构化数据以及非结构化数据进行采集,用户还可以对采集的处理组件进行一键部署,并可以便捷的对各采集组件进行配置, 本系统还为用户实现了可视化搭建采集流程的功能,并提供了便捷的监控管理,为大数据采集提供了新的解决方案。目前该项目已完成了对国内外大数据采集发展现状的研究, 以及对主流大数据采集产品的优缺点分析,并完成了对本采集系统的功能性需求与非功能性需求分析,明确了本采集系统需要实现的功能点和非功能要求; 其次完成了对本采集系统的总体设计和详细设计,明确了系统架构并对系统进行了详细的模块划分,完成了对flume的自定义开发,以及用户交互模块的设计开发, 使得用户可以在不接触Linux底层操作的前提下便捷的完成处理组件的部署以及各采集组件的配置任务,完成了可视化的采集工作流模块的设计与开发, 并为用户提供了完善的监控功能。

项目目标:

       完成了对国内外大数据采集的调研工作,明确了本采集系统的需求;并对此系统进行了总体设计和详细设计; 完成了自定义flume模块、部署处理组件模块、配置采集组件模块、可视化采集工作流模块以及监控模块的代码开发任务;最后还对本采集系统进行了详细的测试, 并对测试中可能出现的问题进行了分析,给出了相应的解决方案。该数据采集系统目前已完成了全部的设计和开发工作,并通过了详细的测试环节, 本采集系统已成功部署于多个政企客户的生产环境中,承担着TB/PB级的数据采集任务,实践证明该采集系统能够满足政企客户对于数据采集的各项要求。

项目功能:

       本项目主要讲解大数据技术中的数据采集技术,作为大数据的开源活水,教你从头搭建高并发、高可靠、可扩展的海量日志采集系统; 用户行为数据采集、后台业务数据采集。针对多种多样、数据量大,变化快的数据源搭建数据采集系统、如何保证数据采集的可靠性的性能、如何避免重复数据、保证实现艾特least-once消费语义、如何保证数据的质量



项目涉及技术点:

       数据采集系统的搭建、Flume安装、Flume组件和配置、自定义Flume拦截器、Flume的内存优化、Kafka集群配置、Kafka压测、Sqoop数据导入并保证数据一致性。 应用的技术点:Nginx、SpringBoot + MySql + Flume + Kafka + Sqoop + Hadoop + Logstash + Zookeeper


Web服务器Nginx Nginx (engine x) 是一个高性能的HTTP和反向代理web服务器,同时也提供了IMAP/POP3/SMTP服务。
SpringBoot + MySql Springboot+mysql增删改查,进行基础数据业务的开发。
Flume Flume是Cloudera提供的一个高可用的,高可靠的,分布式的海量日志采集、聚合和传输的系统,Flume支持在日志系统中定制各类数据发送方, 用于收集数据;同时,Flume提供对数据进行简单处理,并写到各种数据接受方(可定制)的能力。
Kafka Kafka是由Apache软件基金会开发的一个开源流处理平台,由Scala和Java编写。Kafka是一种高吞吐量的分布式发布订阅消息系统,它可以处理消费者在网站中的所有动作流数据。
Sqoop Sqoop是一个在结构化数据和Hadoop之间进行批量数据迁移的工具,结构化数据可以是Mysql、Oracle等RDBMS。
Hadoop Hadoop是一个由Apache基金会所开发的分布式系统基础架构。用户可以在不了解分布式底层细节的情况下,开发分布式程序。充分利用集群的威力进行高速运算和存储。
Logstash Logstash是一个开源的日志收集管理工具,logstash作为一个数据管道中间件,支持对各种类型数据的采集与转换,并将数据发送到各种类型的存储库
Zookeeper Zookeeper作为Hadoop和Hbase的重要组件,可以为分布式应用程序协调服务,同时还能使用Java和C的接口。

项目测试:

       在完成代码开发之后,需要对代码进行功能测试,按照功能图一个一个的进行测试,如果功能出现异常,则第一时间进行问题修复,然后重新开始新一轮的测试,因为代码变动很可能导致原来已经测试的功能出现异常。


项目上线:

       项目测试完毕没有Bug之后,需要做两件事情,一是将代码通过FTP工具上传到云空间,二是将数据库数据导出,并通过工具导入到空间对应到数据库中,完成这两件事之后,我们就可以通过域名访问我们的系统了。效果图如下:


项目二 日志数据分析系统



       大数据涉及到的业务很多很复杂,从一开始的项目架构,再到后台的网站搭建,以及数据的收集, 数据的分析,数据的迁移,业务开发,后台运维,等等。我们没办法一个实验将所有的过程都学习到。本项目我们将会将重点放在项目架构上, 后面的项目我们将重点放在每一部分的实现上。

项目背景:

        搜狗每天产生大量的日志数据,从日志数据里面能提取到有用的数据包括每个用户的ID、浏览次数、月/日浏览频率、访问源、 浏览内容等等,提取这些内容、统计数据分析每个用户行为,从而做出有利的决定。

项目目标:

查找到浏览次数大于某值(例如如是10)的用户,同样的通过MapReduce的处理也能解决,我们可以自己去实现Map、Reduce的处理过程,但本次项目我们用到了Hive, 相对直接使用MapReduce要容易些,当然这只是两个例子,通过对数据的处理我们能得到很多有用的信息。

项目功能:

       本次项目使用MapReduce框架对数据进行处理,HDFS作为底层存储,使用Hive大大加快了项目的进度,Hive自带的数据库并不适用于项目,用MySql代替,这里用到了Hive但是底层处理计算还是MapReduce, 其最突出的地方就是其对MapReduce进行了包装,减少了使用MapReduce需要写大量重复JAVA代码的时间。



项目涉及技术点:

       需要掌握Hadoop分布式集群的配置、搭建、运维。掌握HDFS分布式文件系统的应用、原理、数据流的读写,和掌握MapReduce分布式并行计算框架的应用开发。


Hadoop Hadoop是一个由Apache基金会所开发的分布式系统基础架构。用户可以在不了解分布式底层细节的情况下,开发分布式程序。充分利用集群的威力进行高速运算和存储。
HDFS Hadoop分布式文件系统(HDFS)被设计成适合运行在通用硬件(commodity hardware)上的分布式文件系统。它和现有的分布式文件系统有很多共同点。
MapReduce apReduce是一种编程模型,用于大规模数据集(大于1TB)的并行运算。概念"Map(映射)"和"Reduce(归约)",是它们的主要思想,都是从函数式编程语言里借来的,还有从矢量编程语言里借来的特性。 它极大地方便了编程人员在不会分布式并行编程的情况下,将自己的程序运行在分布式系统上。

项目测试:

       在完成代码开发之后,需要对代码进行功能测试,按照功能图一个一个的进行测试,如果功能出现异常,则第一时间进行问题修复,然后重新开始新一轮的测试,因为代码变动很可能导致原来已经测试的功能出现异常。


项目上线:

       项目测试完毕没有Bug之后,需要做两件事情,一是将代码通过FTP工具上传到云空间,二是将数据库数据导出,并通过工具导入到空间对应到数据库中,完成这两件事之后,我们就可以通过域名访问我们的系统了。效果图如下:


项目三 大数据客户画像



       用户画像是根据用户基本属性、社会属性、生活习惯和消费行为等信息而抽象出的一个标签化的用户模型。 构建用户画像的核心工作即是给用户贴“标签”,而标签是通过对用户信息分析而来的高度精炼的特征标识。

项目背景:

       用户画像是指真实用户的虚拟代表,是建立在一系列属性数据之上的目标用户模型。 随着互联网的发展,现在我们说的用户画像又包含了新的内涵——通常用户画像是根据用户人口学特征、网络浏览内容、网络社交活动和消费行为等信息而抽象出的一个标签化的用户模型。 构建用户画像的核心工作,主要是利用存储在服务器上的海量日志和数据库里的大量数据进行分析和挖掘,给用户贴“标签”,而“标签”是能表示用户某一维度特征的标识。具体的标签形式可以参考下图某网站给其中一个用户打的标签。

项目目标:

提取用户画像,需要处理海量的日志,花费大量时间和人力。尽管是如此高成本的事情,大部分公司还是希望能给自己的用户做一份足够精准的用户画像。 用数字化的标签描述用户个性特征、勾画目标用户,用以联系用户诉求与设计方向。

项目功能:

        标签定义模块、标签开发模块、任务调度模块、用户分群UI模块的搭建,用户标签窄表的定义开发,用户标签宽表的整合和结构转换 精准营销:精准直邮、短信、App消息推送、个性化广告等。 用户研究:指导产品优化,甚至做到产品功能的私人定制等。 个性服务:个性化推荐、个性化搜索等。 业务决策:排名统计、地域分析、行业趋势、竞品分析等。


项目涉及技术点:

       结合目前各种规模企业对于用户画像的需求给出最简解决方案,在最短时间里对整个用户画像系统有最全面系统的认知。 需要用到的技术点:Flume + Kafka + Hadoop + Hive + SparkSql + Sqoop + Azkaban + Zookeeper + Mysql


SparkSql  SparkSql作为Spark的结构化数据处理模块,提供了非常强大的API,让分析人员用一次,就会为之倾倒,为之着迷,为之至死不渝。 在内部,SparkSQL使用额外结构信息来执行额外的优化。在外部,可以使用SQL和DataSet 的API与之交互。
Azkaban Azkaban是由Linkedin开源的一个批量工作流任务调度器。用于在一个工作流内以一个特定的顺序运行一组工作和流程。
Zookeeper ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,是Google的Chubby一个开源的实现,是Hadoop和Hbase的重要组件。它是一个为分布式应用提供一致性服务的软件

项目测试:

       在完成代码开发之后,需要对代码进行功能测试,按照功能图一个一个的进行测试,如果功能出现异常,则第一时间进行问题修复,然后重新开始新一轮的测试,因为代码变动很可能导致原来已经测试的功能出现异常。


项目上线:

       项目测试完毕没有Bug之后,需要做两件事情,一是将代码通过FTP工具上传到云空间,二是将数据库数据导出,并通过工具导入到空间对应到数据库中,完成这两件事之后,我们就可以通过域名访问我们的系统了。效果图如下:


项目四 数据赋能智慧旅游--旅游大数据



       基于运营商大数据、消费数据、互联网数据等融合数据资源,采用不断迭代的模型分析, 向旅游管理部门、游客、景区和涉旅企业提供标准化、可视化和定制化的大数据服务,助力管理能力和营销能力的提升。

项目背景:

       该项目基于某大型互联网旅游公司的真实项目搭建,筛选出多个经典需求, 在项目完成过程中,让学生从大数据项目的搭建到需求的实现与展示全方位的了解大数据生态,获取宝贵的项目实战经验。

项目目标:

全方位决策平台通过提供5类23项旅游大数据服务工具,服务省、市、县(区)三级旅游行业客户,为旅游行业的市场监控、管理、营销提供数据参考。 引入地理信息资源、消费数据资源和互联网数据资源,打造业内规模领先的大数据资源池。 通过多维建模,提供旅游总览、景区总览、游客画像、客源分析、出入境分析、实时热力、舆情分析、消费分析等多维度分析工具。 分析工具支持可视化展示,客户可根据自身业务需求进行个性化购买,节约成本。

项目功能:

        指定路线时间段内客流量统计、交通方式人次统计、成熟客源市场分析、成熟景区市场分析、成熟景区出入分析、潜在客源市转化率分析、洞察游客行为、对游客进行用户画像、深入挖掘客源地动态和目的地的活动、产品匹配等内容。


项目涉及技术点:

       项目注重实战经验累积培养,在项目中对大数据生态中的各个常用框架加强认知,针对不同水平学生制定对应学习计划,短时间内提升学生实战水平。 需要用到的技术点:Maven+MySQL+Hadoop+Hive+Zookeeper+Azkaban+Scala+SparkCore+SSM+Echarts


Hive  hive是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张数据库表,并提供简单的sql查询功能,可以将sql语句转换为MapReduce任务进行运行。
Scala Scala是一门多范式的编程语言,一种类似java的编程语言 ,设计初衷是实现可伸缩的语言、并集成面向对象编程和函数式编程的各种特性。
SparkCore  Spark Core提供Spark最基础与最核心的功能。

项目测试:

       在完成代码开发之后,需要对代码进行功能测试,按照功能图一个一个的进行测试,如果功能出现异常,则第一时间进行问题修复,然后重新开始新一轮的测试,因为代码变动很可能导致原来已经测试的功能出现异常。


项目上线:

       项目测试完毕没有Bug之后,需要做两件事情,一是将代码通过FTP工具上传到云空间,二是将数据库数据导出,并通过工具导入到空间对应到数据库中,完成这两件事之后,我们就可以通过域名访问我们的系统了。效果图如下:


项目五 大型游戏运营分析



       在数据分析领域我们也有快速定位分析维度的方式:留存、付费这是我们关注的两个关键指标, 当然还有其他因素如DAU,ARPU、ARPPU等,这些都是基于这两个基础值衍生出来的重要指标,来帮我们建立更完善和成熟的产品数值模型,以便我们评估发行可行性计划。

项目背景:

       在手游发行的概念里,我们一直在强调,产品都是调优出来的,如何优化?想必也是需要将一款产品放到脚手架上进行解构。 数据分析为运营的必备技能之一,无论你是研发商,渠道商甚至发行商,都用得上。

项目目标:

大型网络游戏每天会产生10G—100G的数据,通过大数据分析可以帮助追踪注册转化率数据、快速定位注册刷号行为。通过对关卡的访问数,成功率,失败原因进行分析, 来合理调整难易度。游戏生产虚拟物品,而不是印钞。您需要找到玩家在不同阶段对哪类物品有最强依赖,才能刺激痛点策划拉收。

项目功能:

       所有的数据分析维度都是来自于前期做的埋点需求,数据分析不止是擅长做复杂的函数算法和预估公式模型, 更重要的是在纷繁复杂的数据背后找到对应的本质现象,反映的问题并以此找到解决途径。所以游戏的数据分析脱离不了游戏本身和业务逻辑。 项目的核心模块包括玩家在线分析,等级分析,任务难度分析,收入分析,虚拟消费分析等7大模块。


项目涉及技术点:

       数据分析是一个相当复杂也极具技术含量的岗位,从前期的数据清洗,过滤和组合出对业务导向具有强指导意义的指标后, 进行系统化,功能化的拟合分析和预测,最重要的是不能脱离实际经验, 他们是相辅相成的存在价值。我们要做的是要利用好这个工具和思路指导我们快速定位问题积极响应解决方案,不能过分追求公式化模型忽略了客观事实。 本项目应用到的核心技术包括linux+hdfs+spark+mapreduce+hive+hbase。



项目测试:

       在完成代码开发之后,需要对代码进行功能测试,按照功能图一个一个的进行测试,如果功能出现异常,则第一时间进行问题修复,然后重新开始新一轮的测试,因为代码变动很可能导致原来已经测试的功能出现异常。


项目上线:

       项目测试完毕没有Bug之后,需要做两件事情,一是将代码通过FTP工具上传到云空间,二是将数据库数据导出,并通过工具导入到空间对应到数据库中,完成这两件事之后,我们就可以通过域名访问我们的系统了。效果图如下:


项目式教学额外的收获



       通过课程中多个项目的植入讲解,除了可以收获技术和项目代码之外,更能收获软件工程方面的知识,和讲师经验的分享。可以直接获得项目的管理,其中涉及团队协作,项目代码管理,项目进度管理,开发团队的维护和管理。 除此之外还可以了解到如何进行客户沟通,以及整个项目的开发流程,宏观认识项目。 这些项目中贯穿了项目工程内容,涉及代码管理、团队协作、项目流程、客户沟通以及相关工具的使用。

代码管理
  • - Git安装
  • - 代码时光机
  • - 多人合作
  • - 分支特性
  • - 远程仓库
Git是一个开源的分布式版本控制系统,可以有效、高速地处理从很小到非常大的项目版本管理。 其中很多的特性相较于svn,cvs更加的强大,特别是分支特性,更好的维护产品代码,保证代码的健壮性。
团队协作
  • - 文档管理
  • - 设计图管理
  • - 团队人员分工
  • - 员工沟通技巧X
团队协作是团队运作非常重要的一个环节,直接影响整个项目能否顺利完成。其中还包括员工的沟通,考核已经后续的升职加薪。
项目开发流程
  • - 原型制作
  • - 设计图制作
  • - 数据库设计
  • - 框架开发
  • - 软件测试
  • - 上线部署流程
了解整个项目的开发流程对开发人员有着非常重要的意义,开发人员可以在宏观角度来认识项目,并提高和其他部门之间的配合,为后续的升职加薪做好准备。
客户沟通
  • - 客户沟通
客户是公司生存的经济来源,与客户的沟通显得至关重要,企业技术总监亲自讲述与客户沟通的那些事。

加群主微信
购买后
拉进交流群
学习交流
¥8192元 立即购买