068 Oozie任务调度框架
一:概述
1.大数据协作框架
  
2.Hadoop的任务调度
这个是常见的任务调度框架。
  
3.azkaban
  
4..Oozie的三大功能
Oozie Workflow jobs :工作流任务,可以生成DAG图
Oozie Coordinator jobs:可以定时调度
Oozie Bundle:多个coordinator的集合,或者多个workflow的集合
  
5.Oozie的架构
控制流节点
起始,分支,并发,汇合,结束
动作节点action
执行的job。例如,mapreduce action,hive action ,shell action
  
6.Oozie的结构实现
oozie server:可以实现界面化,同时,监控hadoop。
  
7.oozie的细节架构
  
二:安装部署
1.上传
官网的说法:
在quick start中。
  
上传:
  
2.解压
  
3.配置Hadoop代理core-site.xml
官网:
  
配置:
  
4.启动Hadoop集群
5.解压hadooplib
官网说法:
    
将会生成:oozie-4.0.0-cdh5.3.6
   
6.生成
进入oozie-4.0.0-cdh5.3.6,果然发现有官网说说的hadooplibs。
  
7.创建libext文件
官网上的说法:
  
操作:
  
8.拷贝hadooplib的jar包到libext中
只拷贝jar。
  
9.拷贝js包到libext中
js的作用:
  
操作:
  
10.创建sharelib库:
HDFS,用于运行所有job的依赖
官网上的步骤:
  
命令:
bin/oozie-setup.sh sharelib create -fs hdfs://hadoop-senior02.ibeifeng.com:8020 -locallib oozie-sharelib-4.0.0-cdh5.3.6-yarn.tar.gz
  
HDFS::
  
11.打包
bin/oozie-setup.sh prepare-war
  
12.初始化数据库
  
  
13.启动
多了一个Bootstrap进程。
  
回来补充截图:
  
14.web端窗口
端口:11000
  
三:运行官网的任务流
1.官网
  
2.解压家目录下的oozie-examples.tar.gz
官网的设置:
  
解压:
tar -zxvf oozie-examples.tar.gz
将会生成examples
3.进入examples,找到将要运行的mapreduce项目
job.properties:mapreduce运行需要的配置项,指定workflow的地址,申明相关变量
workflow.xml:实际运行的workflow
  
4.修改job.properties配置项
注意的是:jobTracker是hadoop1的,现在使用的是resourcemanager,内部端口是8032.
oozie.wf.application.path的路径是HDFS上的路径,指定了workflow的地址。
  
位置:
  
5.修改oozie.site文件、
因为在找包的时候,会找本地的配置环境。
*=不能删除。
  
6.启动hadoop,并上传在家目录下examples项目
bin/hdfs dfs -put /etc/opt/cdh-5.3.6/oozie-4.0.0-cdh5.3.6/examples examples
  
7.启动
bin/oozie job -oozie http://linux-hadoop3.ibeifeng.com:11000/oozie -config examples/apps/map-reduce/job.properties -run
注意点:需要启动yarn。
  
启动了两个mapreduce任务。
  
8.总结
-》bin/oozie job -oozie http://hadoop-senior02.ibeifeng.com:11000/oozie -config examples/apps/map-reduce/job.properties -run
提交任务
  -》oozie读取job.properties
		  -》查找需要运行的wf的地址,将相应变量传递给wf
		  -》读取wf的文件
			    -》start节点
			    -》action节点
			    -》OK-》end
			    -》error-》kill
		  -》程序运行需要读取依赖的jar包
			     lib目录
		  -》全局则需要sharelib的jar包支持
四:自定义wordcount任务流
1.新建目录
在家目录i下新建application,在下面建项目wc-wf(这个直接拷贝mapreduce的文件)
  
2.检测wordcount的jar包是否可以使用
3.HDFS上新建input目录,上传wc.inpu
  
4.上传wc2.jar
目录/etc/opt/datas
5.在yarn上运行
  
6.证明jar包没有问题
  
7.修改job.properties
  
8.修改workflow.xml
关于查找configuration,这个可以去刚刚运行的yarn中的程序,查看19888中的cinfiguration。
因为,这个需要和jar中的配置一样,是mapreduce2.
需要修改:队列的名称,map与reduce的class,map与reduce的输出类型。
这个需要哪些参数,取决于jar中的friver需要的参数。
  
  
9.上传wc2.jar到wc-wf中的lib中
其他的lib可以删除。
  
