Azure

Google Cloud StorageとAzure Blob Storage間でファイルを並列コピー

こんにちは、エクスチュアの權泳東(権泳東/コン・ヨンドン)です。

今回はGCSとAzure Blob間でファイルを並列コピーする方法についてです。

GCS <=> S3はTransferサービスがありますが、GCS <=> Blobはお手軽に使えるダイレクトなものがありません。

というわけで、コマンドラインでササっと片付けました。

1. VMインスタンスを作成する

GCPまたはAzure上にVMインスタンスを用意します。
私はAzureのVMで東日本リージョンにUbuntuインスタンスを1台立ててるので、今回はそれを使います。

2. VMに必要なツール類をインストールする

GCS -> Blobにファイルをコピーするにあたって使ったツール類は以下のものです。
それぞれ手順に従ってインストールします。

Azure CLI
blobfuse
Google Cloud SDK
Cloud Storage FUSE
GNU Parallel ※aptでインストール可

3. BlobとGCSをUbuntuにマウントする

上記でインストールしたblobfuseとgcsfuseを使って、BlobとGCSをホームディレクトリ配下にマウントします。
~/blob と ~/gcs にそれぞれマウントしました。

blobfuse

$ blobfuse ~/blob --tmp-path=/mnt/blobfusetemp --config-file=/home/hoge/fuse_connection.cfg -o attr_timeout=240 -o entry_timeout=240 -o negative_timeout=120

fuse_connection.cfgの中身はこのようになってます。

accountName ストレージアカウント名
accountKey アカウントキー
containerName Blobコンテナ名

gcsfuse

$ gcsfuse mygcsbucketname ~/gcs

4. GNU Parallelを使って並列コピーする

それぞれFUSEを使ってファイルシステムにマウントしたので、あとはcpコマンドなりrsyncで同期する事も出来ますが、ファイルが沢山あるので今回はparallelを使って並列コピーしました。
このように使います。

$  ls gcs/*.csv | parallel -X -r -j10 cp -v {} ~/blob

これで、gcs内のCSVファイルを同時に10ファイルずつblobにコピーします。

上記で使ったparallelコマンドのオプションですが、

-X … 引数の置き換え。パイプで渡された入力と{}を置き換えます。
-r … 標準入力が空白だけだったら無視。
-j … 同時実行のジョブ数。デフォルトはCPUコア数なので、CPU以上の数を同時実行したい場合は-jの後ろに同時実行数をつける。

というわけで、GCSとBlobをVMにマウントしてparallelで同時コピーというお手軽解決策でした。

弊社ではデジタルマーケティング領域とビッグデータ領域にまたがる分析業務を主に行っておりまして、この分野ではLinuxとマルチクラウドは欠かせない技術です。
弊社へのお問合わせはこちらからどうぞ

ブログへの記事リクエストはこちらまで

ピックアップ記事

  1. 最速で理解したい人のためのIT用語集

関連記事

  1. Adobe Analytics

    Adobe Analyticsに入り切らないデータをBigQueryに投入する

    こんにちは、エクスチュアの權泳東(権泳東/コン・ヨンドン)です。…

  2. Google Cloud Platform

    【GCP】Cloud Workflowsでデータパイプラインの構築を試してみた①概要編

    こんにちは、エクスチュアの黒岩と申します。エクスチュアブログ…

  3. Google Cloud Platform

    Google Compute Engine のLinuxVMにVNC接続する

    こんにちは、エクスチュアの權泳東(権泳東/コン・ヨンドン)です。…

  4. Google BigQuery

    Big QueryでWindow関数を用いて、累積和を計算する

    こんにちは。エクスチュアでインターンをさせて頂いている中野です。…

  5. Firebase Analytics

    Firebase AnalyticsのデータをフラットなCSVに変換するETL処理

    こんにちは、エクスチュアの權泳東(権泳東/コン・ヨンドン)です。…

  6. Adobe Analytics

    Azure DatabricksでAdobe AnalyticsのDatafeedを分析する

    こんにちは、エクスチュアの權泳東(権泳東/コン・ヨンドン)です。…

最近の記事

  1. LangChainのソースコードから実装を見てみる(Chat…
  2. Tableau×Teams連携
  3. AIを使ったマーケティングゲームを作ってみた
  4. Snowflakeや最新データ基盤が広義のマーケティングにも…
  5. 回帰分析はかく語りき Part3 ロジスティック回帰
  1. Google Analytics

    Google Analytics クエリパラメータ除外方法
  2. IT用語集

    スコアリング(Scoring)って何?
  3. Python

    市区町村一覧・自治体の一覧を取得する
  4. Python

    Streamlitを使った簡単なデータアプリケーション作成ガイド
  5. Google Cloud Platform

    GCSへのSnowflake Open Catalogによるデータレイクハウス導…
PAGE TOP