总结

  以上从多个角度阐述了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)- 总结的更多相关文章

  1. Laxcus大数据管理系统2.0(3)- 第一章 基础概述 1.2 产品特点

    1.2 产品特点 Laxcus大数据管理系统运行在计算机集群上,特别强调软件对分布资源可随机增减的适应性.这种运行过程中数据动态波动和需要瞬时感知的特点,完全不同与传统的集中处理模式.这个特性衍生出一 ...

  2. Laxcus大数据管理系统2.0 (1) - 摘要和目录

    Laxcus大数据管理系统 (version 2.0) Laxcus大数据实验室 摘要 Laxcus是Laxcus大数据实验室全体系全功能设计研发的多用户多集群大数据管理系统,支持一到百万台级节点,提 ...

  3. Laxcus大数据管理系统2.0(5)- 第二章 数据组织

    第二章 数据组织 在数据的组织结构设计上,Laxcus严格遵循数据和数据描述分离的原则,这个理念与关系数据库完全一致.在此基础上,为了保证大规模数据存取和计算的需要,我们设计了大量新的数据处理技术.同 ...

  4. Laxcus大数据管理系统2.0(9)- 第七章 分布任务组件

    第七章 分布任务组件 Laxcus 2.0版本的分布任务组件,是在1.x版本的基础上,重新整合中间件和分布计算技术,按照新增加的功能,设计的一套新的.分布状态下运行的数据计算组件和数据构建组件,以及依 ...

  5. Laxcus大数据管理系统2.0(10)- 第八章 安全

    第八章 安全 由于安全问题对大数据系统乃至当前社会的重要性,我们在Laxcus 2.0版本实现了全体系的安全管理策略.同时我们也考虑到系统的不同环节对安全管理的需求是不一样的,所以有选择地做了不同的安 ...

  6. Laxcus大数据管理系统2.0(8)- 第六章 网络通信

    第六章 网络通信 Laxcus大数据管理系统网络建立在TCP/IP网络之上,从2.0版本开始,同时支持IPv4和IPv6两种网络地址.网络通信是Laxcus体系里最基础和重要的一环,为了能够利用有限的 ...

  7. Laxcus大数据管理系统2.0(6)- 第四章 数据计算

    第四章 数据计算 Laxcus所有数据计算工作都是通过网络实施.相较于集中计算,在网络间进行的数据计算更适合处理那些数据量大.复杂的.耗时长的计算任务.能够实施网络计算的前提是数据可以被分割,就是把一 ...

  8. Laxcus大数据管理系统2.0(14)- 后记

    后记 Laxcus最早源于一个失败的搜索引擎项目,项目最后虽然终止了,但是项目中的部分技术,包括FIXP协议.Diffuse/Converge算法.以及很多新的数据处理理念却得以保留下来,这些成为后来 ...

  9. Laxcus大数据管理系统2.0(12)- 第十章 运行

    第十章 运行 本章将介绍一些Laxcus集群基本运行.使用情况,结合图片和表格表示.地点是我们的大数据实验室,使用我们的实验集群.数据来自于我们的合作伙伴,软件平台混合了Windows和Fedora  ...

随机推荐

  1. C++设计新思维的traits和policy

    http://blog.csdn.net/zhoudaxia/article/details/4486487 这篇博客讲得挺清楚的,本来想自己写写看总结下的,不过看了下这个文章已经写得很清楚了,倒没有 ...

  2. java工程师分享:我是如何自学成才的?

    原文:http://www.java800.com/peixun-79062115.html 我是10年河南工业大学的毕业生,当时我们专业许多学生都去报了java培训机构,去达内的都不少.我也想去培训 ...

  3. Win8下修改任務欄的資源管理器默認打開位置

    不能像win7一樣右鍵屬性改了,但還是有辦法的. 新建一個文件夾,建立快捷方式,右鍵快捷方式,將目標改為%windir%\explorer.exe /n,/e,D:\Desktop 然後將該快捷方式拖 ...

  4. php判断用户客户端是否是微信内置客户端

    微信内置浏览器的渲染方式在某些方面和其他浏览器不同,所以有时候需要做一些兼容性处理,那么就需要判断是否是微信内置浏览器.最好的判断方式就是通过 User Agent 来判断. 工具/原料   php ...

  5. Protobuf从安装到配置整理帖

    新做的Mini项目计划使用Google的Protobuf来做,关于Protobuf是什么玩意能干什么请自己去看这里:http://code.google.com/p/protobuf/ 这里讲一下安装 ...

  6. 通过JSTL+EL实现循环迭代

    使用前需要导入包 jstl.jar 和 standard.jar <%@ page language="java" import="java.util.*,com. ...

  7. embed标签的使用(在网页中播放各种音频视频的插件的使用)

    播放器插件使用说明: 代码:< EMBED src=“music.mid”autostart=“true”loop=“2”width=“80”height=“30”> src:音乐文件的路 ...

  8. 利用Hadoop实现超大矩阵相乘之我见(二)

    前文 在<利用Hadoop实现超大矩阵相乘之我见(一)>中我们所介绍的方法有着“计算过程中文件占用存储空间大”这个缺陷,本文中我们着重解决这个问题. 矩阵相乘计算思想 传统的矩阵相乘方法为 ...

  9. Informix如何释放异常的锁资源

    问题 在Informix数据库中,锁的使用和释放是自动完成的.但在某些异常情况下,当前台程序退出(正常或异常)后,相应在数据库中的会话没有终止,其占有的资源(主要是锁)没有被释放,影响了其他用户的使用 ...

  10. Microsoft visual studio中文字样输出

    解决办法: 可以尝试下通过: 1.file->高级保存选项-> 2.工具->选项->文本编辑器->自动检测不带签名的UTF-8编码