1.Azkaban實戰
Azkaba内置的任務類型支援command、java
1、建立job描述檔案
2、将job資源檔案打包成zip檔案
zip command.job
3、通過azkaban的web管理平台建立project并上傳job壓縮包
首先建立project
Azkaban實戰,Command類型單一job示例,任務中執行外部shell腳本,Command類型多job工作flow,HDFS操作任務,MapReduce任務,HIVE任務 上傳zip包,例如:
Azkaban實戰,Command類型單一job示例,任務中執行外部shell腳本,Command類型多job工作flow,HDFS操作任務,MapReduce任務,HIVE任務 zip包中的内容如下:
Azkaban實戰,Command類型單一job示例,任務中執行外部shell腳本,Command類型多job工作flow,HDFS操作任務,MapReduce任務,HIVE任務 上傳界面:
4、啟動執行該job
可以檢視腳本的内容:
執行工作流:
Azkaban實戰,Command類型單一job示例,任務中執行外部shell腳本,Command類型多job工作flow,HDFS操作任務,MapReduce任務,HIVE任務
Azkaban實戰,Command類型單一job示例,任務中執行外部shell腳本,Command類型多job工作flow,HDFS操作任務,MapReduce任務,HIVE任務
Azkaban實戰,Command類型單一job示例,任務中執行外部shell腳本,Command類型多job工作flow,HDFS操作任務,MapReduce任務,HIVE任務
Azkaban實戰,Command類型單一job示例,任務中執行外部shell腳本,Command類型多job工作flow,HDFS操作任務,MapReduce任務,HIVE任務 上面的已經變成了綠色了,表示已經執行完成了。
Azkaban實戰,Command類型單一job示例,任務中執行外部shell腳本,Command類型多job工作flow,HDFS操作任務,MapReduce任務,HIVE任務
Azkaban實戰,Command類型單一job示例,任務中執行外部shell腳本,Command類型多job工作flow,HDFS操作任務,MapReduce任務,HIVE任務 上面的repeat表示每天執行一次
Azkaban實戰,Command類型單一job示例,任務中執行外部shell腳本,Command類型多job工作flow,HDFS操作任務,MapReduce任務,HIVE任務
Azkaban實戰,Command類型單一job示例,任務中執行外部shell腳本,Command類型多job工作flow,HDFS操作任務,MapReduce任務,HIVE任務 編寫command.job檔案
内容如下:
上面的command=sh hello.sh表示的意思是執行hello.sh腳本,其中hello.sh的腳本如下:
按照上面的案例,上傳上去,并且執行。
Azkaban實戰,Command類型單一job示例,任務中執行外部shell腳本,Command類型多job工作flow,HDFS操作任務,MapReduce任務,HIVE任務 上傳任務的腳本
Azkaban實戰,Command類型單一job示例,任務中執行外部shell腳本,Command類型多job工作flow,HDFS操作任務,MapReduce任務,HIVE任務
Azkaban實戰,Command類型單一job示例,任務中執行外部shell腳本,Command類型多job工作flow,HDFS操作任務,MapReduce任務,HIVE任務
Azkaban實戰,Command類型單一job示例,任務中執行外部shell腳本,Command類型多job工作flow,HDFS操作任務,MapReduce任務,HIVE任務
Azkaban實戰,Command類型單一job示例,任務中執行外部shell腳本,Command類型多job工作flow,HDFS操作任務,MapReduce任務,HIVE任務 進入/home/tuzq/software/azkabandata檢視是否有檔案:
1、建立有依賴關系的多個job描述
第一個job:foo.job
第二個job:bar.job依賴foo.job
2、将所有job資源檔案打到一個zip包中
Azkaban實戰,Command類型單一job示例,任務中執行外部shell腳本,Command類型多job工作flow,HDFS操作任務,MapReduce任務,HIVE任務 3、在azkaban的web管理界面建立工程并上傳zip包
Azkaban實戰,Command類型單一job示例,任務中執行外部shell腳本,Command類型多job工作flow,HDFS操作任務,MapReduce任務,HIVE任務 4、啟動工作流flow
Azkaban實戰,Command類型單一job示例,任務中執行外部shell腳本,Command類型多job工作flow,HDFS操作任務,MapReduce任務,HIVE任務
Azkaban實戰,Command類型單一job示例,任務中執行外部shell腳本,Command類型多job工作flow,HDFS操作任務,MapReduce任務,HIVE任務
Azkaban實戰,Command類型單一job示例,任務中執行外部shell腳本,Command類型多job工作flow,HDFS操作任務,MapReduce任務,HIVE任務
Azkaban實戰,Command類型單一job示例,任務中執行外部shell腳本,Command類型多job工作flow,HDFS操作任務,MapReduce任務,HIVE任務
Azkaban實戰,Command類型單一job示例,任務中執行外部shell腳本,Command類型多job工作flow,HDFS操作任務,MapReduce任務,HIVE任務
Azkaban實戰,Command類型單一job示例,任務中執行外部shell腳本,Command類型多job工作flow,HDFS操作任務,MapReduce任務,HIVE任務
Azkaban實戰,Command類型單一job示例,任務中執行外部shell腳本,Command類型多job工作flow,HDFS操作任務,MapReduce任務,HIVE任務 通過上滿的結果可以證明,可以通過job來自行hdfs的指令
Mr任務依然可以使用command的job類型來執行
1、建立job描述檔案,及mr程式jar包(示例中直接使用hadoop自帶的example jar)
Azkaban實戰,Command類型單一job示例,任務中執行外部shell腳本,Command類型多job工作flow,HDFS操作任務,MapReduce任務,HIVE任務 其中hadoop-mapreduce-examples-2.8.0.jar 在$HADOOP_HOME/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.8.0.jar
上傳之後的準備工作是:
将wordcount/input上傳到hdfs,指令如下:
[root@hadoop1 software]# hdfs dfs -put wordcount / [root@hadoop1 software]# hdfs dfs -ls / Found 8 items drwxr-xr-x - root supergroup 0 2017-06-13 12:01 /40000 drwxr-xr-x - root supergroup 0 2017-06-14 18:31 /azaz drwxr-xr-x - root supergroup 0 2017-06-13 23:43 /flume drwxr-xr-x - root supergroup 0 2017-06-14 18:46 /input -rw-r--r-- 3 root supergroup 3719 2017-06-10 12:11 /kms.sh
drwxrwxrwx - root supergroup 0 2017-06-14 18:43 /tmp drwxr-xr-x - root supergroup 0 2017-06-10 22:27 /user drwxr-xr-x - root supergroup 0 2017-06-14 18:47 /wordcount [root@hadoop1 software]# hdfs dfs -ls hdfs:/wordcount/input Found 9 items -rw-r--r-- 3 root supergroup 604 2017-06-14 18:47 hdfs:///wordcount/input/1.txt
-rw-r--r-- 3 root supergroup 604 2017-06-14 18:47 hdfs:///wordcount/input/2.txt
-rw-r--r-- 3 root supergroup 604 2017-06-14 18:47 hdfs:///wordcount/input/3.txt
-rw-r--r-- 3 root supergroup 604 2017-06-14 18:47 hdfs:///wordcount/input/4.txt
-rw-r--r-- 3 root supergroup 604 2017-06-14 18:47 hdfs:///wordcount/input/5.txt
-rw-r--r-- 3 root supergroup 27209520 2017-06-14 18:47 hdfs:///wordcount/input/a.txt
-rw-r--r-- 3 root supergroup 27209520 2017-06-14 18:47 hdfs:///wordcount/input/aaa.txt
-rw-r--r-- 3 root supergroup 27787264 2017-06-14 18:47 hdfs:///wordcount/input/b.txt
-rw-r--r-- 3 root supergroup 26738688 2017-06-14 18:47 hdfs:///wordcount/input/c.txt
其中1.txt中内容類似:
Azkaban實戰,Command類型單一job示例,任務中執行外部shell腳本,Command類型多job工作flow,HDFS操作任務,MapReduce任務,HIVE任務 4、啟動job
現象:
Azkaban實戰,Command類型單一job示例,任務中執行外部shell腳本,Command類型多job工作flow,HDFS操作任務,MapReduce任務,HIVE任務
Azkaban實戰,Command類型單一job示例,任務中執行外部shell腳本,Command類型多job工作flow,HDFS操作任務,MapReduce任務,HIVE任務 執行完成之後的狀态是:
Azkaban實戰,Command類型單一job示例,任務中執行外部shell腳本,Command類型多job工作flow,HDFS操作任務,MapReduce任務,HIVE任務
Azkaban實戰,Command類型單一job示例,任務中執行外部shell腳本,Command類型多job工作flow,HDFS操作任務,MapReduce任務,HIVE任務
Azkaban實戰,Command類型單一job示例,任務中執行外部shell腳本,Command類型多job工作flow,HDFS操作任務,MapReduce任務,HIVE任務 檢視hdfs上的内容:
Azkaban實戰,Command類型單一job示例,任務中執行外部shell腳本,Command類型多job工作flow,HDFS操作任務,MapReduce任務,HIVE任務 開始的時候發現在/wordcount下隻有input這個檔案夾,當執行完成之後,發現有了azout這個檔案夾。
綜上所述,說明通過azkaban在hdfs上生成了檔案
建立job描述檔案和hive腳本
Hive腳本: test.sql
Job描述檔案:hivef.job
Azkaban實戰,Command類型單一job示例,任務中執行外部shell腳本,Command類型多job工作flow,HDFS操作任務,MapReduce任務,HIVE任務 準備工作(在hdfs上建立一個hive執行sql後依賴的檔案夾):
[root@hadoop1 apache-hive-1.2.1-bin]# hdfs dfs -mkdir -p /aztest/hiveoutput
執行完成之後效果如下:
Azkaban實戰,Command類型單一job示例,任務中執行外部shell腳本,Command類型多job工作flow,HDFS操作任務,MapReduce任務,HIVE任務
Azkaban實戰,Command類型單一job示例,任務中執行外部shell腳本,Command類型多job工作flow,HDFS操作任務,MapReduce任務,HIVE任務 特别注意的是:如果執行錯了,可以檢視任務的日志輸出: