数据挖掘十大经典算法

国际权威的学术组织the IEEE International Conference on Data Mining (ICDM) 2006年12月评选出了数据挖掘领域的十大经典算法:C4.5, k-Means, SVM, Apriori, EM, PageRank, AdaBoost, kNN, Naive Bayes, and CART.不仅仅是选中的十大算法,其实参加评选的18种算法,实际上随便拿出一种来都可以称得上是经典算法,它们在数据挖掘领域都产生了极为深远的影响。

  • C4.5
    C4.5算法是机器学习算法中的一种分类决策树算法,其核心算法是ID3算法. C4.5算法继承了ID3算法的优点,并在以下几方面对ID3算法进行了改进:
    • 用信息增益率来选择属性,克服了用信息增益选择属性时偏向选择取值多的属性的不足
    • 在树构造过程中进行剪枝
    • 能够完成对连续属性的离散化处理
    • 能够对不完整数据进行处理
    C4.5算法有如下优点:产生的分类规则易于理解,准确率较高。其缺点是:在构造树的过程中,需要对数据集进行多次的顺序扫描和排序,因而导致算法的低效。
  • The k-means algorithm 即K-Means算法
    k-means algorithm算法是一个聚类算法,把n的对象根据他们的属性分为k个分割,k < n。它与处理混合正态分布的最大期望算法很相似,因为他们都试图找到数据中自然聚类的中心。它假设对象属性来自于空间向量,并且目标是使各个群组内部的均 方误差总和最小。
  • Support vector machines
    支持向量机,英文为Support Vector Machine,简称SV机(论文中一般简称SVM)。它是一种監督式學習的方法,它广泛的应用于统计分类以及回归分析中。支持向量机将向量映射到一个更 高维的空间里,在这个空间里建立有一个最大间隔超平面。在分开数据的超平面的两边建有两个互相平行的超平面。分隔超平面使两个平行超平面的距离最大化。假 定平行超平面间的距离或差距越大,分类器的总误差越小。一个极好的指南是C.J.C Burges的《模式识别支持向量机指南》。van der Walt 和 Barnard 将支持向量机和其他分类器进行了比较。
  • The Apriori algorithm
    Apriori算法是一种最有影响的挖掘布尔关联规则频繁项集的算法。其核心是基于两阶段频集思想的递推算法。该关联规则在分类上属于单维、单层、布尔关联规则。在这里,所有支持度大于最小支持度的项集称为频繁项集,简称频集。
  • 最大期望(EM)算法
    在统计计算中,最大期望(EM,Expectation–Maximization)算法是在概率(probabilistic)模型中寻找参数最大似然 估计的算法,其中概率模型依赖于无法观测的隐藏变量(Latent Variabl)。最大期望经常用在机器学习和计算机视觉的数据集聚(Data Clustering)领域。
  • PageRank
    PageRank是Google算法的重要内容。2001年9月被授予美国专利,专利人是Google创始人之一拉里•佩奇(Larry Page)。因此,PageRank里的page不是指网页,而是指佩奇,即这个等级方法是以佩奇来命名的。PageRank根据网站的外部链接和内部链接的数量和质量俩衡量网站的价值。PageRank背后的概念是,每个到页面的链接都是对该页面的一次投票, 被链接的越多,就意味着被其他网站投票越多。这个就是所谓的“链接流行度”——衡量多少人愿意将他们的网站和你的网站挂钩。PageRank这个概念引自 学术中一篇论文的被引述的频度——即被别人引述的次数越多,一般判断这篇论文的权威性就越高。
  • AdaBoost
    Adaboost是一种迭代算法,其核心思想是针对同一个训练集训练不同的分类器(弱分类器),然后把这些弱分类器集合起来,构成一个更强的最终分类器 (强分类器)。其算法本身是通过改变数据分布来实现的,它根据每次训练集之中每个样本的分类是否正确,以及上次的总体分类的准确率,来确定每个样本的权 值。将修改过权值的新数据集送给下层分类器进行训练,最后将每次训练得到的分类器最后融合起来,作为最后的决策分类器。
  • kNN: k-nearest neighbor classification
    K最近邻(k-Nearest Neighbor,KNN)分类算法,是一个理论上比较成熟的方法,也是最简单的机器学习算法之一。该方法的思路是:如果一个样本在特征空间中的k个最相似(即特征空间中最邻近)的样本中的大多数属于某一个类别,则该样本也属于这个类别。
  • Naive Bayes
    在众多的分类模型中,应用最为广泛的两种分类模型是决策树模型(Decision Tree Model)和朴素贝叶斯模型(Naive Bayesian Model,NBC)。 朴素贝叶斯模型发源于古典数学理论,有着坚实的数学基础,以 及稳定的分类效率。同时,NBC模型所需估计的参数很少,对缺失数据不太敏感,算法也比较简单。理论上,NBC模型与其他分类方法相比具有最小的误差率。 但是实际上并非总是如此,这是因为NBC模型假设属性之间相互独立,这个假设在实际应用中往往是不成立的,这给NBC模型的正确分类带来了一定影响。在属 性个数比较多或者属性之间相关性较大时,NBC模型的分类效率比不上决策树模型。而在属性相关性较小时,NBC模型的性能最为良好。
  • CART: 分类与回归树
    CART, Classification and Regression Trees。 在分类树下面有两个关键的思想。第一个是关于递归地划分自变量空间的想法;第二个想法是用验证数据进行剪枝。

