CentOS 9とHadoop 3.1.1を使用して、パーソナルコンピュータにHadoop擬似クラスタを構築しています。私はhadoopのインストールを終えて少し遊んでいましたが、すべてが大丈夫です。後でjpsを実行したときにnamenodeデーモンは実行されませんでした。そのため、Googleで検索したガイドに従って、namenodeとdatanodeディレクトリを削除して再作成し、「hadoop namenode -format」を実行してから、namenode(およびdatanode)デーモンが実行されました。ただし、ネームノードをフォーマットする前にデータをインポートするために使用される「hdfs dfs -ls」を使用して、hdfsに保存されているデータをインポートすることはできません。
私が知っている限り、namenodeをフォーマットすると、namenode VERSIONファイルに新しい名前空間IDとクラスタIDが生成されるため、hdfsから古いデータを取得できません。
そして、データ復旧方法も知りたいです。
以下を試しましたが、動作しません。
- データノードがハートビートを送信してネームノードに報告するので、ネームノードがメタデータを構築すると仮定し、データノードVERSIONファイルのClusterID値をネームノードVERSIONファイルに置き換えます。しかし、これは役に立ちません。
データ復旧に関する提案はありますか?
答え1
データを回復できない可能性があります。
あなたが言ったように:
namenodeディレクトリとdatanodeディレクトリを削除して再作成した後、「hadoop namenode -format」を実行しました。
基本的には:
- ネームノードディレクトリからメタデータ(データが保存されている場所に関する情報)を消去する
- データノードディレクトリに保存されている実際のデータを消去します。
- 新しい名前空間IDを作成しました。
関連コンテンツをもっと見るhttps://stackoverflow.com/questions/27143409/what-the-command-hadoop-namenode-format-will-do