Impala 高可用性: Impalaクエリのロードを分散する方法

Published on 20 May 2014 in Impala / Video - 4 minutes read - Last modified on 06 March 2021

Hueは、Hadoopの次世代SQLエンジンであるImpala用のインタフェースを提供しています。さらなるパフォーマンスを提供するために、HueはImpalaのワーカーの全てに渡ってクエリのロードを分散することができます。

チュートリアル

このチュートリアルでは、複数のImpalad(Impalaデーモン)にクエリを行うためにHueをセットアップする方法を説明します:

  1. 複数のImpaladで動作するように、4ノードのRed Hat 6クラスタのうちの一つのノードにHue 3.6を設定します。
  2. HAProxy 1.4を使用してimpaladへの接続をロードバランスを行いますが、接続の持続が行える、どのようなロードバランサーでも動作するでしょう。

これは、Hueが複数のImpaladとどのように通信するのかを紹介した簡単なビデオです。

Hueを設定する

複数のImpaladと通信するためにHueを設定する、2つの方法があります。

Cloudera Managerによる設定

(Cloudera Managerを日本語でセットアップしている場合には、適宜読み替えて下さい)

  1. Cloudera Managerから、メニューの“Clusters”をクリックして、Hueサービスを探します。
[<img class="alignnone  wp-image-1228" src="https://cdn.gethue.com/uploads/2014/05/impala-1.png" alt="impala-1" width="657" height="556" data-wp-pid="1228" />][4]
  1. Hueサービスから、 “Configuration -> View and Edit”を選択します。
[<img class="alignnone  wp-image-1227" src="https://cdn.gethue.com/uploads/2014/05/impala-2.png" alt="impala-2" width="292" height="165" data-wp-pid="1227" />][5]
  1. 適切なロードバランサーとソケットのタイムアウトを使用するために、Cloudera Managerで安全バルブ(safety valve)の設定を行う必要があります。“Service-Wide -> Advanced” に移動し、“Hue Service Advanced Configuration Snippet (Safety Valve)”の値をクリックします。値には、以下をテンプレートとして利用することができます:
    [impala]
    server_host=<hostname running HAProxy>
    server_port=<port HAProxy is bound to>
    server_conn_timeout=<timeout in seconds>
    

 

Cloudera ManagerでHueを設定するためのより多くの情報は、Managing Clustersをご覧下さい(英語)。

手動での設定

  1. お好みのエディタで/etc/hue/hue.iniを開きます。
  2. “impala”セクションの下にある“server_conn_timeout”設定を大きな値(例:1時間)に変更します。この値は秒単位で設定しなければなりません(1時間 = 3600秒)。設定オプションは「Cloudera Managerによる設定」も参照して下さい。
[<img class="alignnone  wp-image-1229" src="https://cdn.gethue.com/uploads/2014/05/impala-3.png" alt="impala-3" width="492" height="405" data-wp-pid="1229" />][7]
  1. 次に、hue.iniの”impala”セクションで、新しいホストとポートをセットしなければなりません。ホスト名は “server_host”に、ポートは “server_port” に定義されています。設定オプションは「Cloudera Managerによる設定」も参照して下さい。

 

HA Proxy のインストールと設定

  1. HA Proxy 1.4バイナリ形式のファイルをダウンロードして展開します。
  2. 以下のHA Proxy configurationを/etc/impala/haproxy-impala.confに設定します:
global
  daemon
  nbproc 1
  maxconn 100000
  log /dev/log local6

defaults
  log        global
  mode       tcp
  option     tcplog
  option     tcpka
  timeout connect 3600000ms
  timeout client 3600000ms
  timeout server 3600000ms

listen impala
  bind 0.0.0.0:10001
  balance leastconn

  server impala1 server1.cloudera.com:21050 check
  server impala2 server2.cloudera.com:21050 check
  server impala3 server3.cloudera.com:21050 check
  1. HA Proxyを開始します:
haproxy -f /etc/impala/haproxy-impala.conf

 

鍵となる設定オプションは、listen セクションのbalance と server です。defaultsセクションの timeout 設定オプションもです。balanceパラメータをleastconnにセットすると、Hueは最小コネクション数でimpaladが新しい接続を作成することを保証します。serverパラメータには、以下の形式で、ロードバランシング時にどのサーバーが使用されるかを定義します:

 

server <name> <address>[:port] [settings ...]

 

上記の設定では、”impala1″サーバーは“impala1.cloudera.com:21050”、”impala2″サーバーは“impala2.cloudera.com:21050”、”impala3″サーバーは“impala3.cloudera.com:21050”でそれぞれ利用可能です。timeout設定パラメータは、TCP接続が(両側で)どのぐらい生きていなければならないのかを定義します。この例では、クライアントのタイムアウト、サーバーのタイムアウト、接続タイムアウトは全て1時間に設定されています。

 

HA Proxy“0.0.0.0:10001”にバインドするように設定されています。従って、Hueは少なくとも利用するImpaladの一つを透過的に選ぶ HA Proxyを示すことができるようになっています。

 

 

まとめ

Impalaのクエリのロードバランシングは、負荷を全てのImpalad(例えば、最終結果の集約を行う)に分散します。現在のImpaladの設計では「不揮発」のネットワーク接続が必要とされるので、Hueは接続を永続的できます。私たちは、これが多くのHadoopクラスタに役立つことを願っています!

 

何か提案はございますか? ご意見は hue-user または @gethue までお気軽にお知らせ下さい。


comments powered by Disqus

More recent stories

10 June 2021
Hue4.10(新しいSQLエディタコンポーネント、REST API、小さなファイルのインポート、Slackアプリなど)がリリースされました!
Read More
29 May 2021
Sqlスクラッチパッドコンポーネントとパブリック REST API を使用して、5 分で独自の SQL エディター (BYOE) を構築する
Read More
26 May 2021
改善されたHueのImporter -- ファイルの選択、方言の選択、テーブルの作成
Read More