Cloudera Impala 3.1+ とネイティブ ドライバを使用した Cloudera Impala

これらのインストラクションを使用するダイアレクト

Looker は、次の Impala データベースに接続します。

  • Cloudera Impala 3.1+
  • ネイティブ ドライバを使用した Cloudera Impala 3.1+
  • ネイティブ ドライバを使用した Cloudera Impala

ネットワークトラフィックの暗号化

Looker アプリケーションとデータベース間のネットワーク トラフィックを暗号化することをおすすめします。セキュアなデータベースアクセスを可能にするドキュメント ページに記載されているオプションのいずれかを検討してください。

Cloudera Impala に接続するための Looker の構成

Looker は JDBC 接続を介してデータベースに接続します。Impala データベースの場合、Looker はデフォルトで、ポート 21050 で impalad デーモンを実行するサーバーに接続します。詳細については、Cloudera ウェブサイトのドキュメントの JDBC と連携するように Impala を構成するをご覧ください。

Looker の [管理者] セクションで [接続] を選択し、[新しい接続] をクリックします。

Looker の接続構成は、使用するセキュリティによって異なります。

Kerberos またはユーザー認証を使用しないクラスタへの接続

Kerberos またはユーザー認証を使用しない接続を構成するには、次の手順を行います。

  1. [接続設定] ページで、[ユーザー名] と [パスワード] のフィールドは空欄のままにします。(フィールド名の横の * は、これらのフィールドは必須であるものの、入力されていないことを示します)。
  2. [その他の JDBC パラメータ] フィールドに「;auth=noSasl」と入力します。

接続文字列の確認

ログファイル内の JDBC 接続文字列を確認するには、Looker の [管理] パネルで、左側のメニューの [ログ] をクリックします。次に、jdbcnoSasl などの用語でログをフィルタします。ログが次のようになります。

jdbc connect using: jdbc:hive2://<HOSTNAME>/<DATABASE_NAME>;auth=noSasl

JDBC と連携するように Impala データベースを構成する方法については、外部 Cloudera ウェブサイトのドキュメントをご覧ください。

LDAP 認証を必要とするクラスタに接続する

LDAP 認証が必要なクラスタ(Apache Sentry と Kerberos を使用するクラスタを含む)の場合、[接続設定] ページで、Looker でアクセスするスキーマへのアクセス権を持つ [ユーザー名] と [パスワード] を入力します。

Kerberos で保護されたクラスタに接続するが Apache Sentry は使用しない

この接続を正しく構成するには、Looker アナリスト チームの支援が必要になる場合があります。

通常、Cloudera 環境での Kerberos 認証は、Apache Sentry を介して処理されます。詳しくは、Cloudera のドキュメントをご覧ください。

Kerberos 認証を使用して Impala データベースに直接接続するように Looker を構成する場合は、このページの手順に沿って操作します。

Kerberos クライアント構成を設定する

まず、Looker マシンにいくつかのソフトウェアをインストールし、いくつかのファイルが存在することを確認します。

Kerberos クライアント

kinit を実行してみて、Looker マシンに Kerberos クライアントがインストールされていることを確認します。Kerberos クライアントがインストールされていない場合は、Kerberos クライアントのバイナリをインストールします。

たとえば、Redhat / CentOS 上では次のようになります。

sudo yum install krb5-workstation krb5-libs krb5-auth-dialog

Java 8

Java 8 を Looker マシン、および Looker ユーザーの PATHJAVA_HOME にインストールする必要があります。必要に応じて、ローカルの looker ディレクトリにインストールします。

Java Cryptography Extension
  1. Oracle ウェブサイトから Java8用の Java Cryptography Extension(JCE)をダウンロードしてインストールします。

    • Java のインストール用の jre/lib/security ディレクトリを見つけます。
    • JAR ファイル local_policy.jarUS_export_policy.jar をこのディレクトリから削除します。
    • これら 2 つのファイルは、JCE Unlimited Strength Jurisdiction Policy Files ダウンロードに含まれている JAR ファイルに置き換えます。

    JCE がインストールされていれば、Java 8 より前のバージョンの Java を使用できますが、これはおすすめしません。

  2. ~looker/.bash_profileJAVA_HOMEPATH を更新して、Java と source ~/.bash_profile の正しいインストールを指すようにするか、ログアウトして再度ログインします。

  3. java -version を使用して、Java のバージョンを確認します。

  4. echo $JAVA_HOME を使用して、JAVA_HOME 環境変数を確認します。

gss-jaas.conf

looker ディレクトリに、次の内容の gss-jaas.conf ファイルを作成します。

com.sun.security.jgss.initiate {
    com.sun.security.auth.module.Krb5LoginModule required
    useTicketCache=true
    doNotPrompt=true;
};

