メインコンテンツへジャンプ

Tungsten

Databricks 無料トライアル

Tungsten プロジェクトとは

Tungsten は、Apache Spark の実行エンジンを変更する包括プロジェクトのコードネームです。Spark アプリケーション向けのメモリと CPU の効率を大幅に向上させることに重点を置き、性能を最新のハードウェアの限界に近づけます。

Tungsten プロジェクトに含まれるイニシアティブ

  • メモリ管理とバイナリ処理:アプリケーションのセマンティックスを活用してメモリを明示的に管理し、JVM オブジェクトモデルとガベージコレクションのオーバーヘッドを解消
  • キャッシュ対応コンピューティング:メモリ階層を活用するためのアルゴリズムとデータ構造
  • コード生成:コード生成を利用して最新のコンパイラと CPU を活用
  • 仮想関数ディスパッチ不要:これにより、数十億回におよぶディスパッチで性能に重大な影響を与える可能性がある複数回のCPU の呼び出しが軽減されます。
  • メモリ内の中間データとCPU レジスタ:Tungsten フェーズ 2 はCPU レジスタに中間データを配置します。これにより、メモリからではなく CPU レジスタからデータを取得するためのサイクル数が画期的に減少します。
  • ループ展開と SIMD:Apache Sparkの実行エンジンを最適化して、最新のコンパイラとCPU機能を利用し、(複雑な関数呼び出しグラフとは対照的に)単純な for ループを効率的にコンパイルして実行できるようにします。

CPU の効率性を重視するのは、I/O やネットワーク通信よりも、CPU やメモリ使用量が Spark のワークロードのボトルネックになっているからです。この傾向は、ビッグデータワークロードの性能に関する最近の調査が示しています。

関連資料

用語集に戻る