このページでは、Hadoop ワークロードに階層型名前空間対応バケットを使用する方法について説明します。
概要
階層型名前空間で Cloud Storage バケットを使用する場合は、Hadoop、Spark、Hive などのワークロードでフォルダの名前変更オペレーションを使用するように Cloud Storage コネクタを構成します。
階層型名前空間のないバケットでは、Hadoop、Spark、Hive での名前変更オペレーションに複数のオブジェクトのコピージョブと削除ジョブが含まれるため、パフォーマンスと整合性に影響します。Cloud Storage コネクタを使用してフォルダの名前を変更すると、多数のオブジェクトを含むフォルダを処理する際のパフォーマンスが最適化され、整合性が確保されます。
始める前に
階層名前空間バケットの機能を使用するには、次の Cloud Storage コネクタ バージョンを使用します。
- 2.2.23 以降(バージョン 2.x.x を使用している場合)
- 3.0.1 以降(バージョン 3.x.x を使用している場合)
以前のコネクタ バージョン(3.0.0 および 2.2.23 以前)には制限があります。制限事項の詳細については、Cloud Storage コネクタ バージョン 3.0.0 または 2.2.23 より前のバージョンとの互換性をご覧ください。
クラスタで Cloud Storage コネクタを有効にする
このセクションでは、Dataproc クラスタとセルフマネージド Hadoop クラスタで Cloud Storage コネクタを有効にする方法について説明します。
Dataproc
Google Cloud CLI を使用して Dataproc クラスタを作成し、Cloud Storage コネクタでフォルダ オペレーションを実行できます。
次のコマンドを使用して Dataproc クラスタを作成します。
gcloud dataproc clusters create CLUSTER_NAME --properties=core:fs.gs.hierarchical.namespace.folders.enable=true, core:fs.gs.http.read-timeout=30000
ここで
CLUSTER_NAME
はクラスタ名です。例:my-cluster
。fs.gs.hierarchical.namespace.folders.enable
は、バケットで階層型名前空間を有効にするために使用されます。fs.gs.http.read-timeout
は、確立された接続からデータを読み取るために許容される最大時間(ミリ秒単位)です。この設定は省略できます。
セルフマネージド Hadoop
セルフマネージド Hadoop クラスタで Cloud Storage コネクタを有効にして、フォルダ オペレーションを実行できます。
core-site.xml 構成ファイルに次の内容を追加します。
<property> <name>fs.gs.hierarchical.namespace.folders.enable</name> <value>true</value> </property> <property> <name>fs.gs.http.read-timeout</name> <value>30000</value> </property>
ここで
fs.gs.hierarchical.namespace.folders.enable
は、バケットで階層型名前空間を有効にするために使用されます。fs.gs.http.read-timeout
は、確立された接続からデータを読み取るために許容される最大時間(ミリ秒単位)です。この設定は省略できます。
Cloud Storage コネクタ バージョン 3.0.0 または 2.2.23 より前のバージョンとの互換性
Cloud Storage コネクタ バージョン 3.0.0 または 2.2.23 より前のバージョンを使用するか、階層型名前空間のフォルダ オペレーションを無効にすると、次の制限が生じる可能性があります。
効率の悪いフォルダ名変更: Hadoop でのフォルダ名変更オペレーションは、オブジェクト レベルのコピーと削除のオペレーションを使用して行われます。これは、専用の
rename folder
オペレーションよりも遅く、効率が低くなります。空のフォルダの蓄積: フォルダ リソースが自動的に削除されないため、バケットに空のフォルダが蓄積されます。空のフォルダが蓄積すると、次のような影響が生じる可能性があります。
- 明示的に削除しないと、ストレージ コストが増加します。
リスト オペレーションの速度が低下し、リスト オペレーションのタイムアウトのリスクが高まります。
互換性の問題: 古いバージョンと新しいバージョンのコネクタを混在して使用する、またはフォルダ オペレーションを有効または無効にすると、フォルダ名を変更する際に互換性の問題が発生する可能性があります。コネクタ バージョンの組み合わせを使用する次のようなシナリオについて検討してみます。
2.2.23 より前のバージョンの Cloud Storage コネクタを使用して、次のタスクを行います。
- フォルダ
foo/
の下にオブジェクトを書き込みます。 - フォルダ
foo/
の名前をbar/
に変更します。名前変更オペレーションは、foo/
のオブジェクトをコピーして削除しますが、空のfoo/
フォルダは削除しません。
- フォルダ
フォルダ オペレーションの設定を有効にして Cloud Storage コネクタ バージョン 2.2.23 を使用し、フォルダ
bar/
の名前をfoo/
に変更します。
フォルダ オペレーションが有効になっているコネクタ バージョン 2.2.23 は、既存の
foo/
フォルダを検出するため、名前変更オペレーションが失敗します。以前のコネクタ バージョンでは、フォルダ オペレーションが無効にされていたため、foo/
フォルダは削除されませんでした。
次のステップ
使ってみる
Google Cloud を初めて使用する場合は、アカウントを作成して、実際のシナリオでの Cloud Storage のパフォーマンスを評価してください。新規のお客様には、ワークロードの実行、テスト、デプロイができる無料クレジット $300 分を差し上げます。
Cloud Storage を無料で試す