1、数据分析师不可不知的10大基础实用算法及其讲解 算法一:快速排序算法 快速排序是由东尼·霍尔所发展的一种排序算法。在平均状况下,排序n个项目要Ο(nlogn)次比较。在最坏状况下则需要Ο(n2)次比较,但这种状况并不常见。事实上,快速排序通常明显比其他Ο(nlogn)算法更快,因为它的内部循环(innerloop)可以在大部分的架构上很有效率地被实现出来。 快速排序使用分治法(Divideandconquer)策略来把一个串行(list)分为两个子串行(sub-lists)。 算法步骤: 1从数列中挑出一个元素,称为“基准”(pivot), 2重新排序数列,所有元素比基
2、准值小的摆放在基准前面,所有元素比基准值大的摆在基准的后面(相同的数可以到任一边)。在这个分区退出之后,该基准就处于数列的中间位置。这个称为分区(partition)操作。 3递归地(recursive)把小于基准值元素的子数列和大于基准值元素的子数列排序。 递归的最底部情形,是数列的大小是零或一,也就是永远都已经被排序好了。虽然一直递归下去,但是这个算法总会退出,因为在每次的迭代(iteration)中,它至少会把一个元素摆到它最后的位置去。 详细介绍:快速排序 算法二:堆排序算法 堆排序(Heapsort)是指利用堆这种数据结构所设计的一种排序算法。堆积是一个近似完
3、全二叉树的结构,并同时满足堆积的性质:即子结点的键值或索引总是小于(或者大于)它的父节点。 堆排序的平均时间复杂度为Ο(nlogn) 。 算法步骤: 创建一个堆H[0..n-1] 把堆首(最大值)和堆尾互换 把堆的尺寸缩小1,并调用shift_down(0),目的是把新的数组顶端数据调整到相应位置 重复步骤2,直到堆的尺寸为1 详细介绍:堆排序 算法三:归并排序 归并排序(Mergesort,台湾译作:合并排序)是建立在归并操作上的一种有效的排序算法。该算法是采用分治法(DivideandConquer)的一个非常典型的应用。 算法步骤: 1.申
4、请空间,使其大小为两个已经排序序列之和,该空间用来存放合并后的序列 2.设定两个指针,最初位置分别为两个已经排序序列的起始位置 3.比较两个指针所指向的元素,选择相对小的元素放入到合并空间,并移动指针到下一位置 4.重复步骤3直到某一指针达到序列尾 5.将另一序列剩下的所有元素直接复制到合并序列尾 详细介绍:归并排序 算法四:二分查找算法 二分查找算法是一种在有序数组中查找某一特定元素的搜索算法。搜素过程从数组的中间元素开始,如果中间元素正好是要查找的元素,则搜素过程结束;如果某一特定元素大于或者小于中间元素,则在数组大于或小于中间元素的那一半中查找,而且跟开始
5、一样从中间元素开始比较。如果在某一步骤数组为空,则代表找不到。这种搜索算法每一次比较都使搜索范围缩小一半。折半搜索每次把搜索区域减少一半,时间复杂度为Ο(logn) 。 详细介绍:二分查找算法 算法五:BFPRT(线性查找算法) BFPRT算法解决的问题十分经典,即从某n个元素的序列中选出第k大(第k小)的元素,通过巧妙的分析,BFPRT可以保证在最坏情况下仍为线性时间复杂度。该算法的思想与快速排序思想相似,当然,为使得算法在最坏情况下,依然能达到o(n)的时间复杂度,五位算法作者做了精妙的处理。 算法步骤: 1.将n个元素每5个一组,分成n/5(上界)组。 2.取出每
6、一组的中位数,任意排序方法,比如插入排序。
3.递归的调用selection算法查找上一步中所有中位数的中位数,设为x,偶数个中位数的情况下设定为选取中间小的一个。
4.用x来分割数组,设小于等于x的个数为k,大于x的个数即为n-k。
5.若i==k,返回x;若i
7、能深的搜索树的分支。当节点v的所有边都己被探寻过,搜索将回溯到发现节点v的那条边的起始节点。这一过程一直进行到已发现从源节点可达的所有节点为止。如果还存在未被发现的节点,则选择其中一个作为源节点并重复以上过程,整个进程反复进行直到所有节点都被访问为止。DFS属于盲目搜索。 深度优先搜索是图论中的经典算法,利用深度优先搜索算法可以产生目标图的相应拓扑排序表,利用拓扑排序表可以方便的解决很多相关的图论问题,如最大路径问题等等。一般用堆数据结构来辅助实现DFS算法。 深度优先遍历图算法步骤: 1.访问顶点v; 2.依次从v的未被访问的邻接点出发,对图进行深度优先遍历;直至图中和v有路
8、径相通的顶点都被访问; 3.若此时图中尚有顶点未被访问,则从一个未被访问的顶点出发,重新进行深度优先遍历,直到图中所有顶点均被访问过为止。 上述描述可能比较抽象,举个实例: DFS在访问图中某一起始顶点v后,由v出发,访问它的任一邻接顶点w1;再从w1出发,访问与w1邻接但还没有访问过的顶点w2;然后再从w2出发,进行类似的访问,…如此进行下去,直至到达所有的邻接顶点都被访问过的顶点u为止。 接着,退回一步,退到前一次刚访问过的顶点,看是否还有其它没有被访问的邻接顶点。如果有,则访问此顶点,之后再从此顶点出发,进行与前述类似的访问;如果没有,就再退回一步进行搜索。重复上述过程,
9、直到连通图中所有顶点都被访问过为止。 详细介绍:深度优先搜索 算法七:BFS(广度优先搜索) 广度优先搜索算法(Breadth-First-Search),是一种图形搜索算法。简单的说,BFS是从根节点开始,沿着树(图)的宽度遍历树(图)的节点。如果所有节点均被访问,则算法中止。BFS同样属于盲目搜索。一般用队列数据结构来辅助实现BFS算法。 算法步骤: 1.首先将根节点放入队列中。 2.从队列中取出第一个节点,并检验它是否为目标。 如果找到目标,则结束搜寻并回传结果。 否则将它所有尚未检验过的直接子节点加入队列中。 3.若队列为空,表示整张图都检查过了——
10、亦即图中没有欲搜寻的目标。结束搜寻并回传“找不到目标”。 4.重复步骤2。 详细介绍:广度优先搜索 算法八:Dijkstra算法 戴克斯特拉算法(Dijkstra’salgorithm)是由荷兰计算机科学家艾兹赫尔·戴克斯特拉提出。迪科斯彻算法使用了广度优先搜索解决非负权有向图的单源最短路径问题,算法最终得到一个最短路径树。该算法常用于路由算法或者作为其他图算法的一个子模块。 该算法的输入包含了一个有权重的有向图G,以及G中的一个来源顶点S。我们以V表示G中所有顶点的集合。每一个图中的边,都是两个顶点所形成的有序元素对。(u,v)表示从顶点u到v有路径相连。我们以E表示
11、G中所有边的集合,而边的权重则由权重函数w:E→[0,∞]定义。因此,w(u,v)就是从顶点u到顶点v的非负权重(weight)。边的权重可以想像成两个顶点之间的距离。任两点间路径的权重,就是该路径上所有边的权重总和。已知有V中有顶点s及t,Dijkstra算法可以找到s到t的最低权重路径(例如,最短路径)。这个算法也可以在一个图中,找到从一个顶点s到任何其他顶点的最短路径。对于不含负权的有向图,Dijkstra算法是目前已知的最快的单源最短路径算法。
算法步骤:
1.初始时令S={V0},T={其余顶点},T中顶点对应的距离值
若存在 12、>弧上的权值
若不存在 13、
动态规划背后的基本思想非常简单。大致上,若要解一个给定问题,我们需要解其不同部分(即子问题),再合并子问题的解以得出原问题的解。通常许多子问题非常相似,为此动态规划法试图仅仅解决每个子问题一次,从而减少计算量:一旦某个给定子问题的解已经算出,则将其记忆化存储,以便下次需要同一个子问题解之时直接查表。这种做法在重复子问题的数目关于输入的规模呈指数增长时特别有用。
关于动态规划最经典的问题当属背包问题。
算法步骤:
1.最优子结构性质。如果问题的最优解所包含的子问题的解也是最优的,我们就称该问题具有最优子结构性质(即满足最优化原理)。最优子结构性质为动态规划算法解决问题提供了重 14、要线索。
2.子问题重叠性质。子问题重叠性质是指在用递归算法自顶向下对问题进行求解时,每次产生的子问题并不总是新问题,有些子问题会被重复计算多次。动态规划算法正是利用了这种子问题的重叠性质,对每一个子问题只计算一次,然后将其计算结果保存在一个表格中,当再次需要计算已经计算过的子问题时,只是在表格中简单地查看一下结果,从而获得较高的效率。
详细参考:
从全球导航到输入法:谈谈动态规划
动态规划
算法十:朴素贝叶斯分类算法
朴素贝叶斯分类算法是一种基于贝叶斯定理的简单概率分类算法。贝叶斯分类的基础是概率推理,就是在各种条件的存在不确定,仅知其出现概率的情况下,如何完成推理和 15、决策任务。概率推理是与确定性推理相对应的。而朴素贝叶斯分类器是基于独立假设的,即假设样本每个特征与其他特征都不相关。
朴素贝叶斯分类器依靠精确的自然概率模型,在有监督学习的样本集中能获取得非常好的分类效果。在许多实际应用中,朴素贝叶斯模型参数估计使用最大似然估计方法,换言之朴素贝叶斯模型能工作并没有用到贝叶斯概率或者任何贝叶斯模型。
尽管是带着这些朴素思想和过于简单化的假设,但朴素贝叶斯分类器在很多复杂的现实情形中仍能够取得相当好的效果。
最全大数据学习资源整理
2016年05月17日
专业知识, 大数据
关系数据库管理系统(RDBMS)
MySQL:世界最流行 16、的开源数据库;
PostgreSQL:世界最先进的开源数据库;
Oracle 数据库:对象-关系型数据库管理系统。
框架
Apache Hadoop:分布式处理架构,结合了 MapReduce(并行处理)、YARN(作业调度)和HDFS(分布式文件系统);
Tigon:高吞吐量实时流处理框架。
分布式编程
AddThis Hydra :最初在AddThis上开发的分布式数据处理和存储系统;
AMPLab SIMR:用在Hadoop MapReduce v1上运行Spark;
Apache Beam:为统一的模型以及一套用于定义和执行数据处理工作流的特定SDK语言;
Apac 17、he Crunch:一个简单的Java API,用于执行在普通的MapReduce实现时比较单调的连接、数据聚合等任务;
Apache DataFu:由LinkedIn开发的针对Hadoop and 和Pig的用户定义的函数集合;
Apache Flink:具有高性能的执行时间和自动程序优化;
Apache Gora:内存中的数据模型和持久性框架;
Apache Hama:BSP(整体同步并行)计算框架;
Apache MapReduce :在集群上使用并行、分布式算法处理大数据集的编程模型;
Apache Pig :Hadoop中,用于处理数据分析程序的高级查询语言;
Apac 18、he REEF :用来简化和统一低层大数据系统的保留性评估执行框架;
Apache S4 :S4中流处理与实现的框架;
Apache Spark :内存集群计算框架;
Apache Spark Streaming :流处理框架,同时是Spark的一部分;
Apache Storm :Twitter流处理框架,也可用于YARN;
Apache Samza :基于Kafka和YARN的流处理框架;
Apache Tez :基于YARN,用于执行任务中的复杂DAG(有向无环图);
Apache Twill :基于YARN的抽象概念,用于减少开发分布式应用程序的复杂度;
Cascalo 19、g:数据处理和查询库;
Cheetah :在MapReduce之上的高性能、自定义数据仓库;
Concurrent Cascading :在Hadoop上的数据管理/分析框架;
Damballa Parkour :用于Clojure的MapReduce库;
Datasalt Pangool :可选择的MapReduce范例;
DataTorrent StrAM :为实时引擎,用于以尽可能畅通的方式、最小的开支和对性能最小的影响,实现分布式、异步、实时的内存大数据计算;
Facebook Corona :为Hadoop做优化处理,从而消除单点故障;
Facebook Peregri 20、ne :MapReduce框架;
Facebook Scuba :分布式内存数据存储;
Google Dataflow :创建数据管道,以帮助其分析框架;
Netflix PigPen :为MapReduce,用于编译成Apache Pig;
Nokia Disco :由Nokia开发的MapReduc获取、转换和分析数据;
Google MapReduce :MapReduce框架;
Google MillWheel :容错流处理框架;
JAQL :用于处理结构化、半结构化和非结构化数据工作的声明性编程语言;
Kite :为一组库、工具、实例和文档集,用于使在Hadoop的生 21、态系统上建立系统更加容易;
Metamarkets Druid :用于大数据集的实时e框架;
Onyx :分布式云计算;
Pinterest Pinlater :异步任务执行系统;
Pydoop :用于Hadoop的Python MapReduce和HDFS API;
Rackerlabs Blueflood :多租户分布式测度处理系统;
Stratosphere :通用集群计算框架;
Streamdrill :用于计算基于不同时间窗口的事件流的活动,并找到最活跃的一个;
Tuktu :易于使用的用于分批处理和流计算的平台,通过Scala、 Akka和Play所建;
Twit 22、ter Scalding:基于Cascading,用于Map Reduce工作的Scala库;
Twitter Summingbird :在Twitter上使用Scalding和Storm串流MapReduce;
Twitter TSAR :Twitter上的时间序列聚合器。
分布式文件系统
Apache HDFS:在多台机器上存储大型文件的方式;
BeeGFS:以前是FhGFS,并行分布式文件系统;
Ceph Filesystem:设计的软件存储平台;
Disco DDFS:分布式文件系统;
Facebook Haystack:对象存储系统;
Google Colossus 23、分布式文件系统(GFS2);
Google GFS:分布式文件系统;
Google Megastore:可扩展的、高度可用的存储;
GridGain:兼容GGFS、Hadoop内存的文件系统;
Lustre file system:高性能分布式文件系统;
Quantcast File System QFS:开源分布式文件系统;
Red Hat GlusterFS:向外扩展的附网存储(Network-attached Storage)文件系统;
Seaweed-FS:简单的、高度可扩展的分布式文件系统;
Alluxio:以可靠的存储速率在跨集群框架上文件共享;
Tahoe-L 24、AFS:分布式云存储系统;
文件数据模型
Actian Versant:商用的面向对象数据库管理系统;
Crate Data:是一个开源的大规模可扩展的数据存储,需要零管理模式;
Facebook Apollo:Facebook的Paxos算法,类似于NoSQL数据库;
jumboDB:基于Hadoop的面向文档的数据存储;
LinkedIn Espresso:可横向扩展的面向文档的NoSQL数据存储;
MarkLogic:模式不可知的企业版NoSQL数据库技术;
MongoDB:面向文档的数据库系统;
RavenDB:一个事务性的,开源文档数据库;
RethinkDB:支 25、持连接查询和群组依据等查询的文档型数据库。
Key Map 数据模型
注意:业内存在一些术语混乱,有两个不同的东西都叫做“列式数据库”。这里列出的有一些是围绕“key-map”数据模型而建的分布式、持续型数据库,其中所有的数据都有(可能综合了)键,并与映射中的键-值对相关联。在一些系统中,多个这样的值映射可以与键相关联,并且这些映射被称为“列族”(具有映射值的键被称为“列”)。
另一组也可称为“列式数据库”的技术因其存储数据的方式而有别于前一组,它在磁盘上或在存储器中——而不是以传统方式,即所有既定键的键值都相邻着、逐行存储。这些系统也彼此相邻来存储所有列值,但是要得到给定列的所有值却不 26、需要以前那么繁复的工作。
前一组在这里被称为“key map数据模型”,这两者和Key-value 数据模型之间的界限是相当模糊的。后者对数据模型有更多的存储格式,可在列式数据库中列出。若想了解更多关于这两种模型的区分,可阅读Daniel Abadi的博客:Distinguishing two major types of Column Stores。
Apache Accumulo:内置在Hadoop上的分布式键/值存储;
Apache Cassandra:由BigTable授权,面向列的分布式数据存储;
Apache HBase:由BigTable授权,面向列的分布式数据存储;
27、Facebook HydraBase:Facebook所开发的HBase的衍化品;
Google BigTable:面向列的分布式数据存储;
Google Cloud Datastore:为完全管理型的无模式数据库,用于存储在BigTable上非关系型数据;
Hypertable:由BigTable授权,面向列的分布式数据存储;
InfiniDB:通过MySQL的接口访问,并使用大规模并行处理进行并行查询;
Tephra:用于HBase处理;
Twitter Manhattan:Twitter的实时、多租户分布式数据库。
键-值数据模型
Aerospike:支持NoSQL的闪存 28、优化,数据存储在内存。开源,“’C'(不是Java或Erlang)中的服务器代码可精确地调整从而避免上下文切换和内存拷贝”。
Amazon DynamoDB:分布式键/值存储,Dynamo论文的实现;
Edis:为替代Redis的协议兼容的服务器;
ElephantDB:专门研究Hadoop中数据导出的分布式数据库;
EventStore:分布式时间序列数据库;
GridDB:适用于存储在时间序列中的传感器数据;
LinkedIn Krati:简单的持久性数据存储,拥有低延迟和高吞吐量;
Linkedin Voldemort:分布式键/值存储系统;
Oracle NoSQL D 29、atabase:Oracle公司开发的分布式键值数据库;
Redis:内存中的键值数据存储;
Riak:分散式数据存储;
Storehaus:Twitter开发的异步键值存储的库;
Tarantool:一个高效的NoSQL数据库和Lua应用服务器;
TiKV:由Google Spanner和HBase授权,Rust提供技术支持的分布式键值数据库;
TreodeDB:可复制、共享的键-值存储,能提供多行原子写入。
图形数据模型
Apache Giraph:基于Hadoop的Pregel实现;
Apache Spark Bagel:可实现Pregel,为Spark的一部分;
A 30、rangoDB:多层模型分布式数据库;
DGraph:一个可扩展的、分布式、低时延、高吞吐量的图形数据库,旨在为Google生产水平规模和吞吐量提供足够的低延迟,用于TB级的结构化数据的实时用户查询;
Facebook TAO:TAO是facebook广泛用来存储和服务于社交图形的分布式数据存储;
GCHQ Gaffer:GCHQ中的Gaffer是一个易于存储大规模图形的框架,其中节点和边缘都有统计数据;
Google Cayley:开源图形数据库;
Google Pregel :图形处理框架;
GraphLab PowerGraph:核心C ++ GraphLab API和建立在 31、GraphLab API之上的高性能机器学习和数据挖掘工具包的集合;
GraphX:Spark中的弹性分布式图形系统;
Gremlin:图形追踪语言;
Infovore:以RDF为中心的Map / Reduce框架;
Intel GraphBuilder:在Hadoop上构建大规模图形的工具;
MapGraph:用于在GPU上大规模并行图形处理;
Neo4j:完全用Java写入的图形数据库;
OrientDB:文档和图形数据库;
Phoebus:大型图形处理框架;
Titan:建于Cassandra的分布式图形数据库;
Twitter FlockDB:分布式图形数据库。
32、NewSQL数据库
Actian Ingres:由商业支持,开源的SQL关系数据库管理系统;
Amazon RedShift:基于PostgreSQL的数据仓库服务;
BayesDB:面向统计数值的SQL数据库;
CitusDB:通过分区和复制横向扩展PostgreSQL;
Cockroach:可扩展、地址可复制、交易型的数据库;
Datomic:旨在产生可扩展、灵活的智能应用的分布式数据库;
FoundationDB:由F1授意的分布式数据库;
Google F1:建立在Spanner上的分布式SQL数据库;
Google Spanner:全球性的分布式半关系型数据库;
33、H-Store:是一个实验性主存并行数据库管理系统,用于联机事务处理(OLTP)应用的优化;
Haeinsa:基于Percolator,HBase的线性可扩展多行多表交易库;
HandlerSocket:MySQL/MariaDB的NoSQL插件;
InfiniSQL:无限可扩展的RDBMS;
MemSQL:内存中的SQL数据库,其中有优化的闪存列存储;
NuoDB:SQL / ACID兼容的分布式数据库;
Oracle TimesTen in-Memory Database:内存中具有持久性和可恢复性的关系型数据库管理系统;
Pivotal GemFire XD:内存中低延时的 34、分布式SQL数据存储,可为内存列表数据提供SQL接口,在HDFS中较持久化;
SAP HANA:是在内存中面向列的关系型数据库管理系统;
SenseiDB:分布式实时半结构化的数据库;
Sky:用于行为数据的灵活、高性能分析的数据库;
SymmetricDS:用于文件和数据库同步的开源软件;
Map-D:为GPU内存数据库,也为大数据分析和可视化平台;
TiDB:TiDB是分布式SQL数据库,基于谷歌F1的设计灵感;
VoltDB:自称为最快的内存数据库。
列式数据库
注意:请在键-值数据模型 阅读相关注释。
Columnar Storage:解释什么是列存储以及何时会需要 35、用到它;
Actian Vector:面向列的分析型数据库;
C-Store:面向列的DBMS;
MonetDB:列存储数据库;
Parquet:Hadoop的列存储格式;
Pivotal Greenplum:专门设计的、专用的分析数据仓库,类似于传统的基于行的工具,提供了一个列式工具;
Vertica:用来管理大规模、快速增长的大量数据,当用于数据仓库时,能够提供非常快的查询性能;
Google BigQuery :谷歌的云产品,由其在Dremel的创始工作提供支持;
Amazon Redshift :亚马逊的云产品,它也是基于柱状数据存储后端。
时间序列数据库
Cube 36、使用MongoDB来存储时间序列数据;
Axibase Time Series Database:在HBase之上的分布式时间序列数据库,它包括内置的Rule Engine、数据预测和可视化;
Heroic:基于Cassandra和Elasticsearch的可扩展的时间序列数据库;
InfluxDB:分布式时间序列数据库;
Kairosdb:类似于OpenTSDB但会考虑到Cassandra;
OpenTSDB:在HBase上的分布式时间序列数据库;
Prometheus:一种时间序列数据库和服务监测系统;
Newts:一种基于Apache Cassandra的时间序列数据库 37、
类SQL处理
Actian SQL for Hadoop:高性能交互式的SQL,可访问所有的Hadoop数据;
Apache Drill:由Dremel授意的交互式分析框架;
Apache HCatalog:Hadoop的表格和存储管理层;
Apache Hive:Hadoop的类SQL数据仓库系统;
Apache Optiq:一种框架,可允许高效的查询翻译,其中包括异构性及联合性数据的查询;
Apache Phoenix:Apache Phoenix 是 HBase 的 SQL 驱动;
Cloudera Impala:由Dremel授意的交互式分析框架;
Concurr 38、ent Lingual:Cascading中的类SQL查询语言;
Datasalt Splout SQL:用于大数据集的完整的SQL查询工具;
Facebook PrestoDB:分布式SQL查询工具;
Google BigQuery:交互式分析框架,Dremel的实现;
Pivotal HAWQ:Hadoop的类SQL的数据仓库系统;
RainstorDB:用于存储大规模PB级结构化和半结构化数据的数据库;
Spark Catalyst:用于Spark和Shark的查询优化框架;
SparkSQL:使用Spark操作结构化数据;
Splice Machine:一个全功能的Ha 39、doop上的SQL RDBMS,并带有ACID事务;
Stinger:用于Hive的交互式查询;
Tajo:Hadoop的分布式数据仓库系统;
Trafodion:为企业级的SQL-on-HBase针对大数据的事务或业务工作负载的解决方案。
数据摄取
Amazon Kinesis:大规模数据流的实时处理;
Apache Chukwa:数据采集系统;
Apache Flume:管理大量日志数据的服务;
Apache Kafka:分布式发布-订阅消息系统;
Apache Sqoop:在Hadoop和结构化的数据存储区之间传送数据的工具;
Cloudera Morphlines: 40、帮助 Solr、HBase和HDFS完成ETL的框架;
Facebook Scribe:流日志数据聚合器;
Fluentd:采集事件和日志的工具;
Google Photon:实时连接多个数据流的分布式计算机系统,具有高可扩展性和低延迟性;
Heka:开源流处理软件系统;
HIHO:用Hadoop连接不同数据源的框架;
Kestrel:分布式消息队列系统;
LinkedIn Databus:对数据库更改捕获的事件流;
LinkedIn Kamikaze:压缩已分类整型数组的程序包;
LinkedIn White Elephant:日志聚合器和仪表板;
Logstash:用于 41、管理事件和日志的工具;
Netflix Suro:像基于Chukwa 的Storm和Samza一样的日志聚合器;
Pinterest Secor:是实现Kafka日志持久性的服务;
Linkedin Gobblin:LinkedIn的通用数据摄取框架;
Skizze:是一种数据存储略图,使用概率性数据结构来处理计数、略图等相关的问题;
StreamSets Data Collector:连续大数据采集的基础设施,可简单地使用IDE。
服务编程
Akka Toolkit:JVM中分布性、容错事件驱动应用程序的运行时间;
Apache Avro:数据序列化系统;
Apache C 42、urator:Apache ZooKeeper的Java库;
Apache Karaf:在任何OSGi框架之上运行的OSGi运行时间;
Apache Thrift:构建二进制协议的框架;
Apache Zookeeper:流程管理集中式服务;
Google Chubby:一种松耦合分布式系统锁服务;
Linkedin Norbert:集群管理器;
OpenMPI:消息传递框架;
Serf:服务发现和协调的分散化解决方案;
Spotify Luigi:一种构建批处理作业的复杂管道的Python包,它能够处理依赖性解析、工作流管理、可视化、故障处理、命令行一体化等等问题;
Spr 43、ing XD:数据摄取、实时分析、批量处理和数据导出的分布式、可扩展系统;
Twitter Elephant Bird:LZO压缩数据的工作库;
Twitter Finagle:JVM的异步网络堆栈。
调度
Apache Aurora:在Apache Mesos之上运行的服务调度程序;
Apache Falcon:数据管理框架;
Apache Oozie:工作流作业调度程序;
Chronos:分布式容错调度;
Linkedin Azkaban:批处理工作流作业调度;
Schedoscope:Hadoop作业敏捷调度的Scala DSL;
Sparrow:调度平台;
Air 44、flow:一个以编程方式编写、调度和监控工作流的平台。
机器学习
Apache Mahout:Hadoop的机器学习库;
brain:JavaScript中的神经网络;
Cloudera Oryx:实时大规模机器学习;
Concurrent Pattern:Cascading的机器学习库;
convnetjs:Javascript中的机器学习,在浏览器中训练卷积神经网络(或普通网络);
Decider:Ruby中灵活、可扩展的机器学习;
ENCOG:支持多种先进算法的机器学习框架,同时支持类的标准化和处理数据;
etcML:机器学习文本分类;
Etsy Conjecture 45、Scalding中可扩展的机器学习;
Google Sibyl:Google中的大规模机器学习系统;
GraphLab Create:Python的机器学习平台,包括ML工具包、数据工程和部署工具的广泛集合;
H2O:Hadoop统计性的机器学习和数学运行时间;
MLbase:用于BDAS堆栈的分布式机器学习库;
MLPNeuralNet:针对iOS和Mac OS X的快速多层感知神经网络库;
MonkeyLearn:使文本挖掘更为容易,从文本中提取分类数据;
nupic:智能计算的Numenta平台,它是一个启发大脑的机器智力平台,基于皮质学习算法的精准的生物神经网络;
P 46、redictionIO:建于Hadoop、Mahout和Cascading上的机器学习服务器;
SAMOA:分布式流媒体机器学习框架;
scikit-learn:scikit-learn为Python中的机器学习;
Spark MLlib:Spark中一些常用的机器学习(ML)功能的实现;
Vowpal Wabbit:微软和雅虎发起的学习系统;
WEKA:机器学习软件套件;
BidMach:CPU和加速GPU的机器学习库。
基准测试
Apache Hadoop Benchmarking:测试Hadoop性能的微基准;
Berkeley SWIM Benchmark:现实大数据 47、工作负载基准测试;
Intel HiBench:Hadoop基准测试套件;
PUMA Benchmarking:MapReduce应用的基准测试套件;
Yahoo Gridmix3:雅虎工程师团队的Hadoop集群基准测试。
安全性
Apache Knox Gateway:Hadoop集群安全访问的单点;
Apache Sentry:存储在Hadoop的数据安全模块。
系统部署
Apache Ambari:Hadoop管理的运作框架;
Apache Bigtop:Hadoop生态系统的部署框架;
Apache Helix:集群管理框架;
Apache Mesos:集群管理 48、器;
Apache Slider:一种YARN应用,用来部署YARN中现有的分布式应用程序;
Apache Whirr:运行云服务的库集;
Apache YARN:集群管理器;
Brooklyn:用于简化应用程序部署和管理的库;
Buildoop:基于Groovy语言,和Apache BigTop类似;
Cloudera HUE:和Hadoop进行交互的Web应用程序;
Facebook Prism:多数据中心复制系统;
Google Borg:作业调度和监控系统;
Google Omega:作业调度和监控系统;
Hortonworks HOYA:可在YARN上部署HBas 49、e集群的应用;
Marathon:用于长期运行服务的Mesos框架。
应用程序
Adobe spindle:使用Scala、Spark和Parquet处理的下一代web分析;
Apache Kiji:基于HBase,实时采集和分析数据的框架;
Apache Nutch:开源网络爬虫;
Apache OODT:用于NASA科学档案中数据的捕获、处理和共享;
Apache Tika:内容分析工具包;
Argus:时间序列监测和报警平台;
Countly:基于Node.js和MongoDB,开源的手机和网络分析平台;
Domino:运行、规划、共享和部署模型——没有任何基础设施; 50、
Eclipse BIRT:基于Eclipse的报告系统;
Eventhub:开源的事件分析平台;
Hermes:建于Kafka上的异步消息代理;
HIPI Library:在Hadoop’s MapReduce上执行图像处理任务的API;
Hunk:Hadoop的Splunk分析;
Imhotep:大规模分析平台;
MADlib:RDBMS的用于数据分析的数据处理库;
Kylin:来自eBay的开源分布式分析工具;
PivotalR:Pivotal HD / HAWQ和PostgreSQL中的R;
Qubole:为自动缩放Hadoop集群,内置的数据连接器;
Sense






