关于大数据平台的软件的总列

查询引擎

一、Phoenix

简介:这是一个 Java 中间层,可以让开发者在 Apache HBase 上执行 SQL 查询。Phoenix 完全使用 Java 编写,代码位于 GitHub 上,并且提供了一个客户端可嵌入的 JDBC 驱动。

Phoenix 查询引擎会将 SQL 查询转换为一个或多个 HBase scan,并编排执行以生成标准的 JDBC 结果集。直接使用 HBase API、协同处理器与自定义过滤器,对于简单查询来说,其性能量级是毫秒,对于百万级别的行数来说,其性能量级是秒。

Phoenix 最值得关注的一些特性有:

❶嵌入式的 JDBC 驱动,实现了大部分的 java.sql 接口,包括元数据 API❷可以通过多部行键或是键 / 值单元对列进行建模❸完善的查询支持,可以使用多个谓词以及优化的扫描键❹DDL 支持:通过 CREATE TABLE、DROP TABLE 及 ALTER TABLE 来添加 / 删除列❺版本化的模式仓库:当写入数据时,快照查询会使用恰当的模式❻DML 支持:用于逐行插入的 UPSERT VALUES、用于相同或不同表之间大量数据传输的 UPSERT ❼SELECT、用于删除行的 DELETE❽通过客户端的批处理实现的有限的事务支持❾单表 —— 还没有连接,同时二级索引也在开发当中➓紧跟 ANSI SQL 标准

二、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 的读写作业来优化 Hive job。这将优化 Hadoop 内部的执行链,彻底加速 Hive 负载处理。【大数据开发学习资料领取方式】:加入大数据技术学习交流扣扣群 522189307,点击加入群聊,私信管理员即可免费领取

三、Presto

简介:Facebook 开源的数据查询引擎 Presto ,可对 250PB 以上的数据进行快速地交互式分析。该项目始于 2012 年秋季开始开发,目前该项目已经在超过 1000 名 Facebook 雇员中使用,运行超过 30000 个查询,每日数据在 1PB 级别。Facebook 称 Presto 的性能比诸如 Hive 和 Map*Reduce 要好上 10 倍有多。

Presto 当前支持 ANSI SQL 的大多数特效,包括联合查询、左右联接、子查询以及一些聚合和计算函数;支持近似截然不同的计数 (DISTINCT COUNT) 等。

四、Shark

简介:Shark 即 Hive on Spark,本质上是通过 Hive 的 HQL 解析,把 HQL 翻译成 Spark 上的 RDD 操作,然后通过 Hive 的 metadata 获取数据库里的表信息,实际 HDFS 上的数据和文件,会由 Shark 获取并放到 Spark 上运算。Shark 的特点就是快,完全兼容 Hive,且可以在 shell 模式下使用 rdd2sql () 这样的 API,把 HQL 得到的结果集,继续在 scala 环境下运算,支持自己编写简单的机器学习或简单分析处理函数,对 HQL 结果进一步分析计算。

❶Shark 速度快的原因除了 Spark 平台提供的基于内存迭代计算外,在设计上还存在对 Spark 上进行了一定的改造,主要有

❷partial DAG execution:对 join 优化,调节并行粒度,因为 Spark 本身的宽依赖和窄依赖会影响并行计算和速度

基于列的压缩和存储:把 HQL 表数据按列存,每列是一个 array,存在 JVM 上,避免了 JVM GC 低效,而压缩和解压相关的技术是 Yahoo! 提供的。

结来说,Shark 是一个插件式的东西,在我现有的 Spark 和 Hive 及 hadoop-client 之间,在这两套都可用的情况下,Shark 只要获取 Hive 的配置(还有 metastore 和 exec 等关键包),Spark 的路径,Shark 就能利用 Hive 和 Spark,把 HQL 解析成 RDD 的转换,把数据取到 Spark 上运算和分析。在 SQL on Hadoop 这块,Shark 有别于 Impala,Stringer,而这些系统各有自己的设计思路,相对于对 MR 进行优化和改进的思路,Shark 的思路更加简单明了些。

