(DAGの構築)ハイブクエリの束を背景私は(約20〜30クエリを中心に、その数に成長している)ハイブクエリの束を実行するために探しています
実行します。これらのクエリの中には、他のクエリの結果に依存するものもあれば、パラレルで実行できるものもあります。 (DAG)
質問
DAGを(入力としてクエリの束所与)を構築し、(最もoptimium方法で)並列/順次これらのクエリを実行するの世話をすることができ、ワークフローマネージャが存在します。
同じもののベストプラクティスは何ですか?
(DAGの構築)ハイブクエリの束を背景私は(約20〜30クエリを中心に、その数に成長している)ハイブクエリの束を実行するために探しています
実行します。これらのクエリの中には、他のクエリの結果に依存するものもあれば、パラレルで実行できるものもあります。 (DAG)
質問
DAGを(入力としてクエリの束所与)を構築し、(最もoptimium方法で)並列/順次これらのクエリを実行するの世話をすることができ、ワークフローマネージャが存在します。
同じもののベストプラクティスは何ですか?
ワークフロー管理にはどのツールを使用することもできます。ベストプラクティスは、ユースケースと専門知識が必要です。
伝統的に、企業では: - Control-Mまたはcronスケジューラを使用できます。ビッグデータエコシステムから
:oozieまたはアズカバン
ワークフロー管理のために使用することができるそこにいくつかの他のツールがあります。
また、これはシェルスクリプトで簡単に実装できます 並列処理を開始し、それらの処理を待ってから、他の処理を開始することができます。 コマンドの末尾にあるアンパサンドは、バックグラウンドプロセスを実行するようにシェルに指示します。
#!/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/
ありがとうございます。しかし、私はDAGビルドをアウトソーシングすることにもっと興味があります。ここでは、最初のショットでmyscript_1、myscript_2、myscript_3をトリガーします。あなたがステップ4と5をトリガすることを投稿してください。ユーザーがDAGを構築することを自由にする標準ツールがありますか? (つまり、DAGの外観、DAGの構築方法、完全に抽象化したい場合)。これは非常に一般的な要件であると仮定して、尋ねるのはあまりにも多いのですか? – Harshit
より抽象化のために、表現からDAGを生成するためのラッパースクリプトを使用します。私は現在同様の仕事をしています。クエリ/スクリプトとレベル+オーダーを含むデータベースからDAGを生成する必要があります。 DAGシェルスクリプトを生成して実行します。 – leftjoin
あなたはすでにDAGを表現しているということです。この表現を実行可能なスクリプトに変換するだけです – leftjoin
おかげアシシュ..私はoozieとアズカバンのユーザーがDAGを構築することを可能にすると思いますが、ユーザーの介入は、DAGのために必要です建物。 (それは彼らの私の理解です。)一連のクエリを入力として受け取り、クエリを解釈し、単独でDAGを構築するシステムはありますか? – Harshit