序文
アズカバンは、図の構造として、複雑なユースケースを完了する。
タスク説明
- JOB1:AZフレームワーク質量参加を使用して、印刷ジョブを開始する準備ができています!
- JOB2:JOB1に依存して、ディレクトリ名を作成することは、ローカルinputwcです!
- JOB3:JOB2に依存して、指定されたディレクトリ内の指定されたファイルへのハイブクエリ結果と出力を使用
- JOB4:JOB2に依存して、コールカスタムJavaプログラムは、ファイル名を生成し、プロのコンテンツは、タブで区切られています!
- job5:JOB3に依存し、JOB4は、Javaプログラムの出力の結果は、クエリ結果にハイブに追加されます!
- job6:job5に依存して、ディレクトリHDFSにアップロード生成inputwc!
- job7:表示される職業の数をカウントする語数コール!
結果予想
コード表示
Javaコード
package com.zhengkw.azkaban;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.net.URI;
import java.net.URISyntaxException;
/**
* @ClassName:AzkabanTest
* @author: zhengkw
* @description: 输出用制表符隔开的字符串
* @date: 20/03/19下午 3:45
* @version:1.0
* @since: jdk 1.8
*/
public class AzkabanTest {
public static void main(String[] args) {
FileOutputStream fos = null;
try {
fos = new FileOutputStream("/home/zhengkw/inputwc/hi.txt");
String words = "teachter" + "\t" + "doctor" + "\t" + "driver"
+ "\t" + "doctor" + "\t" + "driver" + "\t" + "doctor" + "\t" + "driver";
fos.write(words.getBytes());
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
if (fos != null) {
fos.close();
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
ジョブコード
Jobl
#first.job
type=command
command=echo ${param}
JOB2
type=command
dependencies=job1
command= mkdir -p /home/zhengkw/inputwc
JOB3
type=command
dependencies=job1,job2
command=bash -c "hive -e 'select job from zhengkw.emp' > /home/zhengkw/inputwc/emp.txt"
JOB4
type=javaprocess
denpendencies=job2
java.class=com.zhengkw.azkaban.AzkabanTest
classpath=/home/zhengkw/jar/*
java.class完全なクラス名を使用するには!!!
job5
type=command
dependencies=job4,job3
command= bash -c 'cat /home/zhengkw/inputwc/hi.txt >> /home/zhengkw/inputwc/emp.txt'
job6
type=command
dependencies=job5
command= bash -c 'hadoop fs -put /home/zhengkw/inputwc /'
job7
type=command
dependencies=job6
command= bash -c 'hadoop jar /opt/module/hadoop-2.7.2/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.2.jar wordcount /inputwc /azout'
注意事項
- Javaプログラムを指定する必要があり、指定された場所、仕事にパッケージ化した後!クラスパスのパラメータは、瓶の後ろのパスです!!java.classパラメータは、クラスの完全な名前でなければなりません!!!
- ジョブファイルの種類があります*。*!そして、最後に.JOBでなければなりません!
- zipパッケージ形式を選択し、他のフォーマットがサポートされていません!しかし、接尾辞RAR形式は、まだ郵便番号として認識されていません!
その他の機能の表示
定期的なタスク
-
東部地区8を選択
-
最初の日付と時刻を選択!
-
代表的にはチェックボックスが行っ定期点検を必要とし、その単位、デジタル入力内部入力ボックスを選択しSelectListの!
-
キーポイント!!!あなたは、通常のタスクにパラメータを渡す必要が実行した場合、入力パラメータ、オプション、右下隅のスケジュール後の定期的なスケジュールオプションを再入力してください!
最初のパラメータを入力する必要があります!!! 最初のパラメータを入力する必要があります!!! 最初のパラメータを入力する必要があります!!!
電子メール警報!
BEAT!
このしきい値MM、仕事に殺されたか、電子メールアラートを送信:あなたが成功したかHH以上を完了するようにジョブを設定することができ、タスクのタイミングで、このようなオプションがあります!
通常の電子メールのスケジュールアラーム
ジョブリスト
あなたは、各ジョブのパフォーマンスを照会することができます!
での作業フローに履歴から選択します!
概要
- bash -cを使用している場合、ネストされた引用符に注意してください!単一引用符、二重引用符で囲まれた外層のみ、それ以外の場合は、問題を解決します!
- ときに、アップロードに失敗しました!ジョブコードはバグで間違いがあります!
段付ピット!
それはZZであるが、彼が唯一間違っを見つけるのに長い時間を探しているすべての後に、掲載が依然として必要です!が、
- スタックオーバーフロー!
一般的に唯一の可能性、それは再帰呼び出しの登場のとき、スタックオーバーフローが発生し、あなたがアップロードした場合、唯一の可能な解析時に再帰呼び出しが発生し、それが依存関係です!私はjob5を頼るjob5現れjob5書くとき!唯一見つけるために長い時間のためにチェックしてください!!
- ジョブはに基づいている必要があり.JOB終わるファイル。*入力します。* !!!
- ジョブはzip形式でパッケージ化する必要があります!
- Javaのカスタムタイプでなければなりませんjavaprocess java.classでなければなりません、クラスの完全な名前、クラスパスは絶対パスでなければなりません!
- 著者の呼び出しの速記の方法を使用するためにサービスがHADOOP_HOME環境HIVE環境を設定する必要がありますどこの上で実行されているアズカバンのマシンは、あなたが電話をかけるために、完全なクラス名を使用することができます!!!!
- このスクリプトは、そうでない場合は、起動時アズカバンのエラーグローバル・コンフィギュレーション・ファイルを見つけられないだろう、同じレベルのconfディレクトリエグゼキュータまたはWebサーバーで実行する必要があります!!
- 単一引用符は、外層が引き起こされることが「」二重引用符に変更する必要があり、入れ子にすることはできません!