0
シェルスクリプトはHDFS
です。私はこのスクリプトのログをHDFSで収集したいだけです。スクリプトのシェルスクリプトのログファイルをHDFSに保存するには
内容は以下の通りです:
#!/bin/bash
TIMESTAMP=`date "+%Y-%m-%d"`
hdfs dfs -touchz /user/$USER/logs/`date "+%Y-%m-%d"`/${TIMESTAMP}.success_log
hdfs dfs -touchz /user/$USER/logs/`date "+%Y-%m-%d"`/${TIMESTAMP}.fail_log
success_logs=/user/$USER/logs/`date "+%Y-%m-%d"`/${TIMESTAMP}.success_log
failed_logs=/user/$USER/logs/`date "+%Y-%m-%d"`/${TIMESTAMP}.fail_log
function log_status
{
status=$1
message=$2
if [ "$status" -ne 0 ]; then
echo "`date +\"%Y-%m-%d %H:%M:%S\"` [ERROR] $message [Status] $status : failed" | tee -a "${failed_logs}"
#echo "Please find the attached log file for more details"
exit 1
else
echo "`date +\"%Y-%m-%d %H:%M:%S\"` [INFO] $message [Status] $status : success" | tee -a "${success_logs}"
fi
}
ログがファイルに追加されていません。ファイルのみが作成されます。
にはどうすればファイルは、ログファイルに追加されていないHDFS
ローカルで最初に書き出し、最終的にHDFSにアップロードしてみませんか? – franklinsijo
これはシェルアクションになるでしょうか?そのような場合は、ローカルファイルシステムにログファイルを作成することができます。 – franklinsijo
はい、ローカルのファイルシステムです。それ以外の場合は例外がありますか?とにかく、HDFSにファイルを追加するためのソリューションを提供します。最終的なコールはあなたのものです。ローカルにログを書き込んで、最後にHDFSにアップロードするか、HDFSのログファイルに直接追加することができます。私は最初の方が好きです。 – franklinsijo