数据处理方法和装置与流程

文档序号:11620569阅读:156来源:国知局
本发明涉及数据处理领域,特别是涉及一种数据处理方法和装置。
背景技术
::随着计算机和网络技术的发展,电子设备的普及,越来越多的用户使用网络,为此产生了大量的数据,为了快速从海量数据中获得真正的业务价值,需要构建一种性能高的数据分析应用系统。spark是一种基于内存的迭代处理框架,它具有高吞吐量和强容错性的特点,由于其内部优秀的调度机制、快速的分布式计算能力,能够用极快的速度进行迭代计算,在某些特定业务可以实现准实时的分析处理。但是,spark在对数据进行处理时,如果源数据保存在磁盘上,需要从磁盘加载数据,耗时较长。技术实现要素:基于此,有必要针对spark从磁盘加载数据耗时长的问题,提供一种数据处理方法,能提高加载数据的效率。此外,还有必要提供一种数据处理装置,能提高加载数据的效率。一种数据处理方法,包括以下步骤:对内存分布式文件系统及spark集群进行配置,将所述内存分布式文件系统及所述spark集群进行关联;启动所述spark集群,并对所述spark集群初始化;从所述内存分布式文件系统中读取源数据;对所述源数据进行预处理,得到预处理后的数据;将所述预处理后的数据进行分析得到数据分析结果;将所述数据分析结果存储到所述内存分布式文件系统中。在其中一个实施例中,还包括:当spark出现故障时,重启spark,从所述内存分布式文件系统中读取缓存 的源数据及数据分析结果。在其中一个实施例中,所述对所述源数据进行预处理,得到预处理后的数据的步骤包括:将所述源数据转换为预定格式的数据;将所述预定格式的数据进行过滤;将过滤后的数据注册成具有相同结构模式的临时表;所述将所述预处理后的数据进行分析得到数据分析结果的步骤包括:通过sql将所述临时表映射的框架数据进行分析得到数据分析结果。在其中一个实施例中,对内存分布式文件系统及spark集群进行配置,将所述内存分布式文件系统及所述spark集群进行关联的步骤包括:指定内存分布式文件系统底层使用的文件系统及文件系统的实现类;设置内存分布式文件系统的主节点的ip、访问端口及缓存路径,内存分布式文件系统的从节点的端口、数据服务端口和数据存储路径;指定spark集群启动参数,指定内存分布式文件系统所依赖包路径,配置内存文件系统运行在底层使用的文件系统之上以及内存文件系统的容错功能;对所述spark集群初始化的步骤包括:初始化上下文全局对象;初始化执行类型。在其中一个实施例中,在启动所述spark集群,并对所述spark集群初始化的步骤之后,所述数据处理方法还包括:接收数据;对所述数据进行处理得到源数据;将所述源数据存入内存分布式文件系统。一种数据处理装置,包括:配置模块,用于对内存分布式文件系统及spark集群进行配置,将所述内存分布式文件系统及所述spark集群进行关联;初始化模块,用于启动所述spark集群,并对所述spark集群初始化;读取模块,用于从所述内存分布式文件系统中读取源数据;预处理模块,用于对所述源数据进行预处理,得到预处理后的数据;分析模块,用于将所述预处理后的数据进行分析得到数据分析结果;存储模块,用于将所述数据分析结果存储到所述内存分布式文件系统中。在其中一个实施例中,所述读取模块还用于当spark出现故障时,重启spark,从内存分布式文件系统中读取缓存的源数据及数据分析结果。在其中一个实施例中,所述预处理模块包括:转换单元,用于将所述源数据转换为预定格式的数据;过滤单元,用于将所述预定格式的数据进行过滤;注册单元,用于将过滤后的数据注册成具有相同结构模式的临时表;所述分析模块还用于通过sql将所述临时表映射的框架数据进行分析得到数据分析结果。在其中一个实施例中,所述配置模块还用于指定内存分布式文件系统底层使用的文件系统及文件系统的实现类;设置内存分布式文件系统的主节点的ip、访问端口和缓存路径,及设置内存分布式文件系统的从节点的端口、数据服务端口和数据存储路径;以及指定spark集群启动参数,指定内存分布式文件系统所依赖包路径,配置内存文件系统运行在底层使用的文件系统之上以及内存文件系统的容错功能;所述初始化模块还用于初始化上下文全局对象,以及初始化执行类型。在其中一个实施例中,所述数据处理装置还包括:接收模块,用于在初始化模块启动所述spark集群,并对所述spark集群初始化之后,接收数据;处理模块,用于对所述数据进行处理得到源数据;所述存储模块还用于将所述源数据存入所述内存分布式文件系统。上述数据处理方法和装置,通过将内存分布式文件系统与spark集群进行关联,基于spark分析数据时,从内存分布式文件系统中读取源数据,对源数据进行预处理后进行分析得到数据分析结果,并将数据分析结果存储到内存分布式文件系统中,因spark执行任务时,从内存分布式文件系统中读取源数据,为外部读取设备提供内存级速度的跨集群文件共享服务,提高了数据读取效率,且 该内存分布式文件系统将数据存储和数据处理分隔开,减少了数据处理中垃圾回收次数和时间,提高了数据处理效率。附图说明图1为一个实施例中数据处理方法的流程图;图2为一个实施例中对内存分布式文件系统及spark集群进行配置,将内存分布式文件系统及spark集群进行关联的具体流程图;图3为一个实施例中对该源数据进行预处理,得到预处理后的数据的具体流程图;图4为另一个实施例中数据处理方法的流程图;图5为一个实施例中数据处理装置的结构框图;图6为一个实施例中预处理模块的内部结构框图;图7为另一个实施例中数据处理装置的结构框图。具体实施方式为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。图1为一个实施例中数据处理方法的流程图。如图1所示,一种数据处理方法,包括以下步骤102至步骤112:步骤102,对内存分布式文件系统及spark集群进行配置,将内存分布式文件系统及spark集群进行关联。具体地,内存分布式文件系统是一种基于堆外内存的分布式存储。堆外内存把数据存储和数据处理分隔开,数据存放在处理逻辑的jvm(javavirtualmachine,虚拟机)堆空间之外,从而减少数据处理中jvm的垃圾回收次数和时间,提高数据处理效率。因为每一次的fullgc都需要对数据进行一个全局扫描,非常耗费时间,同时随着处理时间和迭代次数的增加,gc的开销会变得越来越大。由于数据存储在内存分布式文件系统中,当处理逻辑读取数据时,避 免了磁盘io(input/output,输入/输出)的开销,读取效率大幅上升。内存分布式文件系统可为tachyon。将内存分布式文件系统及spark集群进行关联是指将内存分布式文件系统与spark集群产生联系。图2为一个实施例中对内存分布式文件系统及spark集群进行配置,将内存分布式文件系统及spark集群进行关联的具体流程图。如图2所示,以内存分布式文件系统为tachyon为例,对内存分布式文件系统及spark集群进行配置,将内存分布式文件系统及spark集群进行关联的步骤包括步骤202至步骤206:步骤202,指定内存分布式文件系统底层使用的文件系统及文件系统的实现类。具体地,指定tachyon底层使用的文件系统及文件系统的实现类。指定tachyon底层使用的文件系统为hadoop分布式文件系统,其实现类为org.apache.hadoop.hdfs.distributedfilesystem,指定其在文件系统中的相关存储路径,设置是否使用zookeeper来进行master容错。hadoop分布式文件系统,是一个容错性高,扩展性强的适合pb级数据存储的系统。它在磁盘上默认存储了三份数据,而上层的tachyon仅需保存一份和hadoop分布式文件系统中的数据一致的数据到内存中即可,这样使得宝贵的内存资源得到最大化的利用。只有内存中没有处理程序所需的数据时,tachyon才会从hadoop分布式文件系统中加载;而如果tachyon的某个节点没有数据时,它可以通过网络从其他tachyon节点读取没有磁盘io只有网络开销的数据。步骤204,设置内存分布式文件系统的主节点的ip、访问端口及缓存路径,内存分布式文件系统的从节点的端口、数据服务端口和数据存储路径。具体地,指定tachyon的主节点的ip(internetprotocol,网际协议)地址、访问端口及缓存路径。指定tachyon的从节点的端口、数据服务端口、数据存储路径以及内存容量大小等。内存分布式文件系统配置完成后,第一次启动前先格式化数据存储目录,再启动内存分布式文件系统(tachyon)。步骤206,指定spark集群启动参数,指定内存分布式文件系统所依赖包路径,配置内存文件系统运行在底层使用的文件系统之上以及内存文件系统的容 错功能。在${spark_home}/conf/spark-env.sh中设置程序启动必选参数:master:指定spark集群的连接地址spark_master_ip:指定spark集群主节点机器主机名spark_master_port:指定spark集群主节点机器端口号spark_worker_cores:指定任务执行时需要使用的cpu个数spark_executor_memory:指定任务执行时需要使用的内存spark_local_ip:指定执行任务的机器ip地址spark_classpath:指定tachyon依赖包路径在${spark_home}/conf/core-site.xml中配置:fs.tachyon.impl→tachyon.hadoop.tfs:配置tachyon运行在hadoop上面。fs.tachyon-ft.impl→tachyon.hadoop.tfsft:配置tachyon的容错功能。步骤104,启动该spark集群,并对该spark集群初始化。本实施例中,对该spark集群初始化的步骤包括:初始化上下文全局对象;初始化执行类型。具体地,初始化spark上下文全局对象:javasparkcontextjsc=newjavasparkcontext(newsparkconf().setmaster("spark://localhost:7077").setappname("例子"));初始化执行类型:hivecontexthivecontext=newhivecontext(jsc.sc())。步骤106,从内存分布式文件系统中读取源数据。具体地,spark集群所需的数据存储在内存分布式文件系统中。tachyon将spark需要的数据存储在自己的文件系统中,通过使用lineage记录源数据和计算过程,对数据进行lineage容错。从tachyon中读取源数据:dataframedf1=hivecontext.read().json("tachyon://localhost:19998/demo");步骤108,对该源数据进行预处理,得到预处理后的数据。图3为一个实施例中对该源数据进行预处理,得到预处理后的数据的具体 流程图。如图3所示,对该源数据进行预处理,得到预处理后的数据的步骤包括步骤302至306:步骤302,将该源数据转换为预定格式的数据。本实施例中,预定格式可为json格式,则将源数据按行转换成一个json字符串返回。步骤304,将该预定格式的数据进行过滤。本实施例中,将json格式的数据进行过滤。步骤306,将过滤后的数据注册成具有相同结构模式的临时表。本实施例中,过滤后的数据存放在dataframe中。因dataframe中存放的数据格式是一致的,把dataframe注册成一个具有相同结构模式的临时表:df2.registertemptable("demo")。步骤110,将该预处理后的数据进行分析得到数据分析结果。本实施例中,通过sql(structuredquerylanguage,结构化查询语言)将该临时表映射的框架数据进行分析得到数据分析结果。dataframedemo=hivecontext.sql("selectcount(*)fromdemo")步骤112,将该数据分析结果存储到该内存分布式文件系统中。本实施例中,将数据分析结果存储到内存分布式文件系统中,可采用两种方式。第一种是将数据分析结果中的数据转化为文本存储到内存分布式文件系统中。例如,内存分布式文件系统为tachyon,数据分析结果为rdd,则:demo.javardd().saveastextfile("tachyon://localhost:19998/result")。第二种是将数据分析结果直接保存到内存分布式文件系统中。例如,内存分布式文件系统为tachyon,数据分析结果为rdd,则:demo.javardd().persist(storagelevel.off_heap())。上述数据处理方法,通过将内存分布式文件系统与spark集群进行关联,基于spark分析数据时,从内存分布式文件系统中读取源数据,对源数据进行预处理后进行分析得到数据分析结果,并将数据分析结果存储到内存分布式文件系统中,因spark执行任务时,从内存分布式文件系统中读取源数据,为外部读取设备提供内存级速度的跨集群文件共享服务,提高了数据读取效率,且该内存分布式文件系统将数据存储和数据处理分隔开,减少了数据处理中垃圾回收次数和时间,提高了数据处理效率。在一个实施例中,上述数据处理方法还包括:判断spark是否出现故障,若是,则重启spark,从内存分布式文件系统中读取缓存的源数据及数据分析结果,若否,则将数据分析结果存储到内存分布式文件系统中。本实施例中,当spark出现故障时,源数据以及数据分析结果都安全地存储在tachyon内存分布式文件系统中。重启spark后,程序直接从tachyon内存分布式文件系统中读取上次时间间隔缓存的源数据及数据分析结果,快速实现数据恢复的功能,数据不易消失。数据分析结果包括数据分析过程中的所有结果。图4为另一个实施例中数据处理方法的流程图。如图4所示,在一个实施例中,在启动该spark集群,并对该spark集群初始化的步骤之后,该数据处理方法还包括:步骤402,接收数据。本实施例中,接收一个或多个客户端传输的数据。为了提高数据的传输效率,减少tcp请求次数,客户端可先在本地缓存预定数据,压缩后再传输至服务器。服务器监听数据接收端口,当有新数据到达时,获取数据的路径信息并缓存到队列中。步骤404,对该数据进行处理得到源数据。本实施例中,从队列中提取出数据的路径信息,用信息摘要值算法检查数据的完整性,通过后对数据进行清洗、转换、合并、缓存等操作,直到整个数据处理完成,得到源数据。步骤406,将该源数据存入内存分布式文件系统。本实施例中,整个数据处理完成后,调用存储接口把源数据按预定规则写入到内存分布式文件系统中。通过对接收的数据进行处理转化为源数据,将源数据存储到内存分布式文件系统中,方便读取。需要说明的是,上述数据处理方法因将数据存储在内存分布式文件系统中,可以跟第三方软件共享数据,第三方软件可为hive、mapreduce等。hive是基于hadoop平台的数据仓库,通过将sql语句转换为mapreduce任务中运行,适用于处理海量离线数据分析。图5为一个实施例中数据处理装置的结构框图。如图5所示,一种数据处理装置,包括配置模块502、初始化模块504、读取模块506、预处理模块508、分析模块510和存储模块512。其中:配置模块502用于对内存分布式文件系统及spark集群进行配置,将内存分布式文件系统及spark集群进行关联。本实施例中,配置模块502还用于指定内存分布式文件系统底层使用的文件系统及文件系统的实现类;设置内存分布式文件系统的主节点的ip、访问端口和缓存路径,及设置内存分布式文件系统的从节点的端口、数据服务端口和数据存储路径;指定spark集群启动参数,指定内存分布式文件系统所依赖包路径,配置内存文件系统运行在底层使用的文件系统之上以及内存文件系统的容错功能等。初始化模块504用于启动该spark集群,并对该spark集群初始化。本实施例中,初始化模块504还用于初始化上下文全局对象,以及初始化执行类型。读取模块506用于从内存分布式文件系统中读取源数据。预处理模块508用于对该源数据进行预处理,得到预处理后的数据。图6为一个实施例中预处理模块的内部结构框图。如图6所示,该预处理模块508包括转换单元5082、过滤单元5084和注册单元5086。其中:转换单元5082用于将该源数据转换为预定格式的数据。本实施例中,预定格式可为json格式,则将源数据按行转换成一个json字符串返回。过滤单元5084用于将该预定格式的数据进行过滤。本实施例中,将json格式的数据进行过滤。注册单元5086用于将过滤后的数据注册成具有相同结构模式的临时表。分析模块510用于将该预处理后的数据进行分析得到数据分析结果。本实施例中,通过sql将该临时表映射的框架数据进行分析得到数据分析结果。存储模块512用于将该数据分析结果存储到该内存分布式文件系统中。本实施例中,将数据分析结果存储到内存分布式文件系统中,可采用两种方式。第一种是将数据分析结果中的数据转化为文本存储到内存分布式文件系统中。第二种是将数据分析结果直接保存到内存分布式文件系统中。上述数据处理装置,通过将内存分布式文件系统与spark集群进行关联,基于spark分析数据时,从内存分布式文件系统中读取源数据,对源数据进行预处理后进行分析得到数据分析结果,并将数据分析结果存储到内存分布式文件系统中,因spark执行任务时,从内存分布式文件系统中读取源数据,为外部读取设备提供内存级速度的跨集群文件共享服务,提高了数据读取效率,且该内存分布式文件系统将数据存储和数据处理分隔开,减少了数据处理中垃圾回收次数和时间,提高了数据处理效率。在一个实施例中,上述数据处理装置还包括判断模块,判断模块判断spark是否出现故障。读取模块506还用于当spark出现故障时,重启spark,从内存分布式文件系统中读取缓存的源数据及数据分析结果。本实施例中,当spark出现故障时,源数据以及数据分析结果都安全地存储在tachyon内存分布式文件系统中。重启spark后,程序直接从tachyon内存分布式文件系统中读取上次时间间隔缓存的源数据及数据分析结果,快速实现数据恢复的功能,数据不易消失。数据分析结果包括数据分析过程中的所有结果。图7为另一个实施例中数据处理装置的结构框图。如图7所示,一种数据处理装置,除了包括配置模块502、初始化模块504、读取模块506、预处理模块508、分析模块510和存储模块512,还包括接收模块514和处理模块516。其中:接收模块514用于在初始化模块启动该spark集群,并对该spark集群初始化之后,接收数据。处理模块516用于对该数据进行处理得到源数据。存储模块512还用于将该源数据存入内存分布式文件系统。本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于一非易失性计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,所述的存储介质可为磁碟、光盘、只读存储记忆体(read-onlymemory,rom)等。以上所述实施例仅表达了本发明的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对本发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变形和改进,这些都属于本发明的保护范围。因此,本发明专利的保护范围应以所附权利要求为准。当前第1页12当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1