我是hadoop的新手,需要一些幫助。如何使用hdfs shell命令檢查文件是否存在
假設如果我使用shell腳本在後臺運行作業,我如何知道作業是否完成。我問的原因是,一旦工作完成,我的腳本必須將輸出文件移動到其他位置。我怎樣才能檢查工作完成或outfile存在或不使用hdfs。
感謝 MRK
我是hadoop的新手,需要一些幫助。如何使用hdfs shell命令檢查文件是否存在
假設如果我使用shell腳本在後臺運行作業,我如何知道作業是否完成。我問的原因是,一旦工作完成,我的腳本必須將輸出文件移動到其他位置。我怎樣才能檢查工作完成或outfile存在或不使用hdfs。
感謝 MRK
您可以使用JobConf.setJobEndNotificationURI()工作被完成時得到通知。
我想你也可以使用ps命令檢查啓動Hadoop作業的進程的pid。
您需要小心檢測以這種方式完成作業的方式,因爲在作業完成之前可能會有輸出。
要回答你直接問,要測試存在我通常做hadoop fs -ls $output | wc -l
並確保數大於0
我的建議是你用&&
來釘在招:
hadoop ... myjob.jar ... && hadoop fs -mv $output $new_output &
這將完成工作,然後再執行此步驟。
嗨,我正在shell腳本中運行作業,並且在作業完成後添加另一個hdfs命令將輸出文件移動到本地文件系統。現在我想通過使用&提交背景。我將如何知道何時移出outfile。我的意思是有任何HDFS命令來檢查o/p文件是否存在。 – MRK
您也可以在URI中使用文件方案(類似'file:// location')。創建一個shell腳本,將文件從HDFS複製到本地,然後將所需腳本的URI提供給setJobEndNotificationURI()。當作業完成(成功或失敗)時,shell腳本會自動調用。該URI可以包含2個特殊參數:$ jobId和$ jobStatus。 –