1. SBIN/START-ALL.SHを実行するスパーククラスターを起動し、マスターと複数のワーカーノードを起動します。マスターは主にクラスターの管理と監視として使用され、ワーカーノードは主にさまざまなアプリケーションを実行する責任があります。マスターノードは、CPUやメモリの大きさなど、ワーカーノードに独自のステータスを報告できるようにする必要があります。このプロセスは、ハートビートメカニズムを通じて完了します
2。マスターが労働者の報告情報を受け取った後、労働者に情報を提供します。
3.ドライバーはタスクを提出してクラスターをスパークする[ドライバーとマスターの間の通信はAkkaactorを介して行われます。つまり、マスターはAkkaactorの非同期通信モデルの俳優モデルであり、ドライバーは同じです。ドライバーは非同期に登録情報(登録アプリケーション)を非同期に送信して習得します]
4.マスターノードはアプリケーションを推定し、7 gのメモリがタスクを完了し、タスクを割り当て、各ワーカーノードは3.5gのメモリを割り当ててタスクを実行します。マスターでは、各ワーカーのタスクが監視され、全体としてスケジュールされます。
5.ワーカーノードがタスクを受信し、実行を開始します。実行するためにワーカーノードで対応するエグゼキュータープロセスを開始します。各エグゼキューターには、複数のタスクスレッドが含まれるスレッドプールの概念があります。
6.執行者は、スレッドプールからタスクを取り出して、RDDPatition、変換操作、およびアクション操作のデータを計算します。
7.ワーカーノードは、計算ステータスをドライバーノードに報告します
ローカル並列化コレクションを使用してRDDを作成します
public class javalocalsumapp {public static void main(string [] args){sparkConf = new SparkConf()。SetAppName( "Javalocalsumapp"); javasparkContext sc = new JavaSparkContext(conf); list <integer> list = arrays.aslist(1,4,5,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6. <integer> listrdd = sc.parallelize(list); // sum integer sum = listrdd.reduce(new function2 <integer、integer、integer、integer>(){@Override public Integer Call(Integer V1、Integer V2)Throws Excepsion Exception Javaでのプログラミングでは、コンパイラを1.8listrdd.reduce((v1、v2)=> v1+v2)に設定する必要があります。スパークトランスフォーメーションおよびアクション操作
RDD:弾性分散データセットは、複数のソースをサポートし、障害耐性メカニズムを持ち、キャッシュできるコレクションであり、並列操作をサポートするコレクションです。 RDDは、パーティション内のデータセットを表します。
RDDには2つのオペレーティングオペレーターがあります。
変換:変換は遅延計算です。あるRDDが別のRDDに変換されると、すぐに変換されません。データセットの論理操作を覚えています。
アクション:Sparkジョブの動作をトリガーし、変換演算子の計算を実際にトリガーします。
Spark演算子の役割
この図については、スパークコンバージョンを実行中の変換中にRDDを変換します。オペレーターは、RDDで定義された関数であり、RDDでデータを変換および操作できます。
入力:SPARKプログラムの実行中、データは外部データスペース(分散ストレージ:HDFSなどを読み取るテキストファイルなど、SCALAコレクションまたはデータに入るなど)からスパークに入力し、データはSparkランタイムデータスペースに入り、Sparkのデータブロックに変換され、BlockManagerを介して管理されます。
実行:Sparkデータ入力が入力された後、RDDがフォームRDDを使用した後、フィルターなどの変換演算子に渡すことができます。データを操作し、RDDを新しいRDDに変換します。アクションオペレーターを通じて、Sparkはジョブを提出します。データを多重化する必要がある場合、データはキャッシュオペレーターを介してメモリにキャッシュできます。
出力:プログラムの実行後のデータは、ランタイムスペースをスパークするために出力され、分散ストレージ(saveastextfile出力へのHDFSなど)に保存されます。
変換とアクションの操作の概要
変換
MAP(FUNC):FUNC関数によって変換された後、各元の要素で構成される新しい分散データセットを返します
フィルター(FUNC):新しいデータセットを返し、FUNC関数を通過しました
flatmap(func):MAPに似ていますが、各入力要素は0から複数の出力要素にマッピングされます(したがって、FUNC関数の戻り値はSEQであり、単一の要素ではありません)
サンプル(WithReplacement、Frac、Seed):与えられたランダムシードによると、多数のFRACを持つデータがランダムにサンプリングされます。
Union(otherDataset):元のデータセットとパラメーターで構成される新しいデータセットを返します
roupbykey([numtasks]):(k、v)ペアで構成されるデータセットで呼び出され、(k、seq [v])ペアのデータセットを返します。注:デフォルトでは、8つの並列タスクがグループ化に使用されます。 NumTaskオプションのパラメーターを渡し、データの量に従って異なる数のタスクを設定できます。
ReduceByKey(FUNC、[numtasks]):A(k、v)ペアデータセットで使用し、A(k、v)ペアデータセットを返し、指定されたredoce機能を使用してキーの同じ値が一緒に集計されます。 GroupBykeyと同様に、タスクの数は2番目のオプションパラメーターで構成できます。
Join(otherdataset、[numtasks]):タイプ(k、v)と(k、w)のデータセットで呼び出され、(k、(v、w))ペアを返し、各キーのすべての要素が一緒になります。
GroupWith(otherDataset、[numtasks]):タイプ(k、v)および(k、w)のデータセットで呼び出され、コンポーネント(k、seq [v]、seq [w])のコンポーネント(k、seq [w])のデータセットを返します。この操作は、Cogroupと呼ばれる他のフレームワークにあります
デカルト(その他dataset):デカルト製品。ただし、データセットTとUで呼び出されると、(t、u)ペアのデータセットが返され、すべての要素がデカルト製品と相互作用します。
アクション
Reduce(FUNC):関数FUNCを介してデータセット内のすべての要素を集約します。 FUNC関数は2つのパラメーターを受け入れ、値を返します。この関数は、それが正しくかつ同時に実行できることを確認するために関連付ける必要があります
collect():ドライバープログラムでは、データセットのすべての要素を配列として返します。これは通常、フィルターまたは他の操作を使用した後に十分な少量のデータサブセットを返し、RDDセット全体を直接返します。これにより、ドライバープログラムがOOMになる可能性があります
count():データセット内の要素の数を返します
テイク(n):データセットの最初のn要素で構成される配列を返します。この操作は現在、複数のノードで並行して実行されていないが、ドライバープログラムが配置されているマシンであり、すべての要素が単一のマシンによって計算されることに注意してください(ゲートウェイのメモリ圧力が増加し、注意して使用する必要があります)
first():データセットの最初の要素を返します((1)と同様)
saveastextfile(path):データセットの要素を、Hadoopでサポートされているローカルファイルシステム、HDFS、またはその他のファイルシステムにテキストファイルの形で保存します。 Sparkは、各要素のTostringメソッドを呼び出し、ファイル内のテキストの行に変換します。
SaveasSequenceFile(PATH):データセットの要素を、指定されたディレクトリ、ローカルシステム、HDFS、またはHadoopがサポートするその他のファイルシステムにシーケンスファイルの形式で保存します。 RDDの要素は、キーと値のペアで構成されている必要があり、すべてHadoopの書き込み可能なインターフェイスを実装するか、暗黙的に書き込み可能に変換できます(Sparkには、INT、Double、Stringなどの基本タイプの変換が含まれます。)
foreach(func):データセットの各要素で関数funcを実行します。これは通常、アキュムレータ変数の更新または外部ストレージシステムとの対話に使用されます
WordCount実行プロセス
要約します
上記は、Sparkスケジューリングアーキテクチャの原則に関するこの記事のすべての内容です。私はそれが誰にでも役立つことを願っています。興味のある友人は、このサイトの他の関連トピックを引き続き参照できます。欠点がある場合は、それを指摘するためにメッセージを残してください。このサイトへのご支援をありがとうございました!