ApacheSparkのソースコードを段階的に理解する方法


ベストアンサー

古いバージョンのSparkのコードを読むことをお勧めします。

バージョン0.5を検討してください。 2012年にリリースされた apache / spark その時までに、Sparkには約70のソースコードファイルしかなく、これらのファイルはすべて小さかった。ここでRDDのソースコードを見てください: apache / spark すべてがとてもシンプルで簡潔です。

また、Sparkのアーキテクチャにはないことに注意してください。それ以来、劇的に変化しました。開発者は、多くのエラー処理、最適化、およびYarnやKafkaなどの外部テクノロジーとの統合を追加しました。

2012年にSparkがどのように機能したかを理解すれば、今日のSparkがどのように機能するかを理解することは問題ではありません。

さらに、次のメモを読むことをお勧めします: JerryLead / SparkInternals 。これらは、Sparkの内部アーキテクチャの概要を提供します。

回答

Noam Ben-Amiの回答に便乗するには—エンドツーエンドのユーザーであれば、Sparkは非常に網羅的です。

Bash、Python、SQLを知っていても、Sparkを使用する氷山の一角にすぎません。 「エンドツーエンド」のSparkとPython / SQLスクリプティングアナリストを比較する場合は、それ自体が大きなトピックである多くのコンポーネントを学ぶ必要があります。

もちろん、Sparkをローカルで使用できます。 (ラップトップ)Hadoopなしですが、「現実の世界」では、そのようなSparkを使用することはありません。これは構文の一部を学ぶのに便利ですが、間違いなく、そのコンテキストで「Spark」を実行するためにあなたを雇うことはありません(*しゃれを意図しています)。

Sparkを使用する理由はパフォーマンスとあなたは「ビッグデータ」としても知られる分散ファイルシステムの上に座っています。つまり、Sparkジョブのコードを作成すると、パーティション、ノード、シリアル化、JVM、vcore、エグゼキューター、メモリ、メモリとディスク、シャッフル、圧縮ファイル、列形式(寄木細工)などがすべて理解されます。たとえばS3からRDD、DataFrames、DataSets(Java / Scalaのみ)、SparkSQLを介してデータをエンドデータセットに移動する方法。

これは、誰かが「知っている」と言うときとよく似ています。 「Excel」と入力すると、基本的なマクロを最初から作成して、その鹿をヘッドライトのように見せることができるかどうかを尋ねます。

Sparkへのベンチャーの可能性は次のとおりです。

  1. Hadoopクラスター(ノード、メモリ、EC2インスタンスなど)の構築
  2. YARN構成(ノード、コア、インスタンス、エグゼキューター、メモリ管理、ドライバー、オーバーヘッドメモリ、ブロードキャスト、メモリ内など)ディスク管理など)—これらのいずれかがジョブをハング/キルする可能性があり、これらのいずれかが機能しない場合でも、わずかなデータのロードでも一歩先に進むことはできません。
  3. SparkRDDドキュメント
  4. SparkDataFramesドキュメント
  5. SparkSQLドキュメント
  6. 必然的に、次のコードを記述します。 #2の問題を明らかにする#の3–5。
  7. この時点で、少なくともJavaコードをデバッグしている可能性があり、Pythonを使用している場合は、データ型の問題に対するpy4Jゲートウェイエラーが発生します。 Pythonとストリーミングデータオブジェクトを使用します。

多くの人が、RDD、DataFrame、Spark SQLに対して関数/メソッドをわずか数分で記述でき、PythonとSQLの経験があれば多分数日でRDD、DataFrame、SQLドキュメントを飲み込むことさえありますが、Sparkジョブがブロードキャスト、エグゼキューター、タスク、またはメモリエラーのために強制終了された場合、それは問題になりません。あなたはSparkウェットスーツを着て、Spark [Java]の腹を深く掘り下げようとしています。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です