的计算任务。将该任务转化为MapReduce 程序后,其运算性能如图5 所示。 图5 节点个数与任务处理时间的关系 Fig. 5 Relationship between node numbers and running time 图5 中最上面一条线完成的连接聚集任务中,store_sales 共包含144004764 个元组,item 包含62000 个元组,customer_demographics 中包含1920800 个元组,任务巨大,完成这样的 任务所需要的计算能力、内存容量等远远超过普通PC 机的承载能力。本套聚集算法,充分 利用了hadoop 计算能力的高扩展性和计算能力的并行性的特点。对于等值连接,这里有一 个技巧可以提高运算的速度,即首先对小表进行连接,然后再将他们的结果与元组相对多的 表进行连接,这样有助于提高运算的速度。为了进一步验证本套算法的高效性,又进行了下 面的实验。 2) 等值连接实验2。假设有如下查询任务,与之相对应的SQL 查询语句为 SELECT dt.d_year, item.i_brand_id, item.i_brand,sum(ss_ext_sales_price) FROM date_dim, store_sales, item WHERE dt.d_moy=11 AND dt.d_date_sk = store_sales.ss_sold_date_sk AND store_sales.ss_item_sk = item.i_item_sk GROUP BY dt.d_year, item.i_brand, item.i_brand_id; 其中,item 表中每个元组由333 个字符组成,date_dim 表每个元组由127 个字符组成, store_sales 每个元组由137 个字符组成。将该任务分解为2 个子任务。子任务1 完成选择(从 date_dim 选出满足条件为d_moy=11 的元组)以及与store_sales 的连接任务;子任务2 完成 子任务1 的结果与item 的连接任务。在将该任务转化为MapReduce 任务后,其运算性能如 图6 所示。 图6 节点个数与任务处理时间的关系 Fig. 6 Relationship between node numbers and running time 从2 个等值连接实验中可以发现,集群的处理能力并没有得到完全的发挥。一方面与数 据的分布有关,即在数据块的分布上,有的数据节点存储的块数多,有的数据节点上存储的 数据块少,在并行读取处理时,造成有的节点负载重,有的数据节点处于空闲状态。这是当 前的hadoop 版本没有很好地计算负载均衡策略。从上文的等值连接算法中也可以发现,有 些Reducer 操作是需要等待前面的任务结束后才能执行的,因此,也造成了一定资源浪费。 4 结 论 阐述了基于MapReduce 的关系型数据运算以及基于关系型数据上的数据聚集运算,主 要包括分组运算、统计元组数量、求和、均值等聚集运算。通过结合MapReduce 并行计算 模型的处理特点,充分发挥了集群系统的计算能力,极大地提高了关系型海量数据的聚集运 算性能。提出的聚集算法可以充分发挥hadoop 计算能力的扩展性和计算过程的并行性特点, 极大地提高大规模数据集上的计算效率。 学术论文网Tag:代写代发论文 论文发表 职称论文发表 代写机械论文 |