1、什么是大数据?
大数据(Big Data),指无法在一定时间范围内用常规软件工具进行捕捉、管理和处理的数据集合,是需要新处理模式才能具有更强的决策力、洞察发现力和流程优化能力的海量、高增长率和多样化的信息资产。
大数据的5V特点(IBM提出):
Volume(大量)——数据的大小决定所考虑的数据的价值和潜在的信息;
Velocity(高速)——指获得数据的速度;
Variety(多样)——指数据类型的多样性;
Value(价值)——合理运用大数据,以低成本创造高价值;
Veracity(真实性)——数据的质量;
2、大数据的意义
现在的社会是一个高速发展的社会,科技发达,信息流通,人们之间的交流越来越密切,生活也越来越方便,大数据就是这个高科技时代的产物。阿里巴巴创办人马云来台演讲中就提到,未来的时代将不是IT时代,而是DT的时代,DT就是Data Technology数据科技,显示大数据对于阿里巴巴集团来说举足轻重。
有人把数据比喻为蕴藏能量的煤矿。煤炭按照性质有焦煤、无烟煤、肥煤、贫煤等分类,而露天煤矿、深山煤矿的挖掘成本又不一样。与此类似,大数据并不在“大”,而在于“有用”。价值含量、挖掘成本比数量更为重要。对于很多行业而言,如何利用这些大规模数据是赢得竞争的关键。大数据的价值体现在以下几个方面:
对大量消费者提供产品或服务的企业可以利用大数据进行精准营
做小而美模式的中小微企业可以利用大数据做服务转型
面临互联网压力之下必须转型的传统企业需要与时俱进充分利用大数据的价值
想学习好大数据可以关注公众号程序员大牛 有视频资源分享一起学习
3、大数据的典型案例
A、啤酒与尿布
全球零售业巨头沃尔玛在对消费者购物行为分析时发现,男性顾客在购买婴儿尿片时,常常会顺便搭配几瓶啤酒来犒劳自己,于是尝试推出了将啤酒和尿布摆在一起的促销手段。没想到这个举措居然使尿布和啤酒的销量都大幅增加了。如今,“啤酒+尿布”的数据分析成果早已成了大数据技术应用的经典案例,被人津津乐道。
B、大数据与乔布斯癌症治疗
乔布斯是世界上第一个对自身所有DNA和肿瘤DNA进行排序的人。为此,他支付了高达几十万美元的费用。他得到的不是样本,而是包括整个基因的数据文档。医生按照所有基因按需下药,最终这种方式帮助乔布斯延长了好几年的生命。
C、 QQ圈子把前女友推荐给未婚妻
2012年3月腾讯推出QQ圈子,按共同好友的连锁反应摊开用户的人际关系网,把用户的前女友推荐给未婚妻,把同学同事朋友圈子分门别类,利用大数据处理能力给人带来“震撼”。
D、意料之外:胸部最大的是新疆妹
淘宝数据平台显示,购买最多的文胸尺码为B罩杯。B罩杯占比达41.45%,其中又以75B的销量最好。其次是A罩杯,购买占比达25.26%,C罩杯只有8.96%。在文胸颜色中,黑色最为畅销。以省市排名,胸部最大的是新疆妹子。
4、OLTP与OLAP
A、OLTP
OLTP,即On-Line Transaction Processing(联机事务处理过程),也称为面向交易的处理过程,其基本特征死前台接收的用户数据可以立即传送到计算中心进行处理,并在很短的时间内给出处理结果,是对用户操作快速响应的方式之一。衡量联机事务处理结果的一个重要指标是系统性能,具体体现为实时请求-响应时间(Response Time),即用户在终端输入数据之后,到计算机对这个请求给出答复所需要的时间。OLTP是由前台、应用、数据库共同完成的,处理快慢以及处理程度取决于数据库引擎、服务器、应用引擎。OLTP是传统的关系型数据库的主要应用,主要是基本的、日常的事务处理,例如银行交易。
OLTP据有一些明显的特征:1)支持大量并发用户定期添加和修改数据;2)提供用于支持单位日常运营的技术基础结构;3)包含大量数据,其中包括用于验证事务的大量数据;4)个别事务能够很快完成,并且只需访问相对较少的数据;5)交易一般是确定的,故OLTP是对确定性的数据进行存取;6)并发性要求高并且严格的要求事务完整和安全;7)实时性要求高;8)数据量不是特别大;9)系统结构复杂等。
典型案例:银行转账
B、OLAP
OLAP,即On-Line Analytical Processing(联机分析处理过程),其是数据仓库系统的主要应用,支持复杂的分析操作,侧重决策支持,并且提供直观易懂的查询结果。OLAP具有FASMI(Fast Analysis of Shared Multidimensional Information),即共享多维信息的快速分析的特征。其中,F是快速性(Fast),指系统能在数秒内对用户的多数分析要求做出反应;A是可分析性(Analysis),指用户无需编程就可以定义新的专门计算,将其作为分析的一部分,并以用户所希望的方式给出报告;M是多维性(Multi-dimensional),指提供对数据分析的多维书体和分析;I是信息性(Information),指能及时获得信息,并且管理大量信息。
OLAP的主要特点,是直接仿照用户的多角度思考模式,预先为用户组建多维的数据模型,在这里,维指的是用户的分析角度。例如对销售数据的分析,时间周期是一个维度,产品类型、分销渠道、地理分布、客户群类也分别是一个维度。一旦多维数据模型建立完成,用户就可以快速地从各个分析角度获取数据,也能动态地在各个角度之间切换或者进行多角度综合分析,具有极大的分析灵活性。这也是联机分析处理被广泛关注的根本原因,它从设计理念和真正实现上都与传统的管理信息系统有着本质的区别。
典型案例:商品推荐
C、OLTP与OLAP的比较:
| | OLTP | OLAP
|用户 | 操作人员,底层管理人员 | 决策人员,高级管理人员 |
| 功能 | 日常操作处理 | 分析决策 |
| DB设计 面向应用 | 面向主题 |
| 数据 | 当前的,最新的,细节的,二维的、分立的 | 历史的,聚集的,多维的,集成的,统一的 |
| 存取 | 读/写数十条记录 | 读取上百万条记录 |
| 工作单位 | 简单的事务 | 复杂的查询 |
| DB大小 | 100MB-GB | 100GB-TB |
5、数据仓库
数据仓库,英文名称为Data Warehouse,可简写为DW或DWH。数据仓库的目的,是构建面向分析的集成化数据环境,为企业提供分析性报告和决策支持(Decision Support)。其实数据仓库本身并不“生产”任何数据,同时也不需要“消费”任何数据,数据来源于外部,并且开放给外部应用,这也是为什么它叫“仓库”,而不叫“工厂”的原因。
从上图可以看出,数据仓库的基本架构主要包含的是数据的流入和流程过程,可以分为三大部分——数据源、数据仓库(包括数据存储及管理和数据集市)以及数据应用(前端展示)。数据仓库的数据来自于不同的数据源,并提供多样的数据应用,数据自左向右流入数据仓库后向上层应用程序开放应用,而数据仓库只是中间集成化数据管理的一个平台。数据仓库从各数据源获取数据及在数据仓库内的转换和流动,都可以认为是ETL(抽取Extra,转化Transfer,装载Load)过程,ETL是数据仓库的流水线,也可以认为是数据仓库的血液,它维系着数据仓库中数据的新陈代谢,而数据仓库日常管理和维护工作的大部分精力就是保持ETL的正常运作和稳定。
6、HADOOP思想的起源
首先简单介绍下google,google旗下有非常多的产品,如Google搜索引擎,Gmail邮件,安卓操作系统,Google地图,Google地球,Google学术,Google翻译,Google+等,下一步Google What?这些产品为我们的生活带来了巨大的变革,可以说在这个世纪,如果你不会用Google,你的生活质量也不会怎么高。
下面来看看google的低成本之道,这四个方面决定了google的成本很低,利润自然就高:
不使用超级计算机,不使用存储(淘宝的去i,去e,去o之路);
大量使用普通的pc服务器(去掉机箱,外设,硬盘),提供有冗余的集群服务;
全世界多个数据中心,有些甚至还附带发电厂;
运营商向google倒付费。
然后讲讲任何搜索引擎都会面临的几个难题,google自然也会遇到,但正是google的解决方案才成就了今天的Hadoop。
a. 大量的网页如何存储?
b. 海量的网页如何搜索?(搜索算法)
c. 海量的网页如何排名?(Page-Rank计算问题)
针对如上三个问题,google是怎么解决的呢?google发表了三篇论文(这也就是Hadoop的思想来源)。
A、《The Google File System》
GFS(Google File System:Google文件系统)是一个可扩展的分布式文件系统,用于大型的、分布式的、对大量数据进行访问的应用。它运行于廉价的普通硬件之上,并提供容错功能,同时它还可以给大量的用户提供总体性能较高的服务。
B、《MapReduce:Simplified Data Processing OnLarge Clusters》
MapReduce最早是由google公司研究提出的一种面向大规模数据处理的并行计算模型和方法,google公司设计MapReduce的初衷主要是为了解决其搜索引擎中大规模网页数据的并行化处理。概念“Map(映射)”和“Reduce(规约)”,是MapReduce的主要思想,它们都是从函数式编程语言里借鉴来的,也有从矢量编程语言里借鉴来的特性。MapReduce极大地方便了编程人员在不会分布式并行编程的情况下,将自己的程序运行于分布式系统之上。当前的软件实现是指定一个Map函数,用来把一组键值对映射成一组新的键值对,指定并发的Reduce函数,用来保证所有映射的键值对中的每一个共享相同的键组。
C、《Bigtable:A Distributed Storage Systemfor Structured Data》
BigTable是Google设计的分布式数据存储系统,用来处理海量数据的一种非关系型的数据库.BigTable是一个用于管理结构型数据的分布式存储系统,被设计为可扩展到很大规模:通过数以千台的机器存储PB级数据。BigTable实现了几个目标:广泛适用、可扩展、高性能和高可用。
7、HADOOP的产生
Hadoop是什么?Hadoop不是指具体的一个框架或者组件,它是Apache软件基金会下用Java语言开发的一个开源分布式计算平台,实现在大量计算机组成的集群中对海量数据进行分布式计算,适合大数据的分布式存储和计算。
Hadoop名字不是一个缩写,而是一个生造出来的词,是以Hadoop之父Doug Cutting儿子的毛绒玩具象命名的。2003-2004年,Google公布了部分GFS和MapReduce思想的细节,受此启发的Doug Cutting等人用2年的业余时间实现了DFS和MapReduce机制,使Nutch性能飙升,随后Yahoo招安Doug Gutting及其项目。2005年,Hadoop作为Lucene的子项目Nutch的一部分正式引入Apache基金会,2006年2月被分离出来,成为一套完整独立的软件,起名为Hadoop。
8、HADOOP框架
Apache Hadoop是一款支持数据密集型分布式应用并以Apache 2.0许可协议发布的开源软件框架,它支持在以商品硬件构建的大型集群上运行应用程序。Hadoop框架透明地为应用程序提供可靠性和数据移动,它实现了名为MapReduce的编程范式:应用程序被分割成许多小部分,而每个部分都能在集群中的任意节点上执行或重新执行。它主要拥有以下几个优点:
a. 高可靠性:Hadoop按位存储和处理数据的能力值得人们信赖;
b. 高扩展性:Hadoop是在可用的计算机集群间分配数据并完成计算任务,这些集群可以方便地扩展到数以千计的节点中;
c. 高效性:Hadoop能够在节点之间动态地移动数据,并保持各个节点的动态平衡,因此处理速度非常快;
d. 高容错性:Hadoop能够自动保存数据的多个副本,并且能够自动将失败的任务重新分配;
e. 低成本:Hadoop是开源的,项目的软件成本因而得以大大降低。
9、HADOOP家族部分成员介绍
HDFS——Hadoop分布式文件系统,被设计成适合部署于通用、低廉的硬件之上,有着高容错性、高吞吐量、高可靠性等特点;
MapReduce——一种编程模型,用于大规模数据集的并行运算,用Map和Reduce两个函数编程实现基本的并行计算任务,而且还提供了抽象的操作和并行编程接口,以简单方便地完成大规模数据的编程和计算处理;
YARN——一种新的Hadoop资源管理器,它是一个通用资源管理系统,可为上层应用提供统一的资源管理和调度,它的引入为集群在利用率、资源统一管理和数据共享等方面带来了巨大好处;
HBase——HBase是一个分布式的、面向列的开源数据库,与一般的关系型数据库不同,它适合于非结构化数据存储与查询,具有高可靠性、高性能、面向列和可伸缩等特点;
Hive——基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张数据库表,并提供简单的SQL查询功能,可以将SQL语句转换为MapReduce任务进行运行;
Pig——一种数据流语言和运行环境,用于检索非常大的数据集,为大型数据集的处理提供了一个更高层次的抽象。Pig包括两部分:一是用于描述数据流的语言,称为Pig Latin;二是用于运行Pig Latin程序的执行环境;
Flume——Cloudera提供的一个高可用、高可靠、分布式的海量日志采集、聚合和传输的系统。Flume支持在日志系统中定制各类数据发送方,用于收集数据;同时,还提供对数据进行简单处理,并写到各种数据接收方;
Sqoop——一款开源工具,主要用于在Hadoop(Hive)与传统的数据库(MySql、Oracle等)之间进行数据传递,可以将一个关系型数据库中的数据导入到Hadoop的HDFS中,也可以将HDFS中的数据导进到关系型数据库中;
Zookeeper——一个分布式的、开放源码的分布式应用程序协调服务,是Hadoop和HBase的重要组件。它是一个为分布式应用提供一致性服务的软件,提供的功能包括:配置维护、域名服务、分布式同步、组服务等;
HUE——一个开源的Apache Hadoop UI系统,由Cloudera Desktop演化而来,最后由Cloudera公司将其贡献给Apache基金会的Hadoop社区,它是基于Python Web框架Django实现。通过使用HUE可以在浏览器端的Web控制台上与Hadoop集群进行交互来分析处理数据,例如操作HDFS上的数据、运行MapReduce Job、执行Hive的SQL语句、浏览HBase数据库等;
Storm——一个开源、分布式、高容错的实时大数据处理架构,它使得持续不断的流计算变得容易,弥补了Hadoop批处理所不能满足的实时要求,Storm经常用于实时分析、在线机器学习、持续计算、分布式远程调用和ETL等领域;
Spark——专为大规模数据处理而设计的快速通用的计算引擎,它拥有Hadoop MapReduce所具有的优点,但不同于MapReduce的是——Job中间的输出结果可以保存在内容中,从而不再需要读写HDFS,提高了运行效率。Spark是在Scala语言中实现的,它将Scala用作其应用程序框架,具有易用性、通用性、速度快等众多特点,现已形成一个高速发展、应用广泛的生态系统;
Redis——一个开源(BSD许可)的、使用ANSI C语言编写的、支持网络、基于内存亦可持久化的日志型、Key—Value数据库,可以用作数据库、缓存和消息中间件。为了实现其卓越的性能, Redis 采用运行在内存中的数据集的工作方式。根据实际使用情况,可以每隔一定时间将数据集导出到磁盘,或者追加到命令日志中,也可以关闭持久化功能,将Redis作为一个高效的网络缓存数据功能来使用。