2014-05-20-hadoop-tutorial-how-to-distribute-impala-query-load-2.md 8.3 KB


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:

  • none sf_thumbnail_link_type:
  • link_to_post sf_detail_type:
  • none sf_page_title:
  • 1 sf_page_title_style:
  • standard sf_no_breadcrumbs:
  • 1 sf_page_title_bg:
  • none sf_page_title_text_style:
  • light sf_background_image_size:
  • cover sf_social_sharing:
  • 1 sf_sidebar_config:
  • left-sidebar sf_left_sidebar:
  • Sidebar-2 sf_right_sidebar:
  • Sidebar-1 sf_caption_position:
  • caption-right slide_template:
  • default sf_custom_excerpt:
  • Hueは、Hadoopの次世代SQLエンジンであるImpala用のインタフェースを提供しています。さらなるパフォーマンスを提供するために、HueはImpalaのワーカーの全てに渡ってクエリのロードを分散することができます。 categories:
  • Impala
  • Video

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とどのように通信するのかを紹介した簡単なビデオです。

{{< youtube p-pwhqGvlE4 >}}

Hueを設定する

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

Cloudera Managerによる設定

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

  1. Cloudera Managerから、メニューの“Clusters”をクリックして、Hueサービスを探します。

    impala-1

  2. Hueサービスから、 “Configuration -> View and Edit”を選択します。

    impala-2

  3. 適切なロードバランサーとソケットのタイムアウトを使用するために、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による設定」も参照して下さい。

    impala-3

  3. 次に、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 までお気軽にお知らせ下さい。