大数据技术之_18_大数据离线平台_01_项目开发流程+大数据常用应用/分析平台/业务处理方式+数据分析平台的数据来源+数据处理的流程+项目集群的规模+需求分析+技术架构/选型

一、项目开发流程

1.1、项目调研

  了解项目的初始需求,以及完成该需求可能涉及到的市面上的常用的技术。

1.2、项目需求分析

  明确项目到底需要做什么,以及最终做成什么样子,需求分析不明确,项目周期就不明朗,项目完成度无法把控,技术分控无法实现,而且也无法了解项目发展的主体方向。其中最令程序员头痛的是,需求在某个开发周期中,不停的频繁变更。项目完成效率降低。

1.3、方案设计

1.3.1、概要设计

  从整体上进行技术框架的设计,比如容错、框架延展性、扩容、安全性等等。

1.3.2、详细设计

  按照功能模块进行具体的设计,比如 HBase、关系型数据库等表结构设计、数据字典设计、接口设计等等。

1.4、编码实现

  项目的整体布局结束之后,即可对项目中的小功能模块开始编码细节。

1.4.1、单元测试

  指对软件中的最小可测试单元进行检查和验证,一般使用工具 Junit。

1.4.2、集成测试

  集成测试,也叫组装测试或联合测试。在单元测试的基础上,将所有模块按照设计要求组装成为子系统或系统,进行集成测试。

1.4.3、压力测试

  压力测试也称为强度测试、负载测试。压力测试是模拟实际应用的软硬件环境及用户使用过程的系统负荷,长时间或超大负荷地运行测试软件,来测试被测系统的性能、可靠性、稳定性等。比如:https://testin.cn/

1.4.4、用户测试

  用户体验测试顾名思义就是测试人员在将产品交付客户之前处于用户角度进行的一系列体验使用,如:界面是否友好(吸引用户眼球,给其眼前一亮)、操作是否流畅、功能是否达到用户使用要求等。

二、大数据常用应用

2.1、数据出售

  这些公司一般主要以买卖数据为主要收入来源,爬虫是获取数据的主要来源,最终以 HDFS 存储。

2.2、数据分析

2.2.1、百度统计

https://tongji.baidu.com/web/welcome/login

2.2.2、友盟

https://www.umeng.com/

2.2.3、其他统计分析组织

  GA(Google Analysis):https://analytics.google.com/analytics/web/provision/?authuser=0#/provision   IBM analysis

2.3、搜索引擎

2.3.1、solr

  Solr 是一个独立的企业级搜索应用服务器,它对外提供类似于 web-service 的 API 接口。用户可以通过 http 请求,向搜索引擎服务器提交一定格式的 XML 文件,生成索引;也可以通过 http get 操作提出查找请求,并得到 XML 格式的返回结果。

2.3.2、luence

  Lucene 是一套用于全文检索和搜寻的开源程式库,提供了一个简单却强大的应用程式接口,能够做全文索引和搜寻。在 Java 开发环境里 Lucene 是一个成熟的免费开源工具。就其本身而言,Lucene 是当前以及最近几年最受欢迎的免费 Java 信息检索程序库。人们经常提到信息检索程序库,虽然与搜索引擎有关,但不应该将信息检索程序库搜索引擎相混淆。

2.3.3、luence & solr 对比

  Lucene 是一套信息检索工具包,但并不包含搜索引擎系统,它包含了索引结构、读写索引工具、相关性工具、排序等功能,因此在使用 Lucene 时你仍需要关注搜索引擎系统,例如数据获取、解析、分词等方面的东西。   而 Solr 是基于 Lucene 做的,Solr 的目标是打造一款企业级的搜索引擎系统,因此它更接近于我们认识到的搜索引擎系统,它是一个搜索引擎服务,通过各种 API 可以让你的应用使用搜索服务,而不需要将搜索逻辑耦合在应用中。而且 Solr 可以根据配置文件定义数据解析的方式,更像是一个搜索框架,它也支持主从、热换库等操作。还添加了飘红、facet 等搜索引擎常见功能的支持。总结:   Lucene 使用上更加灵活,但是你需要自己处理搜素引擎系统架构,以及其他附加附加功能的实现。   Solr 帮你做了更多,但是是一个处于高层的框架,Lucene 很多新特性不能及时向上透传,所以有时候可能发现需要一个功能,Lucene 是支持的,但是 Solr 上已经看不到相关接口。

