CN116955287A - 数据处理方法、装置、设备及存储介质 - Google Patents

数据处理方法、装置、设备及存储介质 Download PDF

Info

Publication number
CN116955287A
CN116955287A CN202211124318.1A CN202211124318A CN116955287A CN 116955287 A CN116955287 A CN 116955287A CN 202211124318 A CN202211124318 A CN 202211124318A CN 116955287 A CN116955287 A CN 116955287A
Authority
CN
China
Prior art keywords
data
file
current file
current
preset
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN202211124318.1A
Other languages
English (en)
Inventor
徐邦振
周鹤
李露
许学
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
China Mobile Communications Group Co Ltd
China Mobile Hangzhou Information Technology Co Ltd
Original Assignee
China Mobile Communications Group Co Ltd
China Mobile Hangzhou Information Technology Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by China Mobile Communications Group Co Ltd, China Mobile Hangzhou Information Technology Co Ltd filed Critical China Mobile Communications Group Co Ltd
Priority to CN202211124318.1A priority Critical patent/CN116955287A/zh
Publication of CN116955287A publication Critical patent/CN116955287A/zh
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/16File or folder operations, e.g. details of user interfaces specifically adapted to file systems
    • G06F16/164File meta data generation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/18File system types
    • G06F16/182Distributed file systems

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明公开了一种数据处理方法、装置、设备及存储介质。其中,所述方法包括:获取第一数据和/或第二数据;所述第一数据表征图像采集设备的相关数据;所述第二数据表征终端的用户行为数据;判断是否将所述第一数据和/或第二数据写入当前文件;在确定不将所述第一数据和/或第二数据写入所述当前文件的情况下,将所述第一数据和/或第二数据写入所述当前文件的下一个文件;所述当前文件和所述当前文件的下一个文件是根据预设文件分割策略得到的;将所述当前文件存储至分布式文件系统(HDFS)中。

Description

数据处理方法、装置、设备及存储介质
技术领域
本发明涉及无线通信技术领域,尤其涉及一种数据处理方法、装置、设备及存储介质。
背景技术
目前,随着物联网技术不断发展演进,越来越多的硬件设备接入网络,由此也产生了海量的数据。目前,可以使用Sqoop等组件,将关系型数据库中的数据直接抽取至Hadoop分布式文件系统(HDFS,Hadoop Distribute File System)中,但是,在数据写入时会损耗数据库性能,或者,还可以使用Gobblin等组件,直接将数据转为批数据并写入Hadoop HDFS中进行存储,但是,前期安装配置较为繁琐,并且Gobblin组件版本与Hadoop存在兼容性匹配问题,需要手动编译源码,因此,亟需找到一种能够提高海量数据的写入和存储性能的技术方案。
发明内容
有鉴于此,本发明实施例期望提供一种数据处理方法、装置、设备及存储介质。
本发明实施例的技术方案是这样实现的:
本发明实施例提供一种数据处理方法,应用于Hadoop集群,所述方法包括:
获取第一数据和/或第二数据;所述第一数据表征图像采集设备的相关数据;所述第二数据表征终端的用户行为数据;
判断是否将所述第一数据和/或第二数据写入当前文件;
在确定不将所述第一数据和/或第二数据写入所述当前文件的情况下,将所述第一数据和/或第二数据写入所述当前文件的下一个文件;所述当前文件和所述当前文件的下一个文件是根据预设文件分割策略得到的;
将所述当前文件存储至HDFS中。
此外,根据本发明的至少一个实施例,所述判断是否将所述第一数据和/或第二数据写入当前文件,包括:
判断所述当前文件的大小是否达到预设阈值;
在确定所述当前文件的大小达到预设阈值的情况下,确定不将所述第一数据和/或第二数据写入所述当前文件;
在确定所述当前文件的大小未达到预设阈值的情况下,确定将所述第一数据和/或第二数据写入所述当前文件。
此外,根据本发明的至少一个实施例,所述判断是否将所述第一数据和/或第二数据写入当前文件,包括:
确定获取所述第一数据和/或所述第二数据的时间戳;并确定所述当前文件对应的时间段;
在所述时间戳与所述时间段未匹配的情况下,确定不将所述第一数据和/或第二数据写入所述当前文件;
在所述时间戳与所述时间段匹配的情况下,确定将所述第一数据和/或第二数据写入所述当前文件。
此外,根据本发明的至少一个实施例,所述将所述第一数据和/或第二数据写入所述当前文件的下一个文件,包括:
将所述当前文件的下一个文件的文件句柄缓存在内存中;并将所述当前文件的文件句柄从所述内存中删除;
根据所述文件句柄,调用所述当前文件的下一个文件;
将所述第一数据和/或所述第二数据写入所述当前文件的下一个文件。
此外,根据本发明的至少一个实施例,所述方法还包括:
按照预设文件分割策略,将预设文件分割为多个文件;所述多个文件包括所述当前文件和所述当前文件的下一个文件。
此外,根据本发明的至少一个实施例,所述按照预设文件分割策略,将预设文件分割为多个文件,包括:
按照预设文件大小,将预设文件分割为多个文件;
或者,
按照预设时间段,将预设文件分割为多个文件。
此外,根据本发明的至少一个实施例,所述方法还包括:
检测所述Hadoop集群中是否存在发生异常的节点,得到检测结果;
在所述检测结果表征所述Hadoop集群中存在发生异常的节点的情况下,控制所述发生异常的节点停止工作;
在所述发生异常的节点恢复正常的情况下,控制恢复正常的节点重新获取所述第一数据和/或第二数据。
本发明的至少一个实施例提供一种数据处理装置,包括:
获取单元,用于获取第一数据和/或第二数据;所述第一数据表征图像采集设备的相关数据;所述第二数据表征终端的用户行为数据;
处理单元,用于判断是否将所述第一数据和/或第二数据写入当前文件;在确定不将所述第一数据和/或第二数据写入所述当前文件的情况下,将所述第一数据和/或第二数据写入所述当前文件的下一个文件;所述当前文件和所述当前文件的下一个文件是根据预设文件分割策略得到的;将所述当前文件存储至HDFS中。
本发明的至少一个实施例提供一种网络设备,包括处理器和用于存储能够在处理器上运行的计算机程序的存储器,
其中,所述处理器用于运行所述计算机程序时,执行上述任一项所述方法的步骤。
本发明的至少一个实施例提供一种存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现上述任一方法的步骤。
本发明实施例提供的功能编排方法、装置、设备及存储介质,获取第一数据和/或第二数据;所述第一数据表征图像采集设备的相关数据;所述第二数据表征终端的用户行为数据;判断是否将所述第一数据和/或第二数据写入当前文件;在确定不将所述第一数据和/或第二数据写入所述当前文件的情况下,将所述第一数据和/或第二数据写入所述当前文件的下一个文件;所述当前文件和所述当前文件的下一个文件是根据预设文件分割策略得到的;将所述当前文件存储至HDFS中。采用本发明实施例提供的技术方案,Hadoop集群中的各个节点在将所述第一数据和/或第二数据写入当前文件的下一个文件的情况下,将当前文件导入Hadoop集群中的HDFS中,从而实现一边写入一边导入,写入性能和存储性能得到了提高。
附图说明
图1是本发明实施例数据处理方法应用的系统架构示意图;
图2是本发明实施例数据处理方法的实现流程示意图;
图3是本发明实施例数据处理方法的具体实现流程示意图;
图4是本发明实施例数据处理装置的组成结构示意图;
图5是本发明实施例网络设备的组成结构示意图。
具体实施方式
在对本发明实施例的技术方案进行介绍之前,先对相关技术进行说明。
相关技术中,随着物联网技术不断发展演进,越来越多的硬件设备接入网络,由此也产生了海量的数据。基于Apache Hadoop、Apache Hive、Apache Spark等组件的大数据处理方案应运而生。
目前,对海量数据进行处理的方案包括以下三种:
第一种,使用Sqoop等第三方组件,将关系型数据库中的数据直接抽取至HadoopHDFS中,由于大部分互联网应用使用关系型数据库,因此,这种方式应用最为广泛,但是,由于直接在数据库中操作,在数据同步写入时会损耗数据库性能。如果抽取的数据量巨大,甚至可能导致正常业务数据处理受阻,使用这种方式进行数据抽取时,为避免数据重复,通常使用单台主机执行抽取任务,因此存在单点故障可能性。
第二种,使用Hive Client将本地数据文件导入Hadoop HDFS中进行存储,这种方案通常用于处理外部来源的数据文件,并且使用固定的服务器(通常为Hadoop Name Node节点)来导入数据,也存在单点故障可能性。
第三种,使用Gobblin等类似组件,直接将Kafka流式数据转为批数据并写入Hadoop HDFS,这种方案结合了Kafka高吞吐量、Hadoop HDFS分布式存储两者的优点,但前期安装配置较为繁琐,并且Gobblin组件版本与Hadoop存在兼容性匹配问题,需要手动编译源码,存在较高使用门槛。
综上所述,上述三种方案在各自的应用场景中均有较为广泛的使用,但是,如上所述,三种方案对海量数据的写入和存储的性能较差。
基于此,本发明实施例中,获取第一数据和/或第二数据;所述第一数据表征图像采集设备的相关数据;所述第二数据表征终端的用户行为数据;判断是否将所述第一数据和/或第二数据写入当前文件;在确定不将所述第一数据和/或第二数据写入所述当前文件的情况下,将所述第一数据和/或第二数据写入所述当前文件的下一个文件;所述当前文件和所述当前文件的下一个文件是根据预设文件分割策略得到的;将所述当前文件存储至HDFS中。
图1是本发明实施例数据处理方法应用的系统架构示意图,如图1所示,所述系统包括:
Kafka集群,用于通过Kafka消息中间件获取第一数据和/或第二数据;并将所述第一数据和/或第二数据发送给Hadoop集群。其中,所述第一数据表征图像采集设备的相关数据;所述第二数据表征终端的用户行为数据。
Hadoop集群,用于获取所述第一数据和/或第二数据;判断是否将所述第一数据和/或第二数据写入当前文件;在确定不将所述第一数据和/或第二数据写入所述当前文件的情况下,将所述第一数据和/或第二数据写入所述当前文件的下一个文件;所述当前文件和所述当前文件的下一个文件是根据预设文件分割策略得到的;将所述当前文件存储至HDFS中。
需要说明的是,Hadoop集群中的各个节点上运行Python脚本、Hive组件。其中,Python脚本,用于获取第一数据和/或第二数据;判断是否将所述第一数据和/或第二数据写入当前文件;在确定不将所述第一数据和/或第二数据写入所述当前文件的情况下,将所述第一数据和/或第二数据写入所述当前文件的下一个文件。Hive组件,用于将所述当前文件存储至HDFS中。
需要说明的是,Kafka集群中的Kafka消息中间件运行在独立的服务器上。Kafka集群与Hadoop集群之间网络互通。
需要说明的是,所述系统还可以包括运行上述服务的若干台服务器。
图2是本发明实施例数据处理方法的实现流程示意图,应用于Hadoop集群,如图2所示,所述方法包括步骤201至步骤204:
步骤201:获取第一数据和/或第二数据;所述第一数据表征图像采集设备的相关数据;所述第二数据表征终端的用户行为数据。
可以理解的是,所述Hadoop集群中可以包括多个节点;每个节点对应一个服务器。
也就是说,所述Hadoop集群中的各个节点分别获取所述第一数据和/或第二数据。
可以理解的是,所述图像采集设备可以是指摄像头。
可以理解的是,所述图像采集设备的相关数据可以包括所述图像采集设备的状态、告警事件。其中,所述状态可以是指所述图像采集设备处于在线状态,或者,所述图像采集设备处于离线状态,等等。所述告警事件可以是指所述图像采集设备的上下线消息、所述图像采集设备侦测到的画面变化、声音变化、人物移动等等各个类型的告警事件。
可以理解的是,所述图像采集设备可以通过Http接口,将自身的相关数据上报至Kafka消息生产者;Kafka消息生产者将所述图像采集设备的相关数据上传至Kafka集群中的Kafka消息中间件的消息队列中。其中,Kafka消息生产者对应一个服务器。
可以理解的是,所述终端可以通过安装的应用程序(App),记录用户的点击、查询、购买、绑定设备等操作所产生的用户行为数据,并将记录的用户行为数据上报至业务模块;所述业务模块按照所述用户行为数据,产生一个或多个事件,将一个或多个事件转换为Json格式的数据,并将转换得到的Json格式的数据上传至Kafka集群中的Kafka消息中间件的消息队列中。其中,业务模块设置在一个服务器上。
可以理解的是,在接收到所述第一数据和/或第二数据之后,可以通过Hadoop集群中的各个节点上的Python脚本,消费Kafka集群发送的所述第一数据和/或第二数据,即,通过Python脚本,将所述第一数据和/或第二数据写入到本地文件中。
步骤202:判断是否将所述第一数据和/或第二数据写入当前文件。
可以理解的是,所述Hadoop集群判断是否将所述第一数据和/或第二数据写入当前文件之前,所述方法还包括:
从所述第一数据和/或第二数据中剔除不符合预设条件的数据,得到符合预设条件的数据;
按照指定分隔符和指定顺序,将所述符合预设条件的数据拼接为特定文件格式的数据。
可以理解的是,为了便于后续通过Hive组件将文件存储至HDFS中,考虑到Hive组件对存储的文件有一定要求,比如,文件中的数据需要按照指定的分隔符和指定的顺序进行写入,如此,在判断是否将所述第一数据和/或第二数据写入当前文件之前,还可以按照指定分隔符和指定顺序,将所述符合预设条件的数据拼接为特定文件格式的数据。
可以理解的是,所述从所述第一数据和/或第二数据中剔除不符合预设条件的数据,可以包括:
检测所述第一数据和/或第二数据中是否存在数值不在预设数值范围内的数据;当检测到所述第一数据和/或第二数据中存在数值不在预设数值范围内的数据时,将数值不在预设数据范围内的数据作为不符合预设条件的数据进行剔除;或者,检测所述第一数据和/或第二数据中是否存在缺失的数据;当检测到所述第一数据和/或第二数据中存在缺失的数据时,将缺失的数据作为不符合预设条件的数据进行剔除。
可以理解的是,所述指定分割符,用于标识所述符合预设条件的数据中各个字段的位置。其中,各个字段可以是指图像采集设备的标识(ID)、用户观看视频的时长、终端的ID、终端的型号、终端的版本号,等等。
可以理解的是,所述指定顺序,用于对所述符合预设条件的数据中各个字段进行排序。
可以理解的是,所述特定文件格式,可以是指Excel格式,等等
可以理解的是,判断是否将所述第一数据和/或第二数据写入当前文件,可以包括两种情况:
第一种情况,将所述第一数据和/或第二数据写入当前文件。
第二种情况,将所述第一数据和/或第二数据写入当前文件的下一个文件。
实际应用时,所述当前文件和所述当前文件的下一个文件可以是根据预设文件分割策略得到的,考虑到所述预设文件分割策略可以与文件大小有关,因此,可以判断当前文件的大小,若所述当前文件的大小未达到预设阈值,则将获取的数据批量追加至当前文件的末尾,若当前文件的大小达到预设阈值,则将获取的数据写入到当前文件的下一个文件中,即新的一个文件中。
基于此,在一实施例中,所述判断是否将所述第一数据和/或第二数据写入当前文件,包括:
判断所述当前文件的大小是否达到预设阈值;
在确定所述当前文件的大小达到预设阈值的情况下,确定不将所述第一数据和/或第二数据写入所述当前文件;
在确定所述当前文件的大小未达到预设阈值的情况下,确定将所述第一数据和/或第二数据写入所述当前文件。
实际应用时,所述当前文件和所述当前文件的下一个文件可以是根据预设文件分割策略得到的,考虑到所述预设文件分割策略可以与文件对应的时间段有关,因此,可以根据获取所述第一数据和/或所述第二数据的时间戳,选择与该时间戳匹配的时间段对应的文件,并将获取的数据写入到该文件中。
基于此,在一实施例中,所述判断是否将所述第一数据和/或第二数据写入当前文件,包括:
确定获取所述第一数据和/或所述第二数据的时间戳;并确定所述当前文件对应的时间段;
在所述时间戳与所述时间段未匹配的情况下,确定不将所述第一数据和/或第二数据写入所述当前文件;
在所述时间戳与所述时间段匹配的情况下,确定将所述第一数据和/或第二数据写入所述当前文件。
也就是说,根据读取的Kafka集群发送的所述第一数据和/或所述第二数据的时间戳,确定与所述时间戳匹配的时间段对应的文件,将所述第一数据和/或所述第二数据写入与该时间段对应的本地磁盘文件中。
步骤203:在确定不将所述第一数据和/或第二数据写入所述当前文件的情况下,将所述第一数据和/或第二数据写入所述当前文件的下一个文件;所述当前文件和所述当前文件的下一个文件是根据预设文件分割策略得到的。
可以理解的是,在确定将所述第一数据和/或第二数据写入所述当前文件的情况下,将所述第一数据和/或第二数据写入所述当前文件。
实际应用时,考虑到在将所述第一数据和/或第二数据写入所述当前文件的下一个文件的过程中,如果频繁打开和关闭该文件,则会产生不必要的磁盘IO,因此,可以将所述当前文件的下一个文件的文件句柄缓存在内存中,以避免频繁打开和关闭该文件。
基于此,在一实施例中,所述将所述第一数据和/或第二数据写入所述当前文件的下一个文件,包括:
将所述当前文件的下一个文件的文件句柄缓存在内存中;并将所述当前文件的文件句柄从所述内存中删除;
根据所述文件句柄,调用所述当前文件的下一个文件;
将所述第一数据和/或所述第二数据写入所述当前文件的下一个文件。
可以理解的是,在根据文件大小判断是否将所述第一数据和/或第二数据写入当前文件的下一个文件的情况下,若判定将所述第一数据和/或第二数据写入当前文件的下一个文件,则可以将所述当前文件作为旧文件,将所述当前文件的下一个文件作为新文件,如此,可以删除内存中的旧文件的文件句柄,关闭该旧文件,并将新文件的文件句柄存入内存,以避免频繁打开关闭文件产生不必要的磁盘输入输出(IO)。
可以理解的是,在根据文件对应的时间段判断是否将所述第一数据和/或第二数据写入当前文件的下一个文件的情况下,若判定将所述第一数据和/或第二数据写入当前文件的下一个文件,则可以将与所述第一数据和/或所述第二数据的时间戳匹配的时间段对应的文件作为新文件,将该时间段之前的文件作为旧文件,如此,可以删除内存中的旧文件的文件句柄,关闭该旧文件,并将与该时间段对应的文件的文件句柄存入内存,以避免频繁打开关闭文件产生不必要的磁盘IO。
在一实施例中,所述方法还包括:
按照预设文件分割策略,将预设文件分割为多个文件;所述多个文件包括所述当前文件和所述当前文件的下一个文件。
在一实施例中,所述按照预设文件分割策略,将预设文件分割为多个文件,包括:
按照预设文件大小,将预设文件分割为多个文件;
或者,
按照预设时间段,将预设文件分割为多个文件。
步骤204:将所述当前文件存储至HDFS中。
可以理解的是,可以调用Hive组件,将所述当前文件导入HDFS中。
在一实施例中,所述方法还包括:
检测所述Hadoop集群中是否存在发生异常的节点,得到检测结果;
在所述检测结果表征所述Hadoop集群中存在发生异常的节点的情况下,控制所述发生异常的节点停止工作;
在所述发生异常的节点恢复正常的情况下,控制恢复正常的节点重新获取所述第一数据和/或第二数据。
可以理解的是,当所述Hadoop集群中的某个节点异常时,可以通过发生异常的节点上的Python脚本,控制停止消费Kafka集群发送的所述第一数据和/或第二数据。Kafka集群还可以进行重新映射(rebalance),将Kafka集群中的各个主题(topic)分区与Kafka消费者的对应关系进行重新映射。在重新映射的过程中,发生异常的节点对应的Kafka分区会被Hadoop集群中的其他节点进行继续消费Kafka集群发送的所述第一数据和/或第二数据,如此,新获取的数据不会再存储到发生异常的节点的本地磁盘文件中,而旧文件依然被保留在本地磁盘中。
可以理解的是,当所述Hadoop集群中发生异常的节点恢复后,经过Kafka集群进行重新映射(rebalance),恢复正常的该节点通过Python脚本继续正常消费Kafka集群发送的数据。一种情况是,考虑到所述预设文件分割策略可以与文件大小有关,因此,可以判断当前文件的大小,若所述当前文件的大小未达到预设阈值,则将获取的数据批量追加至当前文件的末尾,若当前文件的大小达到预设阈值,则将获取的数据写入到当前文件的下一个文件中,即新的一个文件中。另外一种情况是,考虑到所述预设文件分割策略可以与文件对应的时间段有关,因此,可以根据获取所述第一数据和/或所述第二数据的时间戳,选择与该时间戳匹配的时间段对应的文件,并将获取的数据写入到该文件中。
本发明实施例中,具备以下优点:
(1)Hadoop集群中的各个节点作为Kafka消费者来消费Kafka集群发送的第一数据和/或第二数据,并在将所述第一数据和/或第二数据写入当前文件的下一个文件的情况下,将当前文件导入Hadoop集群中的HDFS中,从而实现一边写入一边导入,数据写入性能和数据存储性能得到了提高。
也就是说,针对高并发、高吞吐量的Hadoop数据持久化场景,提出一种分布式的数据导入方案,该方案结合Kafka高吞吐量的特点,使用Python脚本,消费Kafka各个分区数据,不断将消费到的数据顺序追加至本地文件末尾。在本地文件达到指定大小或者到达时间窗口长度时,通过Hive组件将本地文件导入Hadoop HDFS中。多进程并行消费导入数据的处理方式与Hadoop的设计理念不谋而合,即,使用多台较低配置的服务器组成集群并发完成海量数据处理。
(2)使用了文件追加、缓存文件句柄等方式,由于无需频繁打开文件,因此,能够节省磁盘IO。执行Hive命令,将当前文件导入HDFS文件,增加了系统吞吐量。
(3)在Hadoop集群中存在节点发生异常时,经过Kafka集群的重新映射(rebalance)机制,异常节点退出Kafka消费,其他节点接替该节点进行数据消费,Kafka中不会产生数据堆积,所有新数据正常写入HDFS中。当Hadoop异常节点恢复后,节点继续加入Kafka消费,异常前文件会被自动导入HDFS中不会产生数据丢失,因此,系统具备高可靠性。
也就是说,即使Hadoop集群中某台服务器宕机,基于Kafka的rebalance机制,Hadoop集群中正常节点上的Python消费者会“接替”该服务器继续进行消费,而基于Hadoop的数据备份机制,单节点故障也不会导致已经导入的数据不可用。当故障节点恢复后,该节点会继续加入Kafka消费组并进行文件的导入,以此解决了数据导入Hadoop过程中单节点故障问题和集群节点间的耦合问题,保证了整个系统的高可用性。
(4)Hadoop集群中的各个节点运行Python脚本,由于Python脚本只需在服务器上安装Python环境即可运行,相比各种复杂组件更易于维护、修改,基本不存在使用门槛。由于Python脚本运行不会占用大量内存和CPU资源,整个系统使用多台低配置机器即可完成大量数据处理,系统整体成本低。
(5)由于磁盘顺序读写性能很高(在某些情况下甚至优于内存读写速度),因此,即使在较低配置的Hadoop集群服务器上也能够快速处理Kafka数据而不产生消息堆积。
图3是本发明实施例数据处理方法的具体实现流程示意图,如图3所示,所述方法包括步骤301至步骤304:
步骤301:图像采集设备获取第一数据;终端获取第二数据。
这里,所述第一数据表征图像采集设备的相关数据;所述第二数据表征终端的用户行为数据。
步骤302:所述图像采集设备将第一数据发送给Kafka集群,和/或,所述终端将第二数据发送给Kafka集群。
这里,所述图像采集设备可以通过Http接口,将自身的相关数据上报至Kafka消息生产者;Kafka消息生产者将所述图像采集设备的相关数据上传至Kafka集群中的Kafka消息中间件的消息队列中。其中,Kafka消息生产者对应一个服务器。
这里,所述终端可以通过安装的应用程序(App),记录用户的点击、查询、购买、绑定设备等操作所产生的用户行为数据,并将记录的用户行为数据上报至业务模块;所述业务模块按照所述用户行为数据,产生一个或多个事件,将一个或多个事件转换为Json格式的数据,并将转换得到的Json格式的数据上传至Kafka集群中的Kafka消息中间件的消息队列中。其中,业务模块设置在一个服务器上。
这里,所述终端还可以在用户操作时触发消息事件,通过Http请求,将消息写入Kafka集群的Kafka中间件。
步骤303:Kafka集群将所述第一数据和/或第二数据发送给Hadoop集群。
这里,Hadoop集群各节点上安装有用于消费和记录Kafka数据的Python脚本和用于导入数据的Hive组件。
步骤304:Hadoop集群判断是否将所述第一数据和/或第二数据写入当前文件。
步骤305:在确定不将所述第一数据和/或第二数据写入所述当前文件的情况下,将所述第一数据和/或第二数据写入所述当前文件的下一个文件(新文件);所述当前文件和所述当前文件的下一个文件是根据预设文件分割策略得到的。
这里,Hadoop集群各节点上的Python脚本消费Kafka数集群发送的数据,在确定将所述第一数据和/或第二数据写入所述当前文件的情况下,将获取的数据顺序追加到当前文件的末尾。在确定不将所述第一数据和/或第二数据写入所述当前文件的情况下,将获取的数据顺序追加到当前文件的下一个文件的末尾。
步骤306:将所述当前文件(旧文件)存储至HDFS中。
这里,当本地文件达到指定大小时,通过Hadoop集群节点上的Python脚本,调用Hive组件,将本地文件导入Hadoop集群中的HDFS中。
这里,当Hadoop集群中的节点发生异常时,该节点上的Python脚本停止消费Kafka数据,Kafka集群基于心跳机制发现消费者退出后会自动执行rebalance,Hadoop集群中的其他节点上的Python进程会“接替”该消费者继续消费,保证消息不会堆积。
为实现本发明实施例数据处理方法,本发明实施例还提供一种数据处理装置。图4为本发明实施例数据处理装置的组成结构示意图,如图4所示,所述装置包括:
获取单元41,用于获取第一数据和/或第二数据;所述第一数据表征图像采集设备的相关数据;所述第二数据表征终端的用户行为数据;
处理单元42,用于判断是否将所述第一数据和/或第二数据写入当前文件;在确定不将所述第一数据和/或第二数据写入所述当前文件的情况下,将所述第一数据和/或第二数据写入所述当前文件的下一个文件;所述当前文件和所述当前文件的下一个文件是根据预设文件分割策略得到的;将所述当前文件存储至HDFS中。
在一实施例中,所述处理单元42,具体用于:
判断所述当前文件的大小是否达到预设阈值;
在确定所述当前文件的大小达到预设阈值的情况下,确定不将所述第一数据和/或第二数据写入所述当前文件;
在确定所述当前文件的大小未达到预设阈值的情况下,确定将所述第一数据和/或第二数据写入所述当前文件。
在一实施例中,所述处理单元42,具体用于:
确定获取所述第一数据和/或所述第二数据的时间戳;并确定所述当前文件对应的时间段;
在所述时间戳与所述时间段未匹配的情况下,确定不将所述第一数据和/或第二数据写入所述当前文件;
在所述时间戳与所述时间段匹配的情况下,确定将所述第一数据和/或第二数据写入所述当前文件。
在一实施例中,所述处理单元42,具体用于:
将所述当前文件的下一个文件的文件句柄缓存在内存中;并将所述当前文件的文件句柄从所述内存中删除;
根据所述文件句柄,调用所述当前文件的下一个文件;
将所述第一数据和/或所述第二数据写入所述当前文件的下一个文件。
在一实施例中,所述装置还用于:
按照预设文件分割策略,将预设文件分割为多个文件;所述多个文件包括所述当前文件和所述当前文件的下一个文件。
在一实施例中,所述装置还用于:
按照预设文件大小,将预设文件分割为多个文件;
或者,
按照预设时间段,将预设文件分割为多个文件。
在一实施例中,所述装置还用于:
检测所述Hadoop集群中是否存在发生异常的节点,得到检测结果;
在所述检测结果表征所述Hadoop集群中存在发生异常的节点的情况下,控制所述发生异常的节点停止工作;
在所述发生异常的节点恢复正常的情况下,控制恢复正常的节点重新获取所述第一数据和/或第二数据。
实际应用时,所述获取单元41可以由数据处理装置中的通信接口实现;所述处理单元42可以由数据处理装置中的处理器实现。
需要说明的是:上述实施例提供的数据处理装置在进行数据处理时,仅以上述各程序模块的划分进行举例说明,实际应用中,可以根据需要而将上述处理分配由不同的程序模块完成,即将装置的内部结构划分成不同的程序模块,以完成以上描述的全部或者部分处理。另外,上述实施例提供的数据处理装置与数据处理方法实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。
本发明实施例还提供了一种网络设备,如图5所示,包括:
通信接口51,能够与其它设备进行信息交互;
处理器52,与所述通信接口51连接,用于运行计算机程序时,执行上述网络设备侧一个或多个技术方案提供的方法。而所述计算机程序存储在存储器53上。
需要说明的是:所述处理器52和通信接口51的具体处理过程详见方法实施例,这里不再赘述。
当然,实际应用时,网络设备50中的各个组件通过总线系统54耦合在一起。可理解,总线系统54用于实现这些组件之间的连接通信。总线系统54除包括数据总线之外,还包括电源总线、控制总线和状态信号总线。但是为了清楚说明起见,在图5中将各种总线都标为总线系统54。
本申请实施例中的存储器53用于存储各种类型的数据以支持网络设备50的操作。这些数据的示例包括:用于在网络设备50上操作的任何计算机程序。
上述本申请实施例揭示的方法可以应用于所述处理器52中,或者由所述处理器52实现。所述处理器52可能是一种集成电路芯片,具有信号的处理能力。在实现过程中,上述方法的各步骤可以通过所述处理器52中的硬件的集成逻辑电路或者软件形式的指令完成。上述的所述处理器52可以是通用处理器、数字数据处理器(DSP,Digital SignalProcessor),或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。所述处理器52可以实现或者执行本申请实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者任何常规的处理器等。结合本申请实施例所公开的方法的步骤,可以直接体现为硬件译码处理器执行完成,或者用译码处理器中的硬件及软件模块组合执行完成。软件模块可以位于存储介质中,该存储介质位于存储器53,所述处理器52读取存储器53中的信息,结合其硬件完成前述方法的步骤。
在示例性实施例中,网络设备50可以被一个或多个应用专用集成电路(ASIC,Application Specific Integrated Circuit)、DSP、可编程逻辑器件(PLD,ProgrammableLogic Device)、复杂可编程逻辑器件(CPLD,Complex Programmable Logic Device)、现场可编程门阵列(FPGA,Field-Programmable Gate Array)、通用处理器、控制器、微控制器(MCU,Micro Controller Unit)、微处理器(Microprocessor)、或者其他电子元件实现,用于执行前述方法。
可以理解,本申请实施例的存储器(存储器53)可以是易失性存储器或者非易失性存储器,也可包括易失性和非易失性存储器两者。其中,非易失性存储器可以是只读存储器(ROM,Read Only Memory)、可编程只读存储器(PROM,Programmable Read-Only Memory)、可擦除可编程只读存储器(EPROM,Erasable Programmable Read-Only Memory)、电可擦除可编程只读存储器(EEPROM,Electrically Erasable Programmable Read-Only Memory)、磁性随机存取存储器(FRAM,ferromagnetic random access memory)、快闪存储器(FlashMemory)、磁表面存储器、光盘、或只读光盘(CD-ROM,Compact Disc Read-Only Memory);磁表面存储器可以是磁盘存储器或磁带存储器。易失性存储器可以是随机存取存储器(RAM,Random Access Memory),其用作外部高速缓存。通过示例性但不是限制性说明,许多形式的RAM可用,例如静态随机存取存储器(SRAM,Static Random Access Memory)、同步静态随机存取存储器(SSRAM,Synchronous Static Random Access Memory)、动态随机存取存储器(DRAM,Dynamic Random Access Memory)、同步动态随机存取存储器(SDRAM,Synchronous Dynamic Random Access Memory)、双倍数据速率同步动态随机存取存储器(DDRSDRAM,Double Data Rate Synchronous Dynamic Random Access Memory)、增强型同步动态随机存取存储器(ESDRAM,Enhanced Synchronous Dynamic Random AccessMemory)、同步连接动态随机存取存储器(SLDRAM,SyncLink Dynamic Random AccessMemory)、直接内存总线随机存取存储器(DRRAM,Direct Rambus Random Access Memory)。本申请实施例描述的存储器旨在包括但不限于这些和任意其它适合类型的存储器。
在示例性实施例中,本发明实施例还提供了一种存储介质,即计算机存储介质,具体为计算机可读存储介质,例如包括存储计算机程序的存储器,上述计算机程序可由网络设备50的处理器52执行,以完成前述网络设备侧方法所述步骤。计算机可读存储介质可以是FRAM、ROM、PROM、EPROM、EEPROM、Flash Memory、磁表面存储器、光盘、或CD-ROM等存储器。
需要说明的是:“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。
另外,本发明实施例所记载的技术方案之间,在不冲突的情况下,可以任意组合。
以上所述,仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。

