查看原文
其他

数据科学工具包(万余字介绍几百种工具,经典收藏版!)

2016-03-07 秦陇纪 经管之家


论坛君

数据科学家的常用工具与基本思路,本文将数据分析师和数据科学家使用的工具进行了综合概述,包括开源的技术平台相关工具、挖掘分析处理工具、其它常见工具等几百种,几十个大类,部分网址。




作者:秦陇纪

来源:数据精简DataSimp


前言:数据科学融合了多门学科并且建立在这些学科的理论和技术之上,包括数学、概率模型、统计学、机器学习、数据仓库、可视化等。在实际应用中,数据科学包括数据的收集、清洗、分析、可视化以及数据应用整个迭代过程,最终帮助组织制定正确的发展决策数据科学的从业者称为数据科学家。数据科学家有其独特的基本思路与常用工具,本文全面梳理数据分析师和数据科学家使用的工具包,包括开源的技术平台相关工具、挖掘分析处理工具、其它常见工具等几百种,几十个大类,部分网址。


数据科学家是有着开阔视野的复合型人才,他们既有坚实的数据科学基础,如数学、统计学、计算机学等,又具备广泛的业务知识和经验数据科学家通过精深的技术和专业知识在某些科学学科领域解决复杂的数据问题,从而制定出适合不同决策人员的大数据计划和策略。数据分析师和数据科学家使用的工具在网上的MOOC有提供,比如2016年2月1日约翰-霍普金斯大学Coursera数据科学专业化课程等网络课程。数据科学家的常用工具与基本思路,并对数据、相关问题和数据分析师和数据科学家使用的工具做了综合概述。


数据科学家和大数据技术人员的工具包:


A.大数据技术平台相关2015最佳工具;

B.开源大数据处理工具汇总;

C.常见的数据挖掘分析处理工具。

A大数据技术平台相关2015最佳工具


InfoWorld在分布式数据处理、流式数据分析、机器学习以及大规模数据分析领域精选出了2015年的开源工具获奖者,下面我们来简单介绍下这些获奖的技术工具。


1. Spark

在Apache的大数据项目中,Spark是最火的一个,特别是像IBM这样的重量级贡献者的深入参与,使得Spark的发展和进步速度飞快。与Spark产生最甜蜜的火花点仍然是在机器学习领域。去年以来DataFrames API取代SchemaRDD API,类似于R和Pandas的发现,使数据访问比原始RDD接口更简单。Spark的新发展中也有新的为建立可重复的机器学习的工作流程,可扩展和可优化的支持各种存储格式,更简单的接口来访问机器学习算法,改进的集群资源的监控和任务跟踪。spark-packages.org网站上有超过100个第三方贡献的链接库扩展,增加了许多有用的功能。


2. Storm

Storm是Apache项目中的一个分布式计算框架项目,主要应用于流式数据实时处理领域。他基于低延时交互模式理念,以应对复杂的事件处理需求。和Spark不同,Storm可以进行单点随机处理,而不仅仅是微批量任务,并且对内存的需求更低。在我的经验中,他对于流式数据处理更有优势,特别是当两个数据源之间的数据快速传输过程中,需要对数据进行快速处理的场景。Spark掩盖了很多Storm的光芒,但其实Spark在很多流失数据处理的应用场景中并不适合。Storm经常和Apache Kafka一起配合使用。


3. H2O

H2O是一种分布式的内存处理引擎用于机器学习,它拥有一个令人印象深刻的数组的算法。早期版本仅仅支持R语言,3.0版本开始支持Python和Java语言,同时它也可以作为Spark在后端的执行引擎。使用H2O的最佳方式是把它作为R环境的一个大内存扩展,R环境并不直接作用于大的数据集,而是通过扩展通讯协议例如REST API与H2O集群通讯,H2O来处理大量的数据工作。几个有用的R扩展包,如ddply已经被打包,允许你在处理大规模数据集时,打破本地机器上内存容量的限制。你可以在EC2上运行H2O,或者Hadoop集群/YARN集群,或者Docker容器。用苏打水(Spark+ H2O)你可以访问在集群上并行的访问Spark RDDS,在数据帧被Spark处理后。再传递给一个H2O的机器学习算法。


4. Apex

Apex是一个企业级的大数据动态处理平台,即能够支持即时的流式数据处理,也可以支持批量数据处理。它可以是一个YARN的原生程序,能够支持大规模、可扩展、支持容错方法的流式数据处理引擎。它原生的支持一般事件处理并保证数据一致性(精确一次处理、最少一次、最多一次)。以前DataTorrent公司开发的基于Apex的商业处理软件,其代码、文档及架构设计显示,Apex在支持DevOps方面能够把应用开发清楚的分离,用户代码通常不需要知道他在一个流媒体处理集群中运行。Malhar是一个相关项目,提供超过300种常用的实现共同的业务逻辑的应用程序模板。Malhar的链接库可以显著的减少开发Apex应用程序的时间,并且提供了连接各种存储、文件系统、消息系统、数据库的连接器和驱动程序。并且可以进行扩展或定制,以满足个人业务的要求。所有的malhar组件都是Apache许可下使用。