2.4、推荐系统(高数)

2.4.1、技术

  Mahout(科学计算库)   Spark Mlib(科学计算库)

2.4.2、算法

  Logistic Regression(逻辑回归)   Bayesian(贝叶斯分类算法)   SVM(支持向量机算法)   Random Forests(随机森林算法)   K-means Clustering(聚类算法)   Fuzzy K-means(模糊算法) 等等

2.5、精准营销

2.5.1、广告推送流程简述

  访问者访问页面   JS 收集用户数据并发送给广告联盟   广告联盟将广告位发送给广告公司   广告公司根据用户数据决定是否报价(即决定是否出价购买这个广告位以及报价预算)   广告公司联盟选择一个最高的报价   广告展示   用户点击广告   发送一个点击的行为数据给广告联盟   广告联盟通知广告公司(中标的公司)   广告公司保存用户点击的数据   生成模型

2.5.2、涉及技术点

  HDFS   用户模型生成(R语言,Python,Spark Mlib,Mahout),Pythoon 中现在比较主流的做数据分析、机器学习的框架 Anaconda。

2.6、数据预测

2.6.1、天气预测

http://typhoon.weather.gov.cn

2.6.2、路况预测

http://map.baidu.com/

2.6.3、城市发展预测

2.7、用户画像

2.8、人工智能(机器学习/深度学习)

三、大数据分析平台

  主要用于分析处理收集得到的数据,根据最终的分析结果产生业务支持、进行业务调整等等。

3.1、离线大数据分析平台

  对分析结果的时效性要求比较低,业务场景不要求很快,很及时的数据反馈,对机器的性能要求比较低,成本稍低。   可能会用到的技术:MapReduce,Hive(简化MR),Pig(老公司),Spark Core(Spark on Yarn)等。

3.2、实时大数据分析平台

  对反馈的延迟要求很严格,一般都要求在毫秒,最多到秒级,对机器的性能要求会稍高一些,成本略高。   可能会用到的技术:Spark Streaming(用的多),Storm(用的少),Flink(阿里) 等。

四、大数据业务处理方式

4.1、使用第三方产品

4.1.1、优势

  简单,开发成本小

4.1.2、劣势

  灵活度低(任人宰割)   第三方收费比较高   己方公司对数据操作的权限高,后期很难根据数据进行处理,例如功能添加等。

4.2、自己研发大数据平台

4.2.1、优势

  数据在自己手里,安全度高,灵活度高   开发更自由,更方便

4.2.2、劣势

  开发延迟相对较高   公司前期成本会比较大   人员招聘需要耗时,略有风险

五、数据分析平台的数据来源

5.1、服务器日志

  包括常用的例如 nginx 日志,apache 日志,服务器系统日志等,一般用于辅助运维工程师。

5.2、业务日志

  包括 log4j 的日志,用于节点异常排查,业务异常排查,debug 等。

5.3、用户行为数据

  从前端收集到的用户操作行为的数据日志,比如浏览,点击,选择,收藏等。

5.4、购买第三方数据

5.5、网络爬虫数据

  常用的爬虫技术,Java,Python 爬虫,常用的第三方爬虫工具例如:火车采集器等等。

六、数据处理的流程

6.1、数据收集

  数据一般最终会以压缩格式保存于 HDFS 之上,目前市场公司用 snappy 压缩较多一些。

6.2、数据处理

  Extract-Transform-Load 数据的清洗,过滤,转换等加工,根据指定的目标,计算数据指标的值,最终保存于数据库中 SQL 或者 NoSQL。

6.3、数据结果可视化

  展示分析数据结果。可视化框架或工具如下:

6.3.1、Zeppelin

http://zeppelin.apache.org/

6.3.2、Datawei

http://www.datawei.com

6.3.3、Echarts

http://echarts.baidu.com/index.html

6.3.4、HighCharts

https://www.highcharts.com/

6.4、数据结果应用

6.4.1、用户画像

  简而言之,用户画像(persona )为了让团队成员在产品设计的过程中能够抛开个人喜好,将焦点关注在目标用户的动机和行为上进行产品设计。因为,产品经理为具体的人物做产品设计要远远优于为脑中虚构的东西做设计,也更来得容易。

  1、用户画像要建立在真实的数据之上   2、当有多个用户画像的时候,需要考虑用户画像的优先级,通常建议不超过三个以上   3、用户画像是处在不断修正中的

七、项目集群的规模

