第四章 数据计算

  Laxcus所有数据计算工作都是通过网络实施。相较于集中计算,在网络间进行的数据计算更适合处理那些数据量大、复杂的、耗时长的计算任务。能够实施网络计算的前提是数据可以被分割,就是把一组大的数据分成若干组小的数据。分割数据的办法有很多种,目前最常用的是按照数值范围和散列规则进行分割。需要强调的是,在被分割后的数据里,不应该存在内容重叠的现象。

  在这一章里,我们通过介绍一个分布计算算法,来说明Laxcus集群的分布计算是如何实现的。

4.1 Diffuse/Converge算法

  Diffuse/Converge是我们设计的一套分布计算模型,与Laxcus大数据管理系统紧密结合,负责组织实施大规模数据计算工作。Diffuse/Converge算法依据我们对数据处理的理解产生,在我们的数据处理概念中,传统的集中计算模型,数据处理可以分解为两个阶段:产生、计算,如果把它扩大到网络环境,可以进一步解释为:分散、聚合。它们的区别在于:前者是直接产生数据,然后对数据进行计算,输出计算结果;后者是通过网络收集数据,经过组织整理后,再分配给多台计算机去执行计算,最后输出计算结果。实际上,分布计算与集中计算相比,只是多出数据组织整理环节,其它部分基本是一样的,但是在数据处理能力上,Diffuse/Converge算法可以驱动和计算的数据量远远超越集中计算所能提供的规模,足以满足当前各种大数据计算业务需要。

  在Laxcus里,Diffuse/Converge算法只提供计算规则和API,实际数据计算业务仍然需要用户编码实现。

  以下结合图4.1,阐述Diffuse/Converge算法的处理流程。

  如图所示,Call节点是Diffuse/Converge算法的起点,实际也是计算结果的输出点,它负责进行协调和分配数据资源,而不会产生数据和计算数据。每个分布任务都从Diffuse开始,它被指向Data节点。在这个阶段,Call节点会同时发出多个Diffuse请求,分别作用到多个Data节点上。每个Data站点根据Diffuse请求中的参数,执行产生数据的工作,数据来源可以是磁盘,也可以按照某种规则生成。这些数据产生后,被抽象处理成元数据,返回给Call站点,成为后续计算的依据。

  Converge是分布计算第二阶段,它的作用点是Work节点。同Diffuse阶段一样,Call节点也会向多个Work节点发出多个Converge请求,每个Work节点根据Converge请求中的参数,执行数据计算工作。与Diffuse不同的是,Converge是一个迭代的过程,在一次数据计算中,允许有任意多次的Converge发生,直到最后一次Converge计算生成计算结果。在此之前,Converge产生的都是元数据。

  通过以上说明可以看到,Diffuse只执行一次,Converge会执行多次。这正是本处要特别说明的:Diffuse/Converge算法的本质是阶段间串行、阶段内并行的工作方式,每个阶段完成后才能进入下一个阶段,当前阶段的数据输出是下一阶段的数据输入。阶段内的并行处理由线程执行,线程之间是无联系的独立计算。

图4.1 Diffuse/Converge 处理流程

4.2 数据计算过程中的数据平均分配问题

  在Diffuse/Converge分布计算过程中,每个Data/Work节点产生和计算的数据量常常是不一致的。这个现象如果放在这样的环境下就很容易看出来:1.集群的硬件配置完全一致;2.集群里只有一个计算任务。当这样的条件成立且数据量分配不均时,将导致Work节点在计算数据时,发生计算时间长短不一的现象,大批先期完成的子计算任务被迫等待最后一个计算结果,徒然增加了总计算时间,出现木桶短板效应。这样的数据处理显然不符合我们追求的最大计算量、同时最小计算时间的要求,如果能够使每个节点的数据量趋于相同,大家在相同或者接近的时间内返回计算结果,那么短板效应就会消失,就可以获得最大的计算效费比。显然这样的分布计算才是最合理和有效率的。

  平均分配数据量的工作由Call站点来负责。如上所述,在数据计算过程中,Data/Work站点会向Call节点返回元数据,我们在设计这些元数据时,已经考虑到平均分配数据量问题,并因此设置了一些参数。显式的如被分割的数据尺寸,隐式的参数由用户来定义和解释。通过这些参数,Call站点在计算时,可以给每个Work站点分配相同或者基本一致的数据量。这样,在理想的环境下,每个Work节点能够在相同或者接近的时间内返回计算结果,保证数据计算获得一个最佳的计算时间。

Laxcus大数据管理系统2.0(6)- 第四章 数据计算的更多相关文章

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

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

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

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

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

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

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

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

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

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

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

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

  7. Laxcus大数据管理系统2.0(5)- 第三章 数据存取

    第三章 数据存取 当前的很多大数据处理工作,一次计算产生几十个GB.或者几十个TB的数据已是正常现象,驱动数百.数千.甚至上万个计算机节点并行运行也已经不足为奇.但是在数据处理的后面,对于这种在网络间 ...

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

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

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

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

随机推荐

  1. 最新SQL手工注入语句&SQL注入大全

    看看下面的1.判断是否有注入;and 1=1;and 1=2 2.初步判断是否是mssql;and user>0 3.判断数据库系统;and (select count(*) from syso ...

  2. 在tornado中使用异步mysql操作

    在使用tornado框架进行开发的过程中,发现tornado的mysql数据库操作并不是一步的,造成了所有用户行为的堵塞.tornado本身是一个异步的框架,要求所有的操作都应该是异步的,但是数据库这 ...

  3. JavaScript深入之参数按值传递

    在<JavaScript高级程序设计>第三版 4.1.3,讲到传递参数: ECMAscript中所有函数的参数都是按值传递 按值传递 也就是,把函数外部的值复制给函数内部的参数,就和把值从 ...

  4. [Java]Java 9运行Spring Boot项目报错的解决办法

    简介 为了学习和尽快掌握 Java 9 的模块化(Module System)新特性,最近安装了 JDK 9,新建了一个 Spring Boot 进行尝试, 过程中遇到了一下报错问题,写下此文谨作为个 ...

  5. flask第三方插件DBUtils

    django中有强大的ORM支持我们来操作数据库, 但是flask没有提供对数据库的操作, 依然还是需要第三方的支持, 来提高我们的开发效率. 下载DBUtils 使用DBUtils 使用DBUtil ...

  6. 【转载】 旧版本Microsoft Office正在配置解决方法

    原文:https://blog.csdn.net/sinat_37215184/article/details/81053931 在运行Microsoft Office 2010等旧版本的Office ...

  7. Struts2+EasyUI+Hibernate小实例

    概述 这个实例主要是前台数据到后台数据的传递和后台数据到前台数据的传递,完成数据的新增,以及对新增数据的展示.下面是详细的过程: Hibernate(数据库部分) 这里只是数据库的连接和数据库实体与物 ...

  8. seleniun 爬取淘宝网

    import re from selenium import webdriver from selenium.common.exceptions import TimeoutException fro ...

  9. 转载:C语言指针使用的注意事项

    相信大家对指针的用法已经很熟了,这里也不多说些定义性的东西了,只说一下指针使用中的注意事项吧. 一.在定义指针的时候注意连续声明多个指针时容易犯的错误,例如int * a,b;这种声明是声明了一个指向 ...

  10. 如何制作 Ubuntu 系统的 USB 启动盘

    下载 Ubuntu 打开 http://mirrors.ustc.edu.cn 获取安装镜像 --> 获取 ISO 刻录 Ubuntu 到 U 盘 打开 http://rufus.akeo.ie ...