5. Druid

Druid在今年二月转为了商业友好的Apache许可证,是一个基于“事件流的混合引擎,能够满足OLAP解决方案。最初他主要应用于广告市场的在线数据处理领域,德鲁伊可以让用户基于时间序列数据做任意和互动的分析。一些关键的功能包括低延迟事件处理,快速聚合,近似和精确的计算。Druid的核心是一个使用专门的节点来处理每个部分的问题自定义的数据存储。实时分析基于实时管理(JVM)节点来处理,最终数据会存储在历史节点中负责老的数据。代理节点直接查询实时和历史节点,给用户一个完整的事件信息。测试表明50万事件数据能够在一秒内处理完成,并且每秒处理能力可以达到100万的峰值,Druid作为在线广告处理、网络流量和其他的活动流的理想实时处理平台。


6. Flink

Flink的核心是一个事件流数据流引擎。虽然表面上类似Spark,实际上Flink是采用不同的内存中处理方法的。首先,Flink从设计开始就作为一个流处理器。批处理只是一个具有开始和结束状态的流式处理的特殊情况,Flink提供了API来应对不同的应用场景,无论是API(批处理)和数据流API。MapReduce的世界的开发者们在面对DataSet处理API时应该有宾至如归的感觉,并且将应用程序移植到Flink非常容易。在许多方面,Flink和Spark一样,其的简洁性和一致性使他广受欢迎。像Spark一样,Flink是用Scala写的。


7. Elasticsearch

Elasticsearch是基于Apache Lucene搜索分布式文件服务器。它的核心,Elasticsearch基于JSON格式的近乎实时的构建了数据索引,能够实现快速全文检索功能。结合开源Kibana BI显示工具,您可以创建令人印象深刻的数据可视化界面。Elasticsearch易于设置和扩展,他能够自动根据需要使用新的硬件来进行分片。他的查询语法和SQL不太一样,但它也是大家很熟悉的JSON。大多数用户不会在那个级别进行数据交互。开发人员可以使用原生JSON-over-HTTP接口或常用的几个开发语言进行交互,包括Ruby,Python,PHP,Perl,Java,JavaScript等。


8. SlamData

如果你正在寻找一个用户友好的工具,能理解最新流行的NoSQL数据的可视化工具,那么你应该看一看SlamData。SlamData允许您用熟悉的SQL语法来进行JSON数据的嵌套查询,不需要转换或语法改造。该技术的主要特点之一是它的连接器。从MongoDB,HBase,Cassandra和Apache的Spark,SlamData同大多数业界标准的外部数据源可以方便的进行整合,并进行数据转换和分析数据。你可能会问:“我不会有更好的数据池或数据仓库工具吗?请认清这是在NoSQL领域。


9. Drill

Drill是一种用于大型数据集的交互分析的分布式系统,由谷歌的Dremel催生。Drill专为嵌套数据的低延迟分析设计,它有一个明确的设计目标,灵活的扩展到10000台服务器来处理查询记录数据,并支持兆级别的数据记录。嵌套的数据可以从各种数据源获得的(如HDFS,HBase,Amazon S3,和Blobs)和多种格式(包括JSON,Avro,和buffers),你不需要在读取时指定一个模式(“读时模式”)。Drill使用ANSI 2003 SQL的查询语言为基础,所以数据工程师是没有学习压力的,它允许你连接查询数据并跨多个数据源(例如,连接HBase表和在HDFS中的日志)。最后,Drill提供了基于ODBC和JDBC接口以和你所喜欢的BI工具对接。


10. HBASE

HBase在今年的里程碑达到1.X版本并持续改善。像其他的非关系型的分布式数据存储一样,HBase的查询结果反馈非常迅速,因此擅长的是经常用于后台搜索引擎,如易趣网,博科和雅虎等网站。作为一个稳定的、成熟的软件产品,HBase新鲜的功能并不是经常出现,但这种稳定性往往是企业最关心的。最近的改进包括增加区域服务器改进高可用性,滚动升级支持,和YARN的兼容性提升。在他的特性更新方面包括扫描器更新,保证提高性能,使用HBase作为流媒体应用像Storm和Spark持久存储的能力。HBase也可以通过Phoenix项目来支持SQL查询,其SQL兼容性在稳步提高。Phoenix最近增加了一个Spark连接器,添加了自定义函数的功能。


11. Hive

随着Hive过去多年的发展,逐步成熟,今年发布了1.0正式版本,它用于基于SQL的数据仓库领域。目前基金会主要集中在提升性能、可扩展性和SQL兼容性。最新的1.2版本显著的提升了ACID语意兼容性、跨数据中心复制,以及以成本为基础的优化器。Hive1.2也带来了改进的SQL的兼容性,使组织利用它更容易的把从现有的数据仓库通过ETL工具进行转移。在规划中讲主要改进:以内存缓存为核心的速度改进 LLAP,Spark的机器学习库的集成,提高SQL的前嵌套子查询、中间类型支持等。


12. Kylin