テストに必要な場合は、このファイルに debug=true を次のように追加できます。

com.sun.security.jgss.initiate {
    com.sun.security.auth.module.Krb5LoginModule required
    useTicketCache=true
    doNotPrompt=true
    debug=true;
};
krb5.conf

Looker を実行しているサーバーには、有効な krb5.conf ファイルも必要です。デフォルトでは、このファイルは /etc/krb5.conf にあります。別の場所にある場合は、環境(シェル環境の KRB5_CONFIG)で指定する必要があります。

これを別の Kerberos クライアント マシンからコピーしなければならない場合があります。

lookerstart.cfg

looker ディレクトリ(looker 起動スクリプトを含むディレクトリ)に以下の行を含む lookerstart.cfg というファイルを作成して、gss-jaas.conf ファイルと krb5.conf ファイルをポイントします。

  JAVAARGS="-Djava.security.auth.login.config=/path/to/gss-jaas.conf -Djavax.security.auth.useSubjectCredsOnly=false -Djava.security.krb5.conf=/etc/krb5.conf"
  LOOKERARGS=""

krb5.conf ファイルが /etc/krb5.conf にない場合、この変数も追加する必要があります。

  -Djava.security.krb5.conf=/path/to/krb5.conf

デバッグ用に、次の変数を追加します。

  -Dsun.security.jgss.debug=true -Dsun.security.krb5.debug=true

次に、./looker restart で Looker を再起動します。

Kerberos による認証

ユーザー認証
  1. krb5.conf/etc/ にない場合は、環境変数 KRB5_CONFIG を使用してその場所を指定します。

  2. コマンド klist を実行して、Kerberos チケット キャッシュに有効なチケットがあることを確認します。

  3. チケットがない場合は、kinit username@REALM または kinit username を実行してチケットを作成します。

  4. Looker で使用されるアカウントはヘッドレスであることが多いため、Kerberos から keytab ファイルを取得して認証情報を保存し、長期間使用できるようにします。kinit -k -t looker_user.keytab username@REALM などのコマンドを使用して Kerberos チケットを取得します。

チケットを自動更新する

アクティブなチケットを Kerberos チケット キャッシュに保持するために、頻繁に実行される cron ジョブを設定します。実行する頻度は、クラスタの構成によって異なります。klist は、チケットが期限切れになるまでの時間を示します。

データベースへの Looker 接続の作成

Looker の [管理者] セクションで [接続] を選択し、[新しい接続] をクリックします。

接続の詳細を次のように入力します(詳しくは、Looker をデータベースに接続のドキュメント ページをご覧ください)。

  • Name: 接続の名前。これは LookML モデルで接続を参照する仕組みです。
  • ダイアレクト: Cloudera Impala 3.1+ネイティブ ドライバを使用した Cloudera Impala 3.1+、または ネイティブ ドライバを使用した Cloudera Impala

  • ホスト: ホスト名。

  • ポート: データベース ポート(デフォルトでは 21050)。

  • データベース: モデル化されるデフォルトのスキーマ / データベース。テーブルにデータベースが指定されていない場合は、これが想定されます。

  • ユーザー名: 空白のままにします。

  • パスワード: 空白のままにします。

  • PDT を有効にする: 有効にするには、この切り替えボタンを使用して永続的な派生テーブルを有効にします。PDT が有効になると、追加の PDT 設定と [PDT オーバーライド]が [接続] ウィンドウに表示されます。

  • 一時データベース: PDT を保存するための一時スキーマ/データベース。これは事前に作成する必要があります。

  • その他の JDBC パラメータ: JDBC 文字列のその他のパラメータ。Kerberos プリンシパルを指定します(例: ;principal=impala/impala.company.com@REALM)。3 部構成のプリンシパルは標準です。最初のもの(impala)は通常サービスの名前で、最後のもの(REALM)は一般的にレルムです。

  • SSL: SSL 接続を使用する場合にオンにします。 SSL 証明書が広く認識されている認証局によって発行されておらず、カスタム証明書を使用している場合は、次のことを行う必要があります。

    • 証明書ファイルを Looker サーバーにコピーします。これは、セルフホスト型の Looker デプロイでのみ使用できます。
    • [その他の JDBC パラメータ] フィールドに次のパラメータを追加します。
  sslTrustStore=/path/to/your/trust_store.jks;trustStorePassword=yourpassword

