0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

HDFS同士のデータコピーをやってみた。

Last updated at Posted at 2026-01-17

はじめに

これまで構築したHDFS同士のデータコピーを実施してみました。

ここまでHDFSのストリーミングレプリケーション,Hiveメタデータコピーも合わせ、
データ移行についても確認することできました。

以下の内容でシステム構築していること。

構成

SRC:hdfs://cluster1/data/kafka/syslog_curated

クラスタ化したHDFS利用

DST: hdfs://hdptest:9000/data/kafka/syslog_curated

単体HDFS利用

それぞれのHDFSでユーザー/グループが揃っていること。

1. HDFS操作確認

以下のコマンドでope1からお互いのHDFSにアクセスできることを確認する。

ope1:

sudo -u hadoop hdfs dfs -fs hdfs://cluster1 -ls /data/kafka/syslog_curated | head
sudo -u hadoop hdfs dfs -fs hdfs://hdptest:9000 -ls /data/kafka/syslog_curated | head

2. ope1によるHDFSコピー準備

ope1:

sudo mkdir -p /var/lib/hadoop/tmp/mapred/staging
sudo mkdir -p /var/lib/hadoop/tmp/mapred/local

sudo chown -R hadoop:hadoop /var/lib/hadoop/tmp
sudo chmod 1777 /var/lib/hadoop/tmp
sudo chmod 1777 /var/lib/hadoop/tmp/mapred/staging
sudo chmod 1777 /var/lib/hadoop/tmp/mapred/local

3. distcpによるHDFSコピー実施

同期の場合、"-update -delete"で行っているが、
現行のDST中身を消さず差分をコピーしたい場合"-update"にすること。
"-p"についてもユーザー権限が異なる場所に入れる場合は外すこと。

ope1:

sudo -u hadoop hadoop distcp -p -update -delete \
  hdfs://cluster1/data/kafka/syslog_curated \
  hdfs://hdptest:9000/data/kafka/syslog_curated
sudo -u hadoop hdfs dfs -fs hdfs://hdptest:9000 -ls /data/kafka/syslog_curated | head

4. Mapreduceを使用したコピーの実施

大量のデータ扱いなどある際は本手順を実施する。
ope1が接続しているYARNクラスタのMapReduceを使う

4.1. 事前確認

ope1:

  • RMに到達できるか
yarn node -list 2>/dev/null | head || true
yarn application -list 2>/dev/null | head || true

エラーが出ないこと。
ここで見える情報がMapreduceを稼働する場所になります。

  • HDFS(src/dst)にも読めるか最終確認
hdfs dfs -fs hdfs://cluster1 -ls /data/kafka/syslog_curated | head
hdfs dfs -fs hdfs://hdptest:9000 -ls /data/kafka/syslog_curated | head

4.2. Mapreduceを使用したコピーの実施

同期の場合、"-update -delete"で行っているが、
現行のDST中身を消さず差分をコピーしたい場合"-update"にすること。
"-p"についてもユーザー権限が異なる場所に入れる場合は外すこと。
"-m"は多重度を示します。

ope1:

distcpを使用したデータコピーの実施(Mapreduce使用)

sudo -u hadoop hadoop distcp \
  -Dmapreduce.job.queuename=default \
  -Dyarn.app.mapreduce.am.resource.mb=384 \
  -Dyarn.app.mapreduce.am.command-opts='-Xmx256m' \
  -Dmapreduce.am.resource.mb=384 \
  -Dmapreduce.am.command-opts='-Xmx256m' \
  -Dmapreduce.map.memory.mb=384 \
  -Dmapreduce.map.java.opts='-Xmx256m' \
  -Dmapreduce.map.cpu.vcores=1 \
  -m 2 \
  -p -update -delete \
  hdfs://cluster1/data/kafka/syslog_curated \
  hdfs://hdptest:9000/data/kafka/syslog_curated

コピー実施確認

sudo -u hadoop hdfs dfs -fs hdfs://hdptest:9000 -ls /data/kafka/syslog_curated | head
sudo -u hadoop hdfs dfs -fs hdfs://cluster1 -ls /data/kafka/syslog_curated | head
0
0
4

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?