五、Pig

简介:Pig 是一种编程语言,它简化了 Hadoop 常见的工作任务。Pig 可加载数据、表达转换数据以及存储最终结果。Pig 内置的操作使得半结构化数据变得有意义(如日志文件)。同时 Pig 可扩展使用 Java 中添加的自定义数据类型并支持数据转换。

Pig 最大的作用就是对 mapreduce 算法 (框架) 实现了一套 shell 脚本 ,类似我们通常熟悉的 SQL 语句,在 Pig 中称之为 Pig Latin,在这套脚本中我们可以对加载出来的数据进行排序、过滤、求和、分组 (group by)、关联 (Joining),Pig 也可以由用户自定义一些函数对数据集进行操作,也就是传说中的 UDF (user-defined functions)。

六、Cloudera Impala

简介:Cloudera Impala 可以直接为存储在 HDFS 或 HBase 中的 Hadoop 数据提供快速,交互式的 SQL 查询。除了使用相同的存储平台外, Impala 和 Apache Hive 一样也使用了相同的元数据,SQL 语法(Hive SQL),ODBC 驱动和用户接口(Hue Beeswax),这就很方便的为用户提供了一个相似并且统一的平台来进行批量或实时查询。

Cloudera Impala 是用来进行大数据查询的补充工具。 Impala 并没有取代像 Hive 这样基于 MapReduce 的分布式处理框架。Hive 和其它基于 MapReduce 的计算框架非常适合长时间运行的批处理作业,例如那些涉及到批量 Extract、Transform、Load ,即需要进行 ETL 作业。

Impala 提供了

❶数据科学家或数据分析师已经熟知的 SQL 接口

❷能够在 Apache Hadoop 的大数据中进行交互式数据查询

❸ Single system for big data processing and analytics so customers can avoid costly modeling and ETL just for analytics

七、Apache Drill

简介:Apache Drill 是是一个能够对大数据进行交互分析、开源的分布式系统,且基于 Google Dremel 实现,它能够运行在上千个节点的服务器集群上,且能在几秒内处理 PB 级或者万亿条的数据记录。Drill 能够帮助企业用户快速、高效地进行 Hadoop 数据查询和企业级大数据分析。Drill 于 2012 年 8 月份由 Apache 推出。

从 Drill 官方对其架构的介绍中得知,其具有适于实时的分析和快速的应用开发、适于半结构化 / 嵌套数据的分析、兼容现有的 SQL 环境和 Apache Hive 等特征。另外,Drill 的核心模块是 Drillbit 服务,该服务模块包括远程访问子模块、SQL 解析器、查询优化器、任务计划执行引擎、存储插件接口(DFS、HBase、Hive 等的接口)、分布式缓存模块等几部分,如下图所示:

八、Apache Tajo

简介:Apache Tajo 项目的目的是在 HDFS 之上构建一个先进的数据仓库系统。Tajo 将自己标榜为一个 “大数据仓库”,但是它好像和之前介绍的那些低延迟查询引擎类似。虽然它支持外部表和 Hive 数据集(通过 HCatalog),但是它的重点是数据管理,提供低延迟的数据访问,以及为更传统的 ETL 提供工具。它也需要在数据节点上部署 Tajo 特定的工作进程。

Tajo 的功能包括:

❶ANSI SQL 兼容❷JDBC 驱动❸集成 Hive metastore 能够访问 Hive 数据集❹一个命令行客户端❺一个自定义函数 API

九、Hive

简介:hive 是基于 Hadoop 的一个数据仓库工具,可以将结构化的数据文件映射为一张数据库表,并提供简单的 sql 查询功能,可以将 sql 语句转换为 MapReduce 任务进行运行。 其优点是学习成本低,可以通过类 SQL 语句快速实现简单的 MapReduce 统计,不必开发专门的 MapReduce 应用,十分适合数据仓库的统计分析。

流式计算

一、Facebook Puma

简介:实时数据流分析

二、Twitter Rainbird

