分布式大数据函数依赖发现(2)

2019-02-14 23:52

李卫榜等:分布式大数据函数依赖发现以在节点S进行.这里选择元组数量分布最多的节点作为执行节点,可以减少数据迁移量及通信代价.具体算法如下:算法1.FDC盯一Dis∞口Pr算法.输入:D一(D,,…,D。)、属性集合x;输出:发现的FDs集合三7./*在任一节点S;,并行执行以下操作:*/①foreachi∈[1,托]do②count(i)一InI;/*统计各节点元组个数*/③endfor④找出count(J)值最大的节点Si;/*找出包含元组最多的节点,即执行节点*/⑤foreach忌∈[1,7z]andi≠歹⑥Di+一D。;/*其他节点将所有元组迁移到执行节点*/⑦endfor⑧三7一Disco口Pr(Di,x);/*在执行节点发现函数依赖*/⑨返回三7.由于该算法将所有数据迁移到一个节点,在该节点进行函数依赖发现,在大数据背景下,大量数据迁移到一个节点,检测任务由一个节点承担,导致负载严重不均衡,该节点很容易成为影响算法执行效率的瓶颈.函数Disco粥r()对输入的数据,执行具体的函数依赖发现.Dis∞口er()的执行过程如下所示:函数1.Di5fo口口r()函数.输入:D一(Dl,…,D。)、属性集合x;输出:发现的FDs集合三7.①生成候选FDs集合三和搜索空间@;②foreach候选FD够∈三③判断妒是否为FD;④endfor⑤if9isaFD/*9满足函数依赖*/⑥{三7+一舻;)⑦else{对搜索空间@剪枝;⑧三一一被剪枝的候选FDs;)⑨返回三7.4.2分布式并行发现算法前面提到的算法FDc以一Dis∞u8r由于负载均衡度低,仅能在单个节点执行函数依赖发现,效率较低,特别是在大数据背景下.为提高分布式大数据函数依赖发现的效率,本文提出了一种适合大数据的万方数据并行函数依赖发现算法FDP以LDis∞口∽在分布式环境下,进行函数依赖发现的过程中,除非采用诸如算法FDC∞一Dis∞uPr那种先将数据集中然后使用集中式发现方法,否则都需要对分布在各个节点的数据进行重新分布.数据重分布要满足的必要条件是:重分布后的数据,在各个节点上进行函数依赖的发现,要能保证发现的准确性,即对任意候选函数依赖,其潜在存在冲突的元组在重新分布后要分布在相同的节点.引理4.对于一个有咒个属性的关系r,其候选函数依赖的个数为咒×2—1一咒个.证明.由于这里仅考虑简单非平凡函数依赖,也就是函数依赖右部RHS部分包含一个属性的非平凡函数依赖的情况.对于关系r的所有候选函数依赖,其LHS属性个数最少为1个,最多为咒一1个.由此可见,关系r的候选函数依赖中,LHS部分属性个数为1的候选函数依赖个数为C:C:一,个,LHS部分属性个数为2的候选函数依赖个数为C:C:一:个,LHS部分属性个数为3的候选函数依赖个数为C:C:一。个,…,LHS部分属性个数为,z一1的候选函数依赖个数为C:_1Ci个,因此总的候选函数依赖个数为C:cL,+C:cL。+C:CL。+…+CrlC{一1×C:+2×C:+3×Ci+…+(咒一1)×C:q—o×C:+1×C:+2×C:+3×C:+…+(竹一1)×C:『1+咒×C:一咒×C:一∑.『×q一咒×c:一咒×2”~一咒.证毕.J=O由引理4不难看出,候选函数依赖的个数随着关系r的属性个数他的增加呈指数级增长.大数据背景下,为提高函数依赖发现的负载均衡度,对每一个候选函数依赖,需要对数据进行重分布.而数据的重分布会增加网络的负载,在大数据背景下,这种网络负载的增加对发现效率的影响十分明显.为了尽可能减少数据重分布的次数和因数据重分布对网络负载的影响,本文提出一种候选函数的划分方法,将候选函数依赖进行分组,使得组内的候选函数依赖可以通过一次数据重分布进行检测,从中发现函数依赖,去除不符合条件的候选函数依赖,并根据已发现的不满足条件的候选函数依赖,对候选函数依赖集合进行剪枝,从而提高分布式环境下大数据函数依赖发现的效率.具体的候选函数依赖分组的策略如下:考虑根据待发现的关系r的属性集合的每一个288属性,对候选函数依赖进行分组,每一组内的候选函数依赖的LHS部分有着公共的属性,不同分组的LHS部分的公共属性不同,假定关系r的属性集合包含m个属性,则可以将候选函数依赖分成m组.对每一组内的候选函数依赖,可以通过一次数据重分布进行检测从而发现其中包含的函数依赖.假定待发现的关系r包含的属性个数为咒,以第1个属性为LHS公共属性的候选函数依赖,其LHS包含的属性个数最多为咒一1个,最少为1个,总的候选函数依赖个数可以按如下方式计算:LHS部分包含竹一1个属性的候选函数依赖个数为C:二;C:一。一(。Ⅷ个,LHS部分包含咒一2个属性的候选函数依赖个数为C:二;C:。一。。吲个,…,LHS部分包含2个属性的候选函数依赖个数为C:一,×C:,一,个,LHS部分包含1个属性的候选函数依赖个数为C:一。C:。~。个.总的候选函数依赖个数为C=;CL,(,。)+C#;CL。一(,。)+…+CL,CL。一。+C譬。CL,一。一1×C:一1+2×C:一1+…+(咒一2)×C=;+(扎一1)×C::二}一”一1∑歹×c01一(咒一1)×2”1—1一j=0(,z一1)×2”2.以第2个属性为LHS公共属性的候选函数依赖,去除前面以第1个属性为LHS公共属性的候选函数依赖,其LHS包含的属性个数最多为咒一1个,最少为1个,总的候选函数依赖个数可以按如下方式计算:LHS部分包含咒一1个属性的候选函数依赖个数为C:二;C:。。。吲个,LHs部分包含行一2个属性的候选函数依赖个数为C:二;C:一,一。。吲个,…,LHS部分包含2个属性的候选函数依赖个数为C:一:×C:。一,个,LHS部分包含1个属性的候选函数依赖个数为C:一。C:。~。个.总的候选函数依赖个数为C=;C:,(。2)+C=;CL,一(。一3)+…+CL:C:一。一。+C娶:CL。一。一1×CL:+2×C:一:+…+(咒一2)×C=;+C■:+CL。+…+C=l—r2n一2∑歹×a一。+∑睥z—J=Oj一0(咒一2)×2”3+2”2.同理,以第3个属性为LHS公共属性的候选函数依赖,去除前面以第1个属性和第2个属性为LHS公共属性的候选函数依赖,其LHS包含的属万方数据计算机研究与发展2015,52(2)性个数最多为咒一2个,最少为1个,总的候选函数依赖个数可以按如下方式计算:LHS部分包含咒一2个属性的候选函数依赖个数为C:二iC:一。咱-3)个,LHS部分包含咒一3个属性的候选函数依赖个数为C:二{C:一,一。。叫个,…,LHS部分包含2个属性的候选函数依赖个数为C:一。×C:,一,个,LHS部分包含1个属性的候选函数依赖个数为C:一。C:一。。个.总的候选函数依赖个数为C=;CL,。,。)+C={CL,一(,r。)+…+CL。CL。一。+C■C■,一。一2×C譬。+3×Ch+…+(咒一2)×C墨+(咒一1)×C霜=∑歹×睥。+2×∑睥。一j=0j=O(n一3)×2”4+2×2”3.同理,以第4个属性为LHS公共属性的候选函数依赖,去除前面以第1个属性、第2个属性和第3个属性为LHS公共属性的候选函数依赖,其LHS包含的属性个数最多为卵一3个,最少为1个,总的候选函数依赖个数可以按如下方式计算:LHS部分包含”一3个属性的候选函数依赖个数为C:二:C:一,一。。叫个,LHS部分包含咒一4个属性的候选函数依赖个数为C:二iC:一,一(。_5)个,…,LHS部分包含2个属性的候选函数依赖个数为C:一。×C:。。个,LHS部分包含1个属性的候选函数依赖个数为C:一。C:一。一。个.总的候选函数依赖个数为C=:C:~,一(。一。)+C:二iCL。一(,r_。)+…+C:一。C:~,一,+C:一。CL。一。一3×C■+4×CL。+…+(咒一2)×C叠+(咒一1)×c霉一∑J×c0。+j=03×>:(¥。一(船一4)x2”5+3×2”4.j鲁O同理,进一步可以求出以第5个属性为LHs公共属性的候选函数依赖,去掉前面以第1个属性、第2个属性、第3个属性和第4个属性为LHS公共属性的候选函数依赖,其包含的候选函数依赖个数为(72——5)×2”6+4×2”一5个.由引理3可知,包含以个属性的关系r的候选函数依赖个数为咒×2”1一咒个.根据前面的结果,总的候选函数依赖中所占比例为与专筹,在以第1个属性为LHS公共属性的候选函数依赖在挖趋于无穷大的情况下,所占比例近似结果为李卫榜等:分布式大数据函数依赖发现罂玄又方i一嬲F帝一虿‘。一。。咒×2”一1一咒i=2—1/2『{2‘同理,以第2个属性为LHS公共属性的候选函垒[鲁笔暑竽,在以趋于无穷大的情况下,所数依赖在总的候选函数依赖中所占比例为占比例近似结果为!婴—■&i丁=;■一一罂F而一百‘,.(咒一2)×2”一3+2一一2,.】】以第3个属性为LHs公共属性的候选函数依赖在总的候选函数依赖中所占比例为((挖一3)×2—4+2×2”3)/(,z×2—1一咒),在咒趋于无穷大的情况下,所占比例近似结果为,.婴——‘叉虿丁i:-一百‘(挖一3)×2—4+2×2”一3】以第4个属性为LHS公共属性的候选函数依赖在总的候选函数依赖中所占比例为((咒一4)×2—5+3×2—4)/(竹×2”1~规),在咒趋于无穷大的情况下,所占比例近似结果为!翼——‘又虿丁i_一丽。,.(咒一4)×2—5+3×2,r4】从以上不难看出,即便在不利用已发现结果对候选函数依赖进行剪枝的情况下,通过1次数据重分布,对第1个候选函数依赖分组进行处理,就可以对整合候选函数依赖集合中大约一半的候选函数依赖进行检测,从中发现函数依赖;通过2次数据重分布,可以对整合候选函数依赖集合中大约3/4的候选函数依赖进行检测,从中发现函数依赖;通过3次数据重分布,可以对整合候选函数依赖集合中大约7/8的候选函数依赖进行检测,从中发现函数依赖;通过4次数据重分布,可以对整个候选函数依赖集合中大约15/16的候选函数依赖进行检测从中发现函数依赖.假定关系r包含属性集合为{A,B,C,D),根据引理3,包含的候选函数依赖总数为4×24-1—4—28个,假定属性A为第1个属性,属性B为第2个属性,属性C为第3个属性,属性D为第4个属性,则根据前面提到的分组原则,以A属性为LHS公共属性的候选函数依赖个数为(4一1)×24_1—12个,分别为ABC—D,ABD—C,ACD—B,AB—C,AB—D,AC—,B,AC—D,AD—B,AD—C,A—B,A—c,A—D.该分组内的候选函数依赖在搜索空间上的表示如图4所示,其中画虚线的连线所代表的候选函数依赖即为当前分组中包含的候选函数依赖.万方数据289,///:爪Level1,7/\\/,一Z一BCBDCD3一占CD4上.19.4Groupofcandldate上.‘IJsdlvldedbyA.图4依据属性A分组候选函数依赖同理,以属性B为LHS公共属性的候选函数依赖分组中包含的候选函数依赖个数为(4—2)×24_3+2”2—8个,分别为BCD—A,BC—A,BC—D,BD—A,BD—+C,B—A,B—C,B—D.以属性C为LHS公共属性的候选函数依赖分组中包含的候选函数依赖个数为(4—3)×24-4+2×24-3—5个,分别为CD—A,CD—B,C—A,C—B,C—D.以属性D为LHS公共属性的候选函数依赖分组中包含的候选函数依赖个数为(4—4)×24_5+3×24_4—3个,分别为D—A,D—B,D—C.在分布式环境下,为实现函数依赖的并行发现,需要对分布式数据进行重分布.为保证函数依赖发现的准确性和完整性,本文考虑对各个节点上的所有元组计算散列值,每次重分布时,以当前分组内候选函数依赖LHS部分公共属性的值为散列值,通过散列函数将元组映射为。到咒一1的整数值,押为节点的个数.假定D为关系模式尺的一个实例,D水平切分为(Dl,.一,D。),根据各个元组的对应散列值的不同,散列函数将D的任一切分D。分成n块,分别为H¨,…,H7.对V忌∈[1,靠],H;内的元组有着相同的散列值.这样可以将D分成挖块,每一块内的元组有着相同的散列值,如图5所示.H1为散列值为。的元组组成的块,H2为散列值为1的元组组成的块,以此类推.对V歹∈[1,咒],有印一川U…UH:.引理5.假定A为关系,一的一个属性,X为r的一个属性集合且A∈X,则对于r中任意两个元组£。和t:,若满足f。({A)UX)一£:({A)UX),则必然有£,(A)一£2(A),这里£1(A)表示元组£。关于A的属性值.证明.假设£,({A)UX)一≠:({A)UX)且£,(A)≠£。(A),由f。({A)UX)一£。({A)UX)可知,对VK∈{A)UX,£1(K)一£。(K)成立.又A∈{A)UX,故290计算机研究与发展2015,52(2)D1》&D2岛Fig.6Broadcastcommunicationbetweendistributednodes.Fig.5Thepartitiono{D1,…,D。byHashfunctIon.图6分布式各节点之间的广播通信图5D.,…,D,,被散列函数切分算法FDP口L眈sco伽r的具体执行过程如下所示:算法2.FDP口r—Di5couer算法.输入:D一(D,,…,聩)、属性集合X、公共属性A;输出:发现的FDs集合三7./*在每一个节点S。,并行执行:*/①foreach忌∈[1,九]do②③foreach£∈D:dof,(A)一£:(A)成立,与假设矛盾,故假设不成立.因此原命题成立,即若满足f,({A}UX)一£。({A}UX),则必然有fl(A)一f2(A).证毕.由引理5可知,对于I。HS有着共同属性的每一个分组内的候选函数依赖来说,假定其公共属性为A,则对关系r上的所有元组来说,A属性值相同是{A)UX属性值相同的必要条件.根据引理5不难看出,通过散列函数的方法将所有节点上的元组进行分组,保证了对一个组内的所有候选函数依赖,其潜在冲突的元组都划分到相同的数据块上,以图5中散列函数的切分为例,重分布后的函数满足:Ⅱ{x}(D)一UⅡ(U?∈L1ⅢJif∥(f)一一是一1;/*p(£)为散列函数,将元组属性值映射为从。到札一1的整数*/④⑤磁一H;U£;/*将Di散列成行份*/endfo。H;),,∈L1ⅢJ{x}⑥endfor其中X∈Afrrs(R),即数据重分布后,对关系R的任一属性集合X,各个子节点上等价类的并集与集中式情况下等价类相同,这样保证了函数依赖发现的准确性.同时,不同数据块可以在不同的节点并行进行函数依赖发现,这又可以提高函数依赖发现的效率.⑦foreach忌∈[1,行]do⑧如果睁!J,传输H;到节点S,;⑨endfor⑩逐层生成候选I。HS包含属性A的FDs集合三;⑩foreach妒∈三&&妒在搜索空间顶部⑥Check(妒);并行函数依赖发现过程中,数据重分布以后,首先根据属性集合生成候选函数依赖集合,然后依据3.2节中介绍的剪枝策略和当前的函数依赖发现结果,对候选函数依赖集合及时进行剪枝.在各个节点并行执行函数依赖发现时,如果发现当前验证的候选函数依赖不满足函数依赖,则通过广播通知其余节点,如图6所示,然后在所有节点同时停止对当前函数依赖的验证,从候选函数依赖集合删除掉当前候选函数依赖,并依据引理3对候选函数依赖集合中所有LHS部分,为当前候选函数依赖I,HS部分真子集的候选函数依赖进行剪枝.⑩endfor⑩⑩if(C矗Pc是(舻)!一true){广播舻到其他节点;停止执行Check(9);三一一妒;⑩⑥⑩⑩)else{三7+一p;三一一p;)⑩⑤返回三7.其中函数C^ec是()的功能为检测候选函数依赖万方数据李卫榜等:分布式大数据函数依赖发现是否为函数依赖,如果是则返回true,否则返回false,C矗P如()的实现过程如下所示:函数2.C^Pf忌()函数.输入:候选FD∞:X—y;输出:trueorfalse.①if(JⅡxf—I风uvI){/*如果候选函数依赖X—y满足函数依赖*/②返回true;③)else{返回false.)前面提到,第1次数据重分布后可对约1/2的候选函数依赖进行验证,第2次数据重分布后,可检测约3/4的候选函数依赖并从中发现存在的函数依赖.对于有行个属性的关系r来说,生成的(,z—1)一attr候选函数依赖有C:1C:一。川,一咒个.依据前面的候选函数依赖分组规则,依据第1个属性得到的(咒一1)一attr候选函数依赖个数为卵一1个,依据第2个属性得到的(咒一1)一attr候选函数依赖个数为1个,也就是说,前面2次分组得到的候选函数依赖包含了所有的(,2—1)一attr候选函数依赖.由引理3可知,任一(行一1)一attr候选函数依赖如果不成立,则可对2—1—2个LHS部分为当前(咒一1)一attr候选函数依赖LHS部分真子集的候选函数依赖进行剪枝,如果所有的咒个(行一1)一attr候选函数依赖均不成立,则可以对,z×(2”1—2)个I。Hs部分为当前(咒一1)一attr候选函数依赖LHs部分真子集的候选函数依赖进行剪枝,可被剪枝的咒×(2—1—2)个候选函数依赖与现有的咒个(靠一1)一attr候选函数依赖个数之和为72×(2—1—2)+咒一行×2—1一九,即引理4所述的总的候选函数依赖的个数.由此可见,在理想情况下,算法FDP吖一Disco剧e,.可以通过2次数据重分布实现对所有函数依赖的并行发现.引理6.假定关系r的属性个数为规,在理想情况下,一次数据重分布可检测的候选函数依赖个数占候选函数依赖总个数的比例为生二.。一1Ⅳ证明.前面提到,在理想情况下,以第1个属性为LHS公共属性的候选函数依赖个数为(行一1)×2—2个,其中LHS部分为第1个属性的候选函数依赖个数为咒一1个,因此(以一1)×2”2个候选函数依赖中,在LHS部分去掉第1个属性后不为空的候选函数依赖个数为(咒一1)×2—2一咒一1一(佗一1)×(2—2—1),这部分候选函数依赖也是在理想情况下一次数据重分布可以剪枝的候选函数依赖个数.也就是说,在理想情况下第1次数据重分布可以检测万方数据的候选函数依赖个数为(他~1)×2”2+(n一1)×(2—2—1)一(卵一1)×(2—1—1).由引理4可知,属性个数为行时,可生成的候选函数依赖总个数为咒×(2—1~1)个,因此,一次数据重分布可检测的候选函数依赖个数占候选函数依赖总个数的比例为(行一1)×(2”1一1)一7z一1‘卵×(2”1—1)72由引理6可知,理想情况下,当n趋于+。。时,函数依赖总个数的比例近似为lim生』一1.证毕.…1实验设置1)实验环境本文实验使用了由8台服务器通过局域网连接GB的Intelxeon2处理器和16GB内存;操作系统为台为分布式系统架构Hadoop平台与基于BSP(BulkParallel)并行计算框架的Hama平台.2)实验数据本文使用了2种不同类型的数据集,一种是美国StatesDepartnlentofmansportation)网on—timeID)、number)、起飞机场(originairport)、airport)等.数据集的规模为GB,包含了15亿条元组.使用该数据集生成一个000万条元组的数据库实例o£户^,一个包含000万条元组的数据库实例o£p厂。:.另外一种数Ooo万000万条元000万条元组的数据库实例s£“dm一次数据重分布可检测的候选函数依赖个数占候选5实验结果与分析5.1构成的一个集群,每台机器配备了主频为1.87Ubuntulo.4.所有算法均由Java实现;算法运行平Synchronous运输部(United站提供的航班按时间统计数据(airlinestatistics)[”],这是一个真实的数据集,另外一种是人工生成的数据集.第1种数据集简称“0TPF”,包含了航班调度信息和航班的起飞降落信息,数据集OTPF包含了64个属性,如航线编号(airline航班号(flight降落机场(destination35包含812据集是一个人工生成的STUDENT表的数据集,简称“sTuD”,是一个学生信息表,包含学号、姓名、性别、身份证号、手机号、院系、班级、课程、成绩、任课教师等共10个字段,2亿条元组,使用DataFactory工具生成.利用数据集STUD生成一个包含8条元组的数据库实例5£“d。,一个包含10组的数据库实例sf“d,。,一个包含12


分布式大数据函数依赖发现(2).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:空调器制冷原理培训大纲

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: