Laxcus大数据管理系统2.0(13)- 总结
总结
以上从多个角度阐述了Laxcus主要组成部分和应用情况。所有设计都是基于现实环境下的评估、对比、测试和考量。设计的基本思路很明确,就是将各项功能分解、细化、归类,形成一个个可以独立、小的模块,每个模块承担一项职能,再把这些模块组织起来,在一个松耦合框架管理下,协同合作,来完成大规模的数据存储和计算工作。
设计中的主要问题源自有限的基础设施和变化中的应用需求之间的矛盾。如何在不损失处理性能的前提下,将有限的基础设施资源利用率做到最大化,是设计考虑的重点。这也是一个和硬件密切相关的问题。
在核定系统设计目标时,我们面临多种选择。大多数情况下,没有鱼和熊掌兼得的可能,只能二选一做出取舍。考虑到系统虽然经过很多简化处理,但是为了满足需求,仍然存在太多环节,加之这些环节之间各种关联导致的复杂性,我们将稳定、可靠、“大”这三项指标放在首位,其它指标则做为次要需求放在后面。所以,从这一点来说,Laxcus虽然能够管理百万级的计算机节点,实现了EB级的数据存储计算能力,也提供了基于内存的快速数据处理解决方案,但并不是一个为追求“快”而设计的大数据系统。
现在再回过头,根据我们的经历,来看一个我们组织实施并投入运营的集群基本配置情况:拥有从数百台到千台左右规模的计算机,采用X86架构的32/64位芯片,每台计算机配置2 - 8G的内存,2 - 4TB储量的温彻斯特硬盘。计算机被部署在多个机架上,采用千兆的光纤网络,通过多台交换机实现连接。不同的时段内,会有数百到数万个用户,每个用户并发多个任务使用着这个集群。
可以看到,在这样的网络环境中,每台计算机能够分到的带宽并不多,考虑到Laxcus是多用户系统,每个用户又并行执行多个任务,实际分配给每个任务的带宽就更低。集群在执行正常的数据处理业务之外,还有大量辅助业务也要通过网络传输数据,如果把全部数据用量统计起来,这样的带宽很容易发生超载现象,而集群运行也严重依赖着网络通信,这部分的带宽资源是不能够被挤占的。所以,如何节约数据处理过程中的各种存储和计算开销就变得非常关键。
节约的一个办法是杜绝冗余数据。
冗余数据主要产生在数据生成阶段,预防手段也很简单:对数据进行精确的筛选和抓取。这就涉及到存储方案的设计。
为了适应不同业务需要,我们设计了行/列两个存储模型。存储模型的最小存储单位是列。在列这个层面上,数据可以随意地组织、置换和计算,在保证灵活性的同时不失其精准性。与之相关的,把SQL融入分布描述语言,与分布环境结合具有一举多得之效。比如借助Where子句的多条件组合查询能力,通过SELECT语句将其分散作用到数据存取层面后,以列为单位的检索结果可以直接在计算机生成,从而避免了冗余数据在网络上传输。这种数据处理方案,非常符合分布环境下在数据源位置进行计算的原则。即以移动计算代替移动数据计算的原则。
节约原则还体现在对数据格式的原始定义上。
Laxcus设计规定,数值统一采用二进制格式表述。比如一个整型值,二进制格式固定为4个字节,如果换作字符串表述再加上符号位,最大将达到11个字节。这就使得二进制数值无论是在磁盘和内存里存储,还是在网络上传输,数据量都比其它格式要少。而且因为数值的长度固定,当进入CPU层面进行处理时,不需要转换数据类型,就能够被CPU识别和计算,比如C语言就可以通过指针可以直接引用。这在执行数据密集的计算任务时,能够显著提高计算效率。
FIXP协议也是体现二进制优势的又一个例证。在网络通信中,基于UDP传输的监控包占了很大比例,因为二进制使得FIXP包的数据长度相对较小,通常都小于一个IP包的长度,也低于链路层对数据包的尺寸限制。这样的结果使得FIXP包能够被直接传输,避免了在网络两端对数据包进行的分组和重组操作。这个小小的改进使得FIXP协议的丢包率大为减少,不可靠的UDP通信成功率大为增加,获得了更高的通信稳定性。
设计中另外着力考虑的是网络环境下数据计算面临的诸多问题。
数据块成为解决这些问题的关键。
如第3章所述,数据块的基本特点是长度固定。只此一点,就避免了磁盘碎片和减轻了数据维护的难度。也是因为这个原因,使得数据在网络间的传播极为简单,为网络环境下的数据备份和负载平衡奠定了基础。同时,把对磁盘影响最大的写操作转移到内存执行,以空间换时间的手法,将磁盘的写操作延迟降到最低,使磁盘更专注于读操作。更进一步,通过引入数据优化和数据构建,使得用户更能够按照自己的意愿组织和检索数据。表现在磁盘上,直接的反映就是减少了读操作次数。这些都对改善磁盘处理性能、提高数据计算效率甚为重要。
在数据块之外,最需要提及的当属Diffuse/Converge算法,这是整个网络计算的核心。算法将网络计算过程分为两个步骤:Diffuse向网络上查找数据后进行分配,Converge在已经分配的数据的基础上,对数据进行再组织和再分配,数据的每一次的输出做为下一次的输入,通过数次迭代得出计算结果。围绕着Diffuse/Converge算法,又进行了一系列的配套设计。通过将系统和用户功能的分离,用户实现网络计算接口可派生编程,系统实现热发布、任务调度,模平均分配数据,任务命名,Conduct语句,使得这些模块在其中各司其职,运行时组织起来,形成从终端到数据存储层面,一个完整的网络计算体系。在保持了简单和易用性的同时,也实现了大规模数据并行计算的目的。
冗灾处理也纳入了网络计算体系中。因为具有弱中心化管理和故障主动判断的能力,系统能够在很短时间内感知到故障的存在,并主动回避故障源。对于故障节点,系统一旦确定就会将其隔离,不会再出现在集群里,同时采用数据冗余和再恢复的办法,保护正常的数据处理业务。
另外,在许多技术细节上,也进行了优化处理。比如在执行底层计算时,针对数据密集的这个特点,加入X86架构的SSE指令后,能够使计算效率取得成倍的增长。或者在计算中使用更多的加、减、移位指令,取代乘、除指令,也能够达到减少指令计算周期、提高计算效率的目的。还有一个更直接的手段是采用64位的CPU,根据测试统计,经过LINUX GCC64位编译器编译的C/C++语言代码,在执行密集型数据计算时,效率比32位代码普遍提高15%-20%。
对于未来,应该根据集群和数据处理业务的具体特点,选择合适的软硬件组合。如文章开篇所言,集群计算不在意个体计算单元性能的强弱,它是把众多且分散的计算单元通过网络组织起来,以协同工作的方式,取代那些单一但性能强大的集中计算。这种以多胜强特点,为实现低成本的计算业务带来福音。这种情况,在数据中心表现尤其明显。在现在的数据中心内部,计算机和维持计算机运行的制冷设备,它们消耗的电量非常庞大。如果采用移动架构的硬件设备,不单计算机能耗会显著下降,计算机体积缩小,单位空间内的计算机布署数量增加,制冷的需求也会大幅降低。这样的基础设施被部署到数据中心后,将直接降低数据的运营成本。其所产生的影响,正如PC架构取代了当年的小型机一样,现在移动架构取代PC架构已经露出峥嵘之势。在强调总体拥有成本(TCO)的今天,配合大数据的到来,将掀起一场新的数据计算革命。
这可能不是一个太漫长的过程,这里面还有许多工作要做。
现在只是刚刚开始。
Laxcus大数据管理系统2.0(13)- 总结的更多相关文章
- Laxcus大数据管理系统2.0(3)- 第一章 基础概述 1.2 产品特点
1.2 产品特点 Laxcus大数据管理系统运行在计算机集群上,特别强调软件对分布资源可随机增减的适应性.这种运行过程中数据动态波动和需要瞬时感知的特点,完全不同与传统的集中处理模式.这个特性衍生出一 ...
- Laxcus大数据管理系统2.0 (1) - 摘要和目录
Laxcus大数据管理系统 (version 2.0) Laxcus大数据实验室 摘要 Laxcus是Laxcus大数据实验室全体系全功能设计研发的多用户多集群大数据管理系统,支持一到百万台级节点,提 ...
- Laxcus大数据管理系统2.0(5)- 第二章 数据组织
第二章 数据组织 在数据的组织结构设计上,Laxcus严格遵循数据和数据描述分离的原则,这个理念与关系数据库完全一致.在此基础上,为了保证大规模数据存取和计算的需要,我们设计了大量新的数据处理技术.同 ...
- Laxcus大数据管理系统2.0(9)- 第七章 分布任务组件
第七章 分布任务组件 Laxcus 2.0版本的分布任务组件,是在1.x版本的基础上,重新整合中间件和分布计算技术,按照新增加的功能,设计的一套新的.分布状态下运行的数据计算组件和数据构建组件,以及依 ...
- Laxcus大数据管理系统2.0(10)- 第八章 安全
第八章 安全 由于安全问题对大数据系统乃至当前社会的重要性,我们在Laxcus 2.0版本实现了全体系的安全管理策略.同时我们也考虑到系统的不同环节对安全管理的需求是不一样的,所以有选择地做了不同的安 ...
- Laxcus大数据管理系统2.0(8)- 第六章 网络通信
第六章 网络通信 Laxcus大数据管理系统网络建立在TCP/IP网络之上,从2.0版本开始,同时支持IPv4和IPv6两种网络地址.网络通信是Laxcus体系里最基础和重要的一环,为了能够利用有限的 ...
- Laxcus大数据管理系统2.0(6)- 第四章 数据计算
第四章 数据计算 Laxcus所有数据计算工作都是通过网络实施.相较于集中计算,在网络间进行的数据计算更适合处理那些数据量大.复杂的.耗时长的计算任务.能够实施网络计算的前提是数据可以被分割,就是把一 ...
- Laxcus大数据管理系统2.0(14)- 后记
后记 Laxcus最早源于一个失败的搜索引擎项目,项目最后虽然终止了,但是项目中的部分技术,包括FIXP协议.Diffuse/Converge算法.以及很多新的数据处理理念却得以保留下来,这些成为后来 ...
- Laxcus大数据管理系统2.0(12)- 第十章 运行
第十章 运行 本章将介绍一些Laxcus集群基本运行.使用情况,结合图片和表格表示.地点是我们的大数据实验室,使用我们的实验集群.数据来自于我们的合作伙伴,软件平台混合了Windows和Fedora ...
随机推荐
- MySQL错误: could not retrieve transation read-only status server
问题描述: java代码在开始事务后,先做了一个查询,再insert,此时会报: java.sql.SQLException: could not retrieve transati ...
- erlang的shell历史记录
erlang的shell默认重启以后木有历史记录,略蛋疼,开发的时候略不便 网上找了个方式 sudo apt-get install rlwrap vim ~/.bash_profile alias ...
- PHP解码unicode编码中文字符代码示例
在抓取某网站数据,结果在数据包中发现了一串编码的数据:"......\u65b0\u6d6a\u5fae\u535a......", 这其实是中文被unicode编码后了的数据,想 ...
- title与h1标签的区别和联系
很多新站长在网站SEO过程中,会认为把H1等同于Title. 其实两是有区别和联系的,两者不能划等号.下面主要从文章和页面角度分析title和H1. H1等同于title吗? H1不等于title.H ...
- C# 理解lock
本文为转载 .. 一. 为什么要lock,lock了什么? 当我们使用线程的时候,效率最高的方式当然是异步,即各个线程同时运行,其间不相互依赖和等待.但当不同的线程都需要访问某个资源的时候,就需要同步 ...
- 解密:wp-includes/load.php
描述:定义加载 WP 所需要的函数.1)wp_unregister_GLOBALS(),关闭’GLOBALS’, ‘_GET’, ‘_POST’, ‘_COOKIE’, ‘_REQUEST’, ‘_S ...
- BestCoder Round #84 Bellovin
Bellovin 题意: 给个中文链接:戳戳戳 题解: 这个题其实就是让你求每一位的最长公共子序列,之后输出就好了,求这个有2个算法,一个是n方,另一个nlogn,所以显然是nlogn的算法,其实这就 ...
- java web 插件式开发
1.支持pagelet2.菜单扩展3.静态文件访问 4.开发环境. 5.OSGi平台. tms:pagelet 是一个jsp标签 <div> <tms:pagelet show=&q ...
- 转-Activity中使用orientation属性讲解及需注意的问题
http://www.software8.co/wzjs/yidongkaifa/6504.html 今天遇到了一个关于orientation的问题查了点资料记录一下,只有点点滴滴的积累,才能让我们更 ...
- 转-TabHost组件(二)(实现底部菜单导航)
http://www.cnblogs.com/lichenwei/p/3975095.html 上面文章<安卓开发复习笔记——TabHost组件(一)(实现底部菜单导航)>中提到了利用自定 ...