大数据平台的软件有哪些.docx
《大数据平台的软件有哪些.docx》由会员分享,可在线阅读,更多相关《大数据平台的软件有哪些.docx(12页珍藏版)》请在冰点文库上搜索。
大数据平台的软件有哪些
大数据平台的软件有哪些
查询引擎一、Phoenix简介:
这是一个Java中间层,可以让开发者在ApacheHBase上执行SQL查询。
Phoenix完全使用Java编写,代码位于GitHub上,并且提供了一个客户端可嵌入的JDBC驱动。
Phoenix查询引擎会将SQL查询转换为一个或多个HBasescan,并编排执行以生成标准的JDBC结果集。
直接使用HBaseAPI、协同处理器与自定义过滤器,对于简单查询来说,其性能量级是毫秒,对于百万级别的行数来说,其性能量级是秒。
Phoenix最值得关注的一些特性有:
嵌入式的JDBC驱动,实现了大部分的接口,包括元数据API可以通过多部行键或是键/值单元对列进行建模完善的查询支持,可以使用多个谓词以及优化的扫描键DDL支持:
通过CREATETABLE、DROPTABLE及ALTERTABLE来添加/删除列版本化的模式仓库:
当写入数据时,快照查询会使用恰当的模式DML支持:
用于逐行插入的UPSERTVALUES、用于相同或不同表之间大量数据传输的UPSERTSELECT、用于删除行的DELETE通过客户端的批处理实现的有限的事务支持单表——还没有连接,同时二级索引也在开发当中紧跟ANSISQL标准二、Stinger简介:
原叫Tez,下一代Hive,Hortonworks主导开发,运行在YARN上的DAG计算框架。
某些测试下,Stinger能提升10倍左右的性能,同时会让Hive支持更多的SQL,其主要优点包括:
让用户在Hadoop获得更多的查询匹配。
其中包括类似OVER的字句分析功能,支持WHERE查询,让Hive的样式系统更符合SQL模型。
优化了Hive请求执行计划,优化后请求时间减少90%。
改动了Hive执行引擎,增加单Hive任务的被秒处理记录数。
在Hive社区中引入了新的列式文件格式(如ORC文件),提供一种更现代、高效和高性能的方式来储存Hive数据。
引入了新的运行时框架——Tez,旨在消除Hive的延时和吞吐量限制。
Tez通过消除不必要的task、障碍同步和对HDFS的读写作业来优化Hivejob。
这将优化Hadoop内部的执行链,彻底加速Hive负载处理。
三、Presto简介:
Facebook开源的数据查询引擎Presto,可对250PB以上的数据进行快速地交互式分析。
该项目始于2012年秋季开始开发,目前该项目已经在超过1000名Facebook雇员中使用,运行超过30000个查询,每日数据在1PB级别。
Facebook称Presto的性能比诸如Hive和Map*Reduce要好上10倍有多。
Presto当前支持ANSISQL的大多数特效,包括联合查询、左右联接、子查询以及一些聚合和计算函数;支持近似截然不同的计数(DISTINCTCOUNT)等。
四、Shark简介:
Shark即HiveonSpark,本质上是通过Hive的HQL解析,把HQL翻译成Spark上的RDD操作,然后通过Hive的metadata获取数据库里的表信息,实际HDFS上的数据和文件,会由Shark获取并放到Spark上运算。
Shark的特点就是快,完全兼容Hive,且可以在shell模式下使用rdd2sql()这样的API,把HQL得到的结果集,继续在scala环境下运算,支持自己编写简单的机器学习或简单分析处理函数,对HQL结果进一步分析计算。
Shark速度快的原因除了Spark平台提供的基于内存迭代计算外,在设计上还存在对Spark上进行了一定的改造,主要有partialDAGexecution:
对join优化,调节并行粒度,因为Spark本身的宽依赖和窄依赖会影响并行计算和速度基于列的压缩和存储:
把HQL表数据按列存,每列是一个array,存在JVM上,避免了JVMGC低效,而压缩和解压相关的技术是Yahoo!
提供的。
结来说,Shark是一个插件式的东西,在我现有的Spark和Hive及hadoop-client之间,在这两套都可用的情况下,Shark只要获取Hive的配置(还有metastore和exec等关键包),Spark的路径,Shark就能利用Hive和Spark,把HQL解析成RDD的转换,把数据取到Spark上运算和分析。
在SQLonHadoop这块,Shark有别于Impala,Stringer,而这些系统各有自己的设计思路,相对于对MR进行优化和改进的思路,Shark的思路更加简单明了些。
五、Pig简介:
Pig是一种编程语言,它简化了Hadoop常见的工作任务。
Pig可加载数据、表达转换数据以及存储最终结果。
Pig内置的操作使得半结构化数据变得有意义(如日志文件)。
同时Pig可扩展使用Java中添加的自定义数据类型并支持数据转换。
Pig最大的作用就是对mapreduce算法(框架)实现了一套shell脚本,类似我们通常熟悉的SQL语句,在Pig中称之为PigLatin,在这套脚本中我们可以对加载出来的数据进行排序、过滤、求和、分组(groupby)、关联(Joining),Pig也可以由用户自定义一些函数对数据集进行操作,也就是传说中的UDF(user-definedfunctions)。
六、ClouderaImpala简介:
ClouderaImpala可以直接为存储在HDFS或HBase中的Hadoop数据提供快速,交互式的SQL查询。
除了使用相同的存储平台外,Impala和ApacheHive一样也使用了相同的元数据,SQL语法(HiveSQL),ODBC驱动和用户接口(HueBeeswax),这就很方便的为用户提供了一个相似并且统一的平台来进行批量或实时查询。
ClouderaImpala是用来进行大数据查询的补充工具。
Impala并没有取代像Hive这样基于MapReduce的分布式处理框架。
Hive和其它基于MapReduce的计算框架非常适合长时间运行的批处理作业,例如那些涉及到批量Extract、Transform、Load,即需要进行ETL作业。
Impala提供了:
数据科学家或数据分析师已经熟知的SQL接口能够在ApacheHadoop的大数据中进行交互式数据查询SinglesystemforbigdataprocessingandanalyticssocustomerscanavoidcostlymodelingandETLjustforanalytics七、ApacheDrill简介:
ApacheDrill是是一个能够对大数据进行交互分析、开源的分布式系统,且基于GoogleDremel实现,它能够运行在上千个节点的服务器集群上,且能在几秒内处理PB级或者万亿条的数据记录。
Drill能够帮助企业用户快速、高效地进行Hadoop数据查询和企业级大数据分析。
Drill于2012年8月份由Apache推出。
从Drill官方对其架构的介绍中得知,其具有适于实时的分析和快速的应用开发、适于半结构化/嵌套数据的分析、兼容现有的SQL环境和ApacheHive等特征。
另外,Drill的核心模块是Drillbit服务,该服务模块包括远程访问子模块、SQL解析器、查询优化器、任务计划执行引擎、存储插件接口(DFS、HBase、Hive等的接口)、分布式缓存模块等几部分,如下图所示:
八、ApacheTajo简介:
ApacheTajo项目的目的是在HDFS之上构建一个先进的数据仓库系统。
Tajo将自己标榜为一个“大数据仓库”,但是它好像和之前介绍的那些低延迟查询引擎类似。
虽然它支持外部表和Hive数据集(通过HCatalog),但是它的重点是数据管理,提供低延迟的数据访问,以及为更传统的ETL提供工具。
它也需要在数据节点上部署Tajo特定的工作进程。
Tajo的功能包括:
ANSISQL兼容JDBC驱动集成Hivemetastore能够访问Hive数据集一个命令行客户端一个自定义函数API九、Hive简介:
hive是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张数据库表,并提供简单的sql查询功能,可以将sql语句转换为MapReduce任务进行运行。
其优点是学习成本低,可以通过类SQL语句快速实现简单的MapReduce统计,不必开发专门的MapReduce应用,十分适合数据仓库的统计分析。
流式计算一、FacebookPuma简介:
实时数据流分析二、TwitterRainbird
简介:
Rainbird一款基于Zookeeper,Cassandra,Scribe,Thrift的分布式实时统计系统,这些基础组件的基本功能如下:
Zookeeper,Hadoop子项目中的一款分布式协调系统,用于控制分布式系统中各个组件中的一致性。
Cassandra,NoSQL中一款非常出色的产品,集合了Dynamo和Bigtable特性的分布式存储系统,用于存储需要进行统计的数据,统计数据,并且提供客户端进行统计数据的查询。
(需要使用分布式Counter补丁CASSANDRA-1072)Scribe,Facebook开源的一款分布式日志收集系统,用于在系统中将各个需要统计的数据源收集到Cassandra中。
Thrift,Facebook开源的一款跨语言C/S网络通信框架,开发人员基于这个框架可以轻易地开发C/S应用。
用处Rainbird可以用于实时数据的统计:
统计网站中每一个页面,域名的点击次数内部系统的运行监控(统计被监控服务器的运行状态)记录最大值和最小值三、YahooS4简介:
S4(SimpleScalableStreamingSystem)最初是Yahoo!
为提高搜索广告有效点击率的问题而开发的一个平台,通过统计分析用户对广告的点击率,排除相关度低的广告,提升点击率。
目前该项目刚启动不久,所以也可以理解为是他们提出的一个分布式流计算(DistributedStreamComputing)的模型。
S4的设计目标是:
·提供一种简单的编程接口来处理数据流·设计一个可以在普通硬件之上可扩展的高可用集群。
·通过在每个处理节点使用本地内存,避免磁盘I/O瓶颈达到最小化延迟·使用一个去中心的,对等架构;所有节点提供相同的功能和职责。
没有担负特殊责任的中心节点。
这大大简化了部署和维护。
·使用可插拔的架构,使设计尽可能的即通用又可定制化。
·友好的设计理念,易于编程,具有灵活的弹性YahooS4官方网站>>>四、TwitterStorm简介:
Storm是Twitter开源的一个类似于Hadoop的实时数据处理框架,它原来是由BackType开发,后BackType被Twitter收购,将Storm作为Twitter的实时数据分析系统。
实时数据处理的应用场景很广泛,例如商品推荐,广告投放,它能根据当前情景上下文(用户偏好,地理位置,已发生的查询和点击等)来估计用户点击的可能性并实时做出调整。
storm的三大作用领域:
1.信息流处理(StreamProcessing)Storm可以用来实时处理新数据和更新数据库,兼具容错性和可扩展性,它可以用来处理源源不断的消息,并将处理之后的结果保存到持久化介质中。
2.连续计算(ContinuousComputation)Storm可以进行连续查询并把结果即时反馈给客户,比如将Twitter上的热门话题发送到客户端。
3.分布式远程过程调用(DistributedRPC)除此之外,Storm也被广泛用于以下方面:
精确的广告推送实时日志的处理TwitterStorm官方网站>>>迭代计算一、ApacheHama简介:
ApacheHama是一个纯BSP(BulkSynchronousParallel)计算框架,模仿了Google的Pregel。
用来处理大规模的科学计算,特别是矩阵和图计算。
建立在Hadoop上的分布式并行计算模型。
基于Map/Reduce和BulkSynchronous的实现框架。
运行环境需要关联Zookeeper、HBase、HDFS组件。
Hama中有2个主要的模型:
–矩阵计算(Matrixpackage)–面向图计算(Graphpackage)ApacheHama官方网站>>>二、ApacheGiraph代码托管地址:
GitHub简介:
ApacheGiraph是一个可伸缩的分布式迭代图处理系统,灵感来自BSP(bulksynchronousparallel)和Google的Pregel,与它们区别于则是是开源、基于Hadoop的架构等。
Giraph处理平台适用于运行大规模的逻辑计算,比如页面排行、共享链接、基于个性化排行等。
Giraph专注于社交图计算,被Facebook作为其OpenGraph工具的核心,几分钟内处理数万亿次用户及其行为之间的连接。
三、HaLoop简介:
迭代的MapReduce,HaLoop——适用于迭代计算的Hadoop。
Hadoop与HaLoop的不同与Hadoop比较的四点改变:
1.提供了一套新的编程接口,更加适用于迭代计算;HaLoop给迭代计算一个抽象的递归公式:
的master进行job内的循环控制,直到迭代计算结束;Scheduler也进行了修改,使得任务能够尽量满足datanodes对数据进行cache并index索引,索引也以文件的形式保存在本地磁盘。
HaLoop官网>>>四、Twister简介:
Twister,迭代式MapReduce框架,Twister是由一个印度人开发的,其架构如下:
在Twister中,大文件不会自动被切割成一个一个block,因而用户需提前把文件分成一个一个小文件,以供每个task处理。
在map阶段,经过map()处理完的结果被放在分布式内存中,然后通过一个brokernetwork(NaradaBroking系统)将数据push给各个reducetask(Twister假设内存足够大,中间数据可以全部放在内存中);在reduce阶段,所有reducetask产生的结果通过一个combine操作进行归并,此时,用户可以进行条件判定,确定迭代是否结束。
combine后的数据直接被送给maptask,开始新一轮的迭代。
为了提高容错性,Twister每隔一段时间会将maptask和reducetask产生的结果写到磁盘上,这样,一旦某个task失败,它可以从最近的备份中获取输入,重新计算。
为了避免每次迭代重新创建task,Twister维护了一个taskpool,每次需要task时直接从pool中取。
在Twister中,所有消息和数据都是通过brokernetwork传递的,该brokernetwork是一个独立的模块,目前支持NaradaBroking和ActiveMQ。
离线计算一、HadoopMapReduce简介:
MapReduce是一种编程模型,用于大规模数据集(大于1TB)的并行运算。
概念”Map(映射)”和”Reduce(归约)”,和它们的主要思想,都是从函数式编程语言里借来的,还有从矢量编程语言里借来的特性。
它极大地方便了编程人员在不会分布式并行编程的情况下,将自己的程序运行在分布式系统上。
当前的软件实现是指定一个Map(映射)函数,用来把一组键值对映射成一组新的键值对,指定并发的Reduce(归约)函数,用来保证所有映射的键值对中的每一个共享相同的键组。
HadoopMapReduce官方网站>>>二、BerkeleySpark简介:
Spark是UCBerkeleyAMPlab所开源的类HadoopMapReduce的通用的并行,Spark,拥有HadoopMapReduce所具有的优点;但不同于MapReduce的是Job中间输出结果可以保存在内存中,从而不再需要读写HDFS,因此Spark能更好地适用于数据挖掘与机器学习等需要迭代的mapreduce的算法。
三、DataTorrent简介:
DataTorrent基于Hadoop构建,是一个实时的、有容错能力的数据流式处理和分析平台,它使用本地Hadoop应用程序,而这些应用程序可以与执行其它任务,如批处理,的应用程序共存。
该平台的架构如下图所示:
相关文章:
DataTorrent每秒处理超过10亿个实时事件DataTorrent将数据分析速度从“实时”提升至“现在时”键值存储一、LevelDB贡献者:
Google简介:
Leveldb是一个google实现的非常高效的kv数据库,目前的版本能够支持billion级别的数据量了。
在这个数量级别下还有着非常高的性能,主要归功于它的良好的设计。
特别是LMS算法。
LevelDB是单进程的服务,性能非常之高,在一台4核Q6600的CPU机器上,每秒钟写数据超过40w,而随机读的性能每秒钟超过10w。
此处随机读是完全命中内存的速度,如果是不命中速度大大下降。
LevelDB官方网站>>>二、RocksDB贡献者:
facebook简介:
RocksDB虽然在代码层面上是在LevelDB原有的代码上进行开发的,但却借鉴了ApacheHBase的一些好的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贡献者:
FacebookHyperDex是一个分布式、可搜索的键值存储系统,特性如下:
分布式KV存储,系统性能能够随节点数目线性扩展吞吐和延时都能秒杀现在风头正劲的MonogDB,吞吐甚至强于Redis使用了hyperspacehashing技术,使得对存储的K-V的任意属性进行查询成为可能官网:
成常用的序化框架如:
ProtocolBuffers、Thrift、Avro和JavaSerialization。
数据项都被标识版本能够在发生故障时尽量保持数据的完整性而不会影响系统的可用性。
每个节点相互独立,互不影响。
支持可插拔的数据放置策略官网:
tair分为持久化和非持久化两种使用方式.非持久化的tair可以看成是一个分布式缓存.持久化的tair将数据存放于磁盘中.为了解决磁盘损坏导致数据丢失,tair可以配置数据的备份数目,tair自动将一份数据的不同备份放到不同的主机上,当有主机发生异常,无法正常提供服务的时候,其于的备份会继续提供服务.tair的总体结构tair作为一个分布式系统,是由一个中心控制节点和一系列的服务节点组成.我们称中心控制节点为configserver.服务节点是dataserver.configserver负责管理所有的dataserver,维护dataserver的状态信息.dataserver对外提供各种数据服务,并以心跳的形式将自身状况汇报给configserver.configserver是控制点,而且是单点,目前采用一主一备的形式来保证其可靠性.所有的dataserver地位都是等价的.八、ApacheAccumuloApacheAccumulo是一个可靠的、可伸缩的、高性能的排序分布式的Key-Value存储解决方案,基于单元访问控制以及可定制的服务器端处理。
Accumulo使用GoogleBigTable设计思路,基于ApacheHadoop、Zookeeper和Thrift构建。
官网:
//九、RedisRedis是一个高性能的key-value存储系统,和Memcached类似,它支持存储的value类型相对更多,包括string(字符串)、list(链表)、set(集合)和zset(有序集合)。
与memcached一样,为了保证效率,数据都是缓存在内存中,区别的是Redis会周期性的把更新的数据写入磁盘或者把修改操作写入追加的记录文件,并且在此基础上实现了主从同步。
Redis的出现,很大程度补偿了memcached这类key/value存储的不足,在部分场合可以对关系数据库起到很好的补充作用。
它提供了Python、Ruby、Erlang、PHP客户端,使用很方便。
官网:
//表格存储一、OceanBase贡献者:
阿里巴巴相关文章:
26页PPT解密支撑支付宝交易的分布式数据库系统——OceanBase简介:
OceanBase是一个支持海量数据的高性能分布式数据库系统,实现了数千亿条记录、数百TB数据上的跨行跨表事务,由淘宝核心系统研发部、运维、DBA、广告、应用研发等部门共同完成。
在设计和实现OceanBase的时候暂时摒弃了不紧急的DBMS的功能,例如临时表,视图(view),研发团队把有限的资源集中到关键点上,当前OceanBase主要解决数据更新一致性、高性能的跨表读事务、范围查询、join、数据全量及增量dump、批量数据导入。
目前OceanBase已经应用于淘宝收藏夹,用于存储淘宝用户收藏条目和具体的商品、店铺信息,每天支持4~5千万的更新操作。
等待上线的应用还包括CTU、SNS等,每天更新超过20亿,更新数据量超过,并会逐步在淘宝内部推广。
OceanBase在Github开源,开源版本为Revision:
12336。
官网:
//二、AmazonSimpleDB贡献者:
亚马逊AmazonSimpleDB是一个分散式数据库,以Erlang撰写。
同与AmazonEC2和亚马逊的S3一样作为一项Web服务,属于亚马逊网络服务的一部分。
正如EC2和S3,SimpleDB的按照存储量,在互联网上的传输量和吞吐量收取费用。
在2008年12月1日,亚马逊推出了新的定价策略,提供了免费1GB的数据和25机器小时的自由层(FreeTire)。
将其中的数据转移到其他亚马逊网络服务是免费的。
它是一个可大规模伸缩、用Erlang编写的高可用数据存储。
官网:
//三、Vertica贡献者:
惠普简介:
惠普2011年2月份起始3月21号完成收购Vertica。
Vertica基于列存储。
基于列存储的设计相比传统面向行存储的数据库具有巨大的优势。
同时Vertica支持MPP(massivelyparallelprocessing)等技术,查询数据时Vertica只需取得需要的列,而不是被选择行的所有数据,其平均性能可提高50x-1000x倍。
(查询性能高速度快)Vertica的设计者多次表示他们的产品围绕着高性能和高可用性设计。
由于对MPP技术的支持,可提供对粒度,可伸缩性和可用性的优势。
每个节点完全独立运作,完全无共享架构,降低对共享资源的系统竞争。
Vertica的数据库使用标准的SQL查询,同时Vertica的架构非常适合云计算,包括虚拟化,分布式多节点运行等,并且可以和Hadoop/MapReduce进行集成。
Vertica官网:
//四、Cassandra贡献者:
facebook相关文章:
开源分布式NoSQL数据库系统——CassandraCassandra与HBase的大数据对决谁是胜者简介:
Cassandra是一套开源分布式NoSQL数据库系统。
它最初由Facebook开发,用于储存收件箱等简单格式数据,集GoogleBigTable的数据模型与AmazonDynamo的完全分布式的架构于一身Facebook于2008将Cassandra开源,此后,由于Cassandra良好的可扩放性,被D