- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
基于MapReduceHadoop大表导入编程模型
基于MapReduceHadoop大表导入编程模型
摘要:
针对Sqoop在导入大表时表现出的不稳定和效率较低两个主要问题,设计并实现了一种新的基于MapReduce的大表导入编程模型。该模型对于大表的切分算法是:将大表总的记录数对mapper数求步长,获得对应每个split的SQL查询语句的起始行和区间长度(等于步长),从而保证每个mapper的导入工作量完全相同。该模型的map方式是:进入map函数的键值对中的键是一个split所对应的SQL语句,将查询放在map函数中完成,从而使得模型中的每个mapper只调用一次map函数。对比实验表明:两个记录数相同的大表,无论其记录区间如何分布,其导入时间基本相同,或者对同一表分别用不同的分割字段,导入时间也完全相同;而对于同一个大表,模型的导入效率比Sqoop有显著提高。
关键词:编程模型; Hadoop; MapReduce; Hadoop分布式文件系统; Sqoop
中图分类号:TP311.1;TP311.5
文献标志码:A
0引言
目前,对于大数据的解决方案,有商业解决方案和Hadoop生态系统[1]解决方案两种。商业解决方案具有性能高、集成度高和使用方便等特点,但是从目前Hadoop生态系统的成员来看,其多样性、灵活性、扩展性对中小企业具有很大的吸引力,已经成为他们面对大数据时的首选解决方案。大数据除了具有数据量足够大、深度足够深和广度足够宽三个主要特点[2-3]外,其数据来源丰富也是其显著特征,特别是传统的关系型数据管理系统(Relational Database Management System,RDBMS)是其数据来源的主要渠道之一,主要原因是:关系型数据库中的大数据通常不能直接利用MapReduce模型来分析(注:HadoopDB[4]可以直接利用RDBMS中的大表);历史遗留数据大部分还是存放在RDBMS中;Hadoop生态系统和传统的RDBMS是一种共生和竞争的关系[5,6]。所以,基于Hadoop生态系统的大数据分析平台需要有工具来将RDBMS中的大表高速的导入进Hadoop生态系统中,导入后的格式可为Hadoop分布式文件系统(Hadoop Distributed File System, HDFS)文件、Hive表或HBase表。由于Hive表和HBase表的物理存储结构为HDFS文件,转换较为方便,所以一般只需要实现HDFS文件即可。虽然可以利用Hadoop提供的DBInputFormat[1]来导入RDBMS中的大表,但这是一种串行的方式,效率很低。目前,Sqoop[7]提供并行导入功能的最常用工具(命令行的执行方式),但在实际的应用中,发现Sqoop作为导入大表的工具还存在性能问题和稳定性问题。性能问题指的是:当一个大表的行数达到1亿以上时,完成job的时间较长。稳定性问题指的是:同样行数的多个大表,其各自完成导入的时间差别很大;或者对同一大表用不同的分割字段。本文通过深入分析Sqoop导入原理,提出了一个新的基于MapReduce的编程模型,命名为大表导入器(Big Table Importer, BigTableImporter)编程模型,该模型能解决Sqoop目前存在的两个主要问题。
关于稳定性的测试,可以参照性能的测试,需要改变的是:建立一个没有prime key的表;写一个store procedure,往表中注入大量连续相同的行。基于这样的大表即可进行稳定性的对比测试,限于篇幅,本文没有列出详细的实验步骤。
3结语
基于Hadoop生态系统构建大数据分析平台是目前的一个应用趋势,也有一些典型案例,如Yahoo、IBM和淘宝等。但是生态系统中的一些管理成员的性能和功能还是有很大的提升空间,例如本文提到的大表导入工具Sqoop。鉴于此,本文针对数据库大表的导入需求,设计并实现了一个新的导入编程BigTableImporter。虽然二者均利用了MapReduce架构,但是在核心类的实现算法和设计思想上是完全不同的。本文的分析和实验均证明:BigTableImporter的性能比Sqoop有很大的提高,且BigTableImporter已经完全解决了Sqoop不稳定的问题。
参考文献:
[1]WHITE T. Hadoop: the definitive guide [M].影印版.3版.南京:东南大学出版社,2011.
[2]ZIKOPOLOS P C, EATON C, DEROOS D, et al. Understanding big data: analytics for enterprise class hadoop and streaming dat
文档评论(0)