はじめに
これまで構築した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