Claims (10)

1.一种数据处理方法,其特征在于,应用于Hadoop集群,所述方法包括:
获取第一数据和/或第二数据;所述第一数据表征图像采集设备的相关数据;所述第二数据表征终端的用户行为数据;
判断是否将所述第一数据和/或第二数据写入当前文件;
在确定不将所述第一数据和/或第二数据写入所述当前文件的情况下,将所述第一数据和/或第二数据写入所述当前文件的下一个文件;所述当前文件和所述当前文件的下一个文件是根据预设文件分割策略得到的;
将所述当前文件存储至分布式文件系统HDFS中。
2.根据权利要求1所述的方法,其特征在于,所述判断是否将所述第一数据和/或第二数据写入当前文件,包括:
判断所述当前文件的大小是否达到预设阈值;
在确定所述当前文件的大小达到预设阈值的情况下,确定不将所述第一数据和/或第二数据写入所述当前文件;
在确定所述当前文件的大小未达到预设阈值的情况下,确定将所述第一数据和/或第二数据写入所述当前文件。
3.根据权利要求1所述的方法,其特征在于,所述判断是否将所述第一数据和/或第二数据写入当前文件,包括:
确定获取所述第一数据和/或所述第二数据的时间戳;并确定所述当前文件对应的时间段;
在所述时间戳与所述时间段未匹配的情况下,确定不将所述第一数据和/或第二数据写入所述当前文件;
在所述时间戳与所述时间段匹配的情况下,确定将所述第一数据和/或第二数据写入所述当前文件。
4.根据权利要求1至3任一项所述的方法,其特征在于,所述将所述第一数据和/或第二数据写入所述当前文件的下一个文件,包括:
将所述当前文件的下一个文件的文件句柄缓存在内存中;并将所述当前文件的文件句柄从所述内存中删除;
根据所述文件句柄,调用所述当前文件的下一个文件;
将所述第一数据和/或所述第二数据写入所述当前文件的下一个文件。
5.根据权利要求1所述的方法,其特征在于,所述方法还包括:
按照预设文件分割策略,将预设文件分割为多个文件;所述多个文件包括所述当前文件和所述当前文件的下一个文件。
6.根据权利要求5所述的方法,其特征在于,所述按照预设文件分割策略,将预设文件分割为多个文件,包括:
按照预设文件大小,将预设文件分割为多个文件;
或者,
按照预设时间段,将预设文件分割为多个文件。
7.根据权利要求1所述的方法,其特征在于,所述方法还包括:
检测所述Hadoop集群中是否存在发生异常的节点,得到检测结果;
在所述检测结果表征所述Hadoop集群中存在发生异常的节点的情况下,控制所述发生异常的节点停止工作;
在所述发生异常的节点恢复正常的情况下,控制恢复正常的节点重新获取所述第一数据和/或第二数据。
8.一种数据处理装置,其特征在于,包括:
获取单元,用于获取第一数据和/或第二数据;所述第一数据表征图像采集设备的相关数据;所述第二数据表征终端的用户行为数据;
处理单元,用于判断是否将所述第一数据和/或第二数据写入当前文件;在确定不将所述第一数据和/或第二数据写入所述当前文件的情况下,将所述第一数据和/或第二数据写入所述当前文件的下一个文件;所述当前文件和所述当前文件的下一个文件是根据预设文件分割策略得到的;将所述当前文件存储至HDFS中。
9.一种网络设备,其特征在于,包括处理器和用于存储能够在处理器上运行的计算机程序的存储器,
其中,所述处理器用于运行所述计算机程序时,执行权利要求1至7任一项所述方法的步骤。
10.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1至7任一项所述方法的步骤。
CN202211124318.1A 2022-09-15 2022-09-15 数据处理方法、装置、设备及存储介质 Pending CN116955287A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202211124318.1A CN116955287A (zh) 2022-09-15 2022-09-15 数据处理方法、装置、设备及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202211124318.1A CN116955287A (zh) 2022-09-15 2022-09-15 数据处理方法、装置、设备及存储介质

