[发明专利]一种基于Spark大数据处理平台的查询方法有效
申请号: | 201510930909.1 | 申请日: | 2015-12-15 |
公开(公告)号: | CN105550318A | 公开(公告)日: | 2016-05-04 |
发明(设计)人: | 万修远 | 申请(专利权)人: | 深圳市华讯方舟软件技术有限公司;深圳市华讯方舟科技有限公司 |
主分类号: | G06F17/30 | 分类号: | G06F17/30 |
代理公司: | 北京律和信知识产权代理事务所(普通合伙) 11446 | 代理人: | 武玉琴;刘国伟 |
地址: | 518102 广东省深圳市宝*** | 国省代码: | 广东;44 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 基于 spark 数据处理 平台 查询 方法 | ||
技术领域
本发明涉及一种数据处理的查询方法,尤其涉及一种基于Spark大数据处理平台 的查询方法。
背景技术
随着互联网的发展,数以万计的网页不断涌现,而要搜索这些网页首先要抓取存 储,然后进行分析计算,google就是这么做的,但是日益庞大的数据使得存储面临着单台机 器容量不够的问题,查询面临着耗时太多的问题;针对这两个问题,google提出了分布式存 储和分布式并行计算的解决方案,而后来的hadoop产品是这种解决方案的源码实现; hadoop提供了分布式文件系统HDFS和分布式并行计算框架MapReduce,随着hadoop的发展, 其生态系统又不断涌现新的项目产品,如Hbase、hive、pig等,但它们都是基于HDFS存储层 和MapReduce计算框架,MapReduce通过在集群的多个节点上并行执行计算,因此大大加快 了查询的速度,但随着数据量的日益增大,MapReduce渐渐显得力不从心,于是基于内存计 算的Spark计算框架应运而生,Spark的查询速度相比hadoop提升了100倍,因此是目前最先 进的分布式并行计算框架;随着Spark生态系统的发展,在其上又涌现出SparkSQL、Spark Streaming、MLlib、GraphX等,其中SparkSQL是针对SQL用户开发的可以用SQL语言对结构 化数据进行分析查询的工具。
如图1所示,现有技术中,以使用SparkSQL应用程序为例,基于Spark大数据处理 平台的查询方法可以分为五个步骤:
步骤1、SparkSQL应用程序接收用户的SQL语句后,进行语法解析、执行策略优化、 job(查询作业)生成,最后通过调用Spark平台中的SparkContext接口进行job的提交;
步骤2、SparkContext收到job后,定义Task(计算任务)执行成功后如何存储计算 结果,然后提交job给eventProcessActor,接着等待eventProcessActor告知job执行结束, 结束后将计算结果返回给SparkSQL;
步骤3、eventProcessActor收到提交job的事件后,在各个节点分配多个Task开始 并行计算;
步骤4、每个Task执行完毕后向eventProcessActor报告状态和结果, eventProcessActor统计job的所有Task是否全部完成,若完成,则通知SparkContext提交 的job已结束,SparkContext返回计算结果给SparkSQL;
步骤5、SparkSQL得到计算结果后,先进行格式转化,然后拷贝一份给输出模块, 最后由输出模块输出结果。
如图2所示,步骤1主要是解析SQL语句的语法并生成一组代表一个Job的RDD,RDD 是一种分布式数据结构,它描述了要处理的分布式存储的数据以及怎样处理的算法,因此 一个RDD就代表对数据的一个操作,一组RDD就是一个操作序列,按序完成了这一系列操作 后即代表完成了一次查询计算;Spark采用了延迟执行策略,即每个操作不先执行,而是先 生成操作的序列,然后把这个序列发送给执行器执行;这一组RDD所代表的操作因为有序且 不循环,因此其组成的逻辑依赖图又称有向无环图(DAG);在DAG中,下游的RDD是上游的RDD 执行某个操作后生成的。
如图3所示,步骤2主要是将DAG提交给处于另一个线程环境的 eventProcessActor,提交前,分配一块内存,并告知eventProcessActor当Task执行成功后 往这块内存中存储结果,提交后,当前线程挂起,等待eventProcessActor在job完成后唤醒 它,被唤醒后,此时所有Task已经执行结束,并且计算结果全部已经存储到事先分配的内存 中;因此直接将这块存储了结果的内存地址返回给SparkSQL模块。由于要等到所有Task执 行结束才能返回结果,因此客户响应时间过长,事实上,每个Task的结果都是最终结果的一 个子集,没有必要一起输出所有的结果子集;另外,由于输出前要存储整个查询结果,结果 的大小将直接受限于程序的堆栈大小。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于深圳市华讯方舟软件技术有限公司;深圳市华讯方舟科技有限公司,未经深圳市华讯方舟软件技术有限公司;深圳市华讯方舟科技有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201510930909.1/2.html,转载请声明来源钻瓜专利网。