title: 'Impala 高可用性: Impalaクエリのロードを分散する方法' author: Hue Team type: post date: 2014-05-20T03:34:48+00:00 url: /hadoop-tutorial-how-to-distribute-impala-query-load-2/ sf_thumbnail_type:
Hueは、Hadoopの次世代SQLエンジンであるImpala用のインタフェースを提供しています。さらなるパフォーマンスを提供するために、HueはImpalaのワーカーの全てに渡ってクエリのロードを分散することができます。
このチュートリアルでは、複数のImpalad(Impalaデーモン)にクエリを行うためにHueをセットアップする方法を説明します:
これは、Hueが複数のImpaladとどのように通信するのかを紹介した簡単なビデオです。
{{< youtube p-pwhqGvlE4 >}}
複数のImpaladと通信するためにHueを設定する、2つの方法があります。
(Cloudera Managerを日本語でセットアップしている場合には、適宜読み替えて下さい)
Cloudera Managerから、メニューの“Clusters”をクリックして、Hueサービスを探します。
Hueサービスから、 “Configuration -> View and Edit”を選択します。
適切なロードバランサーとソケットのタイムアウトを使用するために、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をご覧下さい(英語)。
“impala”セクションの下にある“server_conn_timeout”設定を大きな値(例:1時間)に変更します。この値は秒単位で設定しなければなりません(1時間 = 3600秒)。設定オプションは「Cloudera Managerによる設定」も参照して下さい。
次に、hue.iniの”impala”セクションで、新しいホストとポートをセットしなければなりません。ホスト名は “server_host”に、ポートは “server_port” に定義されています。設定オプションは「Cloudera Managerによる設定」も参照して下さい。
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
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クラスタに役立つことを願っています!