开发者学堂课程【Oozie 知识精讲与实战演练:Apache Oozie一 实战操作一调度 hive 脚本】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/716/detail/12788
Apache Oozie一 实战操作一调度 hive 脚本
内容介绍
一、Oozie 调度 Hive
二、小记
一、Oozie 调度 Hive
1、准备配置模板,修改配置文件
cd /export/servers/oozie-4.1.0-cdh5.14.0 安装包的根目录下 CD 进来
cp -ra examples/apps/hive2/ oozie_works/ 在目录 examples 下有个 hive up 文件夹,把这个文件夹下的东西拷贝到工作路径下,(不支持老版本)复制完成后看看那些需要修改,cd 到 oozie-works 下的 hive
tota1 24
-rw-r--r--. 1 1106 4001 1046 Jan 2018 job.properties
-rw-r--r--11106 4001 1087 Jan 2018 job.properties.security
rw-r--r--. 11106 4001 681 Jan 2018 README
-rw-r--r--. 11106 4001 966 Jan 2018 script.q
-rw-r--r--11106 4001 2073 Jan 2018 workflow.xm]
-rw-r--r--11106 4001 2481 Jan 72018 workflow.xm1.security
[root@node-1hive2]#
第一个要去调度 hive 脚本,需要去编写 hive script 语句,第二个 job 提交 hdoop相关信息,主要配置一个 job.properties 任务属性信息,第三个就是 workflow 工作的核心产品配置文件
2.修改配置模板
修改 job.properties
cd /export/servers/oozie-4.1.0-cdh5.14.0/oozie_works/hive2
vim job.properties
指定:nameNode=hdfs//node-1:8020
jobTracker=node-1:8032
queueName=default(队列名)
jdbcURL=jdbc:hive2://node-1:10000/default(hive 地址)
通过这个去访问,必须保证 hive 服务是启动正常的。
examplesRoot=oozie works 工作路径。
(1)具体配置
打开 new 1- Notepad++,按照以上代码进行修改,一定要保持一致:
nameNode=hdfs://node-1:9000
jobTracker=node-1:8032
queueName=default
idbcURL=idbc:hive2://node-1:10000/default
examplesRoot=oozie works
oozie.use.system.libpath=true
oozie.wf.application.path=${nameNode}/user/${user.name}/${examplesRoot} hive2
#配置我们文件上传到 hdfs 的保存路径实际上就是在 hdfs的 /user/root/oozieworks/hive2 这个路径下ooziewfapplicationpath=${nameNode}/user/${username}/${examplesRoot}/hive2
多了 app, 把 app 进行删除,正确操作如上,一定要保持一致才可以识别资源路径
修改 workflowxml (实际上无修改),因为示例当中脚本名字叫做 script.q,如果是在企业当中,调度的是其他脚本,要把这个名字做相关的修改。
核心:
,又做了 hive 的执行,删除相关的路径,进行相关的配置,执行脚本,脚本名称叫做 script.q。
编辑 Hlivesql 文件(内容)
使用 vim script.q 做相关操作(上面是注释,可以删除)
DROP TABLE IF EXISTS test; 删除 test 的表。
CREATE EXTERNAL TABLE test(a INT)STORED AS TEXTFILE LOCATION'${INPUT}';创建 test 的表,类型是文本文件,位于 INPUT 路径。
插入:
insert into test values(10);
insert into test values(20);
insert into test values(30);
将插入的复制粘贴,脚本已经搞定,做一个保存
3、把脚本连同配置信息上传调度任务到 hdfs
cd/export/servers/oozie-4.1.0-cdh5.14.0/oozie works hdfs dfs -put hive2/ /user/root/oozie works/
复制,做修改换行,注意格式问题
把 hdfs dfs -put hive2/ /user/root/oozie works/ 进行复制,执行,会发现报错,提示没有这个文件夹,cd.. 返回到文件当中
验证:
会发现多了 hive2,里面有配置的脚本以及一系列
4.执行调度任务
首先确保已经启动 hiveServer2 服务。
来到第一台服务器上验证一下,可以看到并没有 hive 服务
可以使用 export/servers/hive/bin/hiveserver2 命令启动在前台,也可以使用讲义上的方式启动在后台。
因为配置远程的 metastore 存储服务,所以在启动服务之前,首先必须取得metstore 原数据存储服务,启动在后台使用 nohup 命令,再把 nohup /export/servers/hive/bin/hive --service metastore 启动到后台,这样就首先启动了 hive 的原数据存储服务。
再来启动 service 服务,启动 nohup /export/servers/hive/bin/hive --service hiveserver2 &
完成启动 service 服务,使用 jps 验证。
验证方法:随便找一台机器进行 export/servers/hive/bin/beeline 验证,连接地址叫做 connect idbc:hive2:node-1:10000,登录是 root,登录密码是服务器密码。
特别强调,在调度 hive 任务之前,必须保证已经成功启动 hiveServer2 服务。
cd /export/servers/oozie-4.1.0-cdh5.14.0
bin/oozier job o -oozie http://node-1:11000/oozie -config oozie_works/hive2/job.properties -run
复制以上命令,记得换行进行修改,来到根目录下进行执行(如果配置了环境变量可以不用到根目录下),执行成功会发现提交 hive 程序,出现任务编号 8722-W,可以通过 oozieweb 页面进行刷新查看。
并且可以通过 yarn 来追踪看到调度执行的过程。
首先第它启动了一个 have tom 码程序,还要执行数据的插入,首先是 insert into 10是第一个语句,执行第二条插入数据的语句叫做 insert into value 20,这时候发现第一个 m 码程序现在还在 running,因为他后面的 hive 还没有执行结束,必须说 hive 执行结束之后,整个 oozie 才能执行结束,通过这里可以感受到 oozie 底层的执行过程。
验证 hive 表是否创建:
打开刚才的服务器,执行 show tables; 会发现有了相关的表
直接 select*from test 这个表,会发现里面就有内容
以上就完成了 oozie 调度 hive 脚本。
二、小记
oozie 调度 hive 脚本
首先必须保证 hiveserve2 服务是启动正常的,如果配置 metastore 服务,要首先启动 metastore
nohup /export/servers/hive/bin/hive--service metastore&
nohup /export/servers/hive/bin/hive --service hiveserver2 &