CN103942099B - 基于Hive的并行执行任务方法及装置 - Google Patents
基于Hive的并行执行任务方法及装置 Download PDFInfo
- Publication number
- CN103942099B CN103942099B CN201410182326.0A CN201410182326A CN103942099B CN 103942099 B CN103942099 B CN 103942099B CN 201410182326 A CN201410182326 A CN 201410182326A CN 103942099 B CN103942099 B CN 103942099B
- Authority
- CN
- China
- Prior art keywords
- hive
- code segment
- sequence
- execution
- scripts
- 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.)
- Active
Links
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Devices For Executing Special Programs (AREA)
Abstract
本发明涉及基于Hive的并行执行任务方法及装置。该方法包括:运行Hive脚本;识别出流程控制标签的顺序标记;将所有顺序标记进行比对,以得到代码段的执行顺序;根据所述执行顺序执行代码段,其中,对顺序标记相同的代码段进行并行执行。本发明可以让开发者自由地控制Hive脚本中各个代码段之间的并行和串行关系,大幅度的提高了Hive脚本的执行效率,而且更加充分地利用Hadoop集群的计算能力。
Description
技术领域
本发明涉及计算机通信技术,具体涉及Hive数据处理技术。
背景技术
移动互联网的快速发展,使得用户产生和应用的数据呈现飞速增长的趋势,海量数据的出现和数据结构的改变,给电信行业运营商管理和分析处理数据带来了巨大的挑战。传统基于关系型数据库的处理方法已经无法有效地存储和处理日益增长和新型的业务数据,Hadoop分布式技术的发展为解决上述问题提供了技术手段。
Hadoop是Apache组织管理的一个开源项目,是基于Google云计算理论Big Table、MapReduce和GFS的软件实现。Hadoop可以使用户在不了解底层细节的情况下开发MapReduce程序,并在价格低廉的商用集群上进行运算和存储,具有可扩展、高容错、经济、可靠、高效等优点。Hadoop的核心组件由两个部分:分布式文件系统(HDFS)和分布式计算模型MapReduce。HDFS是Hadoop的旗舰级文件系统,它以流式数据访问模式来存储超大文件,运行于商用硬件集群上;MapReduce是一个编程模型,用以进行稳定、高效、超大数据量的分析计算。
Hive是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张数据表,并提供完整的SQL查询功能,可以将SQL语句转换为MapReduce任务进行运行。
具体的,MapReduce框架是主从结构的。MapReduce运行时,主机(master)启动一个JobTracker(任务调度)进程,用于任务调度。从机(slave)启动数个JobTracker进程,作为运算实体。JobTracker的主要职责就是启动、跟踪和调度各个从机的任务执行,JobTracker中存储着任务状态信息。
目前的Hive引擎的执行方式有以下两种:
1. 将所有语句拼在一起,再由Hive顺序执行,方法如下:
Hive -e <your-query>;
示例:
Hive-e “use temp; drop tale platform_uv_test; create table platform_uv_test … …”。
2. 将脚本写入一个文件,由Hive顺序读入并执行,方法如下
Hive -f <脚本名>;
示例: Hive -f test1.sql
其中test1.sql 中的内容是实际执行的Hive代码,示例如下:
Use temp;
Drop table platform_uv_test;
Create table platform_uv_test(log_date string, uv bigint) partitionedby (platform string);
……
可见,上述两种执行方式都是顺序执行。
上述两种执行方式无论采用哪一种,Hive SQL都必须逐条执行,即使各条SQL之间互不关联,也无法并行。这样既影响任务的整体执行效率,也不能充分利用Hadoop庞大的系统资源。
发明内容
本发明的目的在于提出一种基于Hive的并行执行任务方法,其能解决传统的Hive仅能串行执行任务的问题。
为了达到上述目的,本发明所采用的技术方案如下:
基于Hive的并行执行任务方法,其包括以下步骤:
步骤1、运行Hive脚本,所述Hive脚本中具有多条代码段;
步骤2、识别出流程控制标签的顺序标记,所述流程控制标签位于所述Hive脚本中,并且每一个流程控制标签与对应的一代码段关联;
步骤3、将所有顺序标记进行比对,以得到代码段的执行顺序;
步骤4、根据所述执行顺序执行代码段,其中,对顺序标记相同的代码段进行并行执行。
优选的,步骤1和步骤2之间还有以下步骤:
判断所述Hive脚本中存在启动执行命令还是模拟执行命令,若为启动执行命令,则对步骤2至步骤4进行启动执行;若为模拟执行命令,则对步骤2至步骤4进行模拟执行,并生成执行结果。
优选的,步骤4之后还有以下步骤:
对每条代码段进行唯一标识,并将每条代码段的执行进度于一显示界面上进行显示,其中,所述唯一标识至少包括所述Hive脚本的脚本名称、与顺序标记对应的顺序号以及与顺序标记对应的代码段的子任务标识。
进一步优选的,所述显示界面为Hadoop的jobTracker显示页面。
优选的,所述代码段包括至少一SQL语句。
本发明还提出一种基于Hive的并行执行任务装置,其包括以下模块:
运行模块,用于运行Hive脚本,所述Hive脚本中具有多条代码段;
识别模块,用于识别出流程控制标签的顺序标记,所述流程控制标签位于所述Hive脚本中,并且每一个流程控制标签与对应的一代码段关联;
比对模块,用于将所有顺序标记进行比对,以得到代码段的执行顺序;
执行模块,用于根据所述执行顺序执行代码段,其中,对顺序标记相同的代码段进行并行执行。
优选的,运行模块和识别模块之间还有判断模块:
判断所述Hive脚本中存在启动执行命令还是模拟执行命令,若为启动执行命令,则对识别模块至执行模块进行启动执行;若为模拟执行命令,则对识别模块至执行模块进行模拟执行,并生成执行结果。
优选的,执行模块之后还有显示模块:
对每条代码段进行唯一标识,并将每条代码段的执行进度于一显示界面上进行显示,其中,所述唯一标识至少包括所述Hive脚本的脚本名称、与顺序标记对应的顺序号以及与顺序标记对应的代码段的子任务标识。
进一步优选的,所述显示界面为Hadoop的jobTracker显示页面。
优选的,所述代码段包括至少一SQL语句。
本发明具有如下有益效果:
可以让开发者自由地控制Hive脚本中各个代码段之间的并行和串行关系,大幅度的提高了Hive脚本的执行效率,而且更加充分地利用Hadoop集群的计算能力。
附图说明
图1为本发明较佳实施例的基于Hive的并行执行任务方法的流程图;
图2为本发明具体应用案例的Hive脚本;
图3为本发明具体应用案例的Hive脚本执行模拟执行命令后的执行结果;
图4为本发明具体应用案例的jobTracker显示页面。
具体实施方式
下面,结合附图以及具体实施方式,对本发明做进一步描述。
如图1所示,一种基于Hive的并行执行任务方法,其包括以下步骤:
步骤S1、运行Hive脚本,所述Hive脚本中具有多条代码段。所述代码段包括至少一条SQL语句,多条SQL语句也可以封装成一个SQL脚本,所述代码段也可以是一个SQL脚本。实际上,代码段也可以为空,空的代码段也不会影响程序的运行。
步骤S2、判断所述Hive脚本中存在启动执行命令还是模拟执行命令,若为启动执行命令,则对步骤S3至步骤S5进行启动执行,即真正的对代码段进行执行;若为模拟执行命令,则执行步骤S7。
步骤S3、识别出流程控制标签的顺序标记,所述流程控制标签位于所述Hive脚本中,并且每一个流程控制标签与对应的一代码段关联。
步骤S4、将所有顺序标记进行比对,以得到代码段的执行顺序。
步骤S5、根据所述执行顺序执行代码段,其中,对顺序标记相同的代码段进行并行执行。
步骤S6、对每条代码段进行唯一标识,并将每条代码段的执行进度于一显示界面上进行显示,便于开发者查阅执行任务的进度。所述显示界面为Hadoop的jobTracker显示页面。,其中,所述唯一标识至少包括所述Hive脚本的脚本名称、与顺序标记对应的顺序号以及与顺序标记对应的代码段的子任务标识,从而使子任务进度展示更加的清晰、明确。
步骤S7、对步骤S3至步骤S5进行模拟执行,并生成执行结果,以便于开发者进行调试。所述执行结果包括参数化的Hive脚本和代码段的执行流程。
传统的Hive只提供了串行化执行SQL的工具,还没有办法进行单个任务内多条SQL之前的并行执行。本实施例通过流程控制标签简洁的实现了任务内SQL并行化执行解决方案,并配有执行计划调试命令与子任务进度查询方案以帮助开发者理解和调试。本实施例简单实用,可以在几乎不增加开发难度的情况下,大大提高集群资源的利用率和Hive任务的执行效率。
下面,为了便于理解本实施例的技术思想,以具体的应用案例对本实施例进行详细说明。
在Hive脚本中添加流程控制标签,所述流程控制标签的定义如下:
1.所有标签行均以“====step:<stepNo>====”的格式提供,其中stepNo为标注执行顺序的数字,所有以四个等号开始的行都将被识别为流程控制标签。
2.每个流程控制标签的控制代码范围为从该标签的标注位置开始,到下一个标签的标注位置或文件末尾结束。
3.所有被标注为相同stepNo的代码段将被同时启动并行执行,直到该stepNo对应的代码全部执行完成,则该任务完成。
4.不同stepNo的代码段将按照stepNo的数值大小从小到大顺序执行,前一个stepNo 对应的所有代码段必须全部执行完毕,后一个stepNo的程序才能启动。
示例Hive脚本名:test.sql,代码如图2所示,其中#开头的部分是代码注释,====开头的部分为流程控制标签行,其他为SQL代码。执行命令HiveFile test.sql,其中,HiveFile即为启动执行命令。可以看到,该代码共有三个step, 其中step2 有三个并行的子任务,执行顺序则为step1、3个step2和step3。
为帮助开发人员更好的掌握HiveFile的执行方式,还提供了模拟实际执行的HiveDebug命令(即模拟执行命令),该命令解析参数,生成执行计划,但不真正执行Hive脚本,生成的参数化SQL及执行计划(即执行结果),用于帮助开发者调试。由于Hive任务执行起来大多比较慢,这一功能可以帮助开发人员快速验证自己设置的流程控制标签及参数设置,避免浪费过多的时间。
同样以上文中的SQL代码为例, 执行HiveDebug test.sql。得到的结果如图3所示,其中方框内容为参数化后的Hive脚本和代码段的执行流程。
由于HiveFile中有并行执行的部分,各子进程的执行日志如果都打在后台会互相交叉导致难以阅读。为避免日志混乱并使开发者能清晰地掌握各个子任务的执行进度,HiveFile在执行每条SQL的时候给每条SQL代码进行命名,该命名本身包含了每条SQL的任务信息,在执行计划中的位置,以及要做的基本动作,该命名最终会显示在Hadoop的jobTracker显示页面上供开发者查阅。
执行上面的Hive脚本,jobTracker上显示的任务截图如图4所示。其中,方框内容为:test.sql:s2q1:10.19.111.146:3572:insert temp.platform (platform=’pc’)。以冒号分割, 第一部分test.sql(即Hive脚本的名称) 为执行的脚本名,后面的s2q1指的是step=2(即顺序标记的顺序号),Query=1(即代码段的子任务标识),也就是说第二步的第一个query(查询)。图4截取的三条任务就是该脚本第二步对应的三个query。
本实施例还对应提出一种基于Hive的并行执行任务装置,其包括以下模块:
运行模块,用于运行Hive脚本,所述Hive脚本中具有多条代码段,所述代码段包括至少一SQL语句;
判断模块,用于判断所述Hive脚本中存在启动执行命令还是模拟执行命令,若为启动执行命令,则对识别模块至执行模块进行启动执行;若为模拟执行命令,则对识别模块至执行模块进行模拟执行,并生成执行结果;
识别模块,用于识别出流程控制标签的顺序标记,所述流程控制标签位于所述Hive脚本中,并且每一个流程控制标签与对应的一代码段关联;
比对模块,用于将所有顺序标记进行比对,以得到代码段的执行顺序;
执行模块,用于根据所述执行顺序执行代码段,其中,对顺序标记相同的代码段进行并行执行;
显示模块,用于对每条代码段进行唯一标识,并将每条代码段的执行进度于一显示界面上进行显示。所述显示界面为Hadoop的jobTracker显示页面。,其中,所述唯一标识至少包括所述Hive脚本的脚本名称、与顺序标记对应的顺序号以及与顺序标记对应的代码段的子任务标识。
本发明具有如下特点:
1.通过自定义流程控制标签实现各个代码段之间的串行及并行控制,相同顺序标记的代码段以并行的方式执行,不同的顺序标记之间顺序执行。另外,该流程控制标签是标注在代码段上的,而不需要每条SQL都标注,并行和串行的切换自由灵活。
2. 通过特定的SQL命名规则为每个query命名,解决了子任务进度的并行显示问题。
3.提供了配套的代码执行计划查看工具,使得串行和并行之间的执行计划更加一目了然。
本发明具有如下意义:
1.电商的Hadoop集群规模一般都比较大,能够支持大批SQL同时执行。
2.电商业务对任务执行速度的要求无止境。
3.电商业务中需要并行执行的情况非常多,最常见的情形如:
A、对某个宽表的多个字段各个计算,再最后拼接起来。如统计某个用户的首次来访时间,首次注册时间,首次购买,常用的浏览器,常用的操作系统,常用的手机型号等通常来自不同的数据源,可以各自并行的执行,最后再拼接到一张表里。
B、针对不同的维度提供数据到同一张表不同的分区。如需要提供pc、wap、app的近一周每天的流量数据到某流量表的各个对应分区等,每天每个平台的数据之间并无关系,可以并行执行。
对于本领域的技术人员来说,可根据以上描述的技术方案以及构思,做出其它各种相应的改变以及变形,而所有的这些改变以及变形都应该属于本发明权利要求的保护范围之内。
Claims (8)
1.基于Hive的并行执行任务方法,其特征在于,包括以下步骤:
步骤1、运行Hive脚本,所述Hive脚本中具有多条代码段;
步骤2、判断所述Hive脚本中存在启动执行命令还是模拟执行命令,若为启动执行命令,则对步骤3至步骤5进行启动执行;若为模拟执行命令,则对步骤3至步骤5进行模拟执行,并生成执行结果;
步骤3、识别出流程控制标签的顺序标记,所述流程控制标签位于所述Hive脚本中,并且每一个流程控制标签与对应的一代码段关联;
步骤4、将所有顺序标记进行比对,以得到代码段的执行顺序;
步骤5、根据所述执行顺序执行代码段,其中,对顺序标记相同的代码段进行并行执行。
2.如权利要求1所述的基于Hive的并行执行任务方法,其特征在于,步骤5之后还有以下步骤:
对每条代码段进行唯一标识,并将每条代码段的执行进度于一显示界面上进行显示,其中,所述唯一标识至少包括所述Hive脚本的脚本名称、与顺序标记对应的顺序号以及与顺序标记对应的代码段的子任务标识。
3.如权利要求2所述的基于Hive的并行执行任务方法,其特征在于,所述显示界面为Hadoop的jobTracker显示页面。
4.如权利要求1所述的基于Hive的并行执行任务方法,其特征在于,所述代码段包括至少一SQL语句。
5.基于Hive的并行执行任务装置,其特征在于,包括以下模块:
运行模块,用于运行Hive脚本,所述Hive脚本中具有多条代码段;
判断模块,判断所述Hive脚本中存在启动执行命令还是模拟执行命令,若为启动执行命令,则对识别模块至执行模块进行启动执行;若为模拟执行命令,则对识别模块至执行模块进行模拟执行,并生成执行结果;
识别模块,用于识别出流程控制标签的顺序标记,所述流程控制标签位于所述Hive脚本中,并且每一个流程控制标签与对应的一代码段关联;
比对模块,用于将所有顺序标记进行比对,以得到代码段的执行顺序;
执行模块,用于根据所述执行顺序执行代码段,其中,对顺序标记相同的代码段进行并行执行。
6.如权利要求5所述的基于Hive的并行执行任务装置,其特征在于,执行模块之后还有显示模块:
对每条代码段进行唯一标识,并将每条代码段的执行进度于一显示界面上进行显示,其中,所述唯一标识至少包括所述Hive脚本的脚本名称、与顺序标记对应的顺序号以及与顺序标记对应的代码段的子任务标识。
7.如权利要求6所述的基于Hive的并行执行任务装置,其特征在于,所述显示界面为Hadoop的jobTracker显示页面。
8.如权利要求5所述的基于Hive的并行执行任务装置,其特征在于,所述代码段包括至少一SQL语句。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410182326.0A CN103942099B (zh) | 2014-04-30 | 2014-04-30 | 基于Hive的并行执行任务方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410182326.0A CN103942099B (zh) | 2014-04-30 | 2014-04-30 | 基于Hive的并行执行任务方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103942099A CN103942099A (zh) | 2014-07-23 |
CN103942099B true CN103942099B (zh) | 2017-11-28 |
Family
ID=51189774
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410182326.0A Active CN103942099B (zh) | 2014-04-30 | 2014-04-30 | 基于Hive的并行执行任务方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103942099B (zh) |
Families Citing this family (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104731900A (zh) * | 2015-03-19 | 2015-06-24 | 浪潮集团有限公司 | 一种Hive调度方法及装置 |
CN104850638B (zh) * | 2015-05-25 | 2018-10-19 | 广东精点数据科技股份有限公司 | Etl过程并行决策方法及装置 |
CN106569783B (zh) * | 2015-10-08 | 2021-05-28 | 腾讯科技(深圳)有限公司 | 一种执行任务脚本的方法和装置 |
CN105701624A (zh) * | 2016-02-26 | 2016-06-22 | 广州品唯软件有限公司 | 一种任务处理方法及装置 |
CN105847036B (zh) * | 2016-03-17 | 2018-11-13 | 烽火通信科技股份有限公司 | 命令预执行的系统及方法 |
CN105843899B (zh) * | 2016-03-23 | 2017-07-18 | 炫彩互动网络科技有限公司 | 一种可简化编程的大数据自动化解析方法及系统 |
CN106713504B (zh) * | 2017-02-17 | 2018-01-16 | 平安科技(深圳)有限公司 | 任务处理方法和系统 |
US11372633B2 (en) | 2018-01-04 | 2022-06-28 | Shenzhen Tinysoft Co., Ltd. | Method, device and terminal apparatus for code execution and computer readable storage medium |
CN108334408B (zh) * | 2018-01-04 | 2020-10-02 | 深圳市天软科技开发有限公司 | 代码执行方法、装置、终端设备及计算机可读存储介质 |
CN113138810A (zh) * | 2021-04-23 | 2021-07-20 | 上海中通吉网络技术有限公司 | 一种计算HiveSql执行进度的方法 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7047232B1 (en) * | 1999-01-13 | 2006-05-16 | Ab Initio Software Corporation | Parallelizing applications of script-driven tools |
CN102103519A (zh) * | 2009-12-21 | 2011-06-22 | 同济大学 | 一种基于脚本的Web服务执行优化方法 |
CN103425762A (zh) * | 2013-08-05 | 2013-12-04 | 南京邮电大学 | 基于Hadoop平台的电信运营商海量数据处理方法 |
CN103729453A (zh) * | 2014-01-02 | 2014-04-16 | 浪潮电子信息产业股份有限公司 | 一种HBase表联合查询优化的方法 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8893144B2 (en) * | 2011-05-16 | 2014-11-18 | Sap Se | Systems and methods for parallel execution of a portion of a script by interpreting comments in the script as parallel control statements |
-
2014
- 2014-04-30 CN CN201410182326.0A patent/CN103942099B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7047232B1 (en) * | 1999-01-13 | 2006-05-16 | Ab Initio Software Corporation | Parallelizing applications of script-driven tools |
CN102103519A (zh) * | 2009-12-21 | 2011-06-22 | 同济大学 | 一种基于脚本的Web服务执行优化方法 |
CN103425762A (zh) * | 2013-08-05 | 2013-12-04 | 南京邮电大学 | 基于Hadoop平台的电信运营商海量数据处理方法 |
CN103729453A (zh) * | 2014-01-02 | 2014-04-16 | 浪潮电子信息产业股份有限公司 | 一种HBase表联合查询优化的方法 |
Also Published As
Publication number | Publication date |
---|---|
CN103942099A (zh) | 2014-07-23 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103942099B (zh) | 基于Hive的并行执行任务方法及装置 | |
Gorelick et al. | High Performance Python: Practical Performant Programming for Humans | |
Van Eyk et al. | The SPEC-RG reference architecture for FaaS: From microservices and containers to serverless platforms | |
CN104520814B (zh) | 用于配置云计算系统的系统和方法 | |
Mey et al. | Score-P: A unified performance measurement system for petascale applications | |
CN109992407B (zh) | 一种yarn集群gpu资源调度方法、装置和介质 | |
CN112199086B (zh) | 自动编程控制系统、方法、装置、电子设备及存储介质 | |
CN110968509B (zh) | 一种批量化自定义变量的方法和系统 | |
Rogers et al. | GALEN ten years on: Tasks and supporting tools | |
Yang et al. | DevOps in practice for education management information system at ECNU | |
CN111813661A (zh) | 一种全局业务数据驱动自动测试方法、装置、设备和介质 | |
CN108427709B (zh) | 一种多源海量数据处理系统及方法 | |
US20160239275A1 (en) | Generating an integrated service | |
CN114168565B (zh) | 业务规则模型的回溯测试方法、装置、系统及决策引擎 | |
CN112016256B (zh) | 一种集成电路开发平台、方法、存储介质及设备 | |
US11586847B1 (en) | Experiment management service | |
CN105573763A (zh) | 一种支持rtos的嵌入式系统建模方法 | |
CN114385155A (zh) | vue项目可视化工具生成方法、装置、设备及存储介质 | |
CN112130962B (zh) | 持续交付平台及利用持续交付平台部署应用系统的方法 | |
Purba et al. | Design and implementation of web-based church information systems (Case study: HKBP Kebon Jeruk) | |
CN108153678A (zh) | 一种测试任务处理方法及装置 | |
Bader et al. | Novel Approaches Toward Scalable Composable Workflows in Hyper-Heterogeneous Computing Environments | |
Khaitan et al. | Parallelizing power system contingency analysis using D programming language | |
Singh et al. | Evaluating scientific workflow engines for data and compute intensive discoveries | |
CN106155895A (zh) | 脚本数据处理方法及装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
TR01 | Transfer of patent right |
Effective date of registration: 20180416 Address after: 510000 Guangzhou City, Guangzhou, Guangdong, Fangcun Avenue, one of the 314 self compiled Patentee after: Guangzhou Pinwei Software Co., Ltd. Address before: 510370, No. 314, Fangcun Road, Liwan District, Guangdong, Guangzhou two Patentee before: GUANGZHOU VIP NETWORK TECHNOLOGY CO., LTD. |
|
TR01 | Transfer of patent right |