10.上传到HDFS上运行
bin/hdfs dfs -put /etc/opt/cdh-5.3.6/oozie-4.0.0-cdh5.3.6/applications/ /
11.运行
官网上推荐的运行命令,声明一下环境变量,就可以不使用-oozie参数。
export OOZIE_URL="http://linux-hadoop3.ibeifeng.com:11000/oozie"
bin/oozie job -config applications/wc-wf/job.properties -run
  
12.结果
  
  
五:自定义shell action的workflow
1.拷贝官方的shell,并命名为shell-wf
  
2.修改job.properties
  
3.在shell-wf中新建oozie.sh
  
4.修改workflow.xml
主要是sh文件的绝对路径。
  
5.完成oozie.sh
在oozie中,必须写#!/bin/bash
因为这个sh要在机器上执行。
  
6.上传到HDFS
bin/hdfs dfs -put /etc/opt/cdh-5.3.6/oozie-4.0.0-cdh5.3.6/applications/shell-wf/ /applications
7.运行
bin/oozie job -config applications/shell-wf/job.properties -run
8.结果
  
六:DAG图的设计
1.拷贝wc-wf,并该名为dag-wf
  
2.将shell-wf中 的.sh拷贝到dag-wf中
  
3.修改job.properties
  
4.修改oozie.sh
  
5.修改workflow.xml
  
6.上传
bin/hdfs dfs -put /etc/opt/cdh-5.3.6/oozie-4.0.0-cdh5.3.6/applications/dag-wf/ /applications
7.运行
bin/oozie job -config applications/dag-wf/job.properties -run
8.结果
  
9.HDFS上
  
七:修改linux时区
1.说明
因为,下面的coordinate的会使用。
让时区变成中国的时区。
  
2.查看
默认的是UTC。
  
2.如果不是+0800,则需要重新生成
在linux中删除:
rm -rf /etc/localtime
重新生成,建立软连接:
ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
3.修改时间
  
4.在oozie.site中修改时区
  
5.在js中修改时区
因为web界面上的时间不对应,考虑到当时拷贝的js包。在oozie-server中的webapps中。
  
6.重新启动oozie
八:编写coordinate
》基于时间的任务调度
起始时间
终止时间
频率
》基于数据可用性的调度
文件是否存在
判断数据是否符合标准
》执行顺序
job.properties
coordinator.xml:完成时间的封装,然后指向workflow.xml
1.复制
  
2.修改job.properties
指向两个地址,workflow.xml,coordinator.xml
关于日期的配置,可以参考官网Datetime。
  
3.修改coordinator.xml
下面修改频率。
以及,时区。
  
4.修改oozie.xml
因为,oozie的最小时间是5分钟。
  
5.重启oozie
6.上传到HDFS
bin/hdfs dfs -put /etc/opt/cdh-5.3.6/oozie-4.0.0-cdh5.3.6/applications/cron-wf/ /applications
7.运行
bin/oozie job -config applications/cron-wf/job.properties -run
8.结果
任务的调度特点:包头不包尾。
  
  
九:支持crontab的任务调度
上面的格式不仅支持,linux 的crontab格式也支持。
1.拷贝
  
2.修改job.properties
  
3.修改coordinate
  
4.上传
bin/hdfs dfs -put /etc/opt/cdh-5.3.6/oozie-4.0.0-cdh5.3.6/applications/crontab/ /applications
5.运行
bin/oozie job -config applications/crontab/job.properties -run
6.运行结果
  
  
068 Oozie任务调度框架的更多相关文章
- Oozie任务调度框架详解及使用简介(一)
		
摘要:个人最近一段时间一直在使用oozie,从刚开始的各种别扭到现在越来越觉得有意思的情况下,想整理一下关于oozie的认知,整理出来一个oozie系列,本来市面上关于oozie的资料就比较少,希望写 ...
 - 【niubi-job——一个分布式的任务调度框架】----niubi-job这下更牛逼了!
		
niubi-job迎来第一次重大优化 niubi-job是一款专门针对定时任务所设计的分布式任务调度框架,它可以进行动态发布任务,并且有超高的可用性保证. 有多少人半夜被叫起来查BUG,结果差到最后发 ...
 - 【niubi-job——一个分布式的任务调度框架】----安装教程
		
niubi-job是什么 niubi-job是LZ耗时三个星期,费尽心血打造的一个具备高可靠性以及水平扩展能力的分布式任务调度框架,采用quartz作为底层的任务调度管理器,zookeeper做集群的 ...
 - Quarzt.NET 任务调度框架
		
