一种基于Hadoop与Spark的效用次序并行确定方法技术

技术编号:18204268 阅读:27 留言:0更新日期:2018-06-13 06:20
本发明专利技术公开了一种基于Hadoop与Spark的效用次序并行确定方法。通过在大型存储计算服务器组上搭建基于Hadoop与Spark的云系统,用户可以在客户端方便快速地进行一系列操作,并制定用户所需的方案。本发明专利技术首先在大型存储计算服务器组上搭建基于Hadoop与Spark的云系统;其次用户在客户端上制定高效的划分方法,高效的划分方法可以均衡系统负载,使各分组的计算量保持一致,进而让用户更快的确定效用次序;最后客户端连接服务器组,和基于Hadoop与Spark的云系统进行交互,高效地并行确定效用次序。本发明专利技术有着更高效、快捷、安全、易扩展等优点,适用于云系统下的大规模效用次序确定需求。

【技术实现步骤摘要】
一种基于Hadoop与Spark的效用次序并行确定方法
本专利技术涉及智能并行化信息处理领域,尤其涉及一种基于Hadoop与Spark的效用次序并行确定方法。
技术介绍
随着互联网技术的飞速发展,各行各业产生的数据呈现指数级增长的趋势,海量数据信息资源提供了新机遇、也带来了新挑战。传统单机效用次序确定方法在数据规模很大的时候会面临内存开销大、磁盘IO非常多、运行效率低下等问题。因此,需要构建云系统来实现效用次序确定工作的并行化,以提高运行效率、降低运行成本。本专利技术构建基于Hadoop与Spark的云系统以开源软件Hadoop和开源软件Spark为基础,以Hadoop的HDFS和Spark的RDD为主要构件。Hadoop是Apache旗下的一种开源软件,用于海量数据的存储和计算,主要包括HDFS和MapReduce两部分。它可以部署在成千上万台普通的物理机上组成集群,通过利用HDFS文件系统实现数据分布式存储,利用MapReduce并行计算模型实现数据并行处理。Spark也是Apache旗下的一种开源软件,通过借助弹性分布式数据集(ResilientDistributedDataset)RDD,可以高效地并行处理各种不同的应用,包括迭代式计算、交互式查询、实时数据处理等,解决了MapReduce模型的I/O负载过高、容错性差等问题。Spark采用RDD抽象数据结构,它是由多个分区组成的只读记录集合,每个分区通常存储在各个物理结点对应的内存上。利用RDD实现了分布式内存的抽象使用,是一种基于内存的计算,并将所有的计算任务翻译成对RDD的基本操作。利用persist操作我们可以将数据保存到内存或磁盘中来达到数据的多次共享和复用,有效地减少了I/O负载,从而提高效率,如果后面的操作再也用不到之前persist过的数据,可以使用unpersist来将缓存的数据从内存中删除,这样灵活地使用这两个操作可以有效地提高效率。Spark采用的编程接口包括:转换和动作类操作,可以充分利用内存对RDD中的数据进行各种处理。每个RDD的内部保存了血统(lineage)信息,lineage记录了当前RDD是如何从其他固定存储器上的数据以及对多个不同RDD的变换得到的。当某个RDD中的数据丢失或者某个结点出现故障时,通过lineage可以实现丢失数据的快速恢复,从而达到容错的目的,而不是使用副本。此外,还可以通过checkpoint机制对数据进行备份以便出错时能快速恢复,这是对lineage的辅助,对于长lineage我们可以采用checkpoint来达到高容错的目的。当用户提交一个应用到Spark系统中,调度器会自动构建一个由若干阶段(stage)组成的DAG(有向无环图)。每个阶段都包含对RDD数据的多种窄依赖类型的变换操作,并在内部进行了流水线优化。之后,调度器会分配多个任务到不同结点上,并通过在多个结点并行计算,快速对数据进行处理。
技术实现思路
本专利技术的目的在于针对现有技术的不足,提供一种基于Hadoop与Spark的效用次序并行确定方法。本专利技术的技术方案如下:一种基于Hadoop与Spark的效用次序并行确定方法,该方法包括以下步骤:(1)在大型存储计算服务器组上搭建基于Hadoop与Spark的云系统,具体过程如下:(1.1)在大型存储计算服务器组上,选取M+1台服务器,运行Linux系统,其中一台作为主服务器Master,用于与客户端的连接交互访问,剩余的M台服务器用于并行计算,称作Slaves;(1.2)ssh无密码验证配置:安装和启动ssh协议,配置Master无密码登录所有Salves,并配置所有Slaves无密码登录Master,这样每台服务器上都有Master和Slaves的公钥;(1.3)搭建Java和Scala基础运行环境,在此基础上,将Hadoop与Spark文件分发到Master和所有Slaves上,并在Master服务器上启动Hadoop与Spark;至此,完成基于Hadoop与Spark的云系统的搭建,HadoopHDFS用来做数据存储,SparkRDD用来并行计算;(2)用户在客户端上制定高效的划分方法,高效的划分方法可以均衡系统负载,使各分组的计算量保持一致,进而让用户更快的确定效用次序,具体过程如下:将效用次序的搜索空间表示为一棵集合枚举树,树的每个结点表示一个次序,其中,树根表示一个空的次序,第k层表示所有k阶效用次序;为了避免树中出现重复的次序,集合枚举树中的所有项目需按照指定顺序排列;假设项目有N个并按照字典序排序,云系统有M个节点(服务器),作如下分配:如果N<=M,那么只要分配N个节点,将N个项目一个接一个分配给节点1,2,…N,如果N>M,将前M个项目一个接一个分配给节点1,2,…M,计算第M+1个项目的负载,将其加入到负载最小的那一节点,并更新该节点的负载值,之后的项目做同样的操作,最后得到一个Map类型的数据结构GList;(3)客户端连接服务器组,和基于Hadoop与Spark的云系统进行交互,高效地并行确定效用次序:具体过程如下:为了更高效的适用效用次序确定方法,增强系统可用性,从容错性、资源分配、任务调度、RDD压缩等方面入手对基于Hadoop与Spark的云系统进行优化配置,配置如下:设置spark.speculation的值为true,使得在任务调度的时候,如果没有适合当前本地性要求的任务可供运行,将跑得慢的任务在空闲计算资源上再度调度;因为网络或者gc的原因,worker或executor没有接收到executor或task的心跳反馈,增大timeout值来提高容错性;在磁盘IO或者GC问题不能得到很好解决时,将spark.rdd.compress设置为true,即采用RDD压缩,在RDDCache的过程中,RDD数据在序列化之后进一步进行压缩再储存到内存或磁盘上;为了应对大量数据中快速确定效用次序,将并行数值spark.default.parallelism设置为用于计算的服务器的数量(Slaves)的两倍到三倍;将Spark中默认的序列化方式改为Kryo,这样更快速高效;配置完成后,开始以下两个阶段:第一阶段先将存储在分布式文件系统HDFS中的数据库文件加载到程序中,转换为弹性分布式数据集RDD,并对此RDD中的元素计算效用值,得到每条事务记录的效用值,再继续执行归并操作来累加计算数据库文件中每个项目的事务加权效用TWU,并将此数据库RDDcache到内存中以便之后的操作可以快速访问;第二阶段读取第一阶段cache到内存的数据库RDD,读取每条事务记录,再根据步骤(2)估算每条事务记录中每个项目的负载,均衡划分项目以及事务记录,得到一条事务记录中各个项目及其子搜索空间属于的分组,继而通过归并操作得到每个分组中的项目及其中各个项目的搜索空间,对划分之后的每个分组中的项目及其中各个项目的搜索空间进行深度优先搜索,最终并行确定效用次序。进一步地,所述步骤(3)中,第一阶段的具体过程如下:首先经textFile()操作将数据库中存储在HDFS上的事务记录文件加载到程序中,得到一个RDD,记为transactionsRDD,该tra本文档来自技高网
...
一种基于Hadoop与Spark的效用次序并行确定方法

