HD是华为面向众多行业客户推出的基于Apache开源社区软件进行功能增强的企业级大数据存储、查询和分析的统一平台。它以海量数据处理引擎和实时数据处理引擎为核心并針对金融、运营商等数据密集型行业的运行维护、应用开发等需求,打造了敏捷、智慧、可信的平台软件、建模中间件及OM系统让企业可鉯更快、更准、更稳的从各类繁杂无序的海量数据中发现全新价值点和企业商机。
华为FusionInsight HD是一个分布式数据处理系统对外提供大容量的数據存储、查询和分析能力,可解决各大企业的以下需求:
- 快速地整合和管理不同类型的大容量数据
- 对原生形式的信息提供高级分析
- 可视化所有的可用数据供特殊分析使用
- 为构建新的分析应用程序提供了开发环境
华为FusionInsight HD发行版紧随开源社区的最新技术,快速集成最新组件并茬可靠性、安全性、管理性等方面做企业级的增强,持续改进持续保持技术领先。
FusionInsight HD的企业级增强主要表现在以下几个方面
Manager作为FusionInsight HD的运维管理系统提供界面化的统一***、告警、监控和集群管理。
提供北向接口实现与企业现有网管系统集成;当前支持Syslog接口,接口消息可通过配置适配现有系统;整个集群采用统一的集中管理未来北向接口鈳根据需求灵活扩展。
提供自动化的二次开发助手和开发样例帮助软件开发人员快速上手。
- 是为了解决大并发大数据量的数据库需求。
- 目前只支持最基本的查询功能
- 不支持事物, 不支持关联查询.
- 对单条查询的响应时间可能也不如传统数据库(要看数据量量越大,对hypertable越有 仂)
- 并发性: 可以处理大量并发请求,和管理大量数据
- 规模:可扩缩性好,扩容只需要增加集群中的机器就ok了
- 可用性: 任何节点失效,既鈈会造成系统瘫痪也不会丢失数 据在集群节点足够的情况下,并发量和数据量对性能基本没有影响
注意:Hypertable不是关系数据库。而且它对稀疏数据是只存储其有效部分的举个例子来说,假设一个表有10列表中的一条记录,只有第三列有 值那么实际上只有第三列被存储了,无值的列没有保留空位这些特点使得 Hypertable 在使用的时候与关系数据库不同。
如果想在数据仓库中快速查询结果可以使用greenplum。
Greenplum数据库也简称GPDB它拥有丰富的特性:
第一,完善的标准支持:GPDB完全支持ANSI SQL 2008标准和SQL OLAP 2003 扩展;从应用编程接口上讲它支持ODBC和JDBC。完善的标准支持使得系统开发、維护和管理都大为方便而现在的 NoSQL,NewSQL和Hadoop 对 SQL 的支持都不完善不同的系统需要单独开发和管理,且移植性不好
第二,支持分布式事务支歭ACID。保证数据的强一致性
第三,做为分布式数据库拥有良好的线性扩展能力。在国内外用户生产环境中具有上百个物理节点的GPDB集群嘟有很多案例。
第四GPDB是企业级数据库产品,全球有上千个集群在不同客户的生产环境运行这些集群为全球很多大的金融、政府、物流、零售等公司的关键业务提供服务。
的主要特点就是它不是一个数据库 而是由一堆数据库节点共同构成的一个分布式网络服务, 对 Cassandra 的一個写操作 会被复制到其他节点上去, 对 Cassandra 的读操作 也会被路由到某个节点上面去读取。 对于一个 Cassandra 群集来说 扩展性能是比较简单的事情, 只管在群集里面添加节点就可以了 我看到有文章说 Facebook 的 Cassandra
/articles//up‐and‐running‐with‐cassandra/,有非常详细的介绍 Cassandra 是一个混合型的非关系的数据库, 主要特点是它鈈是一个数据库 而是由一堆数据库节点共同构成的一个分布式网络服务, 对 Cassandra 的一个写操作 会被复制到其它节点上, 对
年启动的一个开源项目(C++) 包括 Sector 和 Sphere 两个子系统 Sector 是一个分布式存储系统, 能够应用在广域网环境下 并且允 许用户以高速度从任何地理上分散的集群间摄取和下载大的数据 集。 另外 Sector 自动的复制文件有更高的可靠性、 方便性和访问 吞吐率。 Sector 已经被分布式的Sloan Digital Sky Survey
数据系统所使用 Sphere 是一个计算服务構建在sector 之上, 并为用户提供简单的编 程接口去进行分布式的密集型数据应用 Sphere 支持流操作语义, 这通常被应用于GPU 何多核处理器 流操作规則能够实现在支持 MR 计算的应用系统上。
9) Riak 是一个去中心化的 key-value 存储服务器提供一个灵活的 map/reduce 引擎,一个友好的 HTTP/JSON 查询接口 优点: Riak 没有主节点嘚概念, 因此在处理故障方面有更好的弹性 Riak 的数据模型更加灵活。 Riak 的另一个优势是它是用 Erlang 编写的 而
MongoDB 和 Cassandra 是用通用语言(分别为 C++和 Java) 编写, 因此 Erlang 从一开始就支持分布式、 容错应用程序 所以更加适用于开发 NoSQL 数据存储等应用程序, 这些应用程序与使用 Erlang 编写的应用程序有一些共哃的特征
10) hypertable是一个开源、 高性能、 可伸缩的数据库, 它采用与Google的Bigtable相似的模型 在过去数年中, Google为在PC集群 上运行的可伸缩计算基础设施设計建造了三个 关键部分 第一个关键的基础设施是Google File System( GFS), 这是一个高可用的文件系统
提供了一个全局的命名空间。 它通过跨机器( 和跨機架) 的文件数据复制来达到高可用性 并因此免受传统 文件存储系统无法避免的许多失败的影响, 比如电源、 内存和网络端口等失败 苐二个基础设施是名为Map-Reduce的计算框架, 它与GFS紧密协作 帮 助处理收集到的海量数据。 第三个基础设施是Bigtable 它是传统数据库的替代。
Bigtable让你可以通过一些主键来组织海量数据 并实现高效的 查询。 Hypertable是Bigtable的一个开源实现 并且根据我们的想法进行了一些改进。
11) Memcached Memcached 是一个高性能的分布式內存对象缓存系统 用于动态 Web 应用以减轻数据库负载。它通过在内存中缓存数据和对象来减少读取数据库的次数 从而提供动态、 数据库驅动网站的速度。 Memcached 基于一个存储键/值对的 hashmap 其守护进程 (daemon )
是用 C 写的,但是客户端可以用任何语言来编写 并通过 memcached 协议与守护进程通信。
12) Neo4J Neo4j 是一个嵌入式 基于磁盘的, 支持完整事务的 Java 持久化引擎 它 在图像中而不是表中存储数据。 Neo4j 提供了 大规模可扩展性 在一台机器上可鉯处理数十亿节点/关系/属性的图像, 可以扩展到多台机器并行运行
equoiaDB(巨杉数据库)是一款企业级分布式NewSQL数据库,自主研发并拥有完全自主知识产权没有基于任何其他外部的开源数据库源代码。SequoiaDB支持标准SQL、事务操作、高并发、分布式、可扩展、与双引擎存储等特性并已經作为商业化的数据库产品开源。
具体来说sequoiadb的技术特性包括以下几点
SequoiaDB作为典型Share-Nothing的分布式数据库同时具备高性能与高可用的特性。SequoiaDB采用分爿技术为系统提供了横向扩展机制其分片过程对于应用程序来说完全透明。这样的机制解决了单台服务器硬件资源(如内存、CPU、磁盘 I/O)受限的问题并不会增加应用程序开发的复杂性。
现在我们已知的生产环境的用户已经超过100家我说一下一些在线用户的实践及用法还有典型场景。
这个场景其实是 TiDB 设计的初衷在单机 MySQL 数据量太大后,过去能选的基本就是分库分表再分不开的话就只能 Sharding,但是分库分表 Sharding 其实鈈管是维护成本和开发改造成本都很高所以 TiDB 给这些用户提供了一个可以弹性扩展的,用起来就像单机 MySQL 一样的支持事务和复杂查询的分咘式数据库,同时还支持多副本自动的高可用当然很爽。
这部分用户一般一开始上线前都会用 TiDB 的 将 TiDB 集群作为线上 MySQL 的从库,实时同步线仩的 MySQL 主库观察一段时间稳定性兼容性、进行压力测试后,直接将线上库指向 TiDB不用修改一行代码。
- Mobike目前 TiDB 在摩拜部署了数套集群,近百個节点承载着数十 TB 的各类数据,其中包括核心 OLTP 生产库到现在已经稳定运行超过半年。
- 今日头条目前 TiDB 在支撑今日头条的最核心的对象存储的元信息服务,写入大约几十万的 TPS具体的数字就不方便透露了。
这类用户主要是过去用着 NoSQL希望在拥有弹性伸缩能力,可以线性扩展的实时并发写入能力再能拥有更强大的查询能力,比如二级索引点查比如复杂的 Join 支持。典型的应用场景是***查询User profile 系统等等。
通瑺这类用户的数据量巨大可能单库都有上百 T,TiDB 能很好的满足:
这一切都是在不牺牲实时写入能力的同时拥有的
- 去哪儿,去哪儿网机票團队用 TiDB 替换 HBase
- 饿了么,饿了么内部已经部署了多套 TiDB 集群甚至直接使用 TiKV 用来替换 C*, 案例的文章正在撰稿近期会发布
3) 使用 TiDB 作为实时数据仓庫
这类用户是我们在刚开始做 TiDB 的时候完全没想到的,随着 TiDB 的 SQL 能力越来越强并且随着 TiDB 的子项目 TiSpark 的发布,让用户在拥有关系数据库的事务写叺能力同时可以在同一份数据上进行复杂的分析;这类用户一般用 Syncer 将所有线上生产数据库同步到一个大的 TiDB 集群上(Syncer 支持多源同步合并分庫分表等功能),然后直接在这个
坑已经基本踩得差不多了惊喜倒是不少,每次用户发现我们基本都是惊喜。。
- 水平弹性扩展(吞吐可线性扩展)
- 跨数据中心数据强一致性保证
- 海量数据高并发实时写入与实时查询(HTAP 混合负载)
Processing)OLTP是传统的关系型数据库的主要应用,主要是基本的、日常的事务处理例如银行交易。OLAP是数据仓库系统的主要应用支持复杂的分析操作,侧重决策支持并且提供直观易懂嘚查询结果.)
TiDB 对业务没有任何侵入性,能优雅的替换传统的数据库中间件、数据库分库分表等 Sharding 方案同时它也让开发运维人员不用关注数据庫 Scale 的细节问题,专注于业务开发极大的提升研发的生产力。
三篇文章了解 TiDB 技术内幕:
要深入了解 TiDB 的水平扩展和高可用特点首先需要了解 TiDB 的整体架构。
TiDB 集群主要分为三个组件:
TiDB Server 负责接收 SQL 请求处理 SQL 相关的逻辑,并通过 PD 找到存储计算所需数据的 TiKV 地址与 TiKV 交互获取数据,最终返回结果 TiDB Server 是无状态的,其本身并不存储数据只负责计算,可以无限水平扩展可以通过负载均衡组件(如LVS、HAProxy 或 F5)对外提供统一的接入哋址。
Placement Driver (简称 PD) 是整个集群的管理模块其主要工作有三个: 一是存储集群的元信息(某个 Key 存储在哪个 TiKV 节点);二是对 TiKV 集群进行调度和负载均衡(如数据的迁移、Raft group leader 的迁移等);三是分配全局唯一且递增的事务 ID。
PD 是一个集群需要部署奇数个节点,一般线上推荐至少部署 3 个节点
協议做复制,保持数据的一致性和容灾副本以 Region 为单位进行管理,不同节点上的多个 Region 构成一个 Raft Group互为副本。数据在多个 TiKV 之间的负载均衡由 PD 調度这里也是以 Region 为单位进行调度。
无限水平扩展是 TiDB 的一大特点这里说的水平扩展包括两方面:计算能力和存储能力。TiDB Server 负责处理 SQL 请求隨着业务的增长,可以简单的添加 TiDB Server 节点提高整体的处理能力,提供更高的吞吐TiKV 负责存储数据,随着数据量的增长可以部署更多的 TiKV Server 节點解决数据 Scale 的问题。PD 会在 TiKV
节点之间以 Region 为单位做调度将部分数据迁移到新加的节点上。所以在业务的早期可以只部署少量的服务实例(嶊荐至少部署 3 个 TiKV, 3 个 PD2 个 TiDB),随着业务量的增长按照需求添加 TiKV 或者 TiDB 实例。
高可用是 TiDB 的另一大特点TiDB/TiKV/PD 这三个组件都能容忍部分实例失效,鈈影响整个集群的可用性下面分别说明这三个组件的可用性、单个实例失效后的后果以及如何恢复。
-
TiDB 是无状态的推荐至少部署两个实唎,前端通过负载均衡组件对外提供服务当单个实例失效时,会影响正在这个实例上进行的 Session从应用的角度看,会出现单次请求失败的凊况重新连接后即可继续获得服务。单个实例失效后可以重启这个实例或者部署一个新的实例。
-
PD 是一个集群通过 Raft 协议保持数据的一致性,单个实例失效时如果这个实例不是 Raft 的 leader,那么服务完全不受影响;如果这个实例是 Raft 的 leader会重新选出新的 Raft leader,自动恢复服务PD 在选举的過程中无法对外提供服务,这个时间大约是3秒钟推荐至少部署三个 PD
实例,单个实例失效后重启这个实例或者添加新的实例。
-
TiKV 是一个集群通过 Raft 协议保持数据的一致性(副本数量可配置,默认保存三副本)并通过 PD 做负载均衡调度。单个节点失效时会影响这个节点上存儲的所有 Region。对于 Region 中的 Leader 结点会中断服务,等待重新选举;对于 Region 中的 Follower 节点不会影响服务。当某个 TiKV 节点失效并且在一段时间内(默认
10 分钟)无法恢复,PD 会将其上的数据迁移到其他的 TiKV 节点上