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. Adobe Analytics

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

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

  2. Analytics Hub

    BigQueryでもデータクリーンルームの検証

    こんちには、喜田です。エクスチュアでは顧客のSnowflak…

  3. Get Started with Conversational Analytics API for Easy Data Analysis

    Google BigQuery

    Conversational Analytics APIでお手軽データ分析をしよう

    こんにちは、中村です。Googleから発表された、現在プレビ…

  4. Google BigQuery

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

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

  5. GitHub Actions

    GitHub ActionsでGCEへのデプロイを楽にしてみた

    はじめに今回はgithub actionsを導入する…

  6. Google Analytics

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

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

カテゴリ
最近の記事
  1. 真打ち登場LOD ~TableauのEXCLUDE関数を知ろ…
  2. DataformでactAs権限に適合する設定をする
  3. 真打ち登場LOD ~TableauのINCLUDE関数を知ろ…
  4. 真打ち登場LOD ~TableauのFIXED関数を知ろう~…
  5. 真打ち登場LOD ~Tableauで苦戦するアイツを知ろう~…
  1. Adobe Analytics

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

    Streamlit in SnowflakeによるStreamlitアプリケーシ…
  3. Adobe Analytics

    Adobe Summit 2020レポート: Implementation Ti…
  4. Tableau

    【学生向け】TableauのアカデミックプログラムでTableauが無料で使える…
  5. Adobe Analytics

    AA(Adobe Analytics)を導入しよう!
PAGE TOP