Object Storage + Sub Account の連携

Prev Next

Classic環境で利用できます。

NAVERクラウドプラットフォームのCloud Hadoop、Object Storage、Sub Accountを連携して使用する方法を説明します。

Bigdata Service

  • Cloud Hadoop:Hadoop、HBase、Spark、Hive、Prestoなどのオープンソースフレームワークを手軽に構築できます。
    Cloud Hadoopに関する詳細は、こちらをご参照ください。

  • Object Storage:安全な保管が必要な場合や大規模なデータを保存する場合に活用できます。
    提供されるAPIを用いてサーバデータのバックアップや復旧用途でも活用できます。
    Object Storageに関する詳細は、こちらをご参照ください。

  • Sub Account:ユーザーをサブアカウントとして登録して特定サービスに対する権限を付与できます。
    登録された内部ユーザーは権限を付与されたサービスに対してメインアカウントと同様にサービスを利用できます。
    Sub Accountに関する詳細は、こちらをご参照ください。

Hadoop + Object Storage + Sub Accountの連携と使用

Sub Accountの作成とポリシーの追加

ユーザーをサブアカウントとして登録し、特定のサービスに対する権限を付与することができます。登録された内部ユーザーは権限を付与されたサービスに対してメインアカウントと同様にサービスを利用できます。

Sub Accountに関する詳細は、サービス > Management & Governance > Sub Accountをご参照ください。

Sub Accountの作成方法とポリシーを追加する方法は、以下のとおりです。

  1. NAVERクラウドプラットフォームコンソールでSub Accountsサービスを作成します。

    • Sub Accountsの作成時にObject StorageにアクセスするためのAPI Keyを使用できるように、アクセスタイプ項目にあるAPIアクセスを選択して設定します。

    cloudhadoop-subaccoun-policy1_ja

  2. Sub Accountsリストで、作成したSub Accountをクリックし、[ポリシー] タブで使用ポリシーを設定します。

    • Cloud HadoopNCP_CLOUD_HADOOP_MANAGERObject StorageNCP_OBJECT_STORAGE_MANAGERポリシーを追加します。
    • ACGの変更管理のためのNCP_SERVER_MANAGERも追加します。

    cloudhadoop-subaccoun-policy2_ja

    参考

    VPC環境では、NCP_VPC_CLOUD_HADOOP_MANAGERNCP_VPC_SERVER_MANAGERを追加してください。

  3. [API Key] タブでObject StorageにアクセスするためのAPI認証キーを作成して確認します。

    cloudhadoop-subaccoun-policy3_ja

  4. Sub Account > Dashboard > サブアカウントのログインページで、このSub Accountでアクセスします。

    cloudhadoop-subaccoun-policy4_ja

このアカウントに設定されたポリシーにより許可されたサービスのみ使用できます。

hadoop-chadoop-use-ex3_07_ja

Object Storageバケットの作成

Object Storageでデータを保存するバケットを作成します。作成されたバケットは、Bucket Managementメニューで確認できます。

cloudhadoop-objectstorage-buket1_ja

参考

バケットの作成に関する詳細は、Object Storageご利用ガイドを参照してください。

Cloud Hadoopクラスタの作成

Cloud Hadoopクラスタを作成します。
Cloud Hadoopの作成に関する詳細は、Cloud Hadoopを開始するをご参照ください。

Object Storageにサンプルデータをアップロード

  1. こちらにデータセットをダウンロードします。

    • ダウンロードしたファイルの圧縮を展開します。
  2. Object Storage > Bucket Managementでは、上記で作成したバケットに圧縮を展開したファイルをアップロードします。

データの照会

Ambari、HUE、ZeppelinなどのウェブUIでサンプルデータを照会できます。

  1. Cloud Hadoopの作成が完了すると、Ambari、HUE、ZeppelinにアクセスするためのポートをACGに追加します。

    • Ambariにアクセス(8080 port)すると、クラスタモニタリングを確認できます。

hadoop-use-ex3_4-1_ja

  1. HUEにアクセス(8000 port)してHiveクエリでmartデータベースを作成し、ordersテーブルを作成します。
CREATE DATABASE mart;
CREATE EXTERNAL TABLE `orders2` (
        `order_id` BIGINT,
        `order_number` BIGINT,
        `days_since_prior_order` DOUBLE

)
ROW FORMAT DELIMITED
FIELDS TERMINATED BY ','
STORED AS INPUTFORMAT
'org.apache.hadoop.mapred.TextInputFormat'
OUTPUTFORMAT
'org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat'
location 's3a://ncp-bigdata/input';
  1. データを照会します。
    • 画像はサンプルデータです。

hadoop-use-ex3_4-2_ja

  1. Zeppelin(9995 port)にアクセスします。

hadoop-use-ex3_4-3_ja

  1. 新規のNotebookを作成します。
  2. Hiveメタストアに登録されたordersテーブルを照会します。
    • 基本インタプリタはJDBCに指定します。
    • 例としてアップロードされたCSVファイルを対象に単純分析のみ行います。

Ordersテーブル

order_id:注文番号
order_number:注文回数
days_since_prior:最後の注文からの期間

ordersテーブルでdays_since_priorは最後の注文からどれくらい経過したのか最大30日まで表示したカラムで、order_numberはそのユーザーの注文回数です。

注文回数が増えるほど再注文までの期間が短くなると仮定し、確認してみます。

参考

Instacartで提供するデータを参考にして、例のために作った仮想のデータです。

%jdbc(hive)
SELECT order_number, AVG(days_since_prior_order)
FROM mart.orders
WHERE 1=1
AND order_number IS NOT NULL
GROUP BY order_number
ORDER BY order_number

Cloud Hadoopを使用してHUEで作成した HiveテーブルをZeppelinで照会し、チャートで可視化してみました。

hadoop-use-ex3_4-4_ja

チャートを見ると、注文回数の多い顧客は、次の注文までかかる日数が短いと解釈できます。

参考
  • Object Storageを使用すると、HDFSに比べて性能は劣りますが、クラスタの終了後にも必要に応じて再度作成して同じデータを照会できるというメリットがあります。
  • Hiveメタストアを別途分離しなかったため、新規作成時にHive DDLを実行する必要があり、Zeppelin Notebookも新規にインポート(import)する必要があります。