Publications (1)

Publication Number Publication Date
CN116955287A true CN116955287A (zh) 2023-10-27

Family

ID=88443291

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202211124318.1A Pending CN116955287A (zh) 2022-09-15 2022-09-15 数据处理方法、装置、设备及存储介质

Country Status (1)

Country Link
CN (1) CN116955287A (zh)

Similar Documents

Publication Publication Date Title
US10509585B2 (en) Data synchronization method, apparatus, and system
CN110413432B (zh) 一种信息处理方法、电子设备及存储介质
CN108965383B (zh) 文件同步方法、装置、计算机设备和存储介质
CN108038039B (zh) 记录日志的方法及微服务系统
CN110647460B (zh) 一种测试资源管理方法、装置和测试客户端
CN114363144B (zh) 一种面向分布式系统的故障信息关联上报方法及相关设备
CN112866319B (zh) 日志数据处理方法、系统和存储介质
CN114138549A (zh) 基于kubernetes系统的数据备份和恢复方法
CN111782431A (zh) 一种异常的处理方法、装置、终端及存储介质
CN113595773B (zh) 信息处理方法、装置、电子设备和存储介质
CN111966531B (zh) 数据快照方法、装置、计算机设备及存储介质
CN111831954A (zh) 内容数据更新方法、装置、计算机设备及存储介质
CN116955287A (zh) 数据处理方法、装置、设备及存储介质
CN112818204B (zh) 一种业务的处理方法、装置、设备及存储介质
CN111274176B (zh) 一种信息处理方法、电子设备、系统及存储介质
CN109426589B (zh) 一种文件修复方法及装置
CN112711606A (zh) 数据库访问方法、装置、计算机设备和存储介质
CN114363221B (zh) 一种基于微服务系统的心跳检测方法、存储介质、电子设备及系统
CN111459819A (zh) 软件测试方法及装置、电子设备、计算机可读介质
CN115730016B (zh) 数据同步方法、系统、装置、计算机设备和存储介质
CN113051152B (zh) 一种任务数据的生成方法、装置以及处理设备
CN115442272B (zh) 一种检测丢失数据的方法、装置、设备及存储介质
US11281580B2 (en) Edge device triggering a write-ahead logging (WAL) log when abnormal condition occurs
CN115391096A (zh) 一种数据备份方法、系统、计算机设备及存储介质
CN114884807A (zh) 链路日志生成方法、装置、物联网平台及存储介质

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination