论文部分内容阅读
摘要:Spark在实际的工业生产和实践中已经获得了广泛的应用,但是由于其诞生的时间较晚,版本更新速度慢。现阶段,使用Spark框架在某些具体的大数据场景中能对其挖掘,就要结合原有的模块改写部分功能,发挥其应有的作用。解决大数据挖掘问题的同时,Spark框架由于功能性不足,如进行机器学习库的时候的MLlib里面解决关联新问题的分布式机器学习算法还有不足之处。故此,该文就Spark大数据挖掘技术开展深入的研究,希望能为该领域研究提供参考。
关键词:Spark;大数据;挖掘;研究
中图分类号:TP311 文献标识码:A 文章编号:1009-3044(2017)16-0019-02
各个行业的数据流量正在持续增加,大数据挖掘和分析开始面临极为严重的挑战。高效合理的大数据挖掘计算方法分析平台能对海量的数据进行处理,因而大数据时代下,好的数据处理平台就显得极为重要。Spark是一个开源适用于大数据的可靠性能分布式计算框架,能支持在大数据上进行复杂的查询,能快速的处理数据并进行精准的服务。
1Spark大数据生态系统及处理框架
Spark生态系统可以系统性的分为三个层面。核心部分是Spark runtime是经常提及的Spark core层。该层包含了Spark的基本核心内容,能在核心功能分区中进行分布式的算子。下面可以就Cluster Manager和Data Manager层的集群管理进行数据管理。在对集群进行管理的时候能根据数据管理情况选择适合的系统,如HDFS、S3等。当前的工业生产环境中,使用最为广泛的模式是Spark On Yarn的模式,该模式的应用极为广泛。由于Spark SQL是借用SQL进行分布式工作内容查询的,MLIib主要是利用分布式机器学习库,对Spark进行系统化编写,并借以处理大规模的计算模块,通过大数据的流式计算,能让各个模块实现无缝式的连接模式,相互之间紧密配合,最终能实现其作用。
1.1 Spark Runtime
Spark Core包含的Spark的功能包括与任务的调度、内存的管理等内容,其中包括与故障的系统性恢复以及相关的存储系统交互的对应子元素。在对Spark使用RDD这类结构进行包装数据传输期间,先要对Spark的核心逻辑数据进行简单的了解,这类数据与对象概念有很多相似的地方。主要的特點如下:第一,所有的数据全集被分割为多个子集,每个子集都可以被发送到集群中的任意节点中对其进行处理;第二,计算的中间结果被很好地保存下来,从可靠性角度思考问题能获悉,计算结果相同也可以在多个子集节点中保存备份的文件内容;第三,其中的任意一个数据子集若在整个计算中出现问题,就要对该子集进行重新的调整和处理,进而完成容错机制。
1.2 GraphX
GraphX作为Spaerk内的关键子项目,构建的前提是以Spark为基础的,在大规模的图计算基础上,由于GraphX的出现,能让Spark的生态系统在大图处理方面获得更为丰富的计算,同时在与其他相关组件进行系统融合的前提下,能使用较为强大的数据处理能力,让所有的应用均能在多项场景处理中获得。
GraphX主要是提供极为丰富的图数据操作符,由于类库的定义较多,其中包括于核心、优化操作符,还有部分被定义到GraphOps的操作符定义中。在使用Scale的隐形语言转换特征时,能调用GraphOps中的操作符。
GraphX中能在多个分布集群上进行图计算运算,且具有较多的API接口,特别是图的规模达到一定以后,就要进行算法精益化,这样就便于在分布式图集上进行大规模的处理。Grapt~X的优势是让数据的吞吐和规模等得到提升。
1.3Spark Streaming
由于Spark系统是Spark Streaming的数据分布式处理框架系统,在扩展Spark流式数据能力的同时。让Spark Streaming的数据流按照时间的方式对其进行单位分割,这就能形成RDD,既以小的时间间隔对流数据开展处理,由于处理期间受到延时的情况影响,所以可以从严格意义上看作为准实时处理系统。众所周知由于Spark Streaming作为较出色的容错系统,对错误的处理和恢复力较高,所以在错误问题处理上占据优势。由于Spark Streaming能与其相关的Spark生态模块如Spark SQl,GraphXC等生态模块进行无缝式的集合,所以在联合完成相关的流数据以后能处理复杂的任务。
2Scala语言
在分布式框架、编码效率等方面有兼容性较好,所以能构建大型的软件项目,也能直接对复杂的数据进行处理,这在处理上有着极大的优势。众所周知scala语言是以JVM形式存在的,由于Scala能对Java的代码和类库有更好的支持,所以编写期间最好使用调用的方式对Java进行语句编写。由于这种语言的特点不仅能面向对象,也能有着函数式的编程语言特性。
Scala作为一种Spark是一种框架开发语言系统,更是一种Spark平台核心开发语言形式,在高效处理对应数据平台信息的情况下,要求使用的Scala语言编写两者能达到一致,因而可以直接进行Spark生态分布式编程,这就要熟练的对相关的scala语言进行了解。当前我们能了解到Spark支持使用的Sca—la,Java和Python这三种开发语言通过对这种类型的语言进行应用程序的开发,能获悉到一点spark对于Scala的支持非常好,只有在对spark进行源代码的无缝式结合,能让相关的功能调用达到最优化局面。
3Spark开发环境及其分布式集群搭建
在以Spark为背景下开展的数据挖掘技术,在对其进行研究的情况下,可以建立良好的Spark集群。既在实际的应用场景中通过使用Spark的集群模式,使用Spark单机模式的分布应用编码,搭建良好的Spark开发环境并对相关的集群涉及内容进行简要的系统开发分析,在构筑Hadoop Yarn集群以后,能将所有的Spark集群全部部署到Yarn上面,以搭建良好的Spark应用开发环境。 3.1硬件系统要求
在构建Spark分布式集群的时候需要有多台物理主机进行配置,这能让整個系统的运行效果更优,同时也能让运行中的兼容性更佳,操作系统最好使用Linus系统。本文在实验环境主要是在测试MavBook Pro主机上搭建三台虚拟机。我们当前所选用的虚拟机分别是Vmware Fusion最新的7.0版本。
使用三台机器的优势是:第一,三台机器一起充当Master的节点,可以让另外两台直接充当Worker的节点,进而能让模拟的Spark集群环境更佳。由于实验环境均是在单机使用虚拟软件搭建的前提下开设的,所以不会受到机器的内存或者磁盘空间局限出现集群环境失败的状况,既能使用较少的成本让Spark集群灵活的运行起来。第二,三台机器下对Spark集群环境的配置是与多台机器进行配置完全不一致的,这就要在必要的情况下对集群的结点数量进行增加或者减少。
3.2配合Spark的IDE开发环境
Scala语言编写成的整个计算框架中Spark语言是首选语言之一,该语言的应用是要选择好的Scala集成开发环境。由于Scala自身携带Shell只能对语言进行简单的程序编排,但是若是IDEA是现在较为成熟的Scala的语言开发环境,故此选用IDEA在单机下进行Spark的应用和开发显得尤为重要。
IDEA的全称是IntelliJ IDEA,该集成开发环境能支持多个语言编程环境,相较于传统的编程环境,该语言环境能更好地支持IDE。无论是从代码的提示还是代码助手的角度考虑问题,都能从框架支持的角度对问题进行思考,IDEA在具体使用时能生产大于代码几倍的缓存文件,由于这些文件均要被IDEA进行读写,所以会占用大量的I/O,进而也能提高缓存文件的性能。
4基于Spark的分布协同过滤推荐实现
4.1MLIib算法库
Spark十分重视机器学习方面的内容,所以有以下几方面注意事项:
由于机器算法具有很多步骤,所以在迭代计算的时候,任何一次计算都要写人磁盘中等待任务启动,但这会在使用时消耗大量CPU。基于此,具体使用Spark的时候,部分工作可以直接存放到内存中进行运行,将迭代部分计算任务全部存放到内存中,能让迭代的计算效率得到提升,可以在必要的情况下操作磁盘和网络。总之,Spark十分擅长迭代计算,也能成为分布式的机器学习平台。第二,从通信角度思考问题,Spark极为出色和高效,通讯的效率也很高。当开展分布式机器算法学习期间,部分资源均集中在不同的集群节点上,高效的进行通信效率能让分布式算法的运行效果更佳。
4.2协同过滤算法
协同过滤算法是大家是在使用时选择一个靠谱的想法,并将这种想法提供给用户。简单介绍是如果一个人想要去看电影,但是她不知道应该选择哪部电影,或者哪部电影更好一些,那么她的做法一定是询问身边的人,希望得到他们的推荐亦或是上网查看影评进行赛选。
4.2.1系统过滤综述
现在所有的用户中选择个兴趣和爱好类似的用户,结合他们的喜爱选择物品,并将其组织在前一起形成一个新的集合或者序列。这些用户我们能直接将其定义为邻居,但是这期间最核心的问题是如何对用户之间是否存有相似的聘问,或者如何对符合条件的用户进行有效的组织和使用。
4.2.2协同过滤核心思想
协同过滤的核心思想需要以下三个步骤实现:第一,收集用户的偏好;第二,分析用户使用的物品相似度;第三,根据计算进行推荐。
系统推荐的效果关键因素是如何对用户的喜好进行整理。由于不同的用户提供的偏好方式不同,且会受到场景的影响。一般场景下,应该提取一种用户系统,根据用户提出的行为做分组,有两种不同的分组方式:1)根据用户的不同行为进行分组;2)根据不同的行为对用户的喜好进行分组,且对它们进行加权处理。实现上述数据行为收集以后,要做好数据的预处理。
关键词:Spark;大数据;挖掘;研究
中图分类号:TP311 文献标识码:A 文章编号:1009-3044(2017)16-0019-02
各个行业的数据流量正在持续增加,大数据挖掘和分析开始面临极为严重的挑战。高效合理的大数据挖掘计算方法分析平台能对海量的数据进行处理,因而大数据时代下,好的数据处理平台就显得极为重要。Spark是一个开源适用于大数据的可靠性能分布式计算框架,能支持在大数据上进行复杂的查询,能快速的处理数据并进行精准的服务。
1Spark大数据生态系统及处理框架
Spark生态系统可以系统性的分为三个层面。核心部分是Spark runtime是经常提及的Spark core层。该层包含了Spark的基本核心内容,能在核心功能分区中进行分布式的算子。下面可以就Cluster Manager和Data Manager层的集群管理进行数据管理。在对集群进行管理的时候能根据数据管理情况选择适合的系统,如HDFS、S3等。当前的工业生产环境中,使用最为广泛的模式是Spark On Yarn的模式,该模式的应用极为广泛。由于Spark SQL是借用SQL进行分布式工作内容查询的,MLIib主要是利用分布式机器学习库,对Spark进行系统化编写,并借以处理大规模的计算模块,通过大数据的流式计算,能让各个模块实现无缝式的连接模式,相互之间紧密配合,最终能实现其作用。
1.1 Spark Runtime
Spark Core包含的Spark的功能包括与任务的调度、内存的管理等内容,其中包括与故障的系统性恢复以及相关的存储系统交互的对应子元素。在对Spark使用RDD这类结构进行包装数据传输期间,先要对Spark的核心逻辑数据进行简单的了解,这类数据与对象概念有很多相似的地方。主要的特點如下:第一,所有的数据全集被分割为多个子集,每个子集都可以被发送到集群中的任意节点中对其进行处理;第二,计算的中间结果被很好地保存下来,从可靠性角度思考问题能获悉,计算结果相同也可以在多个子集节点中保存备份的文件内容;第三,其中的任意一个数据子集若在整个计算中出现问题,就要对该子集进行重新的调整和处理,进而完成容错机制。
1.2 GraphX
GraphX作为Spaerk内的关键子项目,构建的前提是以Spark为基础的,在大规模的图计算基础上,由于GraphX的出现,能让Spark的生态系统在大图处理方面获得更为丰富的计算,同时在与其他相关组件进行系统融合的前提下,能使用较为强大的数据处理能力,让所有的应用均能在多项场景处理中获得。
GraphX主要是提供极为丰富的图数据操作符,由于类库的定义较多,其中包括于核心、优化操作符,还有部分被定义到GraphOps的操作符定义中。在使用Scale的隐形语言转换特征时,能调用GraphOps中的操作符。
GraphX中能在多个分布集群上进行图计算运算,且具有较多的API接口,特别是图的规模达到一定以后,就要进行算法精益化,这样就便于在分布式图集上进行大规模的处理。Grapt~X的优势是让数据的吞吐和规模等得到提升。
1.3Spark Streaming
由于Spark系统是Spark Streaming的数据分布式处理框架系统,在扩展Spark流式数据能力的同时。让Spark Streaming的数据流按照时间的方式对其进行单位分割,这就能形成RDD,既以小的时间间隔对流数据开展处理,由于处理期间受到延时的情况影响,所以可以从严格意义上看作为准实时处理系统。众所周知由于Spark Streaming作为较出色的容错系统,对错误的处理和恢复力较高,所以在错误问题处理上占据优势。由于Spark Streaming能与其相关的Spark生态模块如Spark SQl,GraphXC等生态模块进行无缝式的集合,所以在联合完成相关的流数据以后能处理复杂的任务。
2Scala语言
在分布式框架、编码效率等方面有兼容性较好,所以能构建大型的软件项目,也能直接对复杂的数据进行处理,这在处理上有着极大的优势。众所周知scala语言是以JVM形式存在的,由于Scala能对Java的代码和类库有更好的支持,所以编写期间最好使用调用的方式对Java进行语句编写。由于这种语言的特点不仅能面向对象,也能有着函数式的编程语言特性。
Scala作为一种Spark是一种框架开发语言系统,更是一种Spark平台核心开发语言形式,在高效处理对应数据平台信息的情况下,要求使用的Scala语言编写两者能达到一致,因而可以直接进行Spark生态分布式编程,这就要熟练的对相关的scala语言进行了解。当前我们能了解到Spark支持使用的Sca—la,Java和Python这三种开发语言通过对这种类型的语言进行应用程序的开发,能获悉到一点spark对于Scala的支持非常好,只有在对spark进行源代码的无缝式结合,能让相关的功能调用达到最优化局面。
3Spark开发环境及其分布式集群搭建
在以Spark为背景下开展的数据挖掘技术,在对其进行研究的情况下,可以建立良好的Spark集群。既在实际的应用场景中通过使用Spark的集群模式,使用Spark单机模式的分布应用编码,搭建良好的Spark开发环境并对相关的集群涉及内容进行简要的系统开发分析,在构筑Hadoop Yarn集群以后,能将所有的Spark集群全部部署到Yarn上面,以搭建良好的Spark应用开发环境。 3.1硬件系统要求
在构建Spark分布式集群的时候需要有多台物理主机进行配置,这能让整個系统的运行效果更优,同时也能让运行中的兼容性更佳,操作系统最好使用Linus系统。本文在实验环境主要是在测试MavBook Pro主机上搭建三台虚拟机。我们当前所选用的虚拟机分别是Vmware Fusion最新的7.0版本。
使用三台机器的优势是:第一,三台机器一起充当Master的节点,可以让另外两台直接充当Worker的节点,进而能让模拟的Spark集群环境更佳。由于实验环境均是在单机使用虚拟软件搭建的前提下开设的,所以不会受到机器的内存或者磁盘空间局限出现集群环境失败的状况,既能使用较少的成本让Spark集群灵活的运行起来。第二,三台机器下对Spark集群环境的配置是与多台机器进行配置完全不一致的,这就要在必要的情况下对集群的结点数量进行增加或者减少。
3.2配合Spark的IDE开发环境
Scala语言编写成的整个计算框架中Spark语言是首选语言之一,该语言的应用是要选择好的Scala集成开发环境。由于Scala自身携带Shell只能对语言进行简单的程序编排,但是若是IDEA是现在较为成熟的Scala的语言开发环境,故此选用IDEA在单机下进行Spark的应用和开发显得尤为重要。
IDEA的全称是IntelliJ IDEA,该集成开发环境能支持多个语言编程环境,相较于传统的编程环境,该语言环境能更好地支持IDE。无论是从代码的提示还是代码助手的角度考虑问题,都能从框架支持的角度对问题进行思考,IDEA在具体使用时能生产大于代码几倍的缓存文件,由于这些文件均要被IDEA进行读写,所以会占用大量的I/O,进而也能提高缓存文件的性能。
4基于Spark的分布协同过滤推荐实现
4.1MLIib算法库
Spark十分重视机器学习方面的内容,所以有以下几方面注意事项:
由于机器算法具有很多步骤,所以在迭代计算的时候,任何一次计算都要写人磁盘中等待任务启动,但这会在使用时消耗大量CPU。基于此,具体使用Spark的时候,部分工作可以直接存放到内存中进行运行,将迭代部分计算任务全部存放到内存中,能让迭代的计算效率得到提升,可以在必要的情况下操作磁盘和网络。总之,Spark十分擅长迭代计算,也能成为分布式的机器学习平台。第二,从通信角度思考问题,Spark极为出色和高效,通讯的效率也很高。当开展分布式机器算法学习期间,部分资源均集中在不同的集群节点上,高效的进行通信效率能让分布式算法的运行效果更佳。
4.2协同过滤算法
协同过滤算法是大家是在使用时选择一个靠谱的想法,并将这种想法提供给用户。简单介绍是如果一个人想要去看电影,但是她不知道应该选择哪部电影,或者哪部电影更好一些,那么她的做法一定是询问身边的人,希望得到他们的推荐亦或是上网查看影评进行赛选。
4.2.1系统过滤综述
现在所有的用户中选择个兴趣和爱好类似的用户,结合他们的喜爱选择物品,并将其组织在前一起形成一个新的集合或者序列。这些用户我们能直接将其定义为邻居,但是这期间最核心的问题是如何对用户之间是否存有相似的聘问,或者如何对符合条件的用户进行有效的组织和使用。
4.2.2协同过滤核心思想
协同过滤的核心思想需要以下三个步骤实现:第一,收集用户的偏好;第二,分析用户使用的物品相似度;第三,根据计算进行推荐。
系统推荐的效果关键因素是如何对用户的喜好进行整理。由于不同的用户提供的偏好方式不同,且会受到场景的影响。一般场景下,应该提取一种用户系统,根据用户提出的行为做分组,有两种不同的分组方式:1)根据用户的不同行为进行分组;2)根据不同的行为对用户的喜好进行分组,且对它们进行加权处理。实现上述数据行为收集以后,要做好数据的预处理。