赞
踩
目录
最近几年,IT行业最火的名词中,少不了"大数据"、"人工智能"、"云计算"、"物联网"、"区块链"等等这些名词。针对于"大数据"这个名词,现在更是全国老百姓,老少皆知的一个词语。但是什么是大数据,除了IT行业的专业人士外,其他人乃至其他行业的人,除了能说出"数据量大"之外,好像真的不能再更深层次的解释了。那么我们来看看下面几个权威机构给出的解释。
维基百科 给出的定义:
数据规模巨大到无法通过人工在合理的时间内达到截取,管理,处理并整理成为人类所解读的信息。
麦肯锡全球研究所 给出的定义:
一种规模大到在获取、存储、管理、分析方面都大大超出了传统数据库软件工具能力范围的数据集合。
研究机构 高德纳(Gartner)给出的定义:
"大数据"是需要新的处理模式才能具有更强的决策力、洞察发现力和流程优化能力来适应海量、高增长率和多样化的信息资产
概念总结:
海量数据,具有高增长率、数据类型多样化、一定时间内无法使用常规软件工具进行捕捉、管理和处理的数据集合。
早在1980年,著名未来学家托夫勒在其所著的《第三次浪潮》中就热情地将“大数据”称颂为“第三次浪潮的华彩乐章”。《自然》杂志在2008年9月推出了名为“大数据”的封面专栏。从2009年开始“大数据”才成为互联网技术行业中的热门词汇。最早应用“大数据”的是世界著名的管理咨询公司麦肯锡公司,它看到了各种网络平台记录的个人海量信息具备潜在的商业价值,于是投入大量人力物力进行调研, 对“大数据”进行收集和分析的设想,在2011年6月发布了关于“大数据”的报告,该报告对“大数据”的影响、关键技术和应用领域等都进行了详尽的分析。麦肯锡的报告得到了金融界的高度重视,而后逐渐受到了各行各业关注。 那么大数据到底有什么特征呢?我们怎么去理解大数据呢?有专业人士总结了4V说法,也有相关机构总结了5V说法,甚至6V说法。不管哪种说法,下面四个特征,是大家普遍认可的。
1. Volume:巨大的数据量 2. Variety:数据类型多样化 --(1):结构化的数据 即有固定格式和有限长度的数据。 --(2):半结构化的数据 是一些XML或者HTML的格式的数据。 --(3):非结构化的数据 现在非结构化的数据越来越多,就是不定长、无固定格式的数据,例如网页、语音,视频等。 3. Velocity: 数据增长速度快 4. Value:价值密度低
有不了解大数据的人会问:大数据能做啥?问的好。
大数据本身是一个抽象的概念, 对当前无论是企业还是政府、或是高校等单位来说,是一个面临着数据无法存储、无法计算的状态的形容词。
那么大数据可以做什么呢?
在海量的各种各样类型的价值密度低的数据中,我们要进行的是:数据采集,数据存储,数据清洗,数据分析,数据可视化。
简单一句话,就是大数据让数据产生各种"价值"。可以说,大数据的核心作用就是"数据价值化",这个过程就是大数据要做的主要事情。那么就可以概括成:
- 记录已经发生的一切 - 描述正在发生的一切 - 预测将要发生的一切
大数据技术的战略意义不在于掌握庞大的数据信息,而在于对这些含有意义的数据进行专业化处理。
现在已经应用"大数据"的案例有:
- 预测犯罪 - 预测流感的爆发 - 预测选举 - 根据手机定位和交通数据,规划城市 - 根据库存和需求,实时调价 - 推动医疗信息化发展,远程医疗
大数据技术目前正处在落地应用的初期,从大数据自身发展和行业发展的趋势来看,大数据未来的前景还是不错的,具体原因有以下几点:
- 大数据本身的价值体现, 本身的数据价值化就会开辟出很大的市场空间。目前在互联网领域,大数据技术已经得到了较为广泛的应用。 大数据造就了新兴行业 - 大数据推动了科技领域的发展 不仅体现在互联网领域,还体现在金融、教育、医疗等诸多领域,尤其是现在的人工智能。 - 大数据产业链的形成 经过近些年的发展,大数据已经初步形成了一个较为完整的产业链,包括数据采集、整理、传输、存储、分析、呈现和应用,众多企业开始参与到大数据产业链中,并形成了一定的产业规模,相信随着大数据的不断发展,相 关产业规模会进一步扩大。 - 国家大力扶持大数据行业的发展
1.5.1 数据源
数据的来源有如下内容: - 关系型数据库 * 各种关系表,如订单表、账号表、基本信息表 - 日志文件 * 用户行为数据 * 浏览了哪些页面(网页、App、电视机顶盒),导航栏上的哪些选项等等 - 三方数据 * 第三方的接口提供数据 * 爬虫等
1.5.2 数据采集或者同步
常用数据采集导入框架: - sqoop: 用于RDBMS与HDFS之间数据导入与导出 - flume: 采集日志文件数据,动态采集日志文件,数据流 flume采集到的数据,一份给HDFS,用于做离线分析;一份给Kafka,实时处理 - kafka: 主要用于实时的数据流处理 flume与kafka都有类似消息队列的机制,来缓存大数据环境处理不了的数据
1.5.3 数据存储
常用数据存储框架 - HDFS、 HBase、ES
1.5.4 数据清洗
即对数据进行过滤,得到具有一定格式的数据源 常用框架(工具):MapReduce、Hive(ETL)、SparkCore、sparksql等
1.5.5 数据分析
对经过数据清洗后的数据进行分析,得到某个指标 常用框架(工具):MapReduce、Hive、SparkSQL、impala(impa:le)、kylin
1.5.6 数据展示
即将数据分析后的结果展示出来,也可以理解为数据的可视化、以图或者表具体的形式展示出来 常用工具: metastore、Javaweb、hcharts、echarts
1)概念
云计算是以虚拟技术为核心,进行统一管理硬件设施,平台,软件等;它通过网络提供了可伸缩的、廉价的分布式计算能力;它用出租的方式提供给用户,用户只要花低价,在具备网络接入条件的地方,就可以随时随地获得所需的各种IT资源;类似于国家统一管理水,电,煤气等等。
2)云计算的种类
- 公有云:公有云面向所有用户提供服务,只要是注册付费的用户都可以使用 - 私有云:私有云只为特定用户提供服务 - 混合云:混合云综合了公有云和私有云的特点
3)服务的种类
-1. IaaS(基础设施即服务):IaaS将基础设施(计算资源和存储)作为服务出租。 在这种服务模型中,普通用户不用自己构建一个数据中心等硬件设施,而是通过租用的方式,利用 Internet从IaaS服务提供商获得计算机基础设施服务,包括服务器、存储和网络等服务。 举个例子:假如你现在要做一个网站,你肯定要有一台服务器或者虚拟机,要么自己搭建,要么买服务器运营商的。说白了,IaaS就是解决企业硬件问题的,包括服务器、存储设备、网络设备等基础设施。基础设施有了,你就可以搭建环境了。 -2. PaaS(平台即服务):PaaS把平台作为服务出租 举个例子:假如你现在要做一个网站,你不想自己买服务器搭环境,你就直接购买别人的PaaS服务。PaaS一般会为企业解决硬件的租赁问题,以及操作系统的选装,开发测试环境的搭建,及各种编程语言的选装等,提供一个运行的直接用的软件平台。有了PaaS你就可以在上面做开发工作了,当然,一些别的程序及软件还得你自己安装配置。 -3. SaaS(软件即服务)。SaaS把软件作为服务出租。 举个例子:你现在想做一个网站,你不会做,你只要购买别人的成熟软件,配置几下就能使用了。说白了就是卖软件的,你不用租用服务器,开发软件等费时间的工作,你直接购买别人的软件通过互联网就能使用,也不需要本地安装,也就是软件即服务的意思,你出钱,别人出软件服务。
4)云计算的关键技术
-1. 虚拟化 云计算的核心技术之一就是虚拟化技术。所谓虚拟化,是指通过虚拟化技术将一台计算机虚拟为多台逻辑计算机。在一台计算机上同时运行多个逻辑计算机,每个逻辑计算机可运行不同的操作系统,并且应用程序都可以在相互独立的空间内运行而互不影响,从而显著提高计算机的工作效率。 虚拟化的核心软件VMM,是一种运行在物理服务器和操作系统之间的中间层软件。VMM是一种在虚拟环境中的“元”操作系统。他们可以访问服务器上包括CPU、内存、磁盘、网卡在内的所有物理设备。VMM不但协调着这些硬件资源的访问,也同时在各个虚拟机之间施加防护。当服务器启动并执行VMM时,它会加载所有虚拟机客户端的操作系统同时会分配给每一台虚拟机适量的内存,CPU,网络和磁盘。 -2. 分布式存储 云计算的另一大优势就是能够快速、高效地处理海量数据。在数据爆炸的今天,这一点至关重要。为了保证数据的高可靠性,云计算通常会采用分布式存储技术,将数据存储在不同的物理设备中。这种模式不仅摆脱了硬件设备的限制,同时扩展性更好,能够快速响应用户需求的变化。 分布式存储与传统的网络存储并不完全一样,传统的网络存储系统采用集中的存储服务器存放所有数据,存储服务器成为系统性能的瓶颈,不能满足大规模存储应用的需要。分布式网络存储系统采用可扩展的系统结构,利用多台存储服务器分担存储负荷,利用位置服务器定位存储信息,它不但提高了系统的可靠性、可用性和存取效率,还易于扩展。 在当前的云计算领域,Google的GFS和Hadoop开发的开源系统HDFS是比较流行的两种云计算分布式存储系统。 GFS(GoogleFileSystem)技术:谷歌的非开源的GFS(GoogleFileSystem)云计算平台满足大量用户的需求,并行地为大量用户提供服务。使得云计算的数据存储技术具有了高吞吐率和高传输率的特点。 HDFS(HadoopDistributedFileSystem)技术:大部分ICT厂商,包括Yahoo、Intel的“云”计划采用的都是HDFS的数据存储技术。未来的发展将集中在超大规模的数据存储、数据加密和安全性保证、以及继续提高I/O速率等方面 -3. 分布式计算 问题分解为若干小问题,分配给各个计算机再综合起来 -4. 多租户
1.8.1 概念
物联网是物物相连的互联网,是互联网的延伸,它利用局部网络或互联网等通信技术把传感器、控制器、机器、 人员和物等通过新的方式连在一起,形成人与物、物与物相连,实现信息化和远程管理控制。
1.8.2 物联网关键技术
物联网是物与物相连的网络,通过为物体加装二维码、RFID标签、传感器等,就可以实现物体身份唯一标识和各 种信息的采集,再结合各种类型网络连接,就可以实现人和物、物和物之间的信息交换。因此,物联网中的关键 技术包括识别和感知技术(二维码、RFID、传感器等)、网络与通信技术、数据挖掘与融合技术等。
1.8.3 扩展
射频识别(RFID)是 Radio Frequency Identification 的缩写。 其原理为阅读器与标签之间进行非接触式的数据通信,达到识别目标的目的。RFID 的应用非常广泛,典型应用有动物晶片、汽车晶片防盗器、门禁管制、停车场管制、生产线自动化、物料管理。
云计算、大数据和物联网代表了IT领域最新的技术发展趋势,三者既有区别又有联系。从云计算和大数据概念的诞生到现在,二者之间的关系非常微妙,既密不可分,又千差万别。因此,我们不能把云计算和大数据割裂开来作为截然不同的两类技术来看待。此外,物联网也是和云计算、大数据相伴相生的技术。
1.9.1 大数据、云计算和物联网的区别。
- 大数据侧重于对海量数据的存储、处理与分析,从海量数据中发现价值,服务于生产和生活; - 云计算本质上旨在整合和优化各种IT资源并通过网络以服务的方式,廉价地提供给用户; - 物联网的发展目标是实现物物相连,应用创新是物联网发展的核心。
1.9.2 大数据、云计算和物联网的联系。
从整体上看,大数据、云计算和物联网这三者是相辅相成的。
物联网的传感器源源不断产生的大量数据,构成了大数据的重要数据来源,没有物联网的飞速发展,就不会带来 数据产生方式的变革,即由人工产生阶段转向自动产生阶段,大数据时代也不会这么快就到来。同时,物联网需 要借助于云计算和大数据技术,实现物联网大数据的存储、分析和处理。
现在的我们,生活在数据大爆炸的年代。国际数据公司已经预测在2020年,全球的数据总量将达到44ZB,经过单位换算后,至少在440亿TB以上,也就是说,全球每人一块1TB的硬盘都存储不下。
扩展:数据大小单位:Byte,KB,MB,GB,TB,PB,EB,ZB,YB,DB,NB
一些数据集的大小更远远超过了1TB,也就是说,数据的存储是一个要解决的问题。同时,硬盘技术也面临一个技术瓶颈,就是硬盘的传输速度(读数据的速度)的提升远远低于硬盘容量的提升。我们看下面这个表格:
可以看到,容量提升了将近1000倍,而传输速度才提升了20倍,读完一个硬盘的所需要的时间相对来说,更长更久了(已经违反了数据价值的即时性)。读数据都花了这么长时间,更不用说写数据了。
对于如何提高读取数据的效率,我们已经想到解决的方法了,那就是将一个数据集存储到多个硬盘里,然后并行读取。比如1T的数据,我们平均100份存储到100个1TB硬盘上,同时读取,那么读取完整个数据集的时间用不上两分钟。至于硬盘剩下的99%的容量,我们可以用来存储其他的数据集,这样就不会产生浪费。解决读取效率问题的同时,我们也解决了大数据的存储问题。
但是,我们同时对多个硬盘进行读/写操作时,又有了新的问题需要解决:
1、硬件故障问题。一旦使用多个硬件,相对来说,个别硬件产生故障的几率就高,为了避免数据丢失,最常见的做法就是复制(replication):文件系统保存数据的多个复本,一旦发生故障,就可以使用另外的复本。 2、读取数据的正确性问题。大数据时代的一个分析任务,就需要结合大部分数据来共同完成分析,因此从一个硬盘上读取的数据要与从其他99个硬盘上读取的数据结合起来使用。那么,在读取过程中,如何保证数据的正确性,就是一个很大的挑战。
针对于上述几个问题,Hadoop为我们提供了一个可靠的且可扩展的存储和分析平台,此外,由于Hadoop运行在商用硬件上且是开源的,因此Hadoop的使用成本是比较低了,在用户的承受范围内。
Hadoop是Apache基金会旗下一个开源的分布式存储和分析计算平台,使用java语言开发,具有很好的跨平台性,可以运行在商用(廉价)硬件上,用户无需了解分布式底层细节,就可以开发分布式程序,充分使用集群的高速计算和存储
Apache lucene是一个应用广泛的文本搜索系统库。该项目的创始人道格·卡丁在2002年带领团队开发该项目中的子项目Apache Nutch,想要从头打造一个网络搜索引擎系统,在开发的过程中,发现了两个问题,一个是硬件的高额资金投入,另一个是存储问题。 2003年和2004年Google先后发表的《GFS》和《MapReduce》论文,给这个团队提供了灵感,并进行了实现,于是NDFS(Nutch分布式文件系统)和MapReduce相继问世。2006年2月份,开发人员将NDFS和MapReduce移出Nutch形成一个独立的子项目,命名为Hadoop(该名字据Doug Cutting所说,是借用了他的孩子给毛绒玩具取得名字)。
- 2003年发表的《GFS》 基于硬盘不够大、数据存储单份的安全隐患问题,提出的分布式文件系统用于存储的理论思想。 · 解决了如何存储大数据集的问题 - 2004年发表的《MapReduce》 基于分布式文件系统的计算分析的编程框架模型。移动计算而非移动数据,分而治之。 · 解决了如何快速分析大数据集的问题 - 2006年发表的《BigTable》 针对于传统型关系数据库不适合存储非结构化数据的缺点,提出了另一种适合存储大数据集的解决方案
Hadoop是Apache的一个开源项目,所以很多公司在这个基础上都进行了商业化,加入了自己的特色。Hadoop的发行版中除了有Apache社区提供的hadoop之外,比较出名的公司如cloudera,hortonworks,mapR,华为,DKhadoop等都提供了自己的商业版本,主要是大型公司提供更为专业的技术支持,多数都收费。
- Apache Hadoop(社区版): 原生的Hadoop、开源、免费、社区活跃,更新速度快,适合学习阶段 - Cloudera Hadoop(CDH版):最成型的商业发行版本。有免费版和收费版本。版本划分清晰,版本更新速度快,对生态圈的其他软件做了很好的兼容性,安全性、稳定性都有增强。支持多种安装方式(Cloudera Manager、YUM、RPM、Tarball) - Hortonworks Hadoop(HDP):完全开源,安装方便,提供了直观的用户安装界面和配置工具
2.6.1 apache官网地址和如何进入项目列表
2.6.2 找到Hadoop项目
2.6.3 Hadoop的模块和生态圈
2.6.4 Hadoop的历史版本入口
2.6.5 找到Hadoop2.7.6,以及文档入口
2.6.6 老版本官网入口
hadoop2.0以后的四个模块: - Hadoop Common:Hadoop模块的通用组件 - Hadoop Distributed File System:分布式文件系统 - Hadoop YARN:作业调度和资源管理框架 - Hadoop MapReduce:基于YARN的大型数据集并行计算处理框架 hadoop3.0新扩展的两个模块: - Hadoop Ozone:Hadoop的对象存储机制 - Hadoop Submarine:Hadoop的机器学习引擎
参考apache官网:Apache Hadoop
--1. Hbase 是一个可扩展的分布式数据库,支持大型表格的结构化数据存储。 HBase是Apache的Hadoop项目的子项目。HBase不同于一般的关系数据库,它是一个适合于非结构化数据存储的数据库。另一个不同的是HBase基于列的,而不是基于行的模式。 --2. Hive 数据仓库基础架构,提供数据汇总和临时查询,可以将结构化的数据文件映射为一张数据库表,并提供简单的sql查询功能,可以将sql语句转换为MapReduce任务进行运行。Hive提供的是一种结构化数据的机制,定义了类似于传统关系数据库中的类SQL语言:Hive QL,通过该查询语言,数据分析人员可以很方便地运行数据分析 业务。 --3. Spark Hadoop数据的快速和通用计算引擎。 Spark提供了一个简单而富有表现力的编程模型,支持广泛的应用程序,包括ETL,机器学习,流处理和图计算。 --4. ZooKeeper 一个面向分布式应用程序的高性能协调服务,是Hadoop和Hbase的重要组件。它是一个为分布式应用提供一致性服务的软件,提供的功能包括:配置维护、域名服务、分布式同步、组服务等。 --5. Sqoop(数据ETL/同步工具) Sqoop是SQL-to-Hadoop的缩写,主要用于传统数据库和Hadoop之前传输数据。数据的导入和导出本质上是Mapreduce程序,充分利用了MR的并行化和容错性。 --6. Flume(日志收集工具) Cloudera开源的日志收集系统,具有分布式、高可靠、高容错、易于定制和扩展的特点。它将数据从产生、传输、处理并最终写入目标的路径的过程抽象为数据流,在具体的数据流中,数据源支持在Flume中定制数据发送方,从而支持收集各种不同协议数据。同时,Flume数据流提供对日志数据进行简单处理的能力,如过滤、格式转换等。 --7. Kafka(分布式消息队列) Kafka是Linkedin于2010年12月份开源的消息系统,它主要用于处理活跃的流式数据。这些数据包括网站的pv、用户访问了什么内容,搜索了什么内容等。这些数据通常以日志的形式记录下来,然后每隔一段时间进行一次统计处理。 --8. Ambari 用于供应,管理和监控Apache Hadoop集群的基于Web的工具。Ambari目前已支持大多数Hadoop组件,包括HDFS、MapReduce、Hive、Pig、 Hbase、Zookeper、Sqoop和Hcatalog等。Ambari还提供了一个用于查 看集群健康状况的仪表板,例如热图以及可视化查看MapReduce,Pig和Hive应用程序的功能以及用于诊断其性能特征的功能,以方便用户使用。 --9. Avro 数据序列化系统。可以将数据结构或者对象转换成便于存储和传输的格式,其设计目标是用于支持数据密集型应用,适合大规模数据的存储与交换。Avro提供了丰富的数据结构类型、快速可压缩的二进制数据格式、存储持久性数据的文件集、远程调用RPC和简单动态语言集成等功能。 --10. Cassandra 可扩展的多主数据库,没有单点故障。是一套开源分布式NoSQL数据库系统。 --11. Chukwa 于管理大型分布式系统的数据收集系统(2000+以上的节点, 系统每天产生的监控数据量在T级别)。它构建在Hadoop的HDFS和MapReduce基础之上,继承了Hadoop的可伸缩性和鲁棒性。Chukwa包含一个强大和灵活的工具集,提供了数据的生成、收集、排序、去重、分析和展示等一系列功能,是Hadoop使用者、集群运营人员和管理人员的必备工具。 --12. Mahout Apache旗下的一个开源项目,可扩展的机器学习和数据挖掘库 --13. Pig 用于并行计算的高级数据流语言和执行框架。它简化了使用Hadoop进行数据分析的要求,提供了一个高层次的、面向领域的抽象语言:Pig Latin。 --14. Tez 一个基于Hadoop YARN的通用数据流编程框架,它提供了一个强大而灵活的引擎,可执行任意DAG任务来处理批处理和交互式用例的数据Hado™生态系统中的Hive™,Pig™和其他框架以及其他商业软件(例如ETL工具)正在采用Tez,以替代Hadoop™MapReduce作为底层执行引擎。 --15. Oozie(工作流调度器) 一个可扩展的工作体系,集成于Hadoop的堆栈,用于协调多个MapReduce作业的执行。它能够管理一个复杂的系统,基于外部事件来执行,外部事件包括数据的定时和数据的出现。 --16. Pig(ad-hoc脚本) 由yahoo!开源,设计动机是提供一种基于MapReduce的ad-hoc(计算在query时发生)数据分析工具,通常用于进行离线分析。它定义了一种数据流语言—Pig Latin,它是MapReduce编程的复杂性的抽象,Pig平台包括运行环境和用于分析Hadoop数据集的脚本语言(Pig Latin)。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。