透明计算

项目背景

湘雅医疗大数据项目,已经完成主要内容包括:校附属医院业务数据在线汇聚、数据标准化处理、专病数据项收集和专病业务需求整理、医院专病现有数据上传、开发医学数据透明采集系统、医院平台部署、医学数据透明采集系统上线使用等工作。

学校大数据中心具备了PB级数据存储能力、大数据快速检索和算法分析的计算能力、大数据机器学习能力,可全面服务于临床医疗、科研教学、专病分析、决策分析等领域。

目前大数据系统虽然已经实现数据采集汇总,但正面临需要逐步实现共享、利用、分析、挖掘的目标,从医生来讲,不仅可以查询数据,还可以通过学习和研究相应数据提高医疗水平,充分实现医院的精细管理,从研究人员来讲,可以获得无穷的样本,从而为科研提供关键的数据支撑。

目前,大数据的共享使用还在初步试点阶段,影响数据分享利用的主要原因之一,是大数据的使用过程中的安全性没有办法保证。

如何保证数据使用过程的安全可控,就其使用范围、用户权限、用户操作、数据流转进行控制管理,以防止核心信息非法授权阅览、拷贝、篡改;防止离院带走、误发送给不合适的人、被不合适的人员拿走、极少数人员恶意使用等问题,需要解决。

因此,提出建设基于透明计算的大数据安全共享、使用系统,以保证大数据的安全利用,将成为湘雅医疗大数据项目中的一个重要子项目。

项目目标

项目的最终目标是在使得大数据在指定范围内顺畅共享流动、使用,不影响正常工作效率的基础上,强有效的控制数据、信息资产的安全与防护。项目具体目标如下:

  • 确保医疗大数据、电子文档在受控范围内安全共享
  • 严格管理和控制内部以及外部数据、文件,要求数据可以做到多级权限管理,按权限使用数据,并有专用界面查看、操作、使用,但不能拷贝、导出、网络发送原始资料
  • 可进行数据记录的统计分析,分析结果可以拷贝,但原始记录不能拷贝。在对外合作时确保机密文件不被二次扩散
  • 防止内部员工或合作伙伴有意或无意的泄密,泄密事件的主动防御和事后审计
  • 保证内部各业务系统的正常业务工作,实现数据保护和业务应用无缝集成

方案概述

利用基于透明计算技术的透明计算终端和透明计算服务平台系统,管理控制大数据共享、使用、分析、挖掘过程,从底层操作系统层面、应用软件层面、数据文件层面三个层次,保证数据流动全程的安全可控。

系统总体架构

透明计算终端管理系统

透明计算被认为是云计算的更高级形式,透明计算的核心是将存储与运算分离、将软件与硬件(终端)分离,通过有缓存的“流”式运算,将计算还原为“不知不觉、用户可控”的个性化服务。

