1. ホーム
  2. Hadoop

Hadoopデータディレクトリの移行

2022-02-20 19:40:19
<パス

Hadoopデータディレクトリの移行

(Hadoop)


データを取り込み続けて大きくなると、元のクラスタ展開ではディレクトリのディスク容量が足りなくなるので、データとプログラムを分離して互いに影響し合わないようにするという意図も加えて、hadoopがデータを保存する場所を別の巨大ディスクに移動させることが重要なのです。

ここでは、移行の手順と注意点を説明します。

始める前にクラスタを停止し、hbaseがある場合はそれも停止します。hbaseのストレージはhdfsに依存しており、停止せずにhbaseのディレクトリマイグレーションを行うとエラーが発生するためです。

設定ファイルの修正

hadoopの最も重要なストレージデータの設定は、core-site.xmlファイルに設定されています。core-site.xml の hadoop.tmp.dir の値を新しいディスクへのパスに変更するだけです。

データとプログラムの分離を考え、ログファイル、pidディレクトリ、journalディレクトリなど、今後も増え続けるファイルは全て移行することにしました。

ジャーナルとpidディレクトリはhadoop-env.shで設定され、対応するディスクパスとしてexport HADOOP_PID_DIRとHADOOP_LOG_DIRが設定されています。

hdfs-site.xmlのconfigure dfs.journalnode.edits.dirでjournalディレクトリを指定します。

同様に、yarnとhbaseのログとpidファイルのパスは、*_env.shファイルのエクスポートで設定できます。

Hadoopの設定ファイルを変更したら、hbase/confディレクトリにコピーしてください。

hbaseのログファイルやpidディレクトリは、hbase-daemon.shのHBASE_PID_DIR、HBASE_LOG_DIRで設定します。

sparkのログファイルのpidディレクトリは、spark-env.shのSPARK_PID_DIR, SPARK_LOG_DIRにあります。

設定ファイルを修正後、各子ノードにコピーします。

そして、元のデータディレクトリ、ログディレクトリ、pidディレクトリを新しいディスクに移動し、クラスタを再起動し、出力情報が正しいかどうかを確認します。

を更新します。

hdfs-site.xml の設定が更新されました。

dfs.name.dir  

/data2/hadoop/hdfs/name  


dfs.data.dir  

/data2/hadoop/hdfs/data  


は、hdfsのメタデータ情報とデータがそれぞれ格納されるディレクトリで、設定されていない場合はデフォルトでhadoop.tmp.dirに格納されます。

hdfs システムのフォーマット後、hbase は例外的に起動し、HMaster は自動的に終了します。

ログメッセージです。

2016-01-15 14:01:38,231 DEBUG [MASTER_SERVER_OPERATIONS-zx-hadoop-210-11:60000-4] master.DeadServer: Finished processing zx-hadoop-210-24 ,60020,1452828414814
2016-01-15 14:01:38,231 ERROR [MASTER_SERVER_OPERATIONS-zx-hadoop-210-11:60000-4] executor.EventHandler: Caught throwable while processing event M_SERVER_SHUTDOWN
java.io.IOException: failed log splitting for zx-hadoop-210-24,60020,1452828414814, will retry
        at org.apache.hadoop.hbase.master.handler.ServerShutdownHandler.resubmit(ServerShutdownHandler.java:322)
        at org.apache.hadoop.hbase.master.handler.ServerShutdownHandler.process(ServerShutdownHandler.java:202)
        at org.apache.hadoop.hbase.executor.EventHandler.run(EventHandler.java:128)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
        at java.lang.Thread.run(Thread.java:745)
Caused by: java.io.IOException: error or interrupted while splitting logs in [hdfs://ns1/hbase/WALs/zx-hadoop-210-24,60020,1452828414814- splitting] Task = installed =
 1 done = 0 error = 0
        at org.apache.hadoop.hbase.master.SplitLogManager.splitLogDistributed(SplitLogManager.java:362)
        at org.apache.hadoop.hbase.master.MasterFileSystem.splitLog(MasterFileSystem.java:410)
        at org.apache.hadoop.hbase.master.MasterFileSystem.splitLog(MasterFileSystem.java:384)
        at org.apache.hadoop.hbase.master.MasterFileSystem.splitLog(MasterFileSystem.java:282)
        at org.apache.hadoop.hbase.master.handler.ServerShutdownHandler.process(ServerShutdownHandler.java:195)
        ... 4 more
2016-01-15 14:01:38,232 INFO [master:zx-hadoop-210-11:60000-EventThread] zookeeper.ClientCnxn: EventThread shut down
2016-01-15 14:01:38,232 INFO [master:zx-hadoop-210-11:60000.oldLogCleaner] zookeeper.ZooKeeper: Session: 0x25243ddd648000a closed
2016-01-15 14:01:38,232 DEBUG [MASTER_SERVER_OPERATIONS-zx-hadoop-210-11:60000-4] master.DeadServer: Finished processing zx-hadoop-210-22 ,60020,1452828414925
2016-01-15 14:01:38,233 ERROR [MASTER_SERVER_OPERATIONS-zx-hadoop-210-11:60000-4] executor.EventHandler: Caught throwable while processing event M_SERVER_SHUTDOWN
java.io.IOException: Server is stopped
        at org.apache.hadoop.hbase.master.handler.ServerShutdownHandler.process(ServerShutdownHandler.java:183)
        at org.apache.hadoop.hbase.executor.EventHandler.run(EventHandler.java:128)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
        at java.lang.Thread.run(Thread.java:745)
2016-01-15 14:01:38,338 DEBUG [master:zx-hadoop-210-11:60000] catalog.CatalogTracker: Stopping catalog tracker org.apache.hadoop.hbase. catalog.CatalogTracker@6c4b58f0
2016-01-15 14:01:38,338 INFO [master:zx-hadoop-210-11:60000] client.HConnectionManager$HConnectionImplementation: Closing zookeeper sessionid=0x15243ddd6340004
2016-01-15 14:01:38,343 INFO [master:zx-hadoop-210-11:60000] zookeeper.ZooKeeper: Session: 0x15243ddd6340004 closed
2016-01-15 14:01:38,343 INFO [master:zx-hadoop-210-11:60000-EventThread] zookeeper.ClientCnxn: EventThr

解決方法

<ブロッククオート
  • 1. zookeeperのbinディレクトリに移動します。
  • 2. $sh zkCli.shを実行します。
ls /
rmr /hbase
quit

hbaseを再起動します。

作者 ハック