3

私はCassandraデータでPigを使用して、命令的に書くことはほとんど不可能な、あらゆる種類の驚くべきグループ化の偉業を成し遂げてきました. 私は DataStax の Hadoop と Cassandra の統合を使用していますが、これは非常に優れていると言わざるを得ません。そんな奴らに脱帽!!

私はかなり小さなサンドボックス クラスター (2 ノード) を持っており、このシステムをいくつかのテストに使用しています。~53M 行 (それぞれ約 350 バイト) の CQL テーブルがあり、Mapper が後でこれらの 53M 行を処理するのに非常に長い時間がかかることに気付きました。ログを調べ始めたところ、マップが繰り返し流出していることがわかります (マッパーから 177 の流出を見ました)。これが問題の一部だと思います。

CassandraInputFormat と JobConfig の組み合わせは単一のマッパーのみを作成するため、このマッパーはテーブルから 100% の行を読み取る必要があります。私はこれを反平行と呼んでいます:)

さて、この写真には次のような多くの歯車が働いています。

  • 2 つの物理ノード
  • Hadoop ノードは「Analytics」DC (デフォルト構成) にありますが、物理的には同じラックにあります。
  • LOCAL_QUORUM を使用してジョブを表示できます

より多くのマッパーを実行できるように、Pig でより多くの入力分割を作成する方法を教えてもらえますか? 23 スロットあります。常に1つだけを使用するのは残念です。

それとも、私は完全に怒っていて、問題を理解していませんか? 私は両方の種類の答えを歓迎します!

4

3 に答える 3

2

設定する必要がありますpig.noSplitCombination = true。これは、3 つの場所のいずれかで行うことができます。

スクリプトを呼び出す場合:

dse pig -Dpig.noSplitCombination=true /path/to/script.pig

Pig スクリプト自体:

SET pig.noSplitCombination true
table = LOAD 'cfs://ks/cf' USING CqlStorage();

または永久に/etc/dse/pig/pig.properties。コメントを外します:

pig.noSplitCombination=true

それ以外の場合、Pig は合計入力パス (結合) を処理するように設定する場合があります: 1.

于 2014-04-14T19:18:59.180 に答える
0

cassandra.input.split.size をデフォルトの分割サイズである 64k 未満に設定すると、より多くの分割を取得できます。Cql テーブルのノードあたりの行数は? テーブルスキーマを投稿できますか?

URL パラメータに split_size を追加します

CassandraStorage の場合、次のパラメータ cassandra://[username:password@]/[?slice_start=&slice_end=[&reversed=true][&limit=1][&allow_deletes=true][&widerows=true][&use_secondary=true][&comparator を使用します。 =][&split_size=][&partitioner=][&init_address=][&rpc_port=]]

CqlStorage には、次のパラメーターを使用します cql://[username:password@]/[?[page_size=][&columns=][&output_query=][&where_clause=][&split_size=][&partitioner=][&use_secondary=true|false] [&init_address=][&rpc_port=]]

于 2013-10-28T17:54:24.470 に答える