Quartz.NET是一个开源的作业调度框架,是 OpenSymphony 的 Quartz API 的.NET移植,它用C#写成,可用于winform和asp.net应用中.它提供了巨大的灵活性 ...
 - Quartz.Net任务调度框架
		
Quartz.Net是一个开源的任务调度框架,非常强大,能够通过简单的配置帮助我们定时具体的操作. 相对于我们用的线程里面while(true)然后sleep来执行某个操作,应该算的上是高端,大气,上 ...
 - 开源的.NET任务调度框架-HangFire
		
什么是Hangfire Hangfire 是一个开源的.NET任务调度框架,目前1.6+版本已支持.NET Core.内置提供集成化的控制台,方便后台查看及监控: 另外,Hangfire包含三大核心组 ...
 - .NET Core下开源任务调度框架Hangfire的Api任务拓展(支持秒级任务)
		
HangFire的拓展和使用 看了很多博客,小白第一次写博客. 最近由于之前的任务调度框架总出现问题,因此想寻找一个替代品,之前使用的是Quartz.Net,这个框架方便之处就是支持cron表达式适合 ...
 - 任务调度框架FluentScheduler简介
		
之前我在文章中介绍过.net中的任务调度框架Hangfire,HangFire虽然本身输入比较简单好用的,但是,如果我们的程序本身提供的服务不是任务调度,而任务调度只是里面并不重要的小功能的时候,用H ...
 - 任务调度框架Hangfire 简介
		
任务调度是我们项目中常见的功能,虽然任务调度的功能实现本身并不难,但一个好用的轮子还是可以给我们的开发的效率提升不少的. 在.net环境中,较为有名的任务调度框架是HangFire与Quartz.NE ...
 
随机推荐
- 深度神经网络tricks and tips
			
1)data augmentation (augment 增加,aug:to increase 词根,同August(奥古斯特即凯撒大帝,自认为最伟大的帝王,他出生在八月,他以自己的名字命名这个月)同 ...
 - Linux CentOS 服务器搭建与初始化配置图文详解
			
这几天对服务器兴趣贼为浓厚,在虚拟机上装了一个CentOS7玩了玩,遇到过很多问题,比如网卡驱动设置,不能ping 等等问题,然后掏钱买个ECS搭服务器玩玩,下面就开始谢谢我的心路历程吧. 首先 买服 ...
 - 【BARTS计划】【Tips_Week1】20190331更新
			
BARTS计划 · Review :每周学习至少一个技术技巧. 一.快捷键 1. 快速批量注释代码的方法:选中需要注释的代码,按 ctrl+/ 二.重要命令行命令 1. 新增文件:git add a. ...
 - jQuery中【width(),innerWidth(),outerWidth()】
			
这个问题,已经别扭我多年了,今天终于彻底解决了,拿出来庆贺一下.jquery作为开源项目,无论从思路上,还是从严谨性上,让人崇敬. 随着时间的流逝,jquery的一些功能被逐渐挖掘出来.通过jQuer ...
 - 【vim】删除标记内部的文字 di[标记]
			
当我开始使用 Vim 时,一件我总是想很方便做的事情是如何轻松的删除方括号或圆括号里的内容.转到开始的标记,然后使用下面的语法: di[标记] 比如,把光标放在开始的圆括号上,使用下面的命令来删除圆括 ...
 - 通过全备+主从同步恢复被drop的库或表
			
MySQL 中drop 等高危误操作后恢复方法 实验目的: 本次实验以恢复drop操作为例,使用不同方法进行误操作的数据恢复. 方法: 利用master同步(本文)] 伪master+Binlog+同 ...
 - linux统计某个特定文件名的大小总和【原创】
			
[hch@EAISRVBJ2 log]$find ./ -name "test_chs_00*"|xargs du -ck|grep total|awk 'BEGIN{sum=0} ...
 - Python3学习笔记23-StringIO和BytesIO
			
StringIO 很多时候数据读取不一定是文件,也可以在内存中 StringIO顾名思义就是在内存中读写str 要把str写入StringIO,我们需要先创建一个StringIO,然后像文件一样写入即 ...
 - Android APP—— 开发入门教程
			
一.SDK下载 下载:adt-bundle-windows-x86_64-20140702.zip(20140702 已经是最后版本了) 解压出来如下: 点击Eclipse安装 创建一个新的工作空间安 ...
 - saltstack自动化运维系列12配置管理安装redis-3.2.8
			
一.准备redis自动化配置的文件(即安装一遍redis,然后获取相关文件和配置在salt中执行上线) 1.源码安装redis3.2.8并注册为系统服务 安装依赖yum install -y tcl ...