YunTable1.0(beta)的产品介绍
作者 吴朱华 | 2012-05-22 12:09 | 类型 云计算, 弯曲推荐, 行业动感 | 15条用户评论 »
经过最近一年的努力,我们YunTable已经从一个过去基于BigTable的小玩具发展成新一代的分布式数据库,并且能在秒级对十亿行的大表进行快速地分析,现在版本号也从0.9进化为1.0beta, 具体内容可以看一下下文,并且将于本周正式对外提供下载和教学文档,最后感谢大家长期的支持^_^
据美国著名咨询公司IDC的统计,全球数字信息在未来几年将呈现惊人增长,预计到2020年总量将是现在的44倍。据另外一份数据显示,全球 90% 的数据都是在过去两年中生成的,并且每年以50%的速度进行增长,每天,遍布世界各个角落的传感器、移动设备、在线交易和社交网络产生上PB级别的数据,所以说“大数据”时代已不可避免地到来了,并且这些大数据里面蕴含着丰富的价值,而我们人云科技团队从2010年起开发了针对海量结构化数据分析的名为“YunTable”的分布式数据库,最新的版本号为1.0beta,现正处于公开测试阶段,并将于2012年6月正式对外发布1.0正式版,而本文档将会给大家逐步介绍YunTable,包括它的基本功能、核心技术、分布式架构和路线图等。
大数据的处理流程虽然具体的大数据处理方法其实有很多,并且也有各种不同的场景,但是为了帮助大家理顺大数据的处理,在对YunTable进行介绍之前,在这里给大家总结一下大数据处理的基本流程。 图1. 大数据的处理流程 如图1所示,整个处理流程可以概括为四步,分别是采集、导入和预处理、统计和分析以及挖掘,下面将分别详细地介绍: 采集 利用多个的数据库来接收发自客户端(Web、App或者传感器形式等)的数据,并且用户可以通过这些数据库来进行简单的查询和处理工作,比如,电商会使用传统的关系型数据库MySQL和Oracle等来存储每一笔事务数据,除此之外,Redis和MongoDB这样的NoSQL数据库也常用于数据的采集。在采集部分,主要特点和挑战方面是并发数高,因为同时有可能会有成千上万的用户来进行访问和操作。 导入/预处理 虽然有采集端本身会有很多数据库,但是如果要对这些海量数据进行有效地分析,还是应该将这些来自前端的数据导入到一个集中的大型分布式数据库或者分布式存储集群,并且可以在导入基础上做一些简单的清洗和预处理工作,也有一些用户会在导入时候使用来自Twitter的Storm来对数据进行流式计算,来满足部分业务的实时计算需求。在特点和挑战方面,主要是导入数据量大,每秒导入量经常达到百兆,甚至GB级别。 统计/分析 统计与分析主要利用分布式数据库或者分布式计算集群来对存储于其内的海量数据进行普通的分析和分类汇总等,以满足大多数常见的分析需求,在这方面,一些实时性需求会用到EMC 的GreenPlum、Oracle的Exadata以及基于MySQL的列式存储Infobright等,而一些批处理或者基于半结构化的需求可以使用Hadoop。统计与分析这部分,主要特点和挑战方面是分析涉及的数据量大,其对系统资源,特别是I/O会有极大地占用。 挖掘 与前面统计和分析不同的是,数据挖掘一般没有什么预先设定好的主题,主要是在现有数据上面进行基于各种算法的计算,从而起到预测(Predict)的效果,这样实现一些高级别数据分析的需求,比较典型算法有用于聚类的K-Means、用于统计学习的SVM和用于分类的Naive Bayes,主要使用的工具有Hadoop的Mahout等。在特点和挑战方面,主要是挖掘的算法复杂,并且计算涉及的数据量和计算量都很大。
产品简介YunTable是在传统的分布式数据库的基础上发展而来的新一代分布式数据库,并吸纳了一些来自NoSQL的新技术,其核心技术与著名的Oracle Exadata和SAP HANA类似。通过它能构建一个百台服务器级别的分布式集群来管理PB级别的海量结构化数据。 YunTable最大的特色就是快,它能极快地导入海量的数据,并极快地进行相关的查询、统计和分析;其次是TCO低,整体成本和类似性能的Oracle Exadata和SAP HANA相比低很多。 在大数据的处理流程方面,如图2所示,现阶段,YunTable专注于数据导入、统计和分析这两部分。 图2. YunTable与大数据的处理流程
设计目标在设计方面,主要是找准专注的点,具体有下面这四点: 1. 主要针对海量结构化数据,并为其做非常彻底的优化; 2. 优化导入数据的性能,以满足非常极限的数据导入要求,比如,每秒整个集群需要导入50多万行数据; 3. 对数据分析相关的SQL语句进行支持和优化,比如支持去重、求和,以及分类汇总等命令; 4. 利用好现有的硬件,无论是CPU、内存、SSD,还是硬盘,都根据它们的特性,发挥它们的性能优势,比如利用多核的优势,以及硬盘顺序读写性能优等特点。
功能特性在功能特性方面,主要有下面这八点; l 支持核心的SQL命令:包括Group By、Distinct和Count等; l 支持百台级别服务器集群:构建耗时短; l 提供PB级别的数据存储:压缩比平均在1/10左右; l 提供秒级海量数据处理能力:能在几秒中对海量数据完成大多数SQL指令的执行; l 每秒百万行级别的数据加载能力:能快速导入海量数据,并支持CSV格式的数据文件; l 线性扩展:每添加一个节点能提供接近线性的性能提升; l 数据安全性:采用多备份机制来确保数据的安全; l 整体成本低:采用普通的X86服务器,无需昂贵的硬件技术;
三大核心技术图3. 三大核心技术 在上面大数据的处理流程那部分已经提到,对于统计和分析,最大挑战莫过于I/O方面。为了让YunTable更好地提升统计和分析相关的I/O性能,如图3所示,YunTable提供并行处理、行列混合存储和压缩这三个针对海量结构化数据处理和分析的必备利器,因为这样对分析命令而言,I/O处理会实现最优化,而且Oracle Exadata和SAP HANA的优秀性能都基于类似技术的,并能对热数据提供接近内存计算的性能,下面将分别介绍这三个技术: 1. 并行处理:就是将一个来自客户端的查询或请求分配到多个节点上进行并行处理,之后在客户端来接受来自多个节点的返回,并进行合并来产生最终的结果,在导入方面,也可以利用并行机制来加快数据的导入; 2. 行列混合存储:与常见的列式存储不同的是,YunTable会先以行为单位进行分组,之后再进行列式存储,这样做的好处是,在保持传统列式存储分析性能的同时,对部分涉及到行的命令也有一定的支持; 3. 压缩:虽然YunTable本身采用比较经典的压缩算法,但是在具体数据组织方面有一定的设计,使得整体压缩率达到1/10,甚至更高,并且压缩和解压缩的效率也很高。
整体架构图4. 分布式架构 首先,如图4所示,从分布式架构角度而言,YunTable主要有Client端、Master节点和Region节点这三个组件组成: l Client端,主要是用于发送命令,现在主要使用基于C的驱动,并将在4月提供基于Python的驱动; l Master节点,主要用于管理这个集群,并且负责集群中异常事件的处理; l Region节点,主要用于储存数据,并接受来自Client端的请求来对存储于其内数据的进行查询和分析。 接着,以一个Table为例来进一步介绍YunTable的分布式架构,当Client端向Master节点申请创建一个Table的时候,Master节点会为这个Table创建多个Tablet Group,一个Table的数据会按照一定的分片策略均匀分布到每个Tablet Group中,常用的分片策略为Hash算法。每个Tablet Group会包含多个数据完全一致的Tablet以用于备份,并且它们运行在不同的Region节点上,Tablet具体的数目和其设定的备份策略相关,一般备份数为3。在一个Tablet Group中,Tablet之间有主备份和副备份之分,也就是说,数据会首先写入到主备份,接着主备份会将数据异步发给第一个副备份,之后依次类推。 图5. Region节点的架构 最后,分析一下用于存储和分析数据的Region节点,如图5所示,每个Region会运行和存储多个Tablet,当数据写入的时候,数据会首先写到这个Tablet的WAL日志上,接着会写入至一个位于内存的数据结构Memstore中,WAL全称为“Write-Ahead Log”,主要用于暂存那些最新的数据更新请求,以避免当Tablet中的Memstore被意外关闭时所造成的数据丢失。接着,当Memstore存储的数据达到一定的阀值时,它会将数据整理一下,之后批量写入硬盘,写入格式为YFile。因为YFile本身是不可修改(Immutable)的,所以这样能有效地利用硬盘顺序读性能好的特性。最后,系统会清空WAL日志中那些已经写入的数据。
实际案例在2012年4月初,YunTable在一家中型互联网企业进行了一场基于海量数据的实际业务场景的测试,具体的测试数据见表1。简单而言,根据这次测试结果,YunTable无论在导入速度,还是以去重统计和多维分类汇总为代表的分析性能都基本上达到了业界最领先的水平。还有,本次测试的每台x86服务器的配置是2颗4核Xeon CPU、64G内存和4块7200转SAS硬盘。
表1. 测试结果
产品比较下面表2主要是在结构化数据分析方面,根据用户的反馈,与几款现在比较流行的产品进行了比较:
表2. 与竞争对手的比较(根据用户的反馈)
路线图在今后一两年时间中,我们人云科技团队的主要目标还是在于不断地提升YunTable对海量结构化数据的分析能力,下面是今后两年初步的规划:
服务策略现阶段的对客户的服务策略是“使用免费,服务收费”,用户现阶段可以免费下载和使用YunTable,同时为了帮助用户部署、使用和维护YunTable,我们人云科技团队提供了基于收费的各项服务和技术支持。 | ||||||||||||||||||||||||||||||||||||||||||
雁过留声
“YunTable1.0(beta)的产品介绍”有15个回复
希望能看到Yuntable更多的商业场景应用,并迅速成长、成熟起来,从发展步伐上来看仍然略慢了一些,还需要在可运维性、可交互性等方面进一步加强。
可喜可贺!戒骄戒躁!
年轻人,有希望,干得不错。
对技术小民来说是好事,可以用来构建自己的低成本架构。不过服务收费的模式在中国不知道好不好操作,按经验感觉很容易被坑。
对sql的支持程度如何?是否能够和商用系统集成?
很有意思,想听一听有关”服务收费”的方案细节。
同时,我对“实际案例”里的数据有些疑惑,主要是想了解集群的网络状况是怎么样的?因为大的集群应用的性能瓶颈常常是在网络通信,如果5台机器是连在同一个switch上,网络带宽和延迟都不会成为瓶颈。但在实际中,这种连接方式就相当于把所有节点放在一个rack上,这样会使整个系统的可靠性大打折扣。反过来,如果集群分布在不同的rack上,那么rack间通信的网络性能又会影响系统的整体性能。因此,想问问实际案例里的数据是用那种方式生成。
5台服务器….就号称PB级别,非常快了…
支持!
学习~
主机啊 ··你怎么那么快
不知道如何实现实时备份啊
看着和mongoDB有点像,能比较一下两者吗?
当数据写入的时候,数据会首先写到这个Tablet的WAL日志上,接着会写入至一个位于内存的数据结构Memstore中,WAL全称为“Write-Ahead Log”,主要用于暂存那些最新的数据更新请求,以避免当Tablet中的Memstore被意外关闭时所造成的数据丢失。接着,当Memstore存储的数据达到一定的阀值时,它会将数据整理一下,之后批量写入硬盘,写入格式为YFile。因为YFile本身是不可修改(Immutable)的,所以这样能有效地利用硬盘顺序读性能好的特性。最后,系统会清空WAL日志中那些已经写入的数据。
对这段写入过程的描述有困惑,一份数据要写,首先写wal,再写memstore,最后刷硬盘.然后清空wal,这个wal究竟是个啥?
YunTable默认底层支持啥分布式文件系统呢?还是不需要?
问题收到了,等过几天有空,会一并解答,还有现在64位的执行文件可下载http://peopleyun.com/?page_id=1201
5520*2 24G ddr3 完成3kbyte昌都的16万条/s数据,6个维度的信息汇总。