Cassandraのマップを使用する方法は、豚を使用するか、または豚を使用して削減しますか?

StackOverflow https://stackoverflow.com/questions/2734005

  •  02-10-2019
  •  | 
  •  

質問

MapReduceがCassandra .6でどのように機能するかを誰かが説明できますか?私はワードカウントの例を読みましたが、カサンドラの終わりと「クライアント」の終わりで何が起こっているのかを完全に追いかけません。

https://svn.apache.org/repos/asf/cassandra/trunk/contrib/word_count/

たとえば、PythonとPycassaを使用しているとしましょう。新しいマップ削減機能にどのように読み込まれ、それを呼び出しますか?私のマップ削減機能は、cassandraサーバーにインストールされているJavaでなければなりませんか?もしそうなら、私はそれをPycassaからどのように呼びますか?

これをすべて簡単にしている豚についても言及されていますが、私は完全なHadoop Noobなので、それは本当に役に立ちませんでした。

あなたの答えは、リサイクルなどを使用することができます、私はちょうどPycassaについて言及してクライアント側を示します。 Cassandraクラスターで実行されるものとリクエストを作成する実際のサーバーの違いを理解しようとしています。

役に立ちましたか?

解決

私が聞いたことから(そしてそれから ここ)、開発者がデータソースとしてCassandraを使用するMapReduceプログラムを作成する方法は次のとおりです。通常のMapReduceプログラム(リンクした例はPure-Javaバージョン用)を書き込み、現在利用可能なJARSは、入力ソースをCassandra(デフォルトの代わりにHadoopである)にするCustomInputFormatを提供します。

Pycassaを使用している場合、(1)そのプロジェクトのメンテナーがMapReduceのサポートを追加するか、(2)Java MapReduceプログラムを書き込んで実行するPython関数を一緒にスローするまで、運が悪いと思います。 。後者は間違いなくちょっとしたハックですが、あなたを起きて行くでしょう。

他のヒント

それは地域について知っています。 cassandra inputformat overrides getlocations()はデータの局所性を保持します

Cassandraからの直接入力Formatを使用することの勝利は、データを効率的にストリーミングすることです。これは非常に大きな勝利です。各入力分割は、さまざまなトークンをカバーし、完全な帯域幅でディスクをロールオフします。探しても複雑なクエリもありません。私はそれがローカリティについて知っているとは思わない - 各タスクトラッカーに同じノードのカサンドラプロセスからの入力分割を好むようにすること。

より直接的なHadoopストリーミングサポートが設定されるまで、ストリームメソッドを使用してHackとしてPigを使用してみてください。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top