大数据(五十一)Oozie【Oozie介绍 & CDH安装Oozie】

一、什么是Oozie
    • Oozie是用于 Hadoop 平台的开源的工作流调度引擎。
    • 用来管理Hadoop作业。
    • 属于web应用程序,由Oozie client和Oozie Server两个组件构成。
    • Oozie Server运行于Java Servlet容器(Tomcat)中的web程序。

二、Oozie作用
    – 统一调度hadoop系统中常见的mr任务启动、hdfs操作、shell调度、hive操作等
    – 使得复杂的依赖关系、时间触发、事件触发使用xml语言进行表达,开发效率提高
    – 一组任务使用一个DAG来表示,使用图形表达流程逻辑更加清晰
    – 支持很多种任务调度,能完成大部分hadoop任务处理
    – 程序定义支持EL常量和函数,表达更加丰富

三、Oozie架构

大数据(五十一)Oozie【Oozie介绍 & CDH安装Oozie】_第1张图片

四、CDH安装Zozie

         1、直接添加服务。

         2、

               – 解压ext-2.2到/var/lib/oozie目录下
               – Oozie服务中配置启用web控制台
               – 保存,重启oozie服务

五、web管理地址
               – http://oozie_host_ip:11000/oozie/
六、 oozie管理
               – 任务列表查看
               – 任务状态查看

大数据(五十一)Oozie【Oozie介绍 & CDH安装Oozie】_第2张图片

               – 流程返回信息
               – 节点信息查看
               – 流程图信息
               – 日志查看
               – 系统信息查看和配置

七、Oozie CLI 命令
        • 启动任务:
                – oozie job -oozie http://ip:11000/oozie/ -config job.properties –run
        • 停止任务:
                – oozie job -oozie http://ip:11000/oozie/ -kill 0000002-150713234209387-oozie-oozi-W
        • 提交任务:
                – oozie job -oozie http://ip:11000/oozie/ -config job.properties –submit
        • 开始任务:
                – oozie job -oozie http://ip:11000/oozie/ -config job.properties –start 0000003-150713234209387-oozie-oozi-W
        • 查看任务执行情况:
                – oozie job -oozie http://ip:11000/oozie/ -config job.properties –info 0000003-150713234209387-oozie-oozi-W

八、Oozie实例---创建任务

        1、在任意一台主机上创建并进入目录/home/zjt/oozieJob/test01/

        2、创建job.properties和workflow.xml,内容分别如下

job.properties:

nameNode=hdfs://node1:8020
jobTracker=node1:8032
queueName=default
examplesRoot=examples


oozie.wf.application.path=${nameNode}/user/${user.name}/workflow/shell

workflow.xml:


    
    
       
            ${jobTracker}
            ${nameNode}
            
                
                    mapred.job.queue.name
                    ${queueName}
                
            
            echo
            hi shell in oozie
        
        
        
    
    
        Map/Reduce failed, error message[${wf:errorMessage(wf:lastErrorNode())}]
    
    

        3、执行命令准备

        我们能看到job.properties配置了几个参数,参数含义如下

                nameNode hdfs地址
                jobTracke jobTracker地址
                queueName oozie队列(default)
                examplesRoot 全局目录(examples)

                oozie.wf.appication.path oozie流程所在hdfs地址(workflow.xml)

        因此需要创建oozie.wf.appication.path中描述的目录,并且将workflow.xml上传上去

        4、执行命令

                oozie job -oozie http://node3:11000/oozie/ -config job.properties -run

                出现下图所示结果表示执行成功:

                

        5、前往Oozie界面查看任务

 九、Oozie Job Properties - Job配置 job.properties

大数据(五十一)Oozie【Oozie介绍 & CDH安装Oozie】_第3张图片

