GrantForge

    プラグイン

    Apache Hadoop HDFS

    HDFS プラグインを導入・設定し、ディレクトリーの参照とパスへのアクセスポリシーを管理します。

    Apache Hadoop HDFS プラグインは、GrantForge でクラスターへの接続、パス検索、ポリシー管理を提供します。プラグイン ID とサービスタイプはどちらも hdfs です。

    インストール

    配布パッケージには plugins/hdfs にプラグインが含まれます。プラットフォーム管理 → プラグイン で hdfs が有効であることを確認し、更新後はプラグインディレクトリーを再スキャンします。

    データサービスの追加

    1. データ権限 → データサービス でサービスを追加し、HDFS(hdfs)を選択します。
    2. クラスター URI と検索ユーザーを入力します。Hadoop 2.x は webhdfs://namenode:50070、3.x は hdfs://namenode:8020 または webhdfs://namenode:9870 を使用できます。HTTPS では swebhdfs:// とクラスターの実際のポートを指定します。
    3. 検索ディレクトリーを設定し、接続をテストします。ディレクトリーの存在と一覧取得を確認してから保存します。
    設定 用途
    fs.default.name 必須のクラスター URI。サブディレクトリー、資格情報、クエリは含めません。HA では hdfs://nameservice1 と対応する追加プロパティを使用できます
    username 必須の検索ユーザー。Kerberos では grantforge@EXAMPLE.COM などの principal
    hadoop.security.authentication 既定値は simple。Kerberos クラスターでは kerberos を選択
    hadoop.security.authorization Hadoop が権限をチェックするか。既定値 false。クラスターの core-site.xml に合わせます
    hadoop.security.auth_to_local Kerberos principal をユーザー名に変換する規則。クラスターの core-site.xml に合わせます
    password / keytab Kerberos パスワード、または GrantForge サーバー上の keytab ファイルのパス
    kerberos.kdc 検索用 principal の realm の KDC。host[:port] をカンマ区切りで指定します。空の場合はサーバーの krb5.conf を使います
    dfs.namenode.kerberos.principal、dfs.datanode.kerberos.principal、dfs.secondary.namenode.kerberos.principal Kerberos クラスターの各コンポーネントの principal。nn/_HOST@EXAMPLE.COM など、クラスターの設定に合わせます
    lookup.path 検索・参照の開始ディレクトリー。既定値は /、例は /data。参照はこの配下に制限
    lookup.max.entries ディレクトリー全体の走査上限。既定値 10000、範囲 1..100000
    hadoop.config HA などの Hadoop プロパティを 1 行に 1 つの key=value で指定。同名の接続設定を上書き
    hadoop.rpc.protection クラスターに合わせて authentication、integrity、privacy を選択
    ssl.client.truststore.location swebhdfs:// の NameNode 証明書を検証するトラストストアの、GrantForge サーバー上のパス。空ならサーバーの Java が信頼する証明書を信頼します
    ssl.client.truststore.password トラストストアが保護されている場合のパスワード。暗号化して保存されます
    ssl.client.truststore.type jks(既定)または pkcs12

    Hadoop 2.7.7 で NameNode 属性拡張を有効にすると、一般ユーザーによるルートパス / の照会で上流の NullPointerException が発生することが確認されているため、lookup.path は /data などの実在するディレクトリーに設定してください(エージェントガイド参照)。

    Kerberos には到達可能な KDC、サーバーの krb5.conf、クラスターに対応する hadoop.security.auth_to_local とサービス principal も必要です。検索アカウントはディレクトリーのメタデータを取得します。6 つのバージョンラインすべての Kerberos クラスターで実際に検証済みです。各ラインで swebhdfs(サービス独自のトラストストアと SPNEGO)での検索を、3.x ではさらに RPC(keytab またはパスワード)での検索とパス参照を確認しました。誤った資格情報、トラストストアの欠如、simple クライアントはいずれも失敗し、検索用アカウントには NameNode 自身の権限が適用されます。

    Kerberos では、GrantForge は検索のたびに KDC に問い合わせず、サインインを再利用します。keytab のサインインはチケットの期限が近づくと Hadoop が更新し、パスワードのサインインはチケットの残り寿命が 5 分の 1(最低 1 分)を下回ると再度サインインします。パスワードの変更や keytab ファイルの更新でもサインインし直します。各サービスは自分のトラストストアを使い、サーバーのクラスパス上の ssl-client.xml に置き換えられることはありません。

    1 つの GrantForge から複数の Kerberos realm のクラスターに接続できます。各サービスの kerberos.kdc にその realm の KDC を指定します。realm は username の principal(例:grantforge@BETA.EXAMPLE)から取ります。GrantForge はサーバー既存の krb5.conf を取り込んだ設定を生成して各サービスの realm を追加し、次回のサインインから再起動なしで反映します。hadoop.security.auth_to_local が空の場合は、その realm の principal 用の短縮名ルールを生成します。サーバーが java.security.krb5.realm と .kdc を設定している間は使えません。2 つのサービスが同じ realm に異なる KDC を指定すると最後の検索の値が使われるため、揃えてください。realm 間の信頼は引き続きサーバーの krb5.conf で設定します。

    1 つの GrantForge では、HDFS サービスの接続テスト、検索、参照は 1 件ずつ順に実行され、並行しません。Hadoop は認証方式、auth_to_local、Kerberos のサインイン状態をプロセス全体で持つため、同時に実行すると互いに上書きしてしまうからです。各呼び出しは順番待ちの時間も含めて grantforge.plugins.call-timeout(既定 10 秒)で制限されます。サービスが多い、クラスターの応答が遅い、初回の Kerberos サインインが遅いといった場合は値を大きくしてください。

    設定は保存時に検証されます:hadoop.config の fs.defaultFS と fs.default.name はエイリアスのため、設定するのは一方だけにします。クラスター URI に資格情報、パス、クエリ、フラグメントを含めてはいけません。kerberos を選ぶ場合は password または keytab が必要です。lookup.path は .. を含まない絶対パスである必要があります。lookup.max.entries は 1 から 100000 の間である必要があります。追加プロパティは同名の接続設定を上書きし、検証とログインの両方が上書き後の値を使用します。

    パスの参照

    データ権限 → ポリシー でサービスを選び、path の横の 参照 を使用します。

    • ディレクトリーを開き、パスから移動したり親に戻ったりして、必要に応じて後続ページを読み込みます。
    • ファイル・ディレクトリーの表示、所有者、グループ、権限、ファイルサイズ、更新日時を確認します。
    • 複数のファイルやディレクトリー、または現在のディレクトリーをポリシーに追加します。パス入力による候補表示も利用できます。

    RPC と一括一覧をサポートする WebHDFS はネイティブなページ分割を使用します。古いエンドポイントは走査上限内でディレクトリーを読み取り、超過時はエラーを返します。権限、認証、接続の失敗は理由を表示し、再試行できます。

    入力では先頭の / を省略でき、連続した / と . は許可されますが、.. と lookup.path の範囲外の絶対パスは拒否されます。存在しないディレクトリーは候補を返しません。参照は HDFS 自身のアクセス制御を置き換えるものではなく、シンボリックリンクと ViewFS マウントはクラスターの設定に従います。

    ポリシーの適用

    リソース階層は path の 1 段で、アクセスタイプは read、write、execute です。パスポリシーは再帰と除外をサポートします。

    サーバープラグインは管理と検索を担当します。アクセスを制御するには Hadoop バージョンに合った NameNode エージェントも必要で、ユーザーは HDFS のネイティブ権限と GrantForge ポリシーの両方を満たす必要があります。番号付きエージェントは 2.7、2.10、3.2、3.3、3.4、3.5 向けです。検証済みの組み合わせ、認証・HA の検証範囲、スーパーユーザーの制限はエージェントガイドを参照してください。

    関連ガイド

    GitHub でこのページを編集