Kylin是eBay开发的用于处理非常大量数据的OLAP分析系统,他使用标准的SQL语法,和很多数据分析产品很像。Kylin使用Hive和MR来构建立方体,Hive用作预链接,MR用作预聚合,HDFS用来储存构建立方体时的中间文件,HBase用来存储立方体,HBase的coprocessor(协处理器)用来响应查询。像大多数其他的分析应用一样,Kylin支持多种访问方法,包括JDBC,ODBC API进行编程访问以及REST API接口。


13. CDAP

CDAP(Cask Data Access Platform)是一个在Hadoop之上运行的框架,抽象了建造和运行大数据应用的复杂性。CDAP围绕两个核心概念:数据和应用程序。CDAP数据集是数据的逻辑展现,无论底层存储层是什么样的;CDAP提供实时数据流处理能力。应用程序使用CDAP服务来处理诸如分布式事务和服务发现等应用场景,避免程序开发者淹没在Hadoop的底层细节中。CDAP自带的数据摄取框架和一些预置的应用和一些通用的“包”,例如ETL和网站分析,支持测试,调试和安全等。和大多数原商业(闭源)项目开源一样,CDAP具有良好的文档,教程,和例子。


14. Ranger

安全一直是Hadoop的一个痛处。它不是说(像是经常报道)Hadoop是“不安全”或“不安全”。事实是,Hadoop有很多的安全功能,虽然这些安全功能都不太强大。我的意思是,每一个组件都有它自己的身份验证和授权实施,这与其他的平台没有集成。2015年5月,Hortonworks收购XA /安全,随后经过了改名后,我们有了Ranger。Ranger使得许多Hadoop的关键部件处在一个保护伞下,它允许你设置一个“策略”,把你的Hadoop安全绑定到到您现有的ACL基于活动目录的身份验证和授权体系下。Ranger给你一个地方管理Hadoop的访问控制,通过一个漂亮的页面来做管理、审计、加密。


15. Mesos

Mesos提供了高效、跨分布式应用程序和框架的资源隔离和共享,支持Hadoop、 MPI、Hypertable、Spark等。Mesos是Apache孵化器中的一个开源项目,使用ZooKeeper实现容错复制,使用Linux Containers来隔离任务,支持多种资源计划分配(内存和CPU)。提供Java、Python和C++ APIs来开发新的并行应用程序,提供基于Web的用户界面来提查看集群状态。Mesos应用程序(框架)为群集资源协调两级调度机制,所以写一个Mesos应用程序对程序员来说感觉不像是熟悉的体验。虽然Mesos是新的项目,成长却很快。


16. NiFi

Apache NiFi 0.2.0 发布了,该项目目前还处于 Apache 基金会的孵化阶段。Apache NiFi 是一个易于使用、功能强大而且可靠的数据处理和分发系统。Apache NiFi 是为数据流设计。它支持高度可配置的指示图的数据路由、转换和系统中介逻辑。Apache NiFi是由美国过国家安全局(NSA)贡献给Apache基金会的开源项目,其设计目标是自动化系统间的数据流。基于其工作流式的编程理念,NiFi非常易于使用,强大,可靠及高可配置。两个最重要的特性是其强大的用户界面及良好的数据回溯工具。NiFi的用户界面允许用户在浏览器中直观的理解并与数据流举行交互,更快速和安全的进行迭代。其数据回溯特性允许用户查看一个对象如何在系统间流转,回放以及可视化关键步骤之前之后发生的情况,包括大量复杂的图式转换,fork,join及其他操作等。另外,NiFi使用基于组件的扩展模型以为复杂的数据流快速增加功能,开箱即用的组件中处理文件系统的包括FTP,SFTP及HTTP等,同样也支持HDFS。NiFi获得来来自业界的一致好评,包括Hortonworks CEO,Leverage CTO及Prescient Edge首席系统架构师等。


17. Kafka

在大数据领域,Kafka已经成为分布式发布订阅消息的事实标准。它的设计允许代理支持成千上万的客户在信息吞吐量告诉处理时,同时通过分布式提交日志保持耐久性。Kafka是通过在HDFS系统上保存单个日志文件,由于HDFS是一个分布式的存储系统,使数据的冗余拷贝,因此Kafka自身也是受到良好保护的。当消费者想读消息时,Kafka在中央日志中查找其偏移量并发送它们。因为消息没有被立即删除,增加消费者或重发历史信息不产生额外消耗。Kafka已经为能够每秒发送2百万个消息。尽管Kafka的版本号是sub-1.0,但是其实Kafka是一个成熟、稳定的产品,使用在一些世界上最大的集群中。


18.OpenTSDB

opentsdb是建立在时间序列基础上的HBase数据库。它是专为分析从应用程序,移动设备,网络设备,和其他硬件设备收集的数据。它自定义HBase架构用于存储时间序列数据,被设计为支持快速聚合和最小的存储空间需求。通过使用HBase作为底层存储层,opentsdb很好的支持分布与系统可靠性的特点。用户不与HBase的直接互动;而数据写入系统是通过时间序列的守护进程(TSD)来管理,它可以方便的扩展用于需要高速处理数据量的应用场景。有一些预制连接器将数据发布到opentsdb,并且支持从Ruby,Python以及其他语言的客户端读取数据。opentsdb并不擅长交互式图形处理,但可以和第三方工具集成。如果你已经在使用HBase和想要一个简单的方法来存储事件数据,opentsdb也许正好适合你。


