大数据处理和分析的新方法
存在多种方法处理和分析大数据,但多数都有一些共同的特点。即他们利用硬件的优势,使用扩展的、并行的处理技术,采用非关系型数据存储处理非结构化和半结构化数据,并对大数据运用高级分析和数据可视化技术,向终端用户传达见解。
Wikibon已经确定了三种将会改变业务分析和数据管理市场的大数据方法。
Hadoop是一个处理、存储和分析海量的分布式、非结构化数据的开源框架。最初由雅虎的Doug Cutting创建,Hadoop的灵感来自于 MapReduce ,MapReduce是谷歌在2000年代初期开发的用于网页索引的用户定义函数。它被设计用来处理分布在多个并行节点的PB级和EB级数据。
Hadoop集群运行在廉价的商用硬件上,这样硬件扩展就不存在资金压力。Hadoop现在是Apache软件联盟(The Apache Software Foundation)的一个项目,数百名贡献者不断改进其核心技术。基本概念:与将海量数据限定在一台机器运行的方式不同,Hadoop将大数据分成多个部分,这样每个部分都可以被同时处理和分析。
Hadoop如何工作
客户从日志文件、社交媒体供稿和内部数据存储等来源获得非结构化和半结构化数据。它将数据打碎成“部分”,这些“部分”被载入到商用硬件的多个节点组成的文件系统。Hadoop的默认文件存储系统是Hadoop分布式文件系统。文件系统(如HDFS)善于存储大量非结构化和半结构化数据,因为它们不需要将数据组织成关系型的行和列。
各“部分”被复制多次,并加载到文件系统。这样,如果一个节点失效,另一个节点包含失效节点数据的副本。名称节点充当调解人,负责沟通信息:如哪些节点是可用的,某些数据存储在集群的什么地方,以及哪些节点失效。
一旦数据被加载到集群中,它就准备好通过MapReduce 框架进行分析。客户提交一个“匹配”的任务( 通常是用Java编写的查询语句)给到一个被称为作业跟踪器的节点。该作业跟踪器引用名称节点,以确定完成工作需要访问哪些数据,以及所需的数据在集群的存储位置。一旦确定,作业跟踪器向相关节点提交查询。每个节点同时、并行处理,而非将所有数据集中到一个位置处理。这是Hadoop的一个本质特征。
当每个节点处理完指定的作业,它会存储结果。客户通过任务追踪器启动“Reduce”任务。汇总map阶段存储在各个节点上的结果数据,获得原始查询的“答案”,然后将“答案”加载到集群的另一个节点中。客户就可以访问这些可以载入多种分析环境进行分析的结果了。MapReduce 的工作就完成了。
一旦MapReduce 阶段完成,数据科学家和其他人就可以使用高级数据分析技巧对处理后的数据进一步分析。也可以对这些数据建模,将数据从Hadoop集群转移到现有的关系型数据库、数据仓库等传统IT系统进行进一步的分析。
Hadoop的技术组件
Hadoop “栈”由多个组件组成。包括:
· Hadoop分布式文件系统(HDFS):所有Hadoop集群的默认存储层;
· 名称节点:在Hadoop集群中,提供数据存储位置以及节点失效信息的节点。
· 二级节点:名称节点的备份,它会定期复制和存储名称节点的数据,以防名称节点失效。
· 作业跟踪器:Hadoop集群中发起和协调MapReduce作业或数据处理任务的节点。
· 从节点:Hadoop集群的普通节点,从节点存储数据并且从作业跟踪器那里获取数据处理指令。
除了上述以外,Hadoop生态系统还包括许多免费子项目。NoSQL数据存储系统(如Cassandra和HBase)也被用于存储Hadoop的MapReduce作业结果。除了Java,很多 MapReduce 作业及其他Hadoop的功能都是用Pig语言写的,Pig是专门针对Hadoop设计的开源语言。Hive最初是由Facebook开发的开源数据仓库,可以在Hadoop中建立分析模型。
请参阅文章:Hadoop组件和子项目指导手册:HBase,Sqoop,Flume等:Apache Hadoop定义(http://wikibon.org/wiki/v/HBase,_Sqoop,_Flume_and_More:_Apache_Hadoop_Defined)
Hadoop:优点和缺点
Hadoop的主要好处是,它可以让企业以节省成本并高效的方式处理和分析大量的非结构化和半结构化数据,而这类数据迄今还没有其他处理方式。因为Hadoop集群可以扩展到PB级甚至EB级数据,企业不再必须依赖于样本数据集,而可以处理和分析所有相关数据。数据科学家可以采用迭代的方法进行分析,不断改进和测试查询语句,从而发现以前未知的见解。使用Hadoop的成本也很廉价。开发者可以免费下载Apache的Hadoop 分布式平台,并且在不到一天的时间内开始体验Hadoop。
Hadoop及其无数组件的不足之处是,他们还不成熟,仍处于发展阶段。就像所有新的、原始的技术一样,实施和管理Hadoop集群,对大量非结构化数据进行高级分析,都需要大量的专业知识、技能和培训。不幸的是,目前Hadoop开发者和数据科学家的缺乏,使得众多企业维持复杂的Hadoop集群并利用其优势变得很不现实。此外,由于Hadoop的众多组件都是通过技术社区得到改善,并且新的组件不断被创建,因此作为不成熟的开源技术,也存在失败的风险。最后,Hadoop是一个面向批处理的框架,这意味着它不支持实时的数据处理和分析。
好消息是,一些聪明的IT人士不断对Apache Hadoop项目做出贡献,新一代的Hadoop开发者和数据科学家们正在走向成熟。因此,该技术的发展日新月异,逐渐变得更加强大而且更易于实施和管理。供应商(包括Hadoop的初创企业Cloudera和Hortonworks)以及成熟的IT中坚企业(如IBM和微软)正在努力开发企业可用的商业Hadoop分布式平台、工具和服务,让部署和管理这项技术成为传统企业可用的实际现实。其他初创企业正在努力完善NoSQL(不仅仅是SQL)数据系统,结合Hadoop提供近实时的分析解决方案。
NoSQL
一种称为NoSQL的新形式的数据库(Not Only SQL)已经出现,像Hadoop一样,可以处理大量的多结构化数据。但是,如果说Hadoop擅长支持大规模、批量式的历史分析,在大多数情况下(虽然也有一些例外),NoSQL 数据库的目的是为最终用户和自动化的大数据应用程序提供大量存储在多结构化数据中的离散数据。这种能力是关系型数据库欠缺的,它根本无法在大数据规模维持基本的性能水平。
在某些情况下,NoSQL和Hadoop协同工作。例如,HBase是流行的NoSQL数据库,它仿照谷歌的BigTable,通常部署在HDFS(Hadoop分布式文件系统)之上,为Hadoop提供低延迟的快速查找功能。
目前可用的NoSQL数据库包括:
· HBase
· Cassandra
· MarkLogic
· Aerospike
· MongoDB
· Accumulo
· Riak
· CouchDB
· DynamoDB
目前大多数NoSQL数据库的缺点是,为了性能和可扩展性,他们遵从ACID(原子性,一致性,隔离性,持久性)原则。许多NoSQL数据库还缺乏成熟的管理和监控工具。这些缺点在开源的NoSQL社区和少数厂商的努力下都在克服过程中,这些厂商包括DataStax,Sqrrl,10gen,Aerospike和Couchbase,他们正在尝试商业化各种NoSQL数据库。
大规模并行分析数据库
不同于传统的数据仓库,大规模并行分析数据库能够以必需的最小的数据建模,快速获取大量的结构化数据,可以向外扩展以容纳TB甚至PB级数据。
对最终用户而言最重要的是,大规模并行分析数据库支持近乎实时的复杂SQL查询结果,也叫交互式查询功能 ,而这正是Hadoop显著缺失的能力。大规模并行分析数据库在某些情况下支持近实时的大数据应用。大规模并行分析数据库的基本特性包括:
大规模并行处理的能力: 就像其名字表明的一样,大规模并行分析数据库采用大规模并行处理同时支持多台机器上的数据采集、处理和查询。相对传统的数据仓库具有更快的性能,传统数据仓库运行在单一机器上,会受到数据采集这个单一瓶颈点的限制。
无共享架构: 无共享架构可确保分析数据库环境中没有单点故障。在这种架构下,每个节点独立于其他节点,所以如果一台机器出现故障,其他机器可以继续运行。对大规模并行处理环境而言,这点尤其重要,数百台计算机并行处理数据,偶尔出现一台或多台机器失败是不可避免的。
列存储结构: 大多数大规模并行分析数据库采用列存储结构,而大多数关系型数据库以行结构存储和处理数据。在列存储环境中,由包含必要数据的列决定查询语句的“答案”,而不是由整行的数据决定,从而导致查询结果瞬间可以得出。这也意味着数据不需要像传统的关系数据库那样构造成整齐的表格。
强大的数据压缩功能: 它们允许分析数据库收集和存储更大量的数据,而且与传统数据库相比占用更少的硬件资源。例如,具有10比1的压缩功能的数据库,可以将10 TB字节的数据压缩到1 TB。数据编码(包括数据压缩以及相关的技术)是有效的扩展到海量数据的关键。
商用硬件: 像Hadoop集群一样,大多数(肯定不是全部)大规模并行分析数据库运行在戴尔、IBM等厂商现成的商用硬件上,这使他们能够以具有成本效益的方式向外扩展。
在内存中进行数据处理: 有些(肯定不是全部)大规模并行分析数据库使用动态RAM或闪存进行实时数据处理。有些(如SAP HANA和 Aerospike)完全在内存中运行数据,而其他则采用混合的方式,即用较便宜但低性能的磁盘内存处理“冷”数据,用动态RAM或闪存处理“热”数据。
然而,大规模并行分析数据库确实有一些盲点。最值得注意的是,他们并非被设计用来存储、处理和分析大量的半结构化和非结构化数据。