
分析大量资料只是使大资料与以前的资料分析不同的部分原因之一。让我们来从下面三个方面看看。
我们每天都在吃饭,睡觉,工作,玩耍,与此同时产生大量的资料。根据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.私信小编:“大资料开发教程”即可!
谢谢大家,祝大家学习愉快!(拿到教程后一定要好好学习,多练习哦!)





