19. Jupyter

大家最喜欢的笔记应用程序都走了。jupyter是“IPython”剥离出来成为一个独立的软件包的语言无关的部分。虽然jupyter本身是用Python写的,该系统是模块化的。现在你可以有一个和iPython一样的界面,在笔记本电脑中方便共享代码,使得文档和数据可视化。至少已经支持50个语言的内核,包括Lisp,R,F #,Perl,Ruby,Scala等。事实上即使IPython本身也只是一个jupyter Python模块。通过REPL(读,评价,打印循环)语言内核通信是通过协议,类似于nrepl或Slime。很高兴看到这样一个有用的软件,得到了显著的非营利组织资助,以进一步发展,如并行执行和多用户笔记本应用。


20. Zeppelin

Zeppelin是一个Apache的孵化项目. 一个基于web的笔记本,支持交互式数据分析。你可以用SQL、Scala等做出数据驱动的、交互、协作的文档。(类似于ipython notebook,可以直接在浏览器中写代码、笔记并共享)。一些基本的图表已经包含在Zeppelin中。可视化并不只限于SparkSQL查询,后端的任何语言的输出都可以被识别并可视化。 Zeppelin 提供了一个 URL 用来仅仅展示结果,那个页面不包括 Zeppelin 的菜单和按钮。这样,你可以轻易地将其作为一个iframe集成到你的网站。Zeppelin还不成熟。我想把一个演示,但找不到一个简单的方法来禁用“Shell”作为一个执行选项(在其他事情)。然而,它已经看起来的视觉效果比IPython笔记本应用更好,Apache Zeppelin (孵化中) 是 Apache2 许可软件。提供100%的开源。

B开源大数据处理工具汇总


一共81个,包括日志收集系统/集群管理/RPC等,下面是文档简版:


类别

名称

官网

备注

查询引擎

Phoenix

http://phoenix.incubator.apache.org/

Salesforce公司出品,Apache HBase之上的一个SQL中间层,完全使用Java编写

Stinger

http://hortonworks.com/labs/stinger/

原叫Tez,下一代Hive,Hortonworks主导开发,运行在YARN上的DAG计算框架

http://tez.incubator.apache.org/

Presto

http://prestodb.io/

Facebook开源

Shark

http://shark.cs.berkeley.edu/

Spark上的SQL执行引擎

Pig

http://pig.apache.org/

基于Hadoop MapReduce的脚本语言

Cloudera Impala

http://www.cloudera.com/content/cloudera/en/products-and-services/cdh/impala.html

参照Google Dremel实现,能运行在HDFS或HBase上,使用C++开发

Apache Drill

http://incubator.apache.org/drill/

参照Google Dremel实现

Apache Tajo

http://tajo.incubator.apache.org/

一个运行在YARN上支持SQL的分布式数据仓库

Hive

http://hive.apache.org/

基于Hadoop MapReduce的SQL查询引擎

流式计算

Facebook Puma


实时数据流分析

Twitter Rainbird


分布式实时统计系统,如网站的点击统计

Yahoo S4

http://incubator.apache.org/s4/

Java开发的一个通用的、分布式的、可扩展的、分区容错的、可插拔的无主架构的流式系统

Twitter Storm

http://storm.incubator.apache.org/

使用Java和Clojure实现

迭代计算

Apache Hama

https://hama.apache.org/

建立在Hadoop上基于BSP(Bulk Synchronous Parallel)的计算框架,模仿了Google的Pregel。

Apache Giraph

https://giraph.apache.org/

建立在Hadoop上的可伸缩的分布式迭代图处理系统,灵感来自BSP(bulk synchronous parallel)和Google的Pregel

HaLoop

https://code.google.com/p/haloop/

迭代的MapReduce

Twister

http://www.iterativemapreduce.org/

迭代的MapReduce

离线计算

Hadoop MapReduce

http://hadoop.apache.org/

经典的大数据批处理系统

Berkeley Spark

http://spark.incubator.apache.org/

使用Scala语言实现,和MapReduce有较大的竞争关系,性能强于MapReduce

http://shark.cs.berkeley.edu/


DataTorrent

http://www.datatorrent.com/

基于Hadoop2.X构建的实时流式处理和分析平台,每秒可以处理超过10亿个实时事件

键值存储

LevelDB

https://code.google.com/p/leveldb/

Google开源的高效KV编程库,注意它只是个库

RocksDB

http://rocksdb.org/

Facebook开源的,基于Google的LevelDB,但提高了扩展性可以运行在多核处理器上

HyperDex

http://hyperdex.org/

下一代KV存储系统,支持strings、integers、floats、lists、maps和sets等丰富的数据类型

TokyoCabinet

http://fallabs.com/tokyocabinet/

日本人Mikio Hirabayashi(平林干雄)开发的一款DBM数据库,注意它只是个库(大名鼎鼎的DBM数据库qdbm就是Mikio Hirabayashi开发的),读写非常快

