1. 程式人生 > >0462-如何在Hue中建立Shell Action工作流續

0462-如何在Hue中建立Shell Action工作流續

Fayson的github: https://github.com/fayson/cdhproject

推薦關注微信公眾號:“Hadoop實操”,ID:gh_c4c535955d0f,或者掃描文末二維碼。

** 感謝群友Beetes提出的問題。**

1.文件編寫目的

Fayson在前面的文章《Hue中使用Oozie建立Shell工作流在指令碼中切換不同使用者》,裡面介紹了Shell Action的建立,在文中我們相應的Shell指令碼是放在每個Oozie作業對應的WorkSpace的lib目錄下。對於一些對於所有用於都公用的Shell指令碼可能放在HDFS的公共目錄下,那這時建立Shell Action需要注意些什麼呢?本篇文章Fayson主要介紹在Hue中建立Shell Action指定工作空間外的Shell指令碼。

  • 測試環境

1.RedHat7.2

2.CM和CDH版本為5.15.0

2.測試環境準備

1.準備測試用的Shell指令碼,內容如下:

#!/bin/bash

cd ~
ls

2.將準備好的Shell指令碼put到HDFS上

[[email protected] disk1]# hadoop fs -mkdir -p /oozie/common/shell
[[email protected] disk1]# hadoop fs -put test.sh /oozie/common/shell
[[email protected] disk1]# hadoop fs -ls /oozie/common/shell

在這裡插入圖片描述

3.Hue建立Shell Action

1.登入Hue進入WorkFlow建立介面
在這裡插入圖片描述

2.點選“Add”新增Shell指令碼的名稱,在Shell Action中指定FILES引數
在這裡插入圖片描述

3.選擇test.sh指令碼在HDFS上儲存的公共路徑

在這裡插入圖片描述
在這裡插入圖片描述

到此完成了Shell Action工作流的建立,儲存執行吧。

4.測試執行

1.點選右上角的執行圖示
在這裡插入圖片描述

2.執行結果顯示如下:
在這裡插入圖片描述

5.總結

1.Hue中建立的Oozie WorkFlow預設所有第三方依賴(如: jar、lib及可執行檔案等),執行時會預設會找當前WorkFlow的WorkSpace的lib目錄下獲取。這也是前面Fayson將shell指令碼上傳至lib目錄下作業執行時沒有報錯的原因。

2.在指定的第三方依賴不在WorkSpace的lib目錄下存在時,需要使用FILES引數來進行設定,指定依賴的檔案或包所在目錄。
在這裡插入圖片描述

3.當然這裡將Shell指令碼放在HDFS的公共目錄頁需要考慮這些指令碼的訪問許可權,如果執行使用者對該指令碼沒有讀取的許可權,同樣會導致你的WorkFlow執行失敗。


為天地立心,為生民立命,為往聖繼絕學,為萬世開太平。

推薦關注Hadoop實操,第一時間,分享更多Hadoop乾貨,歡迎轉發和分享。
在這裡插入圖片描述

原創文章,歡迎轉載,轉載請註明:轉載自微信公眾號Hadoop實操

在這裡插入圖片描述