2012-01-15 5 views
0

マスタとスレーブノードが1つのパイロットHBaseクラスタがあります。私は、REST APIを介してクラスタにアクセス(基本的にGETを介して広告インプレッションデータを書き込む)したいと考えています。 Hadoop/Hive?Pig(TBD)を使用して集計レポートを後で実行できるようにするため、データの1つの画像が必要です。ロードバランシングを介してHBaseクラスタでREST APIを使用する方法

マスターでRESTサーバーを開始し、その単一エンドポイントに書き込むだけですか、各スレーブノードでRESTサーバーインスタンスを開始し、スレーブノード間で負荷分散書き込みを行いますか?

(後者は正しいようには見えませんが、ドキュメントについては少し混乱しています)

答えて

1

残りのapiは、nginxで提供されているロードバランシングで使用します。あなたのnginxの設定ファイルは、次のようになります...

upstream cluster 
{ 
    server master:1234; 
    server slave1:1234; 
    server slave2:1234; 
    server slave3:1234; 
    server slave4:1234; 
} 
server 
{ 
    listen 4444; 
    server_name someserver.com; 
    location/
    { 
     proxy_pass http://cluster; 
     proxy_set_header X-Real-IP $remote_addr; 
     proxy_next_upstream error timeout invalid_header http_500 http_502 http_503; 
    } 
} 

あなたは、あなたの残りのコールにsomeserver.com:4444を呼び出すと、クラスタ内のすべてのサーバに

hbase rest -p 1234 start 

を実行します。

0

RESTサーバーがボトルネックにならないようにするには、それらのサーバーのいくつかを実行し、負荷分散を行いたいとします。

私はそれらをdatanodes上で実行するのか、別のボックスのグループで実行するのかは分かりません。 RESTメッセージを高い頻度で解析すると、HBase自体のパフォーマンスに影響を与える可能性があります。

関連する問題