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とマルチクラウドは欠かせない技術です。
弊社へのお問合わせはこちらからどうぞ

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

【Tips】ファネル機能について前のページ

Sansanで名刺を取り込んだらSlackで社内共有する(Zapier利用)次のページ

ピックアップ記事

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

関連記事

  1. Google Analytics

    Cloud FunctionsとOpenWeather APIを使ってGoogle Analytic…

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

  2. Google BigQuery

    BigQueryのユーザー定義関数(UDF)をTableauで使う

    こんにちは、エクスチュアの渡部です。今回はTableauでstan…

  3. Adobe Analytics

    Adobe AnaltyicsとGoogle Analytics の「生Webビーコン」をBigQu…

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

  4. Google Cloud Platform

    GCSへのSnowflake Open Catalogによるデータレイクハウス導入チュートリアル

    はじめにこんにちは、エクスチュアの石原です。今回は1…

  5. GA 360 Suite

    GoogleDataStudio:複数のデータソースにフィルターを適用する

    こんにちは。エクスチュアの渡部です。今回はDataStudio(デ…

  6. Google Cloud Platform

    Vertex AIのベクトル検索によってブログの検索エンジンを作成してみた

    はじめにこんにちは、石原と申します。こちらの記事は前…

カテゴリ
最近の記事
  1. 真打ち登場LOD ~TableauのFIXED関数を知ろう~…
  2. 真打ち登場LOD ~Tableauで苦戦するアイツを知ろう~…
  3. モック作成が面倒で “楽” した話
  4. Fivetranからdbtプロジェクトを実行する
  5. Account Engagementで送るメールをマルチエー…
  1. Google Tag Manager

    GTMで複数のコンテナに同じ実装をしたい
  2. ObservePoint

    機会損失を未然に防ぐ!ユーザエクスペリエンスシミュレーター”WebJ…
  3. Databricks

    databricks:GCPで利用を開始する
  4. Adobe Analytics

    訪問別滞在時間とは-Adobe Analyticsの指標説明
  5. Mouseflow

    ヒートマップ活用法
PAGE TOP