Impala データベース用の正しい JDBC 文字列を作成する方法について詳しくは、Cloudera のドキュメントをご覧ください。

  • データベースのタイムゾーン: データベースに保存されるデータのタイムゾーン。通常は、空白のままにするか、[UTC に設定します。

サーバー名(この例では impala.company.com)にサーバーの正規名を指定し、その名前で IP アドレスの逆引き DNS ルックアップを行うことをおすすめします。ただし、サーバー名は Kerberos ドメイン コントローラに表示されているものにする必要があります。

  nslookup servername  # get canonical server name and IP address

  nslookup ipaddress  # get the canonical name back

完全修飾ドメイン名ではなく、サーバー名がホスト名に設定されている場合があります。この場合、/etc/hosts/etc/nsswitch.conf ファイルを変更して、逆引き参照が意図したとおりに解決されるようにする必要があります。

接続をテストして、正しく構成されていることを確認します。

デバッグ

リソース

PDT の権限

永続的な派生テーブル(PDT)のスクラッチ スキーマに接続するユーザーには、読み取り / 書き込み権限が必要です。

機能のサポート

一部の機能については、Looker でサポートするには、データベース言語が同じ機能に対応している必要があります。

ネイティブ ドライバを使用した Cloudera Impala

ネイティブ ドライバを使用した Cloudera Impala は、Looker 24.16 時点で、次の機能をサポートしています。

機能 サポート対象
サポート レベル
サポート対象
Looker(Google Cloud コア)
×
対称集計
×
派生テーブル
はい
永続的な SQL 派生テーブル
はい
永続的なネイティブ派生テーブル
はい
安定したビュー
はい
クエリの強制終了
はい
SQL ベースのピボット
はい
タイムゾーン
はい
SSL
はい
Subtotals
×
JDBC の追加パラメータ
はい
大文字と小文字を区別
はい
ロケーション タイプ
はい
リストのタイプ
×
パーセンタイル
×
個別のパーセンタイル
×
SQL Runner の表示プロセス
×
SQL Runner の説明テーブル
はい
SQL Runner 表示インデックス
×
SQL Runner Select 10
はい
SQL ランナーの数
はい
SQL の説明
はい
Oauth 認証情報
×
コンテキスト コメント
はい
接続プーリング
×
HLL スケッチ
×
集計認識
はい
増分PDT
×
ミリ秒
はい
マイクロ秒
はい
マテリアライズド ビュー
×
Approximate Count Distinct

Cloudera Impala 3.1+

Cloudera Impala 3.1 以降では、Looker 24.16 の時点で、次の機能をサポートしています。

機能 サポート対象
サポート レベル
サポート対象
Looker(Google Cloud コア)
はい
対称集計
はい
派生テーブル
はい
永続的な SQL 派生テーブル
はい
永続的なネイティブ派生テーブル
はい
安定したビュー
はい
クエリの強制終了
はい
SQL ベースのピボット
はい
タイムゾーン
はい
SSL
はい
Subtotals
×
JDBC の追加パラメータ
はい
大文字と小文字を区別
はい
ロケーション タイプ
はい
リストのタイプ
×
パーセンタイル
×
個別のパーセンタイル
×
SQL Runner の表示プロセス
×
SQL Runner の説明テーブル
はい
SQL Runner 表示インデックス
×
SQL Runner Select 10
はい
SQL ランナーの数
はい
SQL の説明
はい
Oauth 認証情報
×
コンテキスト コメント
はい
接続プーリング
×
HLL スケッチ
×
集計認識
はい
増分PDT
×
ミリ秒
はい
マイクロ秒
はい
マテリアライズド ビュー
×
Approximate Count Distinct

ネイティブ ドライバを使用した Cloudera Impala 3.1+

ネイティブ ドライバを使用した Cloudera Impala 3.1 以降では、Looker 24.16 時点で、次の機能をサポートしています。

機能 サポート対象
サポート レベル
サポート対象
Looker(Google Cloud コア)
×
対称集計
はい
派生テーブル
はい
永続的な SQL 派生テーブル
はい
永続的なネイティブ派生テーブル
はい
安定したビュー
はい
クエリの強制終了
はい
SQL ベースのピボット
はい
タイムゾーン
はい
SSL
はい
Subtotals
×
JDBC の追加パラメータ
はい
大文字と小文字を区別
はい
ロケーション タイプ
はい
リストのタイプ
×
パーセンタイル
×
個別のパーセンタイル
×
SQL Runner の表示プロセス
×
SQL Runner の説明テーブル
はい
SQL Runner 表示インデックス
×
SQL Runner Select 10
はい
SQL ランナーの数
はい
SQL の説明
はい
Oauth 認証情報
×
コンテキスト コメント
はい
接続プーリング
×
HLL スケッチ
×
集計認識
はい
増分PDT
×
ミリ秒
はい
マイクロ秒
はい
マテリアライズド ビュー
×
Approximate Count Distinct

次のステップ

データベースを Looker に接続した後、ユーザーのログイン オプションを構成します