Hadoop FS サポート

Hadoop FS サポートは 、 Apache Hadoop ファイルシステムインターフェイスの実装です。プラットフォームやその他の業界標準のビッグデータツールと連携して作業する機会を提供し、カスタムコードを大量に記述する必要性を軽減します。 このような例としては、次のものがあります

  • Spark での Hadoop FS サポートを使用したオブジェクト ストア レイヤーの読み取りと書き込み ( チュートリアルを参照)
  • オブジェクト ストア レイヤーを使用してデータを HERE platform に取り込みます ( チュートリアルを参照)
  • オブジェクト ストア レイヤーを、プラットフォーム、 Apache Drill 、 Presto 、 AWS EMR など、 Apache Spark 外のオープンソース処理およびアナリティクスツールに接続します。

レイヤーのサポート

Hadoop FS サポートは objectstore 、レイヤータイプでのみ利用できます。

Hadoop ファイルシステムインタフェースのサポート

次の Hadoop ファイルシステムメソッドがサポートされています。

  • String getScheme() スキーム ( スキーム ) を返し blobfsます。
  • URI getUri() たとえば、 URI を返し blobfs://hrn:here:data::olp-here:blobfs-test:test-dataます。
  • void initialize(URI name, Configuration conf) を初期化 BlobFs FileSystemします。
  • FSDataInputStream open(Path f, int bufferSize) InputStream オブジェクト ストア レイヤーに保存されているオブジェクトからデータを読み取るためのを提供します。
  • FileStatus getFileStatus(Path f) ファイルについての情報を提供します。
  • FileStatus[] listStatus(Path f) ファイルのリストとそれぞれの情報を提供します。
  • FSDataOutputStream create(Path f, FsPermission permission, boolean overwrite, int bufferSize, short replication, long blockSize, Progressable progress) OutputStream データの書き込み先となるを提供します。 パラメーター progresspermissionおよびreplication は実装されていません。
  • boolean rename(Path src, Path dst)。 パスの名前を変更します。
  • boolean delete(Path f, boolean recursive) パスを削除します recursive 。フラグが true に設定されている場合、すべてのサブディレクトリおよびファイルも削除されます。
  • boolean mkdirs(Path f, FsPermission permission) 指定したパスのディレクトリを作成します。 パラメータ permission が実装されていません。
  • void close() ファイルシステムを閉じます。

使用量

カタログ HERE リソースネーム および hrn:here:data::olp-here:blobfs-test レイヤー ID の test-data場合 blobfs://hrn:here:data::olp-here:blobfs-test:test-data、 Hadoop / Spark / Drill で使用される URL はです。

Spark

Spark アプリケーションは hadoop-fs-support 、パッケージに依存している必要があります。

val catalogHrn = "hrn:here:data::olp-here:blobfs-test"
val layerId = "test-data"

val sourcePath = s"blobfs://$catalogHrn:$layerId/source"
val destinationPath = s"blobfs://$catalogHrn:$layerId/destination"

val sourceRdd = sparkContext.textFile(sourcePath)
sourceRdd.saveAsTextFile(destinationPath)

Hadoop FS シェル

Hadoop ファイルシステムシェルを使用して、オブジェクト ストア レイヤーの内容を参照できます。 Hadoop ファイルシステムシェルでサポートされている操作は次のとおりです。

  • copyFromLocal
  • copyToLocal
  • カウント
  • CP
  • LS
  • mkdir
  • moveFromLocal
  • moveToLocal
  • MV
  • 置く
  • RM
  • rmdir
  • RMR
  • テスト
  • テキスト
  • タッチします
  • トランケート
  • 使用量
export HADOOP_CLASSPATH="hadoop-fs-support_2.12-${VERSION}-assembly.jar"
hadoop fs -mkdir blobfs://hrn:here:data::olp-here:blobfs-test:test-data/directory1
hadoop fs -cp file.txt blobfs://hrn:here:data::olp-here:blobfs-test:test-data/directory1
hadoop fs -ls blobfs://hrn:here:data::olp-here:blobfs-test:test-data/directory1

Hadoop の設定

