2017-02-21 1 views
0

(DAGの構築)ハイブクエリの束を背景私は(約20〜30クエリを中心に、その数に成長している)ハイブクエリの束を実行するために探しています

実行します。これらのクエリの中には、他のクエリの結果に依存するものもあれば、パラレルで実行できるものもあります。 (DAG)

質問

DAGを(入力としてクエリの束所与)を構築し、(最もoptimium方法で)並列/順次これらのクエリを実行するの世話をすることができ、ワークフローマネージャが存在します。

同じもののベストプラクティスは何ですか?

答えて

1

ワークフロー管理にはどのツールを使用することもできます。ベストプラクティスは、ユースケースと専門知識が必要です。

伝統的に、企業では: - Control-Mまたはcronスケジューラを使用できます。ビッグデータエコシステムから

:oozieまたはアズカバン

ワークフロー管理のために使用することができるそこにいくつかの他のツールがあります。

+0

おかげアシシュ..私はoozieとアズカバンのユーザーがDAGを構築することを可能にすると思いますが、ユーザーの介入は、DAGのために必要です建物。 (それは彼らの私の理解です。)一連のクエリを入力として受け取り、クエリを解釈し、単独でDAGを構築するシステムはありますか? – Harshit

0

また、これはシェルスクリプトで簡単に実装できます 並列処理を開始し、それらの処理を待ってから、他の処理を開始することができます。 コマンドの末尾にあるアンパサンドは、バックグラウンドプロセスを実行するようにシェルに指示します。

#!/bin/bash 

LOG_DIR=/tmp/my_log_dir 

#Set fail counter before parallel processes 
FAIL=0 
echo "Parallel loading 1, 2 and 3..." 

hive -hiveconf "some_var"="$some_value" -f myscript_1.hql 2>&1 | tee $LOG_DIR/myscript_1.log & 
hive -hiveconf "some_var"="$some_value" -f myscript_2.hql 2>&1 | tee $LOG_DIR/myscript_2.log & 
hive -hiveconf "some_var"="$some_value" -f myscript_3.hql 2>&1 | tee $LOG_DIR/myscript_3.log & 

#Wait for three processes to finish 
for job in `jobs -p` 
do 
echo $job 
wait $job || let "FAIL+=1" 
done 

#Exit if some process has failed 
if [ "$FAIL" != "0" ]; 
then 
echo "Failed processes=($FAIL) Giving up..." 
exit 1 
fi 

#Set fail counter before parallel processes 
FAIL=0 
echo "Continue with next parallel steps 4,5..." 
hive -hiveconf "some_var"="$some_value" -f myscript_4.hql 2>&1 | tee $LOG_DIR/myscript_4.log & 
#and so on 

はまた、バックグラウンド・プロセスを実行するための他の方法があります:この例を参照してください https://www.codeword.xyz/2015/09/02/three-ways-to-script-processes-in-parallel/

+0

ありがとうございます。しかし、私はDAGビルドをアウトソーシングすることにもっと興味があります。ここでは、最初のショットでmyscript_1、myscript_2、myscript_3をトリガーします。あなたがステップ4と5をトリガすることを投稿してください。ユーザーがDAGを構築することを自由にする標準ツールがありますか? (つまり、DAGの外観、DAGの構築方法、完全に抽象化したい場合)。これは非常に一般的な要件であると仮定して、尋ねるのはあまりにも多いのですか? – Harshit

+0

より抽象化のために、表現からDAGを生成するためのラッパースクリプトを使用します。私は現在同様の仕事をしています。クエリ/スクリプトとレベル+オーダーを含むデータベースからDAGを生成する必要があります。 DAGシェルスクリプトを生成して実行します。 – leftjoin

+0

あなたはすでにDAGを表現しているということです。この表現を実行可能なスクリプトに変換するだけです – leftjoin

関連する問題