7.1、数据量级

  每天数据量大约在 500万~3000 万条左右(CSDN网站4~5个小时就能达到该量级)。   每个 Job 的数据输入一般会按照维度来划分,例如:一天的数据,一周的数据,一个月的数据,甚至有时会有小时数据。   Job 总量大约在 40 个左右,自己编写的 MapReduce 任务大概 30 个左右,Hive 占用一般不超过 10 个。

7.2、集群规模

  2 (NN HA、RM HA、HMaster、Hive)   10 (DN、JN(5台左右)、NM、HRegionServer)   ZK (3),可以选择另开 3 个机器,也可以选择在上边的 20~30 台机器中选 3 台   CPU:128核,内存:256G   NN、RM、DN、JN、NM、Hive、HMaster:1G   内存数大概:16~64G   HregionServer:16 - 24G   MR CPU/内存:32核 - 64核 / 64G - 128G   网络:千兆或万兆

7.3、Job 运行时间

  ETL Job:一般不到 10 分钟就 OK 了,Mapper Task 一般 10~20 个左右   MapReduce Job:每个 Job 任务运行时间大约是 30 分钟左右   Hive Job:大约 30 分钟左右,最终会将分析出来的结果数据 Sqoop 到 Mysql 中   并发:Oozie 进行任务调度,同一时间允许的并发任务数一般为 5 个   定时:晚上 12 点开始执行,一般凌晨 4~5 点就能完成 Job 任务的运行

八、需求分析

8.1、目标

  根据用户行为数据进行程序分析处理,得出结果保存到关系型数据库中   收集各个不同客户端的用户行为数据,最终保存到 HDFS 上   了解用户行为数据包含哪些字段

8.2、核心关注

8.2.1、购买率

8.2.2、复购率

8.2.3、订单数量 & 订单金额 & 订单类型情况

8.2.4、成功订单数量 & 成功订单金额 & 成功订单类型情况

8.2.5、退款订单数量 & 退款订单金额 & 退款订单类型情况

8.2.6、访客/会员数量

8.2.7、访客转会员比率

8.2.8、广告推广效果

8.2.9、网站内容(跳出率等)

8.3、概念理解

8.3.1、用户/访客

  访问网站的用户,是自然人。

区分访客PC端:   采用 IP 地址来区分用户。由于代理、NAT(网络地址转换) 等等技术,导致可能出现一种情况:多个用户对应一个 ip 地址。   采用客户端种植 cookie 的方式,当用户第一次访问系统的时候,在 cookie 中种植一个唯一的 uuid,过期时间设置为 10 年。

移动端:   采用手机的固定手机码识别。IMEI、MEID、S/N 等等。   采用客户端种植 uuid(有时也叫作 token)的方式,当用户第一次访问系统的时候,在磁盘中种植一个唯一的 uuid,过期时间设置为 10 年。

指标:   新增访客数量:第一次访问系统的访客数量   活跃访客数量: 统计时间段内访问过系统的访客(不管是新访客、还是老访客)   总访客数量:迄今为止,新增访客数量的总和   流失访客数量: 上一个时间端访问过系统,但是当前统计时间段没有放过的访客数量   回流访客数量: 上一个时间段没有访问过,但是当前时间段访问过的访客数量   访客分级别计算数量(新访客、活跃访客、周活跃访客、…、忠诚访客)

8.3.2、会员

  指业务系统中的注册用户,直接使用业务系统中的会员唯一 id 来标识。

指标:   新增会员数量   活跃会员数量   总会员数量   流失会员数量   回流会员数量   访客转会员比率   新访客转会员比率   老访客转会员比率

8.3.3、会话

  用户进入系统到离开系统的这一段时间被成为会话,这段时间的长度就叫做会话长度,一个会话中的所有操作都属于该会话

区分会话PC端:   采用浏览器的 session 机制(cookie 的过期时间设置为 session、sessionstorage)。   在 cookie 中种植上一个操作的时间,在操作的时候,进行判断时间是否过期,如果过期,重新生成会话,如果没有过期,更新 cookie 值。

移动端:   利用移动端的 session 机制。   类似 pc 端种植上一个操作时间进行判断。

指标:   会话数量   会话长度   跳出会话数量: 在一个会话中,只访问一次网站的会话数量

8.3.4、跳出率

  离开网站的数量占进入网站数量的百分比 会话跳出率:跳出会话数量 / 总会话数量 页面跳出率:从该页面离开后,进入不同类型的网页占进去该页面的会话总数量的百分比   离开系统会话数量 / 进入总会话   进入详情页面会话数量 / 进入总会话数量