Voldemort

http://www.project-voldemort.com/voldemort/

一个分布式键值存储系统,是Amazon Dynamo的一个开源克隆,LinkedIn开源

Amazon Dynamo

https://github.com/dynamo/dynamo

亚马逊的KV模式的存储平台,无主架构

Tair

http://tair.taobao.org/

淘宝出品的高性能、分布式、可扩展、高可靠的KV结构存储系统,专为小文件优化,并提供简单易用的接口(类似Map),Tair支持Java和C版本的客户端

Apache Accumulo

https://accumulo.apache.org/

一个可靠的、可伸缩的、高性能的排序分布式的KV存储系统,参照Google Bigtable而设计,建立在Hadoop、Thrift和Zookeeper之上。

Redis

http://redis.io/

使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、单机版KV数据库。从2010年3月15日起,Redis的开发工作由VMware主持

表格存储

OceanBase

http://alibaba.github.io/oceanbase/

支持海量数据的高性能分布式数据库系统,实现了数千亿条记录、数百TB数据上的跨行跨表事务

Amazon SimpleDB

http://aws.amazon.com/cn/simpledb/

一个可大规模伸缩、用 Erlang 编写的高可用数据存储

Vertica

http://www.vertica.com/

惠普2011收购Vertica,Vertica是传统的关系型数据库,基于列存储,同时支持MPP,使用标准的SQL查询,可以和Hadoop/MapReduce进行集成

Cassandra

http://cassandra.apache.org/

Hadoop成员,Facebook于2008将Cassandra开源,基于O(1)DHT的完全P2P架构

HyperTable

http://hypertable.org/

搜索引擎公司Zvents针对Bigtable的C++开源实现

FoundationDB

https://foundationdb.com/

支持ACID事务处理的NoSQL数据库,提供非常好的性能、数据一致性和操作弹性

HBase

http://hbase.apache.org/

Bigtable在Hadoop中的实现,最初是Powerset公司为了处理自然语言搜索产生的海量数据而开展的项目

文件存储

CouchDB

http://couchdb.apache.org/

面向文档的数据存储

MongoDB

https://www.mongodb.org/

文档数据库

Tachyon

http://tachyon-project.org/

加州大学伯克利分校的AMPLab基于Hadoop的核心组件开发出一个更快的版本Tachyon,它从底层重构了Hadoop平台。

https://github.com/amplab/tachyon

KFS

http://code.google.com/p/kosmosfs/

GFS的C++开源版本

HDFS

http://hadoop.apache.org/

GFS在Hadoop中的实现

资源管理

Twitter Mesos

http://mesos.apache.org/

Google Borg的翻版

Hadoop Yarn

http://hadoop.apache.org/

类似于Mesos

日志收集系统

Facebook Scribe

https://github.com/facebook/scribe

Facebook开源的日志收集系统,能够从各种日志源上收集日志,存储到一个中央存储系统(可以是NFS,分布式文件系统等)上,以便于进行集中统计分析处理,常与Hadoop结合使用,Scribe用于向HDFS中Push日志

Cloudera Flume

http://flume.apache.org/

Cloudera提供的日志收集系统,支持对日志的实时性收集

logstash

http://www.logstash.net/

日志管理、分析和传输工具,可配合kibana、ElasticSearch组建成日志查询系统

kibana

http://www.elasticsearch.org/overview/kibana/

为日志提供友好的Web查询页面

消息系统

StormMQ

http://stormmq.com/


ZeroMQ

http://zeromq.org/

很底层的高性能网络库


RabbitMQ

https://www.rabbitmq.com/

在AMQP基础上完整的,可复用的企业消息系统

Apache ActiveMQ

http://activemq.apache.org/

能力强劲的开源消息总线

Jafka

http://kafka.apache.org/

开源的、高性能的、跨语言分布式消息系统,最早是由Apache孵化的Kafka(由LinkedIn捐助给Apache)克隆而来

Apache Kafka

http://kafka.apache.org/

Linkedin于2010年12月份开源的分布式消息系统,它主要用于处理活跃的流式数据,由Scala写成

分布式服务

ZooKeeper

http://zookeeper.apache.org/

分布式锁服务,PoxOS算法的实现,对应Google的Chubby

RPC

Apache Avro

http://avro.apache.org/

Hadoop中的RPC

Facebook Thrift

http://thrift.apache.org/

RPC,支持C++/Java/PHP等众多语言

集群管理

Nagios

http://www.nagios.org/

监视系统运行状态和网络信息的监视系统

Ganglia

http://ganglia.sourceforge.net/

UC Berkeley发起的一个开源集群监视项目,设计用于测量数以千计的节点。

Apache Ambari

http://ambari.apache.org/

Hadoop成员,管理和监视Apache Hadoop集群的开源框架

基础设施

LevelDB

http://code.google.com/p/leveldb/

Google顶级大牛开发的单机版键值数据库,具有非常高的写性能

SSTable


源于Google,orted String Table

RecordIO


源于Google

Flat Buffers

https://github.com/google/flatbuffers

针对游戏开发的,高效的跨平台序列化库,相比Proto Buffers开销更小,因为Flat Buffers没有解析过程

Protocol Buffers

http://code.google.com/p/protobuf/

Google公司开发的一种数据描述语言,类似于XML能够将结构化数据序列化,可用于数据存储、通信协议等方面。它不依赖于语言和平台并且可扩展性极强。

Consistent Hashing


1997年由麻省理工学院提出,目标是为了解决因特网中的热点(Hot spot)问题,初衷和CARP十分类似,基本解决了在P2P环境中最为关键的问题——如何在动态的网络拓扑中分布存储和路由。

Netty

http://netty.io/

JBOSS提供的一个java开源框架,提供异步的、事件驱动的网络应用程序框架,用以快速开发高性能、高可靠性的网络服务器和客户端程序。

BloomFilter


布隆过滤器,1970年由布隆提出,是一个很长的二进制矢量和一系列随机映射函数,可以用于检索一个元素是否在一个集合中,优点是空间效率和查询时间都远远超过一般的算法,缺点是有一定的误识别率和删除困难。

搜索引擎

Nutch

https://nutch.apache.org/

开源Java 实现的搜索引擎,诞生Hadoop的地方。

Lucene

http://lucene.apache.org/

一套信息检索工具包,但并不包含搜索引擎系统,它包含了索引结构、读写索引工具、相关性工具、排序等功能。

SolrCloud


基于Solr和Zookeeper的分布式搜索, Solr4.0 的核心组件之一,主要思想是使用 Zookeeper 作为集群的配置信息中心

Solr

https://lucene.apache.org/solr/

Solr是基于Lucene的搜索。

ElasticSearch

http://www.elasticsearch.org/

开源的(Apache2协议),分布式的,RESTful的,构建在Apache Lucene之上的的搜索引擎。

http://www.elasticsearch.cn/

Sphinx

http://sphinxsearch.com

一个基于SQL的全文检索引擎,可结合MySQL、PostgreSQL做全文检索,可提供比数据库本身更专业的搜索功能,单一索引可达1亿条记录,1000万条记录情况下的查询速度为0.x秒(毫秒级)。

SenseiDB

http://senseidb.com

LinkedIn公司开发的一个开源分布式实时半结构化数据库,在全文索引的基础封装了Browse Query Language (BQL,类似SQL)的查询语法。

数据挖掘

Mahout

http://mahout.apache.org/

Hadoop成员,目标是建立一个可扩展的机器学习库

Iaas

OpenStack

https://www.openstack.org/

美国国家航空航天局和Rackspace合作研发的,以Apache许可证授权云平台管理的项目,它不是一个软件。这个项目由几个主要的组件组合起来完成一些具体的工作,旨在为公共及私有云的建设与管理提供软件的开源项目。6个核心项目:Nova(计算,Compute),Swift(对象存储,Object),Glance(镜像,Image),Keystone(身份,Identity),Horizon(自助门户,Dashboard),Quantum & Melange(网络&地址管理),另外还有若干社区项目,如Rackspace(负载均衡)、Rackspace(关系型数据库)。

Docker

http://www.docker.io/

应用容器引擎,让开发者可打包应用及依赖包到一个可移植的容器中,然后发布到Linux机器上,也可实现虚拟化。

Kubernetes

https://github.com/GoogleCloudPlatform/kubernetes/

Google开源的容器集群管理系统

Imctfy

https://github.com/google/Imctfy/

Google开源的Linux容器

监控管理

Dapper

http://bigbully.github.io/Dapper-translation/

Google生产环境下的大规模分布式系统的跟踪系统

Zipkin

http://twitter.github.io/zipkin/

Twitter开源的参考Google Dapper而开发,使用Apache Cassandra做为数据存储系统

https://github.com/twitter/zipkin/

C常见的数据挖掘分析处理工具


1. Dynelle Abeyta整理的数据科学家五种工具(2015-09-29):


1)dedup——dedup是一个Python库,使用机器学习快速的对结构化数据进行重复数据删除和实体解析。数据科学家发现他们经常需要使用SELECT DISTINCT * FROM my_messy_dataset;不幸的是,现实世界中的数据集往往更加复杂。无论你是去对多个数据源进行汇总,还是简单的数据收集,开始你都需要对重复数据的删除做一个有意义的分析。如你所想,有取之不尽的方法可以用来合并数据和用之不竭的规则来定义你数据的等价意义。有相同地址的两家餐馆是属于一个公司么?名和姓都相同的两条记录就是同一个人么?你很幸运,dedup可以让你转危为安!基于创新的计算机科学研究,dedup使用机器学习(更确切地说,应该是主动学习)去学习,通过合并人类的反馈对两个可能的模棱两可的记录进行研究,并寻找究竟是什么构成了两者的“相似”。更方便的是,它有一个图形用户界面(GUI),任何人都可以使用它。