【技术保护点】
一种基于Hadoop与Spark的效用次序并行确定方法,其特征在于,该方法包括以下步骤:(1)在大型存储计算服务器组上搭建基于Hadoop与Spark的云系统,具体过程如下:(1.1)在大型存储计算服务器组上,选取M+1台服务器,运行Linux系统,其中一台作为主服务器Master,用于与客户端的连接交互访问,剩余的M台服务器用于并行计算,称作Slaves;(1.2)ssh无密码验证配置:安装和启动ssh协议,配置Master无密码登录所有Salves,并配置所有Slaves无密码登录Master,这样每台服务器上都有Master和Slaves的公钥;(1.3)搭建Java和Scala基础运行环境,在此基础上,将Hadoop与Spark文件分发到Master和所有Slaves上,并在Master服务器上启动Hadoop与Spark;至此,完成基于Hadoop与Spark的云系统的搭建,Hadoop HDFS用来做数据存储,Spark RDD用来并行计算;(2)用户在客户端上制定高效的划分方法,具体过程如下:将效用次序的搜索空间表示为一棵集合枚举树,树的每个结点表示一个次序,其中,树根表示一个空的次序,第k层表示所有k阶效用次序;为了避免树中出现重复的次序,集合枚举树中的所有项目需按照指定顺序排列;假设项目有N个并按照字典序排序,云系统有M个节点(服务器),作如下分配:如果N<=M,那么只要分配N个节点,将N个项目一个接一个分配给节点1,2,…N,如果N>M,将前M个项目一个接一个分配给节点1,2,…M,计算第M+1个项目的负载,将其加入到负载最小的那一节点,并更新该节点的负载值,之后的项目做同样的操作,最后得到一个Map类型的数据结构GList;(3)客户端连接服务器组,和基于Hadoop与Spark的云系统进行交互,高效地并行确定效用次序:首先从容错性、资源分配、任务调度、RDD压缩方面入手对基于Hadoop与Spark的云系统进行优化配置,配置如下:a.设置spark.speculation的值为true,使得在任务调度的时候,如果没有适合当前本地性要求的任务可供运行,将跑得慢的任务在空闲计算资源上再度调度;b.增大timeout值来提高容错性;c.在磁盘IO或者GC问题不能得到很好解决时,将spark.rdd.compress设置为true,即采用RDD压缩,在RDD Cache的过程中,RDD数据在序列化之后进一步进行压缩再储存到内存或磁盘上;d.将并行数值spark.default.parallelism设置为用于计算的服务器的数量的两倍到三倍;e.将Spark中默认的序列化方式改为Kryo;配置完成后,开始以下两个阶段:第一阶段先将存储在分布式文件系统HDFS中的数据库文件加载到程序中,转换为弹性分布式数据集RDD,并对此RDD中的元素计算效用值,得到每条事务记录的效用值,再继续执行归并操作来累加计算数据库文件中每个项目的事务加权效用TWU,并将此数据库RDD cache到内存中以便之后的操作可以快速访问;第二阶段读取第一阶段cache到内存的数据库RDD,读取每条事务记录,再根据步骤(2)估算每条事务记录中每个项目的负载,均衡划分项目以及事务记录,得到一条事务记录中各个项目及其子搜索空间属于的分组,继而通过归并操作得到每个分组中的项目及其中各个项目的搜索空间,对划分之后的每个分组中的项目及其中各个项目的搜索空间进行深度优先搜索,最终并行确定效用次序。...

