一共81个,开源大数据处理工具汇总(上)
Hadoop与HaLoop的不同 与Hadoop比较的四点改变: 1.提供了一套新的编程接口,更加适用于迭代计算; HaLoop给迭代计算一个抽象的递归公式:
2.HaLoop的master进行job内的循环控制,直到迭代计算结束; 3.Task Scheduler也进行了修改,使得任务能够尽量满足data locality 4.slave nodes对数据进行cache并index索引,索引也以文件的形式保存在本地磁盘。 HaLoop官网>>> 四、Twister 简介:Twister, 迭代式MapReduce框架,Twister是由一个印度人开发的,其架构如下:
在Twister中,大文件不会自动被切割成一个一个block,因而用户需提前把文件分成一个一个小文件,以供每个task处理。在map阶段,经过map()处理完的结果被放在分布式内存中,然后通过一个broker network(NaradaBroking系统)将数据push给各个reduce task(Twister假设内存足够大,中间数据可以全部放在内存中);在reduce阶段,所有reduce task产生的结果通过一个combine操作进行归并,此时,用户可以进行条件判定, 确定迭代是否结束。combine后的数据直接被送给map task,开始新一轮的迭代。为了提高容错性,Twister每隔一段时间会将map task和reduce task产生的结果写到磁盘上,这样,一旦某个task失败,它可以从最近的备份中获取输入,重新计算。 为了避免每次迭代重新创建task,Twister维护了一个task pool,每次需要task时直接从pool中取。在Twister中,所有消息和数据都是通过broker network传递的,该broker network是一个独立的模块,目前支持NaradaBroking和ActiveMQ。 离线计算一、Hadoop?MapReduce 简介:MapReduce是一种编程模型,用于大规模数据集(大于1TB)的并行运算。概念”Map(映射)”和”Reduce(归约)”,和它们的主要思想,都是从函数式编程语言里借来的,还有从矢量编程语言里借来的特性。它极大地方便了编程人员在不会分布式并行编程的情况下,将自己的程序运行在分布式系统上。 当前的软件实现是指定一个Map(映射)函数,用来把一组键值对映射成一组新的键值对,指定并发的Reduce(归约)函数,用来保证所有映射的键值对中的每一个共享相同的键组。 Hadoop?MapReduce官方网站>>> 二、Berkeley Spark 简介:Spark是UC Berkeley AMP lab所开源的类Hadoop MapReduce的通用的并行,Spark,拥有Hadoop MapReduce所具有的优点;但不同于MapReduce的是Job中间输出结果可以保存在内存中,从而不再需要读写HDFS,因此Spark能更好地适用于数据挖掘与机器学习等需要迭代的map reduce的算法。 三、DataTorrent 简介:DataTorrent基于Hadoop 2.x构建,是一个实时的、有容错能力的数据流式处理和分析平台,它使用本地Hadoop应用程序,而这些应用程序可以与执行其它任务,如批处理,的应用程序共存。该平台的架构如下图所示:
相关文章:DataTorrent 1.0每秒处理超过10亿个实时事件 DataTorrent 将数据分析速度从“实时”提升至“现在时” 键值存储一、LevelDB
贡献者:Google 简介:Leveldb是一个google实现的非常高效的kv数据库,目前的版本1.2能够支持billion级别的数据量了。 在这个数量级别下还有着非常高的性能,主要归功于它的良好的设计。特别是LMS算法。 LevelDB 是单进程的服务,性能非常之高,在一台4核Q6600的CPU机器上,每秒钟写数据超过40w,而随机读的性能每秒钟超过10w。 此处随机读是完全命中内存的速度,如果是不命中 速度大大下降。 LevelDB官方网站>>> 二、RocksDB 贡献者:facebook 简介:RocksDB虽然在代码层面上是在LevelDB原有的代码上进行开发的,但却借鉴了Apache HBase的一些好的idea。在云计算横行的年代,开口不离Hadoop,RocksDB也开始支持HDFS,允许从HDFS读取数据。RocksDB支持一次获取多个K-V,还支持Key范围查找。LevelDB只能获取单个Key。 RocksDB除了简单的Put、Delete操作,还提供了一个Merge操作,说是为了对多个Put操作进行合并。 RocksDB提供一些方便的工具,这些工具包含解析sst文件中的K-V记录、解析MANIFEST文件的内容等。RocksDB支持多线程合并,而LevelDB是单线程合并的。 RocksDB官方网站>>> 三、HyperDex 贡献者:Facebook
HyperDex是一个分布式、可搜索的键值存储系统,特性如下:
官网:http://hyperdex.org/ 四、TokyoCabinet
官网:http://project-voldemort.com/ 六、Amazon?Dynamo 贡献者:亚马逊 简介:Amazon Dynamo 是一个经典的分布式Key-Value 存储系统,具备去中心化,高可用性,高扩展性的特点,但是为了达到这个目标在很多场景中牺牲了一致性。Dynamo在Amazon中得到了成功的应用,能够跨数据中心部署于上万个结点上提供服务,它的设计思想也被后续的许多分布式系统借鉴。如近来火热的Cassandra,实际上就是基本照搬了Dynamo的P2P架构,同时融合了BigTable的数据模型及存储算法。 Amazon Dynamo官方网站>>> 七、Tair 贡献者:淘宝 简介:tair 是淘宝自己开发的一个分布式 key/value 存储引擎. tair 分为持久化和非持久化两种使用方式. 非持久化的 tair 可以看成是一个分布式缓存. 持久化的 tair 将数据存放于磁盘中. 为了解决磁盘损坏导致数据丢失,tair 可以配置数据的备份数目,tair 自动将一份数据的不同备份放到不同的主机上,当有主机发生异常,无法正常提供服务的时候,其于的备份会继续提供服务. tair 的总体结构九、Redis
Redis是一个高性能的key-value存储系统,和Memcached类似,它支持存储的value类型相对更多,包括string(字符串)、list(链表)、set(集合)和zset(有序集合)。与memcached一样,为了保证效率,数据都是缓存在内存中,区别的是Redis会周期性的把更新的数据写入磁盘或者把修改操作写入追加的记录文件,并且在此基础上实现了主从同步。 Redis的出现,很大程度补偿了memcached这类key/value存储的不足,在部分场合可以对关系数据库起到很好的补充作用。它提供了Python、Ruby、Erlang、PHP客户端,使用很方便。 官网:http://redis.io/ ? 表格存储?一、OceanBase 贡献者:阿里巴巴 相关文章:26页PPT解密支撑支付宝交易的分布式数据库系统——OceanBase 简介:OceanBase是一个支持海量数据的高性能分布式数据库系统,实现了数千亿条记录、数百TB数据上的跨行跨表事务,由淘宝核心系统研发部、运维、DBA、广告、应用研发等部门共同完成。在设计和实现OceanBase的时候暂时摒弃了不紧急的DBMS的功能,例如临时表,视图(view),研发团队把有限的资源集中到关键点上,当前 OceanBase主要解决数据更新一致性、高性能的跨表读事务、范围查询、join、数据全量及增量dump、批量数据导入。 目前OceanBase已经应用于淘宝收藏夹,用于存储淘宝用户收藏条目和具体的商品、店铺信息,每天支持4~5千万的更新操作。等待上线的应用还包括CTU、SNS等,每天更新超过20亿,更新数据量超过2.5TB,并会逐步在淘宝内部推广。 OceanBase 0.3.1在Github开源,开源版本为Revision:12336。 官网:http://alibaba.github.io/oceanbase/ 二、Amazon?SimpleDB 贡献者:亚马逊 Amazon SimpleDB是一个分散式数据库,以Erlang撰写。同与Amazon EC2和亚马逊的S3一样作为一项Web 服务,属于亚马逊网络服务的一部分。
正如EC2和S3,SimpleDB的按照存储量,在互联网上的传输量和吞吐量收取费用。 在2008年12月1日,亚马逊推出了新的定价策略,提供了免费1 GB的数据和25机器小时的自由层(Free Tire)。 将其中的数据转移到其他亚马逊网络服务是免费的。 它是一个可大规模伸缩、用 Erlang 编写的高可用数据存储。 官网:http://aws.amazon.com/cn/simpledb/ 三、Vertica 贡献者:惠普 简介:惠普2011年2月份起始3月21号完成收购Vertica。Vertica基于列存储。基于列存储的设计相比传统面向行存储的数据库具有巨大的优势。同时Vertica支持MPP(massively parallel processing)等技术,查询数据时Vertica只需取得需要的列,而不是被选择行的所有数据,其平均性能可提高50x-1000x倍。(查询性能高速度快) Vertica的设计者多次表示他们的产品围绕着高性能和高可用性设计。由于对MPP技术的支持,可提供对粒度,可伸缩性和可用性的优势。每个节点完全独立运作,完全无共享架构,降低对共享资源的系统竞争。 Vertica的数据库使用标准的SQL查询,同时Vertica的架构非常适合云计算,包括虚拟化,分布式多节点运行等,并且可以和Hadoop/MapReduce进行集成。 Vertica官网:http://www.vertica.com/ 四、Cassandra 相关文章:开源分布式NoSQL数据库系统——Cassandra? ?Cassandra与HBase的大数据对决 谁是胜者? 简介:Cassandra是一套开源分布式NoSQL数据库系统。它最初由Facebook开发,用于储存收件箱等简单格式数据,集GoogleBigTable的数据模型与Amazon Dynamo的完全分布式的架构于一身Facebook于2008将 Cassandra 开源,此后,由于Cassandra良好的可扩放性,被Digg、Twitter等知名Web 2.0网站所采纳,成为了一种流行的分布式结构化数据存储方案。
Cassandra是一个混合型的非关系的数据库,类似于Google的BigTable。其主要功能比Dynamo (分布式的Key-Value存储系统)更丰富,但支持度却不如文档存储MongoDB(介于关系数据库和非关系数据库之间的开源产品,是非关系数据库当中功能最丰富,最像关系数据库的。支持的数据结构非常松散,是类似json的bjson格式,因此可以存储比较复杂的数据类型)。Cassandra最初由Facebook开发,后转变成了开源项目。它是一个网络社交云计算方面理想的数据库。以Amazon专有的完全分布式的Dynamo为基础,结合了Google BigTable基于列族(Column Family)的数据模型。P2P去中心化的存储。很多方面都可以称之为Dynamo 2.0。 Cassandra官网:http://cassandra.apache.org/ ?五、HyperTable
简介:Hypertable是一个开源、高性能、可伸缩的数据库,它采用与Google的Bigtable相似的模型。在过去数年中,Google为在PC集群 上运行的可伸缩计算基础设施设计建造了三个关键部分。
第一个关键的基础设施是Google File System(GFS),这是一个高可用的文件系统,提供了一个全局的命名空间。它通过跨机器(和跨机架)的文件数据复制来达到高可用性,并因此免受传统 文件存储系统无法避免的许多失败的影响,比如电源、内存和网络端口等失败。第二个基础设施是名为Map-Reduce的计算框架,它与GFS紧密协作,帮 助处理收集到的海量数据。第三个基础设施是Bigtable,它是传统数据库的替代。Bigtable让你可以通过一些主键来组织海量数据,并实现高效的 查询。Hypertable是Bigtable的一个开源实现,并且根据我们的想法进行了一些改进。 HyperTable官网:http://hypertable.org/ 六、FoundationDB 简介:支持ACID事务处理的NoSQL数据库,提供非常好的性能、数据一致性和操作弹性。 2015年1月2日,FoundationDB已经发布了其key-value数据库的3.0版本,主要专注于可伸缩性和性能上的改善。FoundationDB的CEO David Rosenthal在一篇博客上宣布了新的版本,其中展示了FoundationDB 3.0在可伸缩性方面的数据,它可以在一个32位的c3.8xlarge EC2实例上每秒写入1440万次;这在性能上是之前版本的36倍。 除了性能和可伸缩性的改善之外,FoundationDB 3.0还包含了对监控支持的改善。这种监控机制不仅仅是简单的机器检查,它添加了对多种潜在的硬件瓶颈的诊断,并且把那些高层级的信息整合到现有监控基础架构中。 官网:https://foundationdb.com/ 七:HBase 贡献者:?Fay Chang 所撰写的“Bigtable
简介:HBase是一个分布式的、面向列的开源数据库,该技术来源于 Fay Chang 所撰写的Google论文“Bigtable:一个结构化数据的分布式存储系统”。就像Bigtable利用了Google文件系统(File System)所提供的分布式数据存储一样,HBase在Hadoop之上提供了类似于Bigtable的能力。HBase是Apache的Hadoop项目的子项目。HBase不同于一般的关系数据库,它是一个适合于非结构化数据存储的数据库。另一个不同的是HBase基于列的而不是基于行的模式。 官网:http://hbase.apache.org/ 文件存储一、CouchDB 简介:CouchDB是用Erlang开发的面向文档的数据库系统,最近刚刚发布了1.0版本(2010年7月14日)。CouchDB不是一个传统的关系数据库,而是面向文档的数据库,其数据存储方式有点类似lucene的index文件格式,CouchDB最大的意义在于它是一个面向web应用的新一代存储系统,事实上,CouchDB的口号就是:下一代的Web应用存储系统。
特点: 一、CouchDB是分布式的数据库,他可以把存储系统分布到n台物理的节点上面,并且很好的协调和同步节点之间的数据读写一致性。这当然也得靠Erlang无与伦比的并发特性才能做到。对于基于web的大规模应用文档应用,分布式可以让它不必像传统的关系数据库那样分库拆表,在应用代码层进行大量的改动。 二、CouchDB是面向文档的数据库,存储半结构化的数据,比较类似lucene的index结构,特别适合存储文档,因此很适合CMS,电话本,地址本等应用,在这些应用场合,文档数据库要比关系数据库更加方便,性能更好。 三、CouchDB支持REST API,可以让用户使用JavaScript来操作CouchDB数据库,也可以用JavaScript编写查询语句,我们可以想像一下,用AJAX技术结合CouchDB开发出来的CMS系统会是多么的简单和方便。 其实CouchDB只是Erlang应用的冰山一角,在最近几年,基于Erlang的应用也得到的蓬勃的发展,特别是在基于web的大规模,分布式应用领域,几乎都是Erlang的优势项目。 官网:http://couchdb.apache.org/ 二、MongoDB 简介:MongoDB 是一个基于分布式文件存储的数据库。由C++语言编写。旨在为WEB应用提供可扩展的高性能数据存储解决方案。 MongoDB是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。他支持的数据结构非常松散,是类似json的bson格式,因此可以存储比较复杂的数据类型。Mongo最大的特点是他支持的查询语言非常强大,其语法有点类似于面向对象的查询语言,几乎可以实现类似关系数据库单表查询的绝大部分功能,而且还支持对数据建立索引。 相关文章:MongoDB的基本特性与内部构造??大数据吃香 创业公司MongoDB估值达16亿美元
特点 它的特点是高性能、易部署、易使用,存储数据非常方便。主要功能特性有: *面向集合存储,易存储对象类型的数据。 mongodb集群参考 *模式自由。 *支持动态查询。 *支持完全索引,包含内部对象。 *支持查询。 *支持复制和故障恢复。 *使用高效的二进制数据存储,包括大型对象(如视频等)。 *自动处理碎片,以支持云计算层次的扩展性。 *支持RUBY,PYTHON,JAVA,C++,PHP,C#等多种语言。 *文件存储格式为BSON(一种JSON的扩展)。 *可通过网络访问。 官网:https://www.mongodb.org/ 三、Tachyon 贡献者:Haoyuan Li(李浩源)
简介:Tachyon是一个分布式内存文件系统,可以在集群里以访问内存的速度来访问存在tachyon里的文件。把Tachyon是架构在最底层的分布式文件存储和上层的各种计算框架之间的一种中间件。主要职责是将那些不需要落地到DFS里的文件,落地到分布式内存文件系统中,来达到共享内存,从而提高效率。同时可以减少内存冗余,GC时间等。
Tachyon架构 Tachyon的架构是传统的Master—slave架构,这里和Hadoop类似,TachyonMaster里WorkflowManager是 Master进程,因为是为了防止单点问题,通过Zookeeper做了HA,可以部署多台Standby Master。Slave是由Worker Daemon和Ramdisk构成。这里个人理解只有Worker Daemon是基于JVM的,Ramdisk是一个off heap memory。Master和Worker直接的通讯协议是Thrift。 下图来自Tachyon的作者Haoyuan Li:
下载地址:https://github.com/amplab/tachyon 四、KFS 简介:GFS的C++开源版本,Kosmos distributed file system (KFS)是一个专门为数据密集型应用(搜索引擎,数据挖掘等)而设计的存储系统,类似于Google的GFS和Hadoop的HDFS分布式文件系统。 KFS使用C++实现,支持的客户端包括C++,Java和Python。KFS系统由三部分组成,分别是metaserver、chunkserver和client library。 官网:http://code.google.com/p/kosmosfs/ 五、HDFS
简介:Hadoop分布式文件系统(HDFS)被设计成适合运行在通用硬件(commodity hardware)上的分布式文件系统。它和现有的分布式文件系统有很多共同点。但同时,它和其他的分布式文件系统的区别也是很明显的。HDFS是一个高度容错性的系统,适合部署在廉价的机器上。HDFS能提供高吞吐量的数据访问,非常适合大规模数据集上的应用。HDFS放宽了一部分POSIX约束,来实现流式读取文件系统数据的目的。HDFS在最开始是作为Apache Nutch搜索引擎项目的基础架构而开发的。HDFS是Apache Hadoop Core项目的一部分。 官网:http://hadoop.apache.org/ 资源管理一、Twitter?Mesos 开发者:Twitter研发人员John Oskasson
简介:Apache Mesos是由加州大学伯克利分校的AMPLab首先开发的一款开源群集管理软件,支持Hadoop、ElasticSearch、Spark、Storm 和Kafka等架构,由于其开源性质越来越受到一些大型云计算公司的青睐,例如Twitter、Facebook等。 参考文章:Mesos渐入主流,Twitter模式有望“无限复制”-CSDN.NET 官网:http://mesos.apache.org/ 二、Hadoop Yarn Hadoop 新 MapReduce 框架 Yarn。为从根本上解决旧 MapReduce 框架的性能瓶颈,促进 Hadoop 框架的更长远发展,从 0.23.0 版本开始,Hadoop 的 MapReduce 框架完全重构,发生了根本的变化。新的 Hadoop MapReduce 框架命名为 MapReduceV2 或者叫 Yarn,其架构图如下图所示:
Yarn 框架相对于老的 MapReduce 框架什么优势呢?我们可以看到: 1、这个设计大大减小了 JobTracker(也就是现在的 ResourceManager)的资源消耗,并且让监测每一个 Job 子任务 (tasks) 状态的程序分布式化了,更安全、更优美。 2、在新的 Yarn 中,ApplicationMaster 是一个可变更的部分,用户可以对不同的编程模型写自己的 AppMst,让更多类型的编程模型能够跑在 Hadoop 集群中,可以参考 hadoop Yarn 官方配置模板中的 mapred-site.xml 配置。 3、对于资源的表示以内存为单位 ( 在目前版本的 Yarn 中,没有考虑 cpu 的占用 ),比之前以剩余 slot 数目更合理。 4、老的框架中,JobTracker 一个很大的负担就是监控 job 下的 tasks 的运行状况,现在,这个部分就扔给 ApplicationMaster 做了,而 ResourceManager 中有一个模块叫做 ApplicationsMasters( 注意不是 ApplicationMaster),它是监测 ApplicationMaster 的行状况,如果出问题,会将其在其他机器上重启。 5、Container 是 Yarn 为了将来作资源隔离而提出的一个框架。这一点应该借鉴了 Mesos 的工作,目前是一个框架,仅仅提供 java 虚拟机内存的隔离,hadoop 团队的设计思路应该后续能支持更多的资源调度和控制,既然资源表示成内存量,那就没有了之前的 map slot/reduce slot 分开造成集群资源闲置的尴尬情况。 官网:http://hadoop.apache.org/ 第二部分将整合大数据日志收集系统、消息系统、集群管理、基础设施、监控管理等开源工具。并将于3月12日发布,尽请期待。 (编辑:晋中站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |