数据库大作业介绍.pptxVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
数据库大作业报告;工作简介 3种join(等值连接)实现方式 动态数据采样+代价估计多表连接优化 3种执行树生成引擎 支持日志文件 支持配置文件 支持结果去重(自然连接)和不去重(笛卡尔积连接) 自动生成测试文件 2000+行代码;;假设和前提II 假设hadoop的任务执行都是串行的,不存在并行调度或是流水线并发调度的情况 在单机伪分布式环境中的hadoop任务执行流程符合上述假设 该假设主要是为了简化hadoop任务的代价分析;Join方法 共实现了以下3种join方法: 基本连接(normal join) 复制连接(copy join) 半连接(semi join) 下面首先对三种方法做简要介绍;普通连接(normal join) Map端唯一的工作是给数据打标记 Reduce端进行join操作(又称为reduce端的连接) 缺点:网络传输量大,没有任何优化,效率低下 优点:可以认为没有内存限制(如果这种join方法因为内存不足而无法执行,那么其他join方法自然也不行);复制连接(copy join) 使用hadoop的distributedcache,在连接开始之前将较小的表发送至每一个map端 Map端可以完成join过程(又称为map端连接) Reduce端的唯一工作是去重 缺点:内存限制高,要求小表能放进内存buffer 优点:map端连接,极大减少网络传输量,效率最高;半连接(semi join) 借用半连接的思想实现等值连接 使用hadoop的distributedcache,在连接开始之前将小表的key发送给每个mapper(实际中压缩为bloom filter) Map端利用bloom filter过滤掉不可能出现在结果中的数据,极大减少了网络传输量 Reduce端执行join操作并去重 缺点:预处理过程多,启动延迟大 优点:利用bloom filter过滤数据,极大减少了网络传输量,效率较高;数据采样 在连接前先对数据随机采样,获取统计信息,使代价模型能够更加精确地估计出连接代价 数据采样百分比可以在配置文件中按需设定 采样信息包括:;?;代价模型 在hadoop任务串行化执行的假设下,任意时刻最多有一个join任务在执行,可以认为这个join任务独占了系统资源。因此在硬件资源许可的情况下应该尽量选择效率高的join方法 复制连接要求小表要能放进内存buffer 半连接要求bloom filter要能放进内存buffer(通常情况下都能满足) 基本连接对内存大小没有要求 效率:复制连接半连接基本连接 下面对3种join方法的代价进行简单分析,假设R表和S表做连接得到T表;普通连接的代价估计;复制连接的代价估计 假设有n个mapper,且S表很小;半连接的代价估计 Semijoin分为2个mapreduce任务 假设由S表产生bloom filter,且忽略bloom filter的代价;代价模型 当任意join任务的join方法被确定后,可以使用搜索、贪心、动态规划等技术确定多表连接的调度方案 我们实现了3种调度引擎: Na?ve,从左到右顺序连接,即没有任何优化的调度方案,可作为benchmark。空间复杂度为O(1) Greedy,类似huffman编码的思想,每次挑选代价最小的表做join。空间复杂度为O(n) DP,用动态规划方法找出最优的调度方案。空间复杂度为O(n^3);多表连接执行流程 采样数据 选择join方法,估计代价 使用贪心法或动态规划方法生成执行树 执行mapreduce任务;具体实现 这里不对代码细节做分析,仅展示基本的包结构;测试和分析 在测试和分析之前,首先对测试数据进行一些简要说明 为了方便讨论,这里先给出有关测试数据的3个概念: 重合度(coincide) 核心长度(core size) 重复度(duplicate) ;?;?;?;产生测试数据恰好是join的逆过程,首先产生join结果,然后将其拆分 可以看出,这种方法产生的表的核心长度(core size)都相同;表的重合度(coincide)、核心长度(core size)和重复度(duplicate)这三个参数大体上反映了真实环境中的数据特征,而且直接影响到join操作的效率和join的结果表的大小 通常情况下,核心长度这个参数反映了join结果表的大小,而重合度越高,说明表的“干货”比例越高,“水分”越少,如果重复度大于1,则join操作会使表的体积呈指数级膨胀 例如: 如果指定表R的core size=1KB,coincide=20,则产生出来的表R的实际大小为1/0.2=5KB 如果指定表S的core size=1KB,coincide=50,则产生出来的表S的实际大小为1/0.5=2KB 如果表R的重复

文档评论(0)

a336661148 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档