简介:Rainbird 一款基于 Zookeeper, Cassandra, Scribe, Thrift 的分布式实时统计系统,这些基础组件的基本功能如下:

❶ Zookeeper,Hadoop 子项目中的一款分布式协调系统,用于控制分布式系统中各个组件中的一致性。

❷Cassandra,NoSQL 中一款非常出色的产品,集合了 Dynamo 和 Bigtable 特性的分布式存储系统,用于存储需要进行统计的数据,统计数据,并且提供客户端进行统计数据的查询。(需要使用分布式 Counter 补丁 CASSANDRA-1072)

❸ Scribe,Facebook 开源的一款分布式日志收集系统,用于在系统中将各个需要统计的数据源收集到 Cassandra 中。

❹ Thrift,Facebook 开源的一款跨语言 C/S 网络通信框架,开发人员基于这个框架可以轻易地开发 C/S 应用。

用处

Rainbird 可以用于实时数据的统计:

❶统计网站中每一个页面,域名的点击次数

❷内部系统的运行监控(统计被监控服务器的运行状态)

❸记录最大值和最小值

三、Yahoo S4

简介:S4(Simple Scalable Streaming System)最初是 Yahoo! 为提高搜索广告有效点击率的问题而开发的一个平台,通过统计分析用户对广告的点击率,排除相关度低的广告,提升点击率。目前该项目刚启动不久,所以也可以理解为是他们提出的一个分布式流计算(Distributed Stream Computing)的模型。

S4 的设计目标是:

・提供一种简单的编程接口来处理数据流

・设计一个可以在普通硬件之上可扩展的高可用集群。

・通过在每个处理节点使用本地内存,避免磁盘 I/O 瓶颈达到最小化延迟

・使用一个去中心的,对等架构;所有节点提供相同的功能和职责。没有担负特殊责任的中心节点。这大大简化了部署和维护。

・使用可插拔的架构,使设计尽可能的即通用又可定制化。

・友好的设计理念,易于编程,具有灵活的弹性

Yahoo S4 官方网站 >>>

四、Twitter Storm

简介:Storm 是 Twitter 开源的一个类似于 Hadoop 的实时数据处理框架,它原来是由 BackType 开发,后 BackType 被 Twitter 收购,将 Storm 作为 Twitter 的实时数据分析系统。

实时数据处理的应用场景很广泛,例如商品推荐,广告投放,它能根据当前情景上下文(用户偏好,地理位置,已发生的查询和点击等)来估计用户点击的可能性并实时做出调整。

storm 的三大作用领域:

1. 信息流处理(Stream Processing)

Storm 可以用来实时处理新数据和更新数据库,兼具容错性和可扩展性,它 可以用来处理源源不断的消息,并将处理之后的结果保存到持久化介质中。

2. 连续计算(Continuous Computation)

Storm 可以进行连续查询并把结果即时反馈给客户,比如将 Twitter 上的热门话题发送到客户端。

3. 分布式远程过程调用(Distributed RPC)

除此之外,Storm 也被广泛用于以下方面:

精确的广告推送

实时日志的处理

Twitter Storm 官方网站 >>>

迭代计算

一、Apache Hama

简介:Apache Hama 是一个纯 BSP(Bulk Synchronous Parallel)计算框架,模仿了 Google 的 Pregel。用来处理大规模的科学计算,特别是矩阵和图计算。

❶建立在 Hadoop 上的分布式并行计算模型。

❷基于 Map/Reduce 和 Bulk Synchronous 的实现框架。

❸运行环境需要关联 Zookeeper、HBase、HDFS 组件。

Hama 中有 2 个主要的模型:

– 矩阵计算 (Matrix package)

– 面向图计算 (Graph package)

Apache Hama 官方网站 >>>

二、Apache Giraph

代码托管地址: GitHub

简介:Apache Giraph 是一个可伸缩的分布式迭代图处理系统,灵感来自 BSP(bulk synchronous parallel)和 Google 的 Pregel,与它们 区别于则是是开源、基于 Hadoop 的架构等。

