1.大数据概述
1.1.大数据的概念
大数据即字面意思,大量数据。那么这个数据量大到多少才算大数据喃?通常,当数据量达到TB乃至PB级别时,传统的关系型数据库在处理能力、存储效率或查询性能上可能会遇到瓶颈,这时考虑采用大数据技术是合理的。
当然可以通过分库分表等方式来让关系型数据库来强行抗住这个量级,所以数据量大外数据结构是不是够杂(结构化、半结构化、非结构化数据)也是要不要上大数据技术的重要考量点。
当然数据杂也可以通过关系型+非关系型数据库(如MySQL+MongoDB+ES)组合式的存储来分别存储,所以还要看要求对数据的使用上的诉求是什么?实时或近实时的分析处理(例如实时推荐系统、金融风控、物联网监控等),这些对数据的使用方式上需要对大量数据进行计算,而不再是关系型数据库中那种小批量的增删改查,这时候即使是用了组合式的存储来存放数据,要去各种存储上跑计算任务再汇总到一起,明显是很低效的,这时候上大数据技术就是十分合理的。
大数据场景中的数据往往具有4V的特点:
大量化:数据量大。
快速化:增长速度快。
多样化:数据类型多样,结构化、非结构化都有。
价值密度低:价值密度低,商业价值高。
1.2.大数据的应用场景
大数据的应用总结起来就是:决策、预测。
1.零售行业
个性化推荐:基于用户购物历史、浏览记录、社交媒体行为等数据,实现商品个性化推荐,提高转化率和用户满意度。
库存优化:通过分析销售数据、季节性趋势、供应链信息等,精准预测需求,减少库存积压,提升供应链效率。
价格策略:利用市场动态、竞品分析、消费者敏感度数据制定动态定价策略,提高竞争力和利润水平。
客户细分与营销:对客户数据进行聚类分析,识别不同消费群体特征,实施精细化营销策略。
2. 金融行业
风险评估与管理:运用大数据分析进行信用评分、欺诈检测、市场风险预测,提升信贷决策准确性,降低风险敞口。
交易监控与反洗钱:实时监测异常交易行为,运用机器学习算法识别潜在的洗钱活动,确保合规运营。
投资决策支持:结合宏观经济数据、公司财务报告、社交媒体情绪等多元数据源,辅助投资者进行量化投资分析和策略制定。
3. 教育行业
学生学习行为分析:通过分析在线学习平台数据,了解学生学习进度、难点、偏好,提供个性化教学建议和资源推荐。
教育资源优化:依据课程访问量、完成率、互动数据等,评估教学效果,优化课程设计与资源配置。
教育政策制定:利用大数据研究教育公平、教学质量、就业趋势等问题,为教育政策制定提供数据支持。
4. 医疗行业
疾病预测与预防:通过对电子病历、基因组数据、生活方式数据的分析,预测疾病风险,指导早期干预和预防措施。
精准医疗:基于个体基因、生理指标、环境因素等大数据,制定个性化治疗方案,提高疗效和患者生活质量。
医疗资源管理:利用大数据预测医疗需求,优化医院床位、设备、人力资源分配,提升医疗服务效率。
5. 市场营销与客户关系管理
市场趋势分析:通过分析社交媒体、搜索引擎、行业报告等数据,洞察市场动态、消费者偏好变化,指导产品开发和市场定位。
精准广告投放:基于用户画像、行为数据、地理位置等信息,实现广告的定向投放和效果优化。
客户满意度与忠诚度提升:利用客户反馈、社交媒体舆情、购买行为数据,识别影响满意度的关键因素,制定针对性的改进策略。
6. 其他行业与通用场景
智慧城市:集成交通、能源、环境、公共服务等多源数据,实现城市运行状态监测、资源调度优化、应急响应管理等。
工业制造:通过设备数据、生产流程数据的实时分析,实现预测性维护、质量控制、产能优化等智能制造应用。
社交媒体分析:挖掘用户社交网络行为、情感倾向、话题热度等数据,为企业品牌管理、舆情监控、产品推广提供决策支持。
1.3.大数据的关键技术
大数据技术,其实就是一套解决方案,是基于各种现实的业务场景的成功的解决方案的总结。
大数据技术可以看作对传统技术的延申,是由于大数据的量传统技术不是很好应付了才出现了大数据的解决方案。传统的单点扛不住,扩集群,集群也扛不住就可以考虑大数据,或者即使集群扛得住,但是数据类型太杂了需要也可以考虑大数据。所以大数据和传统技术只是AB两套方案罢了。
大数据的整个流程:
数据采集->数据存储与管理->数据处理与分析
其中最为核心的是:数据存储和数据分析,也就是:
数据的存储
数据的运算
1.数据存储
其实就是当数据量很小的时候,存在单台机器上,当单台机器扛不住的时候存在多台机器上。存在多台机器上就需要进行统一的管理,对外给出统一的API让操作者去操作整个集群中的数据,让操作者体感愉悦,感知上觉得面对的就是一台存储容量无限大的单点服务器。
统一的管理、统一的操作API,这两点合在一起,像不像个系统?是的,这就是大数据中的存储系统,分布式文件系统——HDFS。
2.数据的运算
花这么大代价用HDFS存储起来的数据肯定不是拿来看的,而是要用起来的,是要用于计算的。在大数据系统中由于其存储采用了分布式的架构,计算任务不再是单点的,而是分布式的,是要分发到集群中的各个存储节点上去的,由各个结点计算后汇总出最终的结果。很明显这种多节点间的协作计算是需要进行任务调度的,这就是分布式计算引擎需要干的活儿,经典的分布式计算引擎是HDFS中内置的——MapReduce。其主要就是负责计算任务的调度。
除此之外还有一个目前市面上常用的强力的计算引擎——spark。mapreduce是基于磁盘的计算,spark是基于内存的计算,两者之间互有优劣。
扩展功能
有HDFS+MapReduce其实大数据系统就已经可以工作了,但是每次对数据进行查询都要写mapreduce任务,作为一个分布式的处理程序,mapreduce的任务写起来还是要求一些专业的计算机背景的。为了能像SQL一样,方便的查询HDFS中的数据,从而将使用者从繁琐的mapreduce的编写中解放,出现了hive之类的分布式系统的结构化数据解决方案。
1.4.大数据的计算模式
计算模式,即大数据的数据的运算是什么类型的?根据不同的需求计算可以分为三种模式:
批处理
流计算
图计算
交互式计算
批处理:
批处理即数据准备好一批算一批,任务是在已经准备好的一批数据上进行计算的,并不是实时计算的,也无法达到秒级响应的。
代表技术:mapreduce、spark
流计算:
流计算即实时计算,数据过来就算,针对的就是每时每刻来的数据量大,需要给出实时响应的场景。
代表技术:storm、flume
图计算:
针对数据结构都是图结构的数据进行计算,如社交网络数据、地理信息数据。
交互式计算:
前面的几种计算都是预先准备好了计算任务,交互式计算的计算任务是随时自定义的,随时发命令给系统,系统针对命令给出计算响应。
1.5.大数据和云计算的关系
云计算即通过网络以服务的方式为用户提供非常廉价的IT资源。用户不用去自建设施,直接找云计算厂商购买服务即可。
云计算所能提供的服务分为三层:
SaaS,基础设施即服务,即将基础设施作为服务出租(计算资源和存储)。主要是面向用户的。
PaaS,平台即服务,在基础设施上包了一层,即将开发平台作为服务出租,用户只负责开发,剩下的部署、监控等一系列功能都交给平台去做。主要是面向开发者的。
IaaS,软件即服务,这个很好理解,就是直接提供运算的软件来用了。比如传统的金蝶财务软件是部署在本地的,放在云上提供服务后就变成了典型的IaaS。
经常听到“数据中心”就是厂商建立的物理服务器集群,专门用来提供云计算服务。
1.6.物联网
物联网无非就是采集终端采集数据然后通过网络上传到数据中心。其核心的问题在于:
识别
感知
识别,即识别哪些数据是哪个设备的。
感知,即数据采集。
2.Hadoop
2.1.核心架构
apache旗下顶级开源项目,是一个大数据生态圈,由多个组件组成。
Hadoop两大核心组件:
分布式文件系统HDFS,其实就是GFS的开源实现。
分布式计算引擎MapReduce。
整个生态圈的核心架构:
备注:MR就是map reduce
2.2.版本演进
首先要注意Hadoop有多个分支。apache相当于其中的主分支,很多大公司还有属于自己版本的hadoop,apache的Hadoop分为两个版本:
1.0和2.0的区别:
1.0的时候mapreduce纪要做计算工作还要自己去调度各个节点的资源来为计算工作服务。
2.0的时候将资源调度功能抽成了一个独立的框架yarn,mapreduce只负责计算工作。由于yarn来进行了资源调度,在其之上就可以接入很多不同的计算框架,将资源调度都给yarn,于是2.0版本开始衍生出了很多其它计算框架,如storm、spark等。
其次2.0的时候对HDFS,使用namenode的方式在高可用性上进行了增强。
疑问:yarn做了哪些调度?为什么要做调度?
2.3.生态圈的全量结构
整个hadoop项目,或者说生态圈的全量结构如下: