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
データの書き込み先となるを提供します。 パラメーター progress
permission
および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 をサポートしていません。