BlobF は、次の Hadoop 設定をサポートしています。

  • fs.blobfs.multipart.part-upload-parallelism BlobF は、オブジェクトをさまざまなパーツに分割し、オブジェクトストアの複数パーツのアップロード機能を使用して、オブジェクトをアップロードします。 この設定では、 1 つのオブジェクトの部品を同時にアップロードできる数を定義します。 許可されている最小の並列処理数はです 1。 デフォルト値はです 2。 並列処理の増加によってアップロード速度が向上する可能性があり、アップロードされた各パーツがメモリにバッファされるため、コストが高くなります。
  • fs.blobfs.multipart.part-size アップロードされたオブジェクトの各部分のサイズ ( バイト単位 ) 。 許可されている最小パーツサイズはです 5242880。 許容される最大パーツサイズはです 100663296。 デフォルト値はです 100663296

認証

HERE Credentials の設定方法については 、「資格情報を取得する」を参照してください。

さらに、 HERE Credentials は Hadoop 設定として渡すこともできます。

  • fs.blobfs.accessKeyId HERE アクセスキー ID 。 この設定は here.access.key.id 、の設定と同じ credentials.propertiesです。
  • fs.blobfs.accessClientId HERE クライアント ID 。 この設定は here.client.id 、の設定と同じ credentials.propertiesです。
  • fs.blobfs.accessKeySecret HERE アクセスキーシークレット。 この設定は here.access.key.secret 、の設定と同じ credentials.propertiesです。
  • fs.blobfs.accessEndpointUrl HERE トークンエンドポイント URL 。 この設定は here.token.endpoint.url 、の設定と同じ credentials.propertiesです。

Hadoop インストールの設定

EMR

EMR で実行するには configurations、追加のパラメータを使用して EMR クラスタを作成する必要があります(例:)

aws emr create-cluster \
  --name "$cluster_name" \
  --release-label "emr-5.17.0" \
  --applications Name="Spark" \
  --region ${region} \
  --log-uri ${log_location} \
  --instance-type "m4.large" \
  --instance-count 4 \
  --service-role "EMR_DefaultRole" \
  --ec2-attributes KeyName="some-key",InstanceProfile="EMR_EC2_DefaultRole",AdditionalMasterSecurityGroups="sg-xxxx",AdditionalSlaveSecurityGroups="sg-xxxxx",SubnetId="subnet-xxxx" \
  --configurations file://emr-config.json

emr-config.json ファイルの内容は次のとおりです。

[
  {
    "Classification": "core-site",
    "Properties": {
      "fs.blobfs.impl": "com.here.platform.data.client.hdfs.DataServiceBlobHadoopFileSystem"
    }
  }
]

スタンドアロンの Hadoop インストール

  • BlobFS Fat jar を Hadoop クラスパスに含める必要があります。
  • core-site.xml 場合によっては、ファイルに次のプロパティを追加する必要があります。
  <property>
    <name>fs.blobfs.impl</name>
    <value>com.here.platform.data.client.hdfs.DataServiceBlobHadoopFileSystem</value>
  </property>

ドリル

BlobFS Fat jar を Hadoop クラスパスに含める必要があります。

メモ

オブジェクトストアは真のファイルシステムではありません。 オブジェクトストアは分散キー値ストアであるため、ファイルシステムとはまったく同じように動作しません。 ファイルシステムは delete 、やなどの操作 rename がアトミックであることを前提としています。 オブジェクトストアの場合、これらの操作は最終的に完了します。 ファイルシステムでは、ファイルの読み取り時または書き込み時に、ファイルの内容を変更しないか、またはファイルを削除しないことを想定しています。 Object Store では、この動作は保証されていません。 このような行動の違いについては、ご自身で予防措置を講じる必要があります。

Hadoop FS サポートは、 Hadoop ファイルシステムバージョン 2.7.3 を実装します。 BlobFS は 2.9.x までの Hadoop バージョンで動作する可能性が高くなりますが、動作保証はありません。 Hadoop バージョン 3.x.x はまだサポートされていません。

HERE リソースネーム との互換性の問題。 BlobF では、 URI の権限として HERE リソースネーム が必要です。 一部のツールでは、 HRNS の誤った URI が作成されます。 このような状況を回避するには、 HERE リソースネーム の 16 進値を URI の権限として渡すこともできます。 カタログ HERE リソースネーム および hrn:here:data::olp-here:blobfs-test レイヤー ID の test-data場合、次のようになります。

val hrnHex = Hex.encodeHexString("hrn:here:data::olp-here:blobfs-test:test-data".getBytes)
val blobFsUri = "blobfs://$hrnHex"

Hadoop FS サポートは Apache Flink をサポートしていません。

」に一致する結果は 件です

    」に一致する結果はありません