分析大量数据只是使大数据与以前的数据分析不同的部分原因之一。让我们来从下面三个方面看看。
我们每天都在吃饭,睡觉,工作,玩耍,与此同时产生大量的数据。根据IBM调研的说法,人类每天生成2.5亿(250亿)字节的数据。 这相当于一堆DVD数据从地球到月球的距离,涵盖我们发送的文本、上传的照片、各类传感器数据、设备与设备之间的通信的所有信息等。
这也就是为什么“大数据”成为如此常见的流行词的一个重要原因。简单地说,当人们谈论大数据时,他们指的是获取大量数据的能力,分析它,并将其转化为有用的东西。
01 确切的说,什么是大数据?
当然,大数据还远远不止这些?
通常从多个来源获取大量数据
不仅仅是大量的数据,而且是不同类型的数据,同时也有多种数据,以及随时间变化的数据,这些数据不需要转换成特定的格式或一致性。
以一种方式分析数据,允许对相同的数据池进行分析,从而实现不同的目的
尽快实现所有这一切。
在早些时候,这个行业提出了一个缩略词来描述这四个方面中的三个:VVV,体积(数量巨大),多样性(不同类型的数据和数据随时间变化的事实)和周转率(速度)。
02 大数据与数据仓库
VVV的缩写词所忽略的是数据不需要永久更改(转换)的关键概念——进行分析。这种非破坏性分析意味着,组织可以分析相同的数据连接池以不同的目的,并可以收集到不同目的的来源分析数据。
(备注:数据库连接池负责分配、管理和释放数据库连接,它允许应用程序重复使用一个现有的数据库连接,而不是再重新建立一个;释放空闲时间超过最大空闲时间的数据库连接来避免因为没有释放数据库连接而引起的数据库连接遗漏。这项技术能明显提高对数据库操作的性能。)
相比之下,数据仓库是专门为特定目的分析特定数据,数据结构化并转换为特定格式,原始数据在该过程中基本上被销毁,用于特定目的,而不是其他被称为提取,转换和加载(ETL)。 数据仓库的ETL方法有限分析具体数据进行具体分析。 当您的所有数据都存在于您的交易系统中时,这是非常好的,但在当今互联网连接的世界中,数据来自无处不在。
备注:ETL,是英文 Extract-Transform-Load 的缩写,用来描述将数据从来源端经过抽取(extract)、转换(transform)、加载(load)至目的端的过程。ETL一词较常用在数据仓库,但其对象并不限于数据仓库。
ETL是构建数据仓库的重要一环,用户从数据源抽取出所需的数据,经过数据清洗,最终按照预先定义好的数据仓库模型,将数据加载到数据仓库中去。
信息是现代企业的重要资源,是企业运用科学管理、决策分析的基础。目前,大多数企业花费大量的资金和时间来构建联机事务处理OLTP的业务系统和办公自动化系统,用来记录事务处理的各种相关数据。据统计,数据量每2~3年时间就会成倍增长,这些数据蕴含着巨大的商业价值,而企业所关注的通常只占在总数据量的2%~4%左右。因此,企业仍然没有最大化地利用已存在的数据资源,以至于浪费了更多的时间和资金,也失去制定关键商业决策的最佳契机。于是,企业如何通过各种技术手段,并把数据转换为信息、知识,已经成了提高其核心竞争力的主要瓶颈。而ETL则是主要的一个技术手段。
数据仓库,是为企业所有级别的决策制定过程,提供所有类型数据支持的战略集合。它是单个数据存储,出于分析性报告和决策支持目的而创建。 为需要业务智能的企业,提供指导业务流程改进、监视时间、成本、质量以及控制。数据仓库是决策支持系统(dss)和联机分析应用数据源的结构化数据环境。数据仓库研究和解决从数据库中获取信息的问题。数据仓库的特征在于面向主题、集成性、稳定性和时变性。
决策支持系统(Decision Support System,简称DSS),是以管理科学、运筹学、控制论、和行为科学为基础,以计算机技术、仿真技术和信息技术为手段,针对半结构化的决策问题,支持决策活动的具有智能作用的人机系统。该系统能够为决策者提供所需的数据、信息和背景资料,帮助明确决策目标和进行问题的识别,建立或修改决策模型,提供各种备选方案,并且对各种方案进行评价和优选,通过人机交互功能进行分析、比较和判断,为正确的决策提供必要的支持。它通过与决策者的一系列人机对话过程,为决策者提供各种可靠方案,检验决策者的要求和设想,从而达到支持决策的目的。
决策支持系统一般由交互语言系统、问题系统以及数据库、模型库、方法库、知识库管理系统组成。在某些具体的决策支持系统中,也可以没有单独的知识库及其管理系统,但模型库和方法库通常则是必须的。由于应用领域和研究方法不同,导致决策支持系统的结构有多种形式。
决策支持系统强调的是对管理决策的支持,而不是决策的自动化,它所支持的决策可以是任何管理层次上的,如战略级、战术级或执行级的决策。
但是,不要认为大数据会使数据仓库过时。大数据系统可以让您在很大程度上处理非结构化数据,但是所得到的查询结果与数据仓库的复杂程度是不一样的。毕竟,数据仓库是为了深入数据而设计的,它之所以能够做到这一点,是因为它已经将所有数据转换成一种一致的格式,让您可以像构建立方体一样进行深入查询。
多年来,数据仓库供应商一直在优化他们的查询引擎,以回答典型的业务环境问题。大数据可以让你从更多的数据源中获取更多的数据,但分辨率要低一些。因此,在未来一段时间内,我们将与传统的数据仓库一起并存。
03 技术突破大数据背后
为了完成大数据量,品种,非破坏性使用和速度的四个方面,包括分布式文件系统(Hadoop)的开发,一种意识到不同数据的方法(Google的Map、Reduce以及最近的Apache Spark),以及云/互联网基础设施,用于根据需要访问和移动数据。
直到大约十几年前,在任何一个时间都不可能操纵比较少的数据。(嗯,我们都认为数据仓库当时是巨大的,随着互联网的产生和连接的数据到处都是这样的背景)。对数据存储的数量和位置的限制、计算能力以及处理来自多个数据源的不同数据格式的能力使得这项任务几乎不可能完成。
然后,在2003年左右的时间里,Google的研究人员开发了Map、Reduce。 这种编程技术通过首先将数据映射到一系列键/值对来简化处理大数据集,然后对类似的键执行计算以将它们减少到单个值,以数百或数千个低位并行处理每个数据块 成型机。 这种巨大的并行性允许Google从越来越大量的数据中产生更快的搜索结果。
在2003年,Google创造了两个突破,使得大数据成为可能:一个是Hadoop,它由两个关键服务组成:
使用Hadoop分布式文件系统(HDFS)可靠的数据存储
使用称为Map、Reduce的技术进行高性能并行数据处理。
Hadoop运行在商品,无共享服务器的集合上。 您可以随意添加或删除Hadoop集群中的服务器; 系统检测并补偿任何服务器上的硬件或系统问题。 换句话说,Hadoop是自我修复的。 尽管发生系统更改或故障,它可以提供数据并运行大规模,高性能的处理作业。
Hadoop实现了一个分布式文件系统(Hadoop Distributed File System),简称HDFS。HDFS有高容错性的特点,并且设计用来部署在低廉的(low-cost)硬件上;而且它提供高吞吐量(high throughput)来访问应用程序的数据,适合那些有着超大数据集(large data set)的应用程序。HDFS放宽了(relax)POSIX的要求,可以以流的形式访问(streaming access)文件系统中的数据。
Hadoop的框架最核心的设计就是:HDFS和Map、Reduce。HDFS为海量的数据提供了存储,则Map、Reduce为海量的数据提供了计算。
尽管Hadoop为数据存储和并行处理提供了一个平台,但实际价值来自于该技术的附加组件,交叉集成和自定义实现。 为此,Hadoop提供的子项目为平台增加了功能和新功能:
Hadoop Common:支持其他Hadoop子项目的常用工具。
Chukwa:用于管理大型分布式系统的数据收集系统。
HBase:可扩展的分布式数据库,支持大型表格的结构化数据存储。
HDFS:分布式系统,可提供对应用程序数据的高吞吐量访问。
蜂巢:提供数据汇总和即席查询的数据仓库基础设施。
Map/Reduce:用于在计算集群上分布式处理大型数据集的软件框架。
pig:并行计算的高级数据语言和执行框架。
ZooKeeper:分布式应用程序的高性能协调服务。
Hadoop平台的大多数实施方案至少包括这些子项目中的一些,因为它们通常是开发大数据所必需的。 例如,大多数组织选择使用HDFS作为主分布式文件系统,将HBase用作数据库,可以存储数十亿行的数据。 并且使用Map/Reduce或更新近的Spark几乎是给定的,因为它们为Hadoop平台带来了速度和灵活性。
通过Map、Reduce,开发人员可以创建可以并行处理大量非结构化数据的程序,这些数据可以在分布式的处理器或独立计算机上并行处理。MapReduce框架被划分为两个功能区域:
Map(映射),一个将工作分发到分布式集群中的不同节点的功能。
Reduce函数:整理工作并将结果解析成单个值的功能。
Map、Reduce的主要优点之一是它是容错的,它通过监视集群中的每个节点来实现;每个节点都需要定期报告,完成的工作和状态更新。如果一个节点保持比预期的时间,间隔更长的时间,那么主节点将会记录并将工作分配给其他节点。
Apache Hadoop是一种使用Map、Reduce核心的开源框架,两年后开发出来了。Hadoop最初是用来索引现在不知名的Nutch搜索引擎的,现在几乎所有主要行业都使用Hadoop来进行大范围的大数据工作。得益于Hadoop的分布式文件系统和纱线(另一个资源协商者),该软件让用户可以在数千台设备上处理大规模数据集,就好像它们都在一台巨大的机器上一样。
Nutch 是一个开源Java 实现的搜索引擎。它提供了我们运行自己的搜索引擎所需的全部工具。包括全文搜索和Web爬虫。
Nutch组成:
爬虫crawler和查询searcher。
Crawler主要用于从网络上抓取网页并为这些网页建立索引。
Searcher主要利用这些索引检索用户的查找关键词来产生查找结果。
两者之间的接口是索引,所以除去索引部分,两者之间的耦合度很低。
Crawler和Searcher两部分尽量分开的目的主要是为了使两部分可以分布式配置在硬件平台上,例如将Crawler和Searcher分别放在两个主机上,这样可以提升性能。
Crawler 的重点在两个方面,Crawler的工作流程和涉及的数据文件的格式和含义。数据文件主要包括三类,分别是web database(WebDB),一系列的segment加上index,三者的物理文件分别存储在爬行结果目录下的db目录下webdb子文件夹内,segments 文件夹和index文件夹。那么三者分别存储的信息是什么呢?
一次爬行会产生很多个segment,每个segment内存储的是爬虫Crawler在单独一次抓取循环中抓到的网页以及这些网页的索引。Crawler爬行时会根据WebDB中的link关系按照一定的爬行策略生成每次抓取循环所需的fetchlist(Crawler根据WebDB生成一个待抓取网页的URL集合),然后 Fetcher(下载线程)通过fetchlist中的URLs抓取这些网页并索引,然后将其存入segment。Segment是有时限的,当这些网页被 Crawler重新抓取后,先前抓取产生的segment就作废了。在存储中。Segment文件夹是以产生时间命名的,方便我们删除作废的 segments以节省存储空间。
Index是Crawler抓取的所有网页的索引,它是通过对所有单个segment中的索引进行合并处理所得的。Nutch利用Lucene技术进行索引,所以Lucene中对索引进行操作的接口对Nutch中的index同样有效。但是需要注意的是,Lucene 中的segment和Nutch中的不同,Lucene中的segment是索引index的一部分,但是Nutch中的segment只是WebDB中各个部分网页的内容和索引,最后通过其生成的index跟这些segment已经毫无关系了。
Web database,也叫WebDB,其中存储的是爬虫所抓取网页之间的链接结构信息,它只在爬虫Crawler工作中使用而和Searcher的工作没有 任何关系。WebDB内存储了两种实体的信息:page和link。Page实体通过描述网络上一个网页的特征信息来表征一个实际的网页,因为网页有很多个需要描述,WebDB中通过网页的URL和网页内容的MD5两种索引方法对这些网页实体进行了索引。Page实体描述的网页特征主要包括网页内的link数目,抓取此网页的时间等相关抓取信息,对此网页的重要度评分等。同样的,Link实体描述的是两个page实体之间的链接关系。
工作步骤 :
在Nutch中,Crawler操作的实现是通过一系列子操作的实现来完成的。这些子操作Nutch都提供了子命令行可以单独进行调用。下面就是这些子操作的功能描述以及命令行,命令行在括号中。
1. 创建一个新的WebDb(admin db -create).
2. 将抓取起始URLs写入WebDB中 (inject).
3. 根据WebDB生成fetchlist并写入相应的segment(generate).
4. 根据fetchlist中的URL抓取网页 (fetch).
5. 根据抓取网页更新WebDb(updatedb).
6. 循环进行3-5步直至预先设定的抓取深度。
7. 根据WebDB得到的网页评分和links更新segments (updatesegs).
8. 对所抓取的网页进行索引(index).
9. 在索引中丢弃有重复内容的网页和重复的URLs (dedup).
10. 将segments中的索引进行合并生成用于检索的最终index(merge).
2009年,加州大学伯克利分校的研究人员开发了Apache Spark作为MapReduce的替代品。 由于Spark使用内存存储并行执行计算,因此可以比MapReduce快100倍。 Spark可以作为独立框架或Hadoop内部工作。
使用Hadoop,仍然需要一种存储和访问数据的方法。 这通常通过诸如MongoDB之类的NoSQL数据库(如CouchDB或Cassandra)完成,该数据库专门处理分布在多台计算机上的非结构化或半结构化数据。与在数据仓库中不同的是,大量数据和类型的数据融合成统一格式并存储在单个数据存储中,这些工具不会改变数据的底层性质或位置 – 电子邮件仍然是电子邮件,传感器数据仍然是 传感器数据 – 可以几乎存储在任何地方。
尽管如此,在使用多台机器的数据库中存储大量的数据并不是很好,直到你做了一些事情。 这就是大数据分析的原理。像Tableau,Splunk和Jasper BI这样的工具可以让您解析这些数据,以识别模式,提取意义并揭示新的见解。 你所做的事情会因你的需要而有所不同。
大数据开发高薪必备全套资源【免费获取】
Oracle高级技术总监多年精心创作一套完整课程体系【大数据、人工智能开发必看】,全面助力大数据开发零基础 入门 提升 项目=高薪!
领取方法:
还是那个万年不变的老规矩
1.评论文章,没字数限制,一个字都行!
2.成为小编成为的粉丝!
3.私信小编:“大数据开发教程”即可!
谢谢大家,祝大家学习愉快!(拿到教程后一定要好好学习,多练习哦!)
,