Giraph 处理平台适用于运行大规模的逻辑计算,比如页面排行、共享链接、基于个性化排行等。Giraph 专注于社交图计算,被 Facebook 作为其 Open Graph 工具的核心,几分钟内处理数万亿次用户及其行为之间的连接。

三、HaLoop

简介:迭代的 MapReduce,HaLoop—— 适用于迭代计算的 Hadoop 。

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 是一个分布式、可搜索的键值存储系统,特性如下:

分布式 KV 存储,系统性能能够随节点数目线性扩展

吞吐和延时都能秒杀现在风头正劲的 MonogDB,吞吐甚至强于 Redis

使用了 hyperspace hashing 技术,使得对存储的 K-V 的任意属性进行查询成为可能

官网://hyperdex.org/

四、TokyoCabinet

日本人 Mikio Hirabayashi(平林干雄)开发的一款 DBM 数据库。Tokyo Cabinet 是一个 DBM 的实现。这里的数据库由一系列 key-value 对的记录构成。key 和 value 都可以是任意长度的字节序列,既可以是二进制也可以是字符串。这里没有数据类型和数据表的概念。

当 做为 Hash 表数据库使用时,每个 key 必须是不同的,因此无法存储两个 key 相同的值。提供了以下访问方法:提供 key,value 参数来存储,按 key 删除记录,按 key 来读取记录,另外,遍历 key 也被支持,虽然顺序是任意的不能被保证。这些方法跟 Unix 标准的 DBM, 例如 GDBM,NDBM 等等是相同的,但是比它们的性能要好得多(因此可以替代它们) 。下一代 KV 存储系统,支持 strings、integers、floats、lists、maps 和 sets 等丰富的数据类型。【大数据开发学习资料领取方式】:加入大数据技术学习交流 koukou 群 458345782,点击加入群聊,私信管理员即可免费领取

五、Voldemort

Voldemort 是一个分布式键值存储系统,是 Amazon’s Dynamo 的一个开源克隆。特性如下:

支持自动复制数据到多个服务器上。

支持数据自动分割所以每个服务器只包含总数据的一个子集。

提供服务器故障透明处理功能。

支持可拨插的序化支持,以实现复杂的键 - 值存储,它能够很好的 5. 集成常用的序化框架如:Protocol Buffers、Thrift、Avro 和 Java Serialization。

数据项都被标识版本能够在发生故障时尽量保持数据的完整性而不会影响系统的可用性。

每个节点相互独立,互不影响。

支持可插拔的数据放置策略

官网://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 的总体结构

tair 作为一个分布式系统,是由一个中心控制节点和一系列的服务节点组成。我们称中心控制节点为 config server. 服务节点是 data server. config server 负责管理所有的 data server, 维护 data server 的状态信息. data server 对外提供各种数据服务,并以心跳的形式将自身状况汇报给 config server. config server 是控制点,而且是单点,目前采用一主一备的形式来保证其可靠性。所有的 data server 地位都是等价的.

八、Apache Accumulo

Apache Accumulo 是一个可靠的、可伸缩的、高性能的排序分布式的 Key-Value 存储解决方案,基于单元访问控制以及可定制的服务器端处理。Accumulo 使用 Google BigTable 设计思路,基于 Apache Hadoop、Zookeeper 和 Thrift 构建。

官网://accumulo.apache.org/

九、Redis

Redis 是一个高性能的 key-value 存储系统,和 Memcached 类似,它支持存储的 value 类型相对更多,包括 string(字符串)、list(链表)、set(集合)和 zset(有序集合)。与 memcached 一样,为了保证效率,数据都是缓存在内存中,区别的是 Redis 会周期性的把更新的数据写入磁盘或者把修改操作写入追加的记录文件,并且在此基础上实现了主从同步。

Redis 的出现,很大程度补偿了 memcached 这类 key/value 存储的不足,在部分场合可以对关系数据库起到很好的补充作用。它提供了 Python、Ruby、Erlang、PHP 客户端,使用很方便。

官网://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。