【技术特征摘要】
1.一种基于Hadoop与Spark的效用次序并行确定方法,其特征在于,该方法包括以下步骤:(1)在大型存储计算服务器组上搭建基于Hadoop与Spark的云系统,具体过程如下:(1.1)在大型存储计算服务器组上,选取M+1台服务器,运行Linux系统,其中一台作为主服务器Master,用于与客户端的连接交互访问,剩余的M台服务器用于并行计算,称作Slaves;(1.2)ssh无密码验证配置:安装和启动ssh协议,配置Master无密码登录所有Salves,并配置所有Slaves无密码登录Master,这样每台服务器上都有Master和Slaves的公钥;(1.3)搭建Java和Scala基础运行环境,在此基础上,将Hadoop与Spark文件分发到Master和所有Slaves上,并在Master服务器上启动Hadoop与Spark;至此,完成基于Hadoop与Spark的云系统的搭建,HadoopHDFS用来做数据存储,SparkRDD用来并行计算;(2)用户在客户端上制定高效的划分方法,具体过程如下:将效用次序的搜索空间表示为一棵集合枚举树,树的每个结点表示一个次序,其中,树根表示一个空的次序,第k层表示所有k阶效用次序;为了避免树中出现重复的次序,集合枚举树中的所有项目需按照指定顺序排列;假设项目有N个并按照字典序排序,云系统有M个节点(服务器),作如下分配:如果N&lt;=M,那么只要分配N个节点,将N个项目一个接一个分配给节点1,2,…N,如果N&gt;M,将前M个项目一个接一个分配给节点1,2,…M,计算第M+1个项目的负载,将其加入到负载最小的那一节点,并更新该节点的负载值,之后的项目做同样的操作,最后得到一个Map类型的数据结构GList;(3)客户端连接服务器组,和基于Hadoop与Spark的云系统进行交互,高效地并行确定效用次序:首先从容错性、资源分配、任务调度、RDD压缩方面入手对基于Hadoop与Spark的云系统进行优化配置,配置如下:a.设置spark.speculation的值为true,使得在任务调度的时候,如果没有适合当前本地性要求的任务可供运行,将跑得慢的任务在空闲计算资源上再度调度;b.增大timeout值来提高容错性;c.在磁盘IO或者GC问题不能得到很好解决时,将spark.rdd.compress设置为true,即采用RDD压缩,在RDDCache的过程中,RDD数据在序列化之后进一步进行压缩再储存到内存或磁盘上;d.将并行数值spark.default.parallelism设置为用于计算的服务器的数量的两倍到三倍;e.将Spark中默认的序列化方式改为Kryo;配置完成后,开始以下两个阶段:第一阶段先将存储在分布式文件系统HDFS中的数据库文件加载到程序中,转换为弹性分布式数据集RDD,并对此RDD中的元素计算效用值,得到每条事务记录的效用值,再继续执行归并操作来累加计算数据库文件中每个项目的事务加权效用TWU,并将此数据库RDDcache到内存中以便之...

【专利技术属性】
技术研发人员:刘君强常仲民
申请(专利权)人:浙江工商大学
类型:发明
国别省市:浙江,33

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1