2)Theano——Theano是一个Python库,你可以有效地定义、优化以及评估包含多维数组的数学表达式。Theano的特点:


  • 和Numpy紧密结合——在Theano编译的函数中使用numpy.ndaaray。

  • GPU的透明使用——在执行密集型数据计算时,相比于CPU,速度提升了140倍。(使用float32进行测试)

  • 速度和稳定性优化——对log(1+x)得到正确的答案,即使x真的很小。

  • C语言代码动态生成——加速评估表达式。

  • 广泛的单元测试和自我验证——发现和诊断不同种类的错误。


3)StarCluster——StarCluster已经开始在Amazon的EC2云服务器中设计虚拟机创建、配置和管理集群的自动和简化程序。StarCluster允许所有人在面向分布式和并行计算的应用和系统的云服务器中轻松的创建一个集群计算环境。这允许你在无限制的数据上做交互程序。(贡献者Alessandro Gagliardi,Galvanize数据科学指导者。)


4)graph-tool——在python网络和图形分析库与日俱增的情况下,图形工具给了不少希望。尽管像NetworkX和Gephi这样的工具在不断成长的工具中仍然还有它们的一席之地,但是对于那些想要做大图像高级分析的人来说——无论是社会网络、道路网络、还是生物网络——这两者往往会显得力不从心。NetworkX一直是用于网络分析的最流行的Python工具,因为它有着丰富的API并且使用的门槛很低,但是一旦你开始处理更大的图形,纯python实现的弊端才真正开始凸显。而Gephi是一个极好的交互式可视化和开发新图像的图形化工具,但是有一个麻烦的脚本接口,使得它很难使用编程方式去控制。图形工具尝试从它前辈中吸取经验教训并给数据科学家最好的结果。它使用C++实现(可并行执行)并用Python来武装,绑定了一个易于使用的API,同时获得了超快的速度,而且不影响使用性。


5)Plotly——Plotly是一个面向R,Python,MATLAB,JavaScript和Excel的交互式图形库。Plotly也是一个用于分析和分享数据和图像的平台。Plotly是如何与众不同的呢?与Google Docs和GitHub一样,你可以协调和控制你的数据;可以将文件设置成公有的、私有的、秘密文件或是分享的。如果你使用plotly的免费公共云,脱机Plotly,或是现场部署,下面的选项很多都是可以获得的。在你的工作流中可以使用Plotly,这里有三种可用方式:


  • 为数据科学家整合其它工具。Plotly的R,Python和MATLAB的API可以让你做交互、更新仪表面板和图像。Plotly整合了IPython Notebooks,NetworkX,Shiny,ggplot2,matplotlib,pandas,reporting tools和数据库。例如,下面的图是使用ggplot2制作的,然后嵌入到这个博客中。将鼠标悬停后看看数据变化,然后单击拖动放大。

  • 创建交互式地图。Plotly的图形库建立在D3.js之上。对于地理数据,Plotly支持分级统计图、散点图、气泡图、分块图和线图。你可以制作类似下面这样的地图,像R和Python一样把它们嵌入到博客,应用程序和仪表板。

  • 建立全方位的可视化。你可以为使用Plotly满足任意的可视化需求:地图、2D、3D以及流图。点击并移动你的鼠标来旋转这个图,悬停并观察数据变化,或切换放大。


2. 六种开源数据挖掘工具


百分之八十的数据是非结构化的,需要一个程序和方法来从中提取有用信息,并且将其转换为可理解、可用的结构化形式。数据挖掘过程中有大量的工具可供使用,比如采用人工智能、机器学习,以及其他技术等来提取数据。以下为您推荐六款开源大数据挖掘工具:


1)WEKA——WEKA原生的非Java版本主要是为了分析农业领域数据而开发的。该工具基于Java版本,是非常复杂的,并且应用在许多不同的应用中,包括数据分析以及预测建模的可视化和算法。与 RapidMiner 相比优势在于,它在 GNU 通用公共许可证下是免费的,因为用户可以按照自己的喜好选择自定义。WEKA 支持多种标准数据挖掘任务,包括数据预处理、收集、分类、回归分析、可视化和特征选取。添加序列建模后,WEKA 将会变得更强大,但目前不包括在内。


2)RapidMiner——该工具是用Java语言编写的,通过基于模板的框架提供先进的分析技术。该款工具最大的好处就是,用户无需写任何代码。它是作为一个服务提供,而不是一款本地软件。值得一提的是,该工具在数据挖掘工具榜上位列榜首。另外,除了数据挖掘,RapidMiner 还提供如数据预处理和可视化、预测分析和统计建模、评估和部署等功能。更厉害的是它还提供来自WEKA(一种智能分析环境)和R脚本的学习方案、模型和算法。RapidMiner分布在AGPL开源许可下,可以从 SourceForge上下载。SourceForge是一个开发者进行开发管理的集中式场所,大量开源项目在此落户,其中就包括维基百科使用的 MediaWiki。


3)NLTK——当涉及到语言处理任务,没有什么可以打败NLTK。NLTK提供了一个语言处理工具,包括数据挖掘、机器学习、数据抓取、情感分析等各种语言处理任务。而您需要做的只是安装NLTK,然后将一个包拖拽到您最喜爱的任务中,您就可以去做其他事了。因为它是用Python语言编写的,你可以在上面建立应用,还可以自定义它的小任务。