8.3.5、外链

  用户通过第三方的外部链接进入到我们的系统中,该第三方的链接称之为外链。

指标:   带来的会话数量   带来的访客数量   带来的订单数量

8.3.6、Page View

  每次用户访问页面就计算一次,如果多次访问,就计算多次(不去重)。

8.3.7、Unique Visitor

  唯一访客数量。

8.3.8、Page Depth

  统计的是各个不同访问深度的访客/会话数量,它能够展示一个网站不同深度的页面的访问程度,结合跳出率可以更好的修饰一个网站的内容是否吸引人,用户体验是否到位等等。

8.3.9、维度(Dimensionality)

  时间维度(Date):小时、天、周、月、季度、年   平台维度(Platform):PC端、android、ios、ipad 等等   浏览器维度(Browser):浏览器名称、浏览器版本   浏览器分辨率维度(Screen resolution): 1920 X 1080、1360 X 768 等等   操作系统维度(OS):操作系统名称、版本   地域维度(Location):国家、省份、城市   语言维度(Language):各个国家的语音支持   外链维度:百度、360、Google 等等   货币类型维度:各个国家的货币   支付方式维度:微信、银联、支付宝 等等   版本维度:比如 v1、v2 等,一般用于多个版本之间的比较 (AB 测试)

8.3.10、分析指标

  维度 + 核心关注点 + 重要概念

8.3.11、模块分析

  用户基本分析模块:分析用户/会员的基本信息,包括:新增、活跃、hourly(每小时) 分析   浏览器分析模块:在用户基本分析模块之上,加上浏览器维度   地域分析模块   外链分析模块   用户浏览深度分析模块   事件分析模块   订单分析模块

九、技术架构

9.1、数据收集层

9.2、数据处理层

9.3、数据结果可视化层

离线平台大数据架构图

十、技术选型

10.1、Hadoop

  起源于:GFS(Google FileSystem)、Map/Reduce、BigTable 三篇论文。Doug Cutting 在开发 Nutch 爬虫的时候,网络数据量太大,从而开发出 Hadoop。

10.1.1、Hadoop 1.x

  NN、DN、SNN、JT(JobTracker)、TaskTracker

存在的问题:   1、NN 单节点问题   2、NN 扩容问题   3、JT 管理资源以及任务调度监控对 CPU 压力比较大   4、JT 单节点   5、对于机器资源利用率低

10.1.2、Hadoop 2.x

  NN(HA)、JN(Journal Node)、DN、RM、NM

问题的解决:   1、NN 高可用   2、Container 资源容器的引用,在 Hadoop1.x 中资源被描述为 slot,每台机器分别设置 2 个 slot (2map slot + 2 reduce slot),一个 map task 默认就一个 slot 来进行执行;hadoop2.x 中 container 将 cpu、内存进行整合,明确出每个 core 包含多少 cpu、内存,task 分配资源的时候是分配 core 的个数。   3、ApplicationMaster,任务调度管理器   4、TaskAttempt(YarnChild),一个具体的 MapReduce 任务执行的实例。

10.2、HDFS

  Hadoop Distributed Filesystem。

10.2.1、特点

  1、方便扩展,HDFS Federation(HDFS联盟)   2、高可靠,High Availability

10.2.2、常见面试题

  1、HDFS 读写流程   2、HDFS 的文件备份机制是什么,在备份时机器是如何做出选择的?答:机架感知。   3、各个 Node 服务的功能

10.3、YARN

  资源管理容器。

10.3.1、特点

  1、Scheduler 调度器: 当一个新 job 的产生的时候,决定如何分配资源。   2、公平调度器:FairScheduler.class,这是 CDH-HADOOP 默认的调度。   3、容量调度器:CapacityScheduler.class,这是 Apache-HADOOP 默认的调度。   4、ApplicationsMaster(注意不是AM):整体性的应用管理器,监控 AM 的运行情况。

10.3.2、常见面试题

  1、Yarn 的任务调度。   2、Yarn 解决了 Hadoop1.x 中的哪些问题。

10.4、MapReduce

10.4.1、特点

  分而治之。

10.4.2、常见面试题

  1、MapReduce 任务逻辑执行流程。    InPut 数据 –> Map –> Shuffle –> Reduce –> Output 数据   2、二次排序。