官网://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 编写的高可用数据存储。

官网://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 官网://www.vertica.com/

四、Cassandra

贡献者:facebook

相关文章:开源分布式 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 官网://cassandra.apache.org/

五、HyperTable

简介:Hypertable 是一个开源、高性能、可伸缩的数据库,它采用与 Google 的 Bigtable 相似的模型。在过去数年中,Google 为在 PC 集群 上运行的可伸缩计算基础设施设计建造了三个关键部分。

第一个关键的基础设施是 Google File System(GFS),这是一个高可用的文件系统,提供了一个全局的命名空间。它通过跨机器(和跨机架)的文件数据复制来达到高可用性,并因此免受传统 文件存储系统无法避免的许多失败的影响,比如电源、内存和网络端口等失败。第二个基础设施是名为 Map-Reduce 的计算框架,它与 GFS 紧密协作,帮 助处理收集到的海量数据。第三个基础设施是 Bigtable,它是传统数据库的替代。Bigtable 让你可以通过一些主键来组织海量数据,并实现高效的 查询。Hypertable 是 Bigtable 的一个开源实现,并且根据我们的想法进行了一些改进。

HyperTable 官网://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 基于列的而不是基于行的模式。

官网://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 的优势项目。

官网://couchdb.apache.org/

二、MongoDB

简介:MongoDB 是一个基于分布式文件存储的数据库。由 C++ 语言编写。旨在为 WEB 应用提供可扩展的高性能数据存储解决方案。

MongoDB 是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。他支持的数据结构非常松散,是类似 json 的 bson 格式,因此可以存储比较复杂的数据类型。Mongo 最大的特点是他支持的查询语言非常强大,其语法有点类似于面向对象的查询语言,几乎可以实现类似关系数据库单表查询的绝大部分功能,而且还支持对数据建立索引。

相关文章:MongoDB 的基本特性与内部构造 大数据吃香 创业公司 MongoDB 估值达 16 亿美元

特点

它的特点是高性能、易部署、易使用,存储数据非常方便。主要功能特性有:

* 面向集合存储,易存储对象类型的数据。

mongodb 集群参考

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。

官网://code.google.com/p/kosmosfs/

五、HDFS

简介:Hadoop 分布式文件系统 (HDFS) 被设计成适合运行在通用硬件 (commodity hardware) 上的分布式文件系统。它和现有的分布式文件系统有很多共同点。但同时,它和其他的分布式文件系统的区别也是很明显的。HDFS 是一个高度容错性的系统,适合部署在廉价的机器上。HDFS 能提供高吞吐量的数据访问,非常适合大规模数据集上的应用。HDFS 放宽了一部分 POSIX 约束,来实现流式读取文件系统数据的目的。HDFS 在最开始是作为 Apache Nutch 搜索引擎项目的基础架构而开发的。HDFS 是 Apache Hadoop Core 项目的一部分。

官网://hadoop.apache.org/

资源管理

一、Twitter Mesos

开发者:Twitter 研发人员 John Oskasson

简介:Apache Mesos 是由加州大学伯克利分校的 AMPLab 首先开发的一款开源群集管理软件,支持 Hadoop、ElasticSearch、Spark、Storm 和 Kafka 等架构,由于其开源性质越来越受到一些大型云计算公司的青睐,例如 Twitter、Facebook 等。

参考文章:Mesos 渐入主流,Twitter 模式有望 “无限复制”-CSDN.NET

官网://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 的行状况,如果出问题,会将其在其他机器上重启。【大数据开发学习资料领取方式】:加入大数据技术学习交流扣扣群 522189307,点击加入群聊,私信管理员即可免费领取

5、Container 是 Yarn 为了将来作资源隔离而提出的一个框架。这一点应该借鉴了 Mesos 的工作,目前是一个框架,仅仅提供 java 虚拟机内存的隔离,hadoop 团队的设计思路应该后续能支持更多的资源调度和控制,既然资源表示成内存量,那就没有了之前的 map slot/reduce slot 分开造成集群资源闲置的尴尬情况。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值