为了实现这一目标,透明计算通过网络把运算和存储分离,服务器存储操作系统、应用程序以及用户数据等软件资源,终端接近裸机,只存储最底层的BIOS和极少部分协议和管理程序。用户服务需要的操作系统和应用程序则通过分布式超级操作系统MetaOS从服务器中以块流的方式调度到终端上运行。

由于操作系统、应用程序以及用户数据都存储在服务器上,终端是一个近乎裸机的运行平台,因此,终端可以做到多样、轻载、安全、易管理和维护。

透明计算服务平台基于透明计算技术,负责统一管理透明终端,及透明终端中运行的应用和数据,包括实例操作系统管理服务、应用管理服务和用户数据安全管理服务等模块。

因此,透明计算系统可以提供底层安全的用户认证,以及根据用户权限提供对应的操作系统和应用软件环境,在操作系统及应用层面保证安全。

透明存储及数据加解密系统

结合透明数据存储子系统、透明数据加解密子系统,进行身份识别、权限控制、数据加密、终端数据管理、应用集成、安全接入以及行为审计等功能,最终实现每个数据文件“带不走、打不开、读不懂”的控制目标及效果。由于敏感数据均被加密,即使被非法泄露也无法读取到任何有价值内容,从而保证了对恶意行为的防护。这种实现手段对“有意”、“无意”以及复杂的数据结构均能起到很好的防护效果,通过对信息安全的源头进行控制,结合内容安全防护、应用系统整合以及业务流程支撑等手段,可满足医疗大数据用户的安全及管理需求。

数据安全网关

通过数据安全网关,所有从应用服务器流出的数据文件,都经过加密封装,以保障到达用户终端的数据全程安全可控。

Hadoop

我们先来看看大数据时代,什么叫大数据,“大”,说的并不仅是数据的“多”!不能用数据到了多少TB ,多少PB 来说。对于大数据,可以用四个词来表示:大量,多样,实时,不确定。也就是数据的量庞大,数据的种类繁杂多样话,数据的变化飞快,数据的真假存疑。

大量:

这个大家都知道,想百度,淘宝,腾讯,Facebook,Twitter等网站上的一些信息,这肯定算是大数据了,都要存储下来。

多样:

数据的多样性,是说数据可能是结构型的数据,也可能是非结构行的文本,图片,视频,语音,日志,邮件等。

实时:

大数据需要快速的,实时的进行处理。如果说对时间要求低,那弄几个机器,对小数据进行处理,等个十天半月的出来结果,这样也没有什么意义了。

不确定:

数据是存在真伪的,各种各样的数据,有的有用,有的没用。很难辨析。根据以上的特点,我们需要一个东西,来:

  • 存储大量数据
  • 快速的处理大量数据
  • 从大量数据中进行分析

于是就有了这样一个模型hadoop。hadoop的历史就不说了。先来看看模型。

这就相当于一个生态系统,或者可以看成一个操作系统XP,win7.HDFS和MapReduce为操作系统的核心,Hive,Pig,Mathout,Zookeeper,Flume,Sqoop,HBase等,都是操作系统上的一些软件,或应用。HDFS:(Hadoop Distributed File System),Hadoop分布式文件系统。从名字上就看出了它的两点功能。基本功能,存文件,是一个文件系统;另外这个文件系统是分布式的;

从图上来看,HDFS的简单原理。Rack1,Rack2,Rack3是三个机架;1,2,3,4,5,6,7,8,9,10,11,12 是机架上的十二台服务器。Block A, Block B, Block C为三个信息块,也就是要存的数据。从整体布局上来看,信息块被分配到机架上。看似很均匀。这样分配的目的,就是备份,防止某一个机器宕机后,单点故障的发生。MapReduce,(Map + Reduce),就看成是计算的功能。可以对数据进行处理。它加快了计算。主要也是通过上图的布局。将数据分布到多个服务器上。当有任务了,比如查询,或者比较大小,先让每台服务器,都处理自己的存储中文件。然后再将所有服务器的处理结果进行第二次处理。最后将结果返回。