10.5、HBase

10.5.1、特点

  1、分布式的、面向列的数据存储系统。   2、HMaster、HregionServer。

10.5.2、常见面试题

  1、HBase 表结构设计   2、HBase rowkey 设计(防止数据倾斜、优化查询、优化Hbase存储延迟)   3、HBase mr 整合   4、HBase 内部结构(物理结构、逻辑结构)   5、HBase 优化

10.6、Hive

10.6.1、特点

  基于 Hadoop 的数据仓库,可以将结构化的数据存储为一张表,提供基本的 SQL 查询,操作简单、学习成本低。

10.6.2、常见面试题

  1、sortby、orderby、distinctby 区别联系   2、Hive 和 HBase 整合(Hive 读写 HBase 表)   3、UDF 编写

10.7、Flume

10.7.1、特点

  通过配置 source、channel、sink 即可进行文件的流式采集。

10.7.2、常用操作

  单 Agent 单 Agent 的流合并,Sink Group(官网的几张图)

10.8、Oozie

  工作流控制框架。

10.9、Sqoop

  数据量特别大的情况更适合。

10.10、Zookeeper

  分布式应用程序协调服务,需要了解 Leader 选举机制。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏程序员的成长之路

真的有人在偷听我们讲话么?

作为互联网的忠实用户,我们在生活中已经很难离开它,随之而然也出现很多相关的问题,其中最让人头疼就是隐私问题。前有 12306 数据贩卖,今有传闻美团饿了么在偷听...

31720
来自专栏京程一灯

通过Stack Overflow趋势工具看JavaScript框架

又是平常的一天,程序开发人员在Stack Overflow上又发了八千多个工作中遇到的问题。他们到底对哪些技术抱有疑问呢?随着时间的变化,话题变化的趋势如何呢?

12540
来自专栏大数据技术学习

java程序员5个月业余时间学习大数据路径

我自己建的大数据学习交流群:199427210,群里都是学大数据开发的,如果你正在学习大数据 ,小编欢迎你加入,大家都是软件开发党,不定期分享干货(只有大数据软...

17000
来自专栏Apache Hadoop

Hadoop分布式数据采集软件在2019年大数据市场上优势是什么?

为什么分布式数据采集软件能够收到互联网发展的青睐呢?大数据时代的发展,大数据在目前的企业发展,政府决策以及社会动态分析等等方面都发挥着重要的作用,如何在目前的互...

16410
来自专栏腾讯云数据库(TencentDB)

为什么说腾讯云TDSQL是金融行业的“杀手锏”级应用?

近日,腾讯云发布了全新的自主可控金融业务支撑平台,该平台把腾讯云在云计算架构、分布式数据库、微服务、大数据以及人工智能等方面的技术优势进行了整合,专为金融行业提...

15210
来自专栏大数据技术学习

学习大数据开发需要掌握哪些知识点?

大数据已经成为时代发展的趋势,很多人纷纷选择学习大数据,想要进入大数据行业。大数据技术体系庞大,包括的知识较多,系统的学习大数据可以让你全面掌握大数据技能。学习...

20700
来自专栏云安全-商业新知

基于多混沌系统的医学图像加密算法【数据加密】

随着计算机、通信技术和区域医疗协同服务的不断发展,信息的安全与保密显得越来越重要。医学图像作为诊断依据的重要部分需要在公网上传播,为了防止病人敏感信息的非法泄漏...

16550
来自专栏活动盒子

工业制造行业B2B电商平台解决方案

数据显示,自从进入2017年,我国工业增加值与增速出现了几次不同程度的上涨,一改往常持续下降的局面。国内整个工业制造业正在逐渐复苏,同时随着国家在政策层面持续加...

26630
来自专栏探码科技

2019中国大数据产业发展全局!

近日,赛迪顾问重磅发布了《中国大数据产业白皮书及百强榜单》从大数据整体市场方向分享了对大数据产业未来发展趋势进行了分析和预测。总结并推举大数据与行业应用融合的典...

38140
来自专栏数商云贸

顺势而上!企业该如何拥抱B2B3.0?(附B2B电商的进阶宝典)

资本的热风已经在B2B行业吹起来了,根据B2B电商行业已披露的信息监测到2018年上半年的融资事件共77起,金额更是高达211.74亿,对比往年的同期数据,B2...

12460

扫码关注云+社区

领取腾讯云代金券

年度创作总结 领取年终奖励