十、Oozie workflow - WorkFlow配置 workflow.xml

        • 1、版本信息
                –
        • 2、EL函数
                – 基本的EL函数
                        • String firstNotNull(String value1, String value2)
                        • String concat(String s1, String s2)
                        • String replaceAll(String src, String regex, String replacement)
                        • String appendAll(String src, String append, String delimeter)
                        • String trim(String s)
                        • String urlEncode(String s)
                        • String timestamp()
                        • String toJsonStr(Map) (since Oozie 3.3)
                        • String toPropertiesStr(Map) (since Oozie 3.3)
                        • String toConfigurationStr(Map) (since Oozie 3.3)

                – WorkFlow EL
                        • String wf:id() – 返回当前workflow作业ID
                        • String wf:name() – 返回当前workflow作业NAME
                        • String wf:appPath() – 返回当前workflow的路径
                        • String wf:conf(String name) – 获取当前workflow的完整配置信息
                        • String wf:user() – 返回启动当前job的用户
                        • String wf:callback(String stateVar) – 返回结点的回调URL,其中参数为动作指定的退出状态
                        • int wf:run() – 返回workflow的运行编号,正常状态为0
                        • Map wf:actionData(String node) – 返回当前节点完成时输出的信息
                        • int wf:actionExternalStatus(String node) – 返回当前节点的状态
                        • String wf:lastErrorNode() – 返回最后一个ERROR状态推出的节点名称
                        • String wf:errorCode(String node) – 返回指定节点执行job的错误码,没有则返回空
                        • String wf:errorMessage(String message) – 返回执行节点执行job的错误信息,没有则返回空
                – HDFS EL
                        • boolean fs:exists(String path)
                        • boolean fs:isDir(String path)
                        • long fs:dirSize(String path) – 目录则返回目录下所有文件字节数;否则返回-1
                        • long fs:fileSize(String path) – 文件则返回文件字节数;否则返回-1
                        • long fs:blockSize(String path) – 文件则返回文件块的字节数;否则返回-1

        • 3、节点

                – A、流程控制节点
                                • start – 定义workflow开始
                                • end – 定义workflow结束
                                • decision – 实现switch功能
                                • sub-workflow – 调用子workflow
                                • kill – 杀死workflow
                                • fork – 并发执行workflow
                                • join – 并发执行结束(与fork一起使用)
                – B、动作节点
                                • shell
                                • java
                                • fs
                                • MR
                                • hive
                                • sqoop

十一、节点解释

1、Shell节点

        Shell节点---job.properties

nameNode=hdfs://node1:8020
jobTracker=node1:8032
queueName=default
examplesRoot=examples
oozie.wf.application.path=${nameNode}/user/workflow/oozie/shell

        Shell节点 --workflow.xml  





${jobTracker}
${nameNode}


mapred.job.queue.name
${queueName}


echo
hi shell in oozie





Map/Reduce failed, error message[${wf:errorMessage(wf:lastErrorNode())}]


2、Impala节点

2.1 将job.properties上传至服务器/home/zjt/oozieJob/test02-impalasql中

      将workflow.xml上传至hdfs的/user/root/workflow/impala/中

        调用impala---job.properties

nameNode=hdfs://node1:8020
jobTracker=node1:8032
queueName=default
examplesRoot=examples
oozie.usr.system.libpath=true
oozie.libpath=${namenode}/user/${user.name}/workflow/impala/lib


oozie.wf.application.path=${nameNode}/user/${user.name}/workflow/impala

        调用impala --workflow.xml


    
    
        
            ${jobTracker}
            ${nameNode}
            
                
                    mapred.job.queue.name
                    ${queueName}
                
            
            impala-shell
            -i
            node2
            -f
            shell/impala.sql
            
        
        
        
    
    
        error message[${wf:errorMessage(wf:actionData('shell-node')["impala"]) eq 'Hello Oozie'}]
    
    

2.2 前往/opt/cloudera/parcels/CDH/jars中获取impala需要的jar包

大数据(五十一)Oozie【Oozie介绍 & CDH安装Oozie】_第4张图片

 将这些jar包上传至job.properties配置的oozie.libpath中

2.3 执行下方命令创建shell目录

hadoop fs -mkdir /user/root/workflow/impala/lib/shell/

2.4 将impala.sql文件上传至/user/root/workflow/impala/lib/shell/中,impala.sql内容如下

drop table if exist page_view_02;
create table page_view_02 (page_url string, ip string);
insert into table page_view_02 select page_url, ip from page_view;

2.5、执行命令

                cd /home/zjt/oozieJob/test02-impalasql

                oozie job -oozie http://node3:11000/oozie/ -config job.properties -run

                出现下图所示结果表示执行成功:

你可能感兴趣的:(集群,全文检索,大数据(Hadoop))