Greenplum

Greenplum 数据库是最先进的分布式开源数据库技术,主要用来处理大规模的数据分析任务,包括数据仓库、商务智能(OLAP)和数据挖掘等。自2015年10月正式开源以来,受到国内外业内人士的广泛关注。本文就社区关心的Greenplum数据库技术架构进行介绍。

一. Greenplum数据库简介

大数据是个炙手可热的词,各行各业都在谈。一谈到大数据,好多人认为就是Hadoop。实际上Hadoop只是大数据若干处理方案中的一个。现在的SQL、NoSQL、NewSQL、Hadoop等等,都能在不同层面或不同应用上处理大数据的某些问题。而Greenplum数据库做为一个分布式大规模并行处理数据库,在大多数情况下,更适合做大数据的存储引擎、计算引擎和分析引擎。

Greenplum数据库也简称GPDB。它拥有丰富的特性:

第一,完善的标准支持:GPDB完全支持ANSI SQL 2008标准和SQL OLAP 2003 扩展;从应用编程接口上讲,它支持ODBC和JDBC。完善的标准支持使得系统开发、维护和管理都大为方便。而现在的 NoSQL,NewSQL和Hadoop 对 SQL 的支持都不完善,不同的系统需要单独开发和管理,且移植性不好。

第二,支持分布式事务,支持ACID。保证数据的强一致性。

第三,做为分布式数据库,拥有良好的线性扩展能力。在国内外用户生产环境中,具有上百个物理节点的GPDB集群都有很多案例。

第四,GPDB是企业级数据库产品,全球有上千个集群在不同客户的生产环境运行。这些集群为全球很多大的金融、政府、物流、零售等公司的关键业务提供服务。

第五,GPDB是Greenplum(现在的Pivotal)公司十多年研发投入的结果。GPDB基于PostgreSQL 8.2,PostgreSQL 8.2有大约80万行源代码,而GPDB现在有130万行源码。相比PostgreSQL 8.2,增加了约50万行的源代码。

第六,Greenplum有很多合作伙伴,GPDB有完善的生态系统,可以与很多企业级产品集成,譬如SAS,Cognos,Informatic,Tableau等;也可以很多种开源软件集成,譬如Pentaho,Talend 等。

二. Greenplum架构

2.1 平台架构图(1)是Greenplum数据库平台概括图。平台分为四个层次,我们依次从下往上看。

MPP核心架构GPDB是大规模无共享的处理架构,后面会专门介绍;先进的并行优化器是性能突出的关键之一。GPDB有两个优化器,一个是基于PostgreSQL planner的优化器;一个是全新开发的ORCA优化器。ORCA是Greenplum 5年以前启动的全新项目,这个优化器经过几年的开发和测试之后,最近已经成为GPDB企业版本的默认优化器。GPDB的存储引擎支持多态存储,一个表的数据可以根据访问模式的不同使用不同的存储方式。存储方式对用户透明,执行查询时,不用关心待访问的数据使用的存储模式,优化器会自动选择最佳查询计划。

布式数据库中,某些操作(例如跨节点关联)需要多个节点间进行数据交换。GPDB的并行数据库流引擎,可以根据数据的特点,例如分布方式、数据量等选择最合适的数据流操作符。目前GPDB支持两种数据流操作符:重分发(Redistribution)和广播(Broadcast)。重分发根据数据的哈希值重新分发到各个数据节点上,适用于数据量大的情况;广播则将数据发送给所有数据节点,适用于数据量较小的情况,例如维度表。软件交换机是GPDB的一个重要组件,软件交换机可以在各个数据节点间及与主节点间建立可靠的UDP数据通讯机制,是实现高效数据流的核心。Scatter/Gather 流引擎是专为并行数据加载和导出而设计,Scatter指数据通过并行加载服务器并行分散到各个数据节点,Gather指数据在 GPDB内部可以根据分布策略按需并行分发。

服务层GPDB支持多级容错机制和高可用:主节点(Master)高可用:为了避免主节点单点故障,可以设置一个主节点的副本(称为 Standby Master),他们之间通过流复制技术实现同步复制。当主节点发生故障时,从节点成为主节点,处理用户请求并协调查询执行。它们之间通过心跳检测故障。数据节点(Segment)高可用:每个数据节点都可以配备一个镜像,它们之间通过文件操作级别的同步实现数据的同步复制(称为filerep技术)。数据节点上建议使用RAID5磁盘,以进一步提高数据的高可用。故障检测进程(ftsprobe)定期发送心跳给各个数据节点。当某个节点发生故障时,GPDB会自动进行故障切换。网络高可用:为了避免网络的单点故障,每个主机配置多个网口,并使用多个交换机避免网络故障时造成整个服务不可用。在线扩展:数据量增大,现有集群不能满足需求时,可以对GPDB数据库进行动态扩展。扩展过程中,业务可以继续运行,不需要宕机。任务管理是指对资源的管理和使用情况的管理。产品特性数据加载在后面会专门介绍。

数据联邦是比较有意思的,最近“数据湖泊”这个词非常火热,数据湖泊的目的是不需再对数据像以前那样经过定制,生成特定的业务报表;而是保存原始数据,什么时候想分析就从原始数据上直接处理。GBDB可以实现数据湖泊(我们称之为数据联邦),它能访问和处理数据中心里面的所有数据,不管你的数据是在Hadoop、在文件系统上、还是在其他数据库中,Greenplum可以使用一个SQL在保证ACID的前提下访问所有数据。GPDB即支持行存,也支持列存。还为不需更新的数据存储和处理进行了专门的优化。支持多种压缩方法,包括QuickLZ,Zlib,RLE 等。支持多级分区表,分区支持多种模式,包括范围,列表等。支持B树、位图和GiST 等索引GPDB认证机制支持多种方式,包括LDAP和Kerberos等。通过访问控制列表(ACL),可以实现灵活的基于角色的安全控制。扩展语言支持:GPDB 支持使用多种流行语言实现用户自定义函数(UDF,类似于Oracle的存储过程),包括 Python,R,Java,Perl,C/C++ 等。地理信息处理:通过集成PostGIS,GPDB支持对地理信息进行存储和分析。内建数据挖掘算法库:通过MADLib(现在是Apache孵化项目)算法库,可以内建几十种常见的数据分析和挖掘算法到GPDB数据库中,包括逻辑回归,决策树,随机森林等。不需要写任何算法代码,通过SQL就可以使用其中的所有算法。文本检索:通过GPText扩展,GPDB可以支持高效灵活丰富的全文检索功能。与 MADLib 合用,可以进行并行文本分析和挖掘。

客户端访问和工具通过psql命令行工具可以访问GPDB数据库的所有功能,此外还提供了ODBC、JDBC、OLEDB、libpq等应用编程接口。数据库或者数据集群的管理工具非常重要,GPDB提供了图形化的管理工具GPCC(Greenplum Command Center),帮你管理状态,监控资源使用情况。Greenplum Workload Manager是刚刚发布的新产品,用以实现基于规则的资源管理。它支持自定义规则,当某个SQL满足规则描述的条件时会执行某些操作。比如你可以定义规则自动取消消耗CPU资源达50%以上的查询。

2.2 大规模并行处理(MPP)无共享架构MPP 是Greenplum数据库最突出的特色。现在很流行MPP这个词,我们可以看一下它是什么意思。下边图(2)中,主节点有两个,一个是主节点,一个是从主节点。通过软交换机制,也就是通过高速网络,主节点连到数据节点。每个数据节点有自己的CPU,自己的内存,自己的硬盘,他们唯一共享的就是网络。这也是称为无共享架构的原因。这种架构的好处是集群是分布式的环境,数据可以分布在很多节点上进行并行处理,可以做到线性扩展。

在分布式数据库中,性能好坏的最重要因素是数据分布是否均匀。如果数据分布不均匀,有的节点上数据非常多,有的节点数据很少,这样会出现短板效应,整个SQL的效率不会很好。Greenplum支持多种数据分布的策略,默认使用主键或者第一个字段进行哈希分布,还支持随机分布。除了横向上数据可以按节点分布之外,在某个节点上还可以对数据进行分区。分区的规则比较灵活,可以按照范围分区,也可以按照列表值分区,如图(3)。

2.3 并行查询计划和执行下面是个简单的SQL,如图(4),从两张表中找到2008年的销售数据。图中右边是这个SQL的查询计划。从生成的查询计划树中看到有三种不同的颜色,颜色相同表示做同一件事情,我们称之为分片/切片(Slice)。最下层的橙色切片中有一个重分发节点,这个节点将本节点的数据重新分发到其他节点上。中间绿色切片表示分布式数据关联(HashJoin)。最上面切片负责将各个数据节点收到的数据进行汇总。

然后看看这个查询计划的执行,如图(5)。主节点(Master)上的调度器(QD)会下发查询任务到每个数据节点,数据节点收到任务后(查询计划树),创建工作进程(QE)执行任务。如果需要跨节点数据交换(例如上面的HashJoin),则数据节点上会创建多个工作进程协调执行任务。不同节点上执行同一任务(查询计划中的切片)的进程组成一个团伙(Gang)。数据从下往上流动,最终Master返回给客户端。

2.4 多态存储上面介绍了GPDB的特点和SQL执行计划以及执行过程,那数据在每个节点上到底怎么样存储?Greenplum提供称为“多态存储”的灵活存储方式。多态存储可以根据数据热度或者访问模式的不同而使用不同的存储方式。一张表的不同数据可以使用不同的物理存储方式,如图(6)。支持的存储方式包含:行存储:行存储是传统数据库常用的存储方式,特点是访问比较快,多列更新比较容易。列存储:列存储按列保存,不同列的数据存储在不同的地方(通常是不同文件中)。适合一次只访问宽表中某几个字段的情况。列存储的另外一个优势是压缩比高。外部表:数据保存在其他系统中例如HDFS,数据库只保留元数据信息。

2.5 大规模并行数据加载作为一个数据库,一定会保存和处理数据。那数据来源于什么地方?Oracle这样的数据库里面的数据多是客户生成的,譬如你银行转账、淘宝订单等。对于数据分析型的数据库,其源数据通常是在其他系统中,而且数据量很大。这样数据加载的能力就变得非常重要。Greenplum提供了非常好的数据加载方案,支持高速的加载各种数据源的不同数据格式的数据,如图(7)。并行数据加载:因为是并行数据加载,所以性能非常好。Greenplum有叫DCA的一体机产品,第一代DCA可以做到10TB/小时;第二代为16TB/小时。第三代很快就要发布了,速度会更快。数据源和数据格式:数据源支持Hadoop,文件系统,数据库,还有 ETL管理的数据。数据格式支持文本,CSV,Parquet,Avro等。

三. Greenplum核心组件Greenplum 数据库包括以下核心组件:解析器:主节点收到客户端请求后,执行认证操作。认证成功建立连接后,客户端可以发送查询给数据库。解析器负责对收到的查询SQL字符串进行词法解析、语法解析,并生成语法树。优化器:优化器对解析器的结果进行处理,从所有可能的查询计划中选择一个最优或者接近最优的计划,生成查询计划。查询计划描述了如何执行一个查询,通常以树形结构描述。Greenplum最新的优化器叫 ORCA,关于 ORCA,可以从 ACM 论文中获得详细信息。(http://dl.acm.org/citation.cfm?id=2595637&dl=ACM&coll=DL&CFID=569750122&CFTOKEN=89888184)调度器(QD):调度器发送优化后的查询计划给所有数据节点(Segments)上的执行器(QE)。调度器负责任务的执行,包括执行器的创建、销毁、错误处理、任务取消、状态更新等。执行器(QE):执行器收到调度器发送的查询计划后,开始执行自己负责的那部分计划。典型的操作包括数据扫描、哈希关联、排序、聚集等。Interconnect:负责集群中各个节点间的数据传输。系统表:系统表存储和管理数据库、表、字段的元数据。每个节点上都有相应的拷贝。分布式事务:主节点上的分布式事务管理器协调数据节点上事务的提交和回滚操作,由两阶段提交(2PC)实现。每个数据节点都有自己的事务日志,负责自己节点上的事务处理。

四、Greenplum开源2015年3月份,Pivotal宣布了Greenplum的开源计划,经过6个月紧锣密鼓的工作,于10月27号正式开源。官方网站为http://greenplum.org。许可证书使用Apache 2许可证。Greenplum 开源社区提供了运行环境沙盒以及使用教程,里面包含了Greenplum数据库的一些主要特性。从https://github.com/greenplum-db/gpdb-sandbox-tutorials 可以下载沙盒和教程。有关Greenplum数据库使用和开发的任何问题都可以去邮件列表讨论:邮件列表有两个:gpdb-dev@greenplum.org 和gpdb-user@greenplum.org。源代码位于https://github.com/greenplum-db/gpdb,开源不到两个月就有1187个收藏,256个fork,超过150个pull request,其中136个pull request 已经关闭。贡献者中除了包含Pivotal的员工外,还有来自全球(包括中国、美国、日本和欧洲)的社区开发人员。关于从源代码编译和安装Greenplum数据库,可以参考:http://gpdb.rocks/gpdb/2015/10/29/how-to-build-gpdb.html

大数据软件盘点

大数据已然成为当今最热门的技术之一,正呈爆炸式增长。每天来自全球的新项目如雨后春笋般涌现。幸运地是,开源让越来越多的项目可以直接采用大数据技术,下面就来盘点最受欢迎的十大开源的大数据技术。

  • 1.Hadoop——高效、可靠、可伸缩,能够为你的数据存储项目提供所需的YARN、HDFS和基础架构,并且运行主要的大数据服务和应用程序。
  • 2.Spark——使用简单、支持所有重要的大数据语言(Scala、Python、Java、R)。拥有强大的生态系统,成长迅速,对microbatching/batching/SQL支持简单。Spark能更好地适用于数据挖掘与机器学习等需要迭代的MapReduce的算法。
  • 3.NiFi——Apache NiFi是由美国国家安全局(NSA)贡献给Apache基金会的开源项目,其设计目标是自动化系统间的数据流。基于其工作流式的编程理念,NiFi非常易于使用、强大、可靠、高可配置。两个最重要的特性是其强大的用户界面和良好的数据回溯工具。堪称大数据工具箱里的瑞士军刀。
  • 4.Apache Hive 2.1——Hive是建立在 Hadoop 上的数据仓库基础构架。它提供了一系列的工具,可以用来进行数据提取转化加载(ETL),这是一种可以存储、查询和分析存储在 Hadoop 中的大规模数据的机制。随着最新版本的发布,性能和功能都得到了全面提升,Hive已成为SQL在大数据上的最佳解决方案。
  • 5.Kafka——Kafka是一种高吞吐量的分布式发布订阅消息系统,它可以处理消费者规模网站中的所有动作流数据。它已成为大数据系统在异步和分布式消息之间的最佳选择。从Spark到NiFi再到第三方插件工具以至于Java到Scala,它都提供了强大的粘合作用。
  • 6.Phoenix—是HBase的SQL驱动。目前大量的公司采用它,并扩大其规模。HDFS支持的NoSQL能够很好地集成所有工具。Phoenix查询引擎会将SQL查询转换为一个或多个HBase scan,并编排执行以生成标准的JDBC结果集。
  • 7.Zeppelin——Zeppelin 是一个提供交互数据分析且基于Web的笔记本。方便你做出可数据驱动的、可交互且可协作的精美文档,并且支持多种语言,包括 Scala(使用 Apache Spark)、Python(Apache Spark)、SparkSQL、 Hive、 Markdown、Shell等。
  • 8.Sparkling Water——H2O填补了Spark’s Machine Learning的缺口,它可以满足你所有的机器学习。
  • 9.Apache Beam——在Java中提供统一的数据进程管道开发,并且能够很好地支持Spark和Flink。提供很多在线框架,开发者无需学习太多框架。
  • 10.Stanford CoreNLP——自然语言处理拥有巨大的增长空间,斯坦福正在努力增进他们的框架。