摘要:開(kāi)發(fā)指南開(kāi)發(fā)指南開(kāi)發(fā)指南本篇目錄運(yùn)行運(yùn)行定義定義定義工作流,為將多個(gè)按照一定的順序組織起來(lái),按照既定的路徑運(yùn)行的一個(gè)整體。配置將定時(shí)調(diào)度頻率改為分鐘。一個(gè)會(huì)創(chuàng)建并執(zhí)行。例如,,,,則時(shí)間為動(dòng)作的實(shí)際創(chuàng)建時(shí)間。
Oozie定義工作流,為將多個(gè)Hadoop Job按照一定的順序組織起來(lái),按照既定的路徑運(yùn)行的一個(gè)整體。通過(guò)啟動(dòng)工作流,就會(huì)執(zhí)行該工作流中的多個(gè)Hadoop Job,直到完成。這就是工作流的生命周期。
Oozie提出了Coordinator的概念,能夠?qū)⒚總€(gè)工作流的Job作為一個(gè)Action來(lái)運(yùn)行。相當(dāng)于工作流中的一個(gè)執(zhí)行節(jié)點(diǎn)。這樣就能夠?qū)⒍鄠€(gè)工作流Job組織起來(lái),稱為Coordinator Job,并制定觸發(fā)時(shí)間和頻率,還可以配置數(shù)據(jù)集、并發(fā)數(shù)等。一個(gè)Coordinator Job包含了在Job外部設(shè)置執(zhí)行周期和頻率的語(yǔ)義。類似于在工作流外部專家了一個(gè)協(xié)調(diào)器來(lái)管理這些工作流的工作流Job的運(yùn)行。
如果在集群安裝了Hue,也可以通過(guò)頁(yè)面操作配置工作流,具體操作步驟點(diǎn)此查看。以下介紹通過(guò)后臺(tái)配置工作流的方法:
先看一下官方發(fā)行包自帶的一個(gè)簡(jiǎn)單例子 oozie/examples/src/main/apps/cron。它能夠?qū)崿F(xiàn)定時(shí)調(diào)度一個(gè)工作流Job運(yùn)行,這個(gè)例子中給出的一個(gè)空的工作流Job,也是為了演示能夠使用Coordinator系統(tǒng)給調(diào)度起來(lái)。
點(diǎn)擊下載oozie-example.tar.gz
這個(gè)例子有3個(gè)配置文件。修改后分別如下所示:
job.properties配置nameNode=hdfs://uhadoop-XXXXXX-master1:8020
jobTracker=uhadoop-XXXXXX-master1:23140
queueName=default
examplesRoot=examples
oozie.coord.application.path=${nameNode}/user/${user.name}/${examplesRoot}/apps/cron
start=2016-12-01T19:00Z
end=2016-12-31T01:00Z
workflowAppUri=${nameNode}/user/${user.name}/${examplesRoot}/apps/cron
修改了Hadoop集群的配置,以及調(diào)度起止時(shí)間范圍。
wordflow.xml<workflow-app xmlns="uri:oozie:workflow:0.5" name="one-op-wf">
<start to="action1"/>
<action name="action1">
<fs/>
<ok to="end"/>
<error to="end"/>
action>
<end name="end"/>
workflow-app>
這是一個(gè)空J(rèn)ob,沒(méi)做任何修改。
corrdinator.xml配置<coordinator-app name="cron-coord" frequency="${coord:minutes(2)}" start="${start}" end="${end}" timezone="UTC" xmlns="uri:oozie:coordinator:0.2">
<action>
<workflow>
<app-path>${workflowAppUri}app-path>
<configuration>
<property>
<name>jobTrackername>
<value>${jobTracker}value>
property>
<property>
<name>nameNodename>
<value>${nameNode}value>
property>
<property>
<name>queueNamename>
<value>${queueName}value>
property>
configuration>
workflow>
action>
coordinator-app>
將定時(shí)調(diào)度頻率改為2分鐘。然后,將這3個(gè)文件上傳到HDFS上。
啟動(dòng)一個(gè)Coordinator Job和啟動(dòng)一個(gè)Oozie工作流Job類似,執(zhí)行如下命令即可:
bin/oozie job -oozie http://uhadoop-XXXXXX-master2:11000/oozie -config /home/hadoop/oozie/examples/src/main/apps/cron/job.properties -run
運(yùn)行上面命令,在控制臺(tái)上會(huì)返回這個(gè)Job的ID,我們也可以通過(guò)Oozie的Web控制臺(tái)來(lái)查看。
一個(gè)Coordinator Job會(huì)創(chuàng)建并執(zhí)行Coordinator Action。通常一個(gè)Coordinator Action是一個(gè)工作流Job,這個(gè)工作流Job會(huì)生成一個(gè)dataset實(shí)例并處理這個(gè)數(shù)據(jù)集。當(dāng)一個(gè)Coordinator Action被創(chuàng)建以后,它會(huì)一直等待滿足執(zhí)行條件的所有輸入事件的完成然后執(zhí)行,或者發(fā)生超時(shí)。
每個(gè)Coordinator Job都有一個(gè)驅(qū)動(dòng)事件,來(lái)決定它所包含的Coordinator Action的初始化。對(duì)于同步Coordinator Job來(lái)說(shuō),觸發(fā)執(zhí)行頻率就是一個(gè)驅(qū)動(dòng)事件。同樣,組成Coordinator Job的基本單元是Coordinator Action,它不像Oozie工作流Job只有OK和Error兩個(gè)執(zhí)行結(jié)果,一個(gè)Coordinator 動(dòng)作的狀態(tài)集合,如下所示:
WAITING
READY
SUBMITTED
TIMEDOUT
RUNNING
KILLED
SUCCEEDED
FAILED
Coordinator Application當(dāng)滿足一定條件時(shí),會(huì)觸發(fā)Oozie工作流。其中,觸發(fā)條件可以是一個(gè)時(shí)間頻率、一個(gè)dataset實(shí)例是否可用,或者可能是外部的其他事件。 Coordinator Job是一個(gè)Coordinator應(yīng)用的運(yùn)行實(shí)例,這個(gè)Coordinator Job是在Oozie提供的Coordinator引擎上運(yùn)行的,并且這個(gè)實(shí)例從指定的時(shí)間開(kāi)始,直到運(yùn)行結(jié)束。一個(gè)Coordinator Job具有以下幾個(gè)狀態(tài):
PREP
RUNNING
RUNNINGWITHERROR
PREPSUSPENDED
SUSPENDED
SUSPENDEDWITHERROR
PREPPAUSED
PAUSED
PAUSEDWITHERROR
SUCCEEDED
DONEWITHERROR
KILLED
FAILED
Coordinator Job的狀態(tài)比一個(gè)基本的Oozie工作流Job的狀態(tài)要復(fù)雜的多。因?yàn)镃oordinator Job的基本執(zhí)行單元可能是一個(gè)基本Oozie Job,而且外加了一些調(diào)度信息,必然要增加額外的狀態(tài)來(lái)描述。
一個(gè)同步的Coordinator Appliction定義的語(yǔ)法格式,如下所示:
<coordinator-app name="[NAME]" frequency="[FREQUENCY]" start="[DATETIME]" end="[DATETIME]" timezone="[TIMEZONE]" xmlns="uri:oozie:coordinator:0.1">
<controls>
<timeout>[TIME_PERIOD]timeout>
<concurrency>[CONCURRENCY]concurrency>
<execution>[EXECUTION_STRATEGY]execution>
controls>
<datasets>
<include>[SHARED_DATASETS]include>
...
<dataset name="[NAME]" frequency="[FREQUENCY]" initial-instance="[DATETIME]" timezone="[TIMEZONE]">
<uri-template>[URI_TEMPLATE]uri-template>
dataset>
...
datasets>
<input-events>
<data-in name="[NAME]" dataset="[DATASET]">
<instance>[INSTANCE]instance>
...
data-in>
...
<data-in name="[NAME]" dataset="[DATASET]">
<start-instance>[INSTANCE]start-instance>
<end-instance>[INSTANCE]end-instance>
data-in>
...
input-events>
<output-events>
<data-out name="[NAME]" dataset="[DATASET]">
<instance>[INSTANCE]instance>
data-out>
...
output-events>
<action>
<workflow>
<app-path>[WF-APPLICATION-PATH]app-path>
<configuration>
<property>
<name>[PROPERTY-NAME]name>
<value>[PROPERTY-VALUE]value>
property>
...
configuration>
workflow>
action>
coordinator-app>
基于上述定義語(yǔ)法格式,我們分別說(shuō)明對(duì)應(yīng)元素的含義,如下所示:
control元素 元素名稱含義說(shuō)明timeout超時(shí)時(shí)間,單位為分鐘。當(dāng)一個(gè)CoordinatorJob啟動(dòng)的時(shí)候,會(huì)初始化多個(gè)Coordinator動(dòng)作,timeout用來(lái)限制這個(gè)初始化過(guò)程。默認(rèn)值為-1,表示永遠(yuǎn)不超時(shí),如果為0則總是超時(shí)。concurrency并發(fā)數(shù),指多個(gè)CoordinatorJob并發(fā)執(zhí)行,默認(rèn)值為1。execution配置多個(gè)CoordinatorJob并發(fā)執(zhí)行的策略:默認(rèn)是FIFO。另外還有兩種:LIFO(最新的先執(zhí)行)、LAST_ONLY(只執(zhí)行最新的CoordinatorJob,其它的全部丟棄)。throttle一個(gè)CoordinatorJob初始化時(shí),允許Coordinator動(dòng)作處于WAITING狀態(tài)的最大數(shù)量。 dataset元素Coordinator Job中有一個(gè)Dataset的概念,它可以為實(shí)際計(jì)算提供計(jì)算的數(shù)據(jù),主要是指HDFS上的數(shù)據(jù)目錄或文件,能夠配置數(shù)據(jù)集生成的頻率(Frequency)、URI模板、時(shí)間等信息,下面看一下dataset的語(yǔ)法格式:
<dataset name="[NAME]" frequency="[FREQUENCY]" initial-instance="[DATETIME]" timezone="[TIMEZONE]">
<uri-template>[URI TEMPLATE]uri-template>
<done-flag>[FILE NAME]done-flag>
dataset>
舉例如下:
<dataset name="stats_hive_table" frequency="${coord:days(1)}" initial-instance="2016-12-25T00:00Z" timezone="America/Los_Angeles">
<uri-template>
hdfs://m1:9000/hive/warehouse/user_events/${YEAR}${MONTH}/${DAY}/data
uri-template>
<done-flag>donefile.flagdone-flag>
dataset>
上面會(huì)每天都會(huì)生成一個(gè)用戶事件表,可以供Hive查詢分析,這里指定了這個(gè)數(shù)據(jù)集的位置,后續(xù)計(jì)算會(huì)使用這部分?jǐn)?shù)據(jù)。其中,uri-template指定了一個(gè)匹配的模板,滿足這個(gè)模板的路徑都會(huì)被作為計(jì)算的基礎(chǔ)數(shù)據(jù)。 另外,還有一種定義dataset集合的方式,將多個(gè)dataset合并成一個(gè)組來(lái)定義,語(yǔ)法格式如下所示:
<datasets>
<include>[SHARED_DATASETS]include>
...
<dataset name="[NAME]" frequency="[FREQUENCY]" initial-instance="[DATETIME]" timezone="[TIMEZONE]">
<uri-template>[URI TEMPLATE]uri-template>
dataset>
...
datasets>
input-events和output-events元素一個(gè)Coordinator Application的輸入事件指定了要執(zhí)行一個(gè)Coordinator動(dòng)作必須滿足的輸入條件,在Oozie當(dāng)前版本,只支持使用dataset實(shí)例。
一個(gè)Coordinator Action可能會(huì)生成一個(gè)或多個(gè)dataset實(shí)例,在Oozie當(dāng)前版本,輸出事件只支持輸出dataset實(shí)例。
常量表示形式含義說(shuō)明${coord:minutes(intn)}返回日期時(shí)間:從一開(kāi)始,周期執(zhí)行n分鐘${coord:hours(intn)}返回日期時(shí)間:從一開(kāi)始,周期執(zhí)行n*60分鐘${coord:days(intn)}返回日期時(shí)間:從一開(kāi)始,周期執(zhí)行n*24*60分鐘${coord:months(intn)}返回日期時(shí)間:從一開(kāi)始,周期執(zhí)行n*M*24*60分鐘(M表示一個(gè)月的天數(shù))${coord:endOfDays(intn)}返回日期時(shí)間:從當(dāng)天的最晚時(shí)間(即下一天)開(kāi)始,周期執(zhí)行n*24*60分鐘${coord:endOfMonths(1)}返回日期時(shí)間:從當(dāng)月的最晚時(shí)間開(kāi)始(即下個(gè)月初),周期執(zhí)行n*24*60分鐘${coord:current(intn)}返回日期時(shí)間:從一個(gè)Coordinator動(dòng)作(Action)創(chuàng)建時(shí)開(kāi)始計(jì)算,第n個(gè)dataset實(shí)例執(zhí)行時(shí)間${coord:dataIn(Stringname)}在輸入事件(input-events)中,解析dataset實(shí)例包含的所有的URI${coord:dataOut(Stringname)}在輸出事件(output-events)中,解析dataset實(shí)例包含的所有的URI${coord:offset(intn,StringtimeUnit)}表示時(shí)間偏移,如果一個(gè)Coordinator動(dòng)作創(chuàng)建時(shí)間為T(mén),n為正數(shù)表示向時(shí)刻T之后偏移,n為負(fù)數(shù)向向時(shí)刻T之前偏移,timeUnit表示時(shí)間單位(選項(xiàng)有MINUTE、HOUR、DAY、MONTH、YEAR)${coord:hoursInDay(intn)}指定的第n天的小時(shí)數(shù),n>0表示向后數(shù)第n天的小時(shí)數(shù),n=0表示當(dāng)天小時(shí)數(shù),n<0表示向前數(shù)第n天的小時(shí)數(shù)${coord:daysInMonth(intn)}指定的第n個(gè)月的天數(shù),n>0表示向后數(shù)第n個(gè)月的天數(shù),n=0表示當(dāng)月的天數(shù),n<0表示向前數(shù)第n個(gè)月的天數(shù)${coord:tzOffset()}dataset對(duì)應(yīng)的時(shí)區(qū)與CoordinatorJob的時(shí)區(qū)所差的分鐘數(shù)${coord:latest(intn)}最近以來(lái),當(dāng)前可以用的第n個(gè)dataset實(shí)例${coord:future(intn,intlimit)}當(dāng)前時(shí)間之后的dataset實(shí)例,n>=0,當(dāng)n=0時(shí)表示立即可用的dataset實(shí)例,limit表示dataset實(shí)例的個(gè)數(shù)${coord:nominalTime()}nominal時(shí)間等于CoordinatorJob啟動(dòng)時(shí)間,加上多個(gè)CoordinatorJob的頻率所得到的日期時(shí)間。例如:start=”2009-01-01T24:00Z”,end=”2009-12-31T24:00Z”,frequency=”${coord:days(1)}”,frequency=”${coord:days(1)},則nominal時(shí)間為:2009-01-02T00:00Z、2009-01-03T00:00Z、2009-01-04T00:00Z、…、2010-01-01T00:00Z${coord:actualTime()}Coordinator動(dòng)作的實(shí)際創(chuàng)建時(shí)間。例如:start=”2011-05-01T24:00Z”,end=”2011-12-31T24:00Z”,frequency=”${coord:days(1)}”,則實(shí)際時(shí)間為:2011-05-01,2011-05-02,2011-05-03,…,2011-12-31${coord:user()}啟動(dòng)當(dāng)前CoordinatorJob的用戶名稱${coord:dateOffset(StringbaseDate,intinstance,StringtimeUnit)}計(jì)算新的日期時(shí)間的公式:newDate=baseDate+instance*timeUnit,如:baseDate=’2009-01-01T00:00Z’,instance=’2′,timeUnit=’MONTH’,則計(jì)算得到的新的日期時(shí)間為’2009-03-01T00:00Z’。${coord:formatTime(StringtimeStamp,Stringformat)}格式化時(shí)間字符串,format指定模式。文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://m.specialneedsforspecialkids.com/yun/126871.html
摘要:創(chuàng)建任務(wù)創(chuàng)建任務(wù)選擇這個(gè)標(biāo)簽拖動(dòng)到中。頁(yè)面權(quán)限控制頁(yè)面權(quán)限控制頁(yè)面權(quán)限控制點(diǎn)擊管理用戶組選擇要修改的組名稱,設(shè)置相應(yīng)權(quán)限并保存 Hue開(kāi)發(fā)指南本篇目錄1. 配置工作流2. Hue頁(yè)面權(quán)限控制Hue是面向 Hadoop 的開(kāi)源用戶界面,可以讓您更輕松地運(yùn)行和開(kāi)發(fā) Hive 查詢、管理 HDFS 中的文件、運(yùn)行和開(kāi)發(fā) Pig 腳本以及管理表。服務(wù)默認(rèn)已經(jīng)啟動(dòng),用戶只需要配置外網(wǎng)IP,在防火墻中配...
摘要:也可以將托管集群設(shè)置為快捷方式,通過(guò)左側(cè)快捷方式菜單欄點(diǎn)擊進(jìn)入。框架集群中僅部署。用于做存儲(chǔ)集群,有專屬的節(jié)點(diǎn)機(jī)型。節(jié)點(diǎn)管理節(jié)點(diǎn),負(fù)責(zé)協(xié)調(diào)整個(gè)集群服務(wù)。目前僅節(jié)點(diǎn)支持綁定。通過(guò)云主機(jī)內(nèi)網(wǎng)進(jìn)行登錄。登錄密碼為集群創(chuàng)建時(shí)設(shè)置的密碼。 快速上手本篇目錄創(chuàng)建集群提交任務(wù)本文檔將帶領(lǐng)您如何創(chuàng)建UHadoop集群,并使用UHadoop集群完成數(shù)據(jù)處理任務(wù)。創(chuàng)建集群本章簡(jiǎn)單介紹了用戶使用UHadoop服務(wù)...
摘要:架構(gòu)架構(gòu)元數(shù)據(jù)管理元數(shù)據(jù)管理元數(shù)據(jù)管理創(chuàng)建集群時(shí)可在控制臺(tái)開(kāi)啟元數(shù)據(jù)獨(dú)立管理。若項(xiàng)目中已開(kāi)啟過(guò)元數(shù)據(jù)獨(dú)立管理,則新集群開(kāi)啟該功能時(shí),不再創(chuàng)建新的,而是將新集群的元數(shù)據(jù)存儲(chǔ)于已有的中。 元數(shù)據(jù)管理本篇目錄介紹產(chǎn)品架構(gòu)元數(shù)據(jù)管理介紹UHadoop 支持將 Hive-Metastore 的數(shù)據(jù)庫(kù)獨(dú)立于 Hadoop 集群部署,也支持多個(gè)集群訪問(wèn)同一個(gè) Hive 元數(shù)據(jù)庫(kù),可在控制臺(tái)對(duì)其做管理。產(chǎn)品...
摘要:查看上的歷史日志查看上的歷史日志任務(wù)的日志在任務(wù)運(yùn)行結(jié)束之后會(huì)上傳到上,當(dāng)日志文件過(guò)大無(wú)法通過(guò)來(lái)查看時(shí),可以通過(guò)將日志文件從上下載下來(lái)查看。掛載在允許的主機(jī)上執(zhí)行 常用操作本篇目錄應(yīng)用的Web接口查看日志配置NFS掛載hdfs到本地應(yīng)用的Web接口Hadoop 提供了基于 Web 的用戶界面,可通過(guò)它查看您的 Hadoop 集群。Web 服務(wù)會(huì)在主節(jié)點(diǎn)上運(yùn)行(Active NameNode或...
摘要:監(jiān)控?cái)?shù)據(jù)查看監(jiān)控?cái)?shù)據(jù)查看用戶可于產(chǎn)品界面右側(cè)彈框中查看集群監(jiān)控?cái)?shù)據(jù),也可進(jìn)入監(jiān)控視圖中進(jìn)行詳細(xì)查看集群及各節(jié)點(diǎn)監(jiān)控?cái)?shù)據(jù)信息。 基本操作本篇目錄集群管理服務(wù)管理告警與監(jiān)控?cái)?shù)據(jù)均衡Yarn Application跟蹤集群管理1、進(jìn)入集群管理頁(yè)面通過(guò)UHadoop集群列表頁(yè)面進(jìn)入集群管理頁(yè)面:2、獲取當(dāng)前節(jié)點(diǎn)配置信息本例中,Master 節(jié)點(diǎn)數(shù)量 2,機(jī)型為 C1-large;Core 節(jié)點(diǎn)數(shù)量為...
閱讀 472·2024-11-07 18:25
閱讀 130815·2024-02-01 10:43
閱讀 951·2024-01-31 14:58
閱讀 916·2024-01-31 14:54
閱讀 83027·2024-01-29 17:11
閱讀 3286·2024-01-25 14:55
閱讀 2076·2023-06-02 13:36
閱讀 3189·2023-05-23 10:26