4)Orange——Python之所以受欢迎,是因为它简单易学并且功能强大。如果你是一个Python开发者,当涉及到需要找一个工作用的工具时,那么没有比Orange更合适的了。它是一个基于Python语言,功能强大的开源工具,并且对初学者和专家级的大神均适用。此外,你肯定会爱上这个工具的可视化编程和 Python 脚本。它不仅有机器学习的组件,还附加有生物信息和文本挖掘,可以说是充满了数据分析的各种功能。


5)KNIME——数据处理主要有三个部分:提取、转换和加载。而这三者KNIME都可以做到。KNIME为您提供了一个图形化的用户界面,以便对数据节点进行处理。它是一个开源的数据分析、报告和综合平台,同时还通过其模块化数据的流水型概念,集成了各种机器学习的组件和数据挖掘,并引起了商业智能和财务数据分析的注意。KNIME是基于Eclipse,用Java编写的,并且易于扩展和补充插件。其附加功能可随时添加,并且其大量的数据集成模块已包含在核心版本中。


6)R-Programming——如果我告诉你R项目,一个GNU项目,是由R(R-programming简称,以下统称R)自身编写的,你会怎么想?它主要是由C语言和FORTRAN语言编写的,并且很多模块都是由R编写的,这是一款针对编程语言和软件环境进行统计计算和制图的免费软件。R语言被广泛应用于数据挖掘,以及开发统计软件和数据分析中。近年来,易用性和可扩展性也大大提高了 R 的知名度。除了数据,它还提供统计和制图技术,包括线性和非线性建模,经典的统计测试,时间序列分析、分类、收集等等。


3. 数据分析语言三种工具


随着数据科学分析工具的发展,一方面成功解决了数据科学中的算法失效、超大规模数据可视化等一系列挑战;另一方面各具特点和优缺点。例如Mahout具有优秀的大数据处理能力,不仅处理数据量大且速度快,但可视化能力差。接下来选取R语言、RapidMiner、Mahout三种主流的数据科学分析工具,对其概述并以表格的形式对三者的主要特点进行了比较分析,工具基本情况如下。


1)R语言用于统计计算和作图的编程语言和环境,采用命令行工作方式,在GNU协议下免费发行,其源代码可供自由下载和使用。R网站CRAN上提供了大量的第三方程序包,内容涵盖了经济学、社会学、统计学、生物信息学等诸多方面,这也是为什么越来越多的各行各业的人员喜爱R的一个重要原因。针对传统分析软件的扩展性差以及Hadoop的分析功能薄弱的弱势,研究人员致力于将R语言和Hadoop的集成。R作为开源的统计分析软件,通过R与Hadoop的深度集成,把数据计算推向并行处理,使Hadoop获得强大的深度分析能力。


2)RapidMiner原名Yale,是一种用于数据挖掘、机器学习以及商业预测分析的开源计算环境。其既可以使用简单的脚本语言进行大规模进程操作,也可以通过JavaAPI或GUI模式进行操作。因为其具备GUI特性,所以对于数据挖掘的初学者比较容易入门。RapidMiner6具有友好而强大的工具箱,提供快而稳定的分析,可以在短时间内设计好一个原型,使得数据挖掘过程中的关键决策尽可能早地实现。帮助减少客户流失、进行情感分析、预测性维护以及市场直销等。


3)ApacheMahout起源于2008年,其主要目标是构建一个可伸缩的机器学习算法的资源库,它提供了一些经典的机器学习算法,旨在帮助开发人员更加方便快捷地创建智能应用程序。目前,Mahout的项目包括频繁子项挖掘、分类、聚类、推荐引擎(协同过滤)。


4. 数据挖掘三种工具


分别为:Intelligent Miner、SAS Enterpreise Miner 、SPSS Clementine,下面逐一介绍。


1)Intelligent Miner:IBM的Exterprise Miner简单易用,是理解数据挖掘的好的开始。能处理大。数据量的挖掘,功能一般,可能仅满足要求.没有数据探索功能。与其他软件接口差,只能用DB2,连接DB2以外的数据库时,如Oracle, SAS, SPSS需 要安装DataJoiner作为中间软件。难以发布。结果美观,但同样不好理解。


2)SAS Enterprise Miner:SAS完仝以统计理论为基础,功能强大,有完备的数据探索功能。但难以掌握,要求是高级统计分析专业人员.结果难以理解。价格也极其昂贵,而且是租赁模式。基本内容:支持SAS统计模块,使之具有杰出的力量和影响,它还通过大量数据挖掘算法增强了那些模块。SAS使用它的SEMMA方法学以提供一个能支持包括关联、聚类、决策树、神经元网络和统计回归在内的广阔范围的模型数据挖掘工具。


3)SPSS(Statistical Product and Service Solutions):“统计产品与服务解决方案”软件。最初软件全称为“社会科学统计软件包”。但是随着SPSS产品服务领域的扩大和服务深度的增加,SPSS公司已于2000年正式将英文全称更改为“统计产品与服务解决方案”。用作多个领域和行业,是世界上应用最广泛的专业统计软件。



您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存