ホスト上のHadoopのバージョンは、疑似分散型のHadoopのテストで、いくつかの時間前にスパークにハイブを展開しますが、宿題をやっていないので、主導ハイブが起動しない、ハイブ3.xのため、2.7.6でありますバージョンは、Hadoopの2.xのバージョンに適合していません。私は学校のサーバーにデプロイする前に、Hadoopのバージョンは3.1.2で、今2.7.6から3.1.2への独自のバージョンをアップグレードすることを計画し、だけでなく、あなたの手を練習し、今後の参考のために記録されています。
これは、メジャーバージョンアップスパンであるので、第一の基準プログラムとHadoopの上Definitive Guideの公式文書、その後、アップグレードし、ロールバックするためのプログラムを開発しました。
公式文書によると、言いました:
「非HAクラスタの場合、namenodesを再起動する必要があるため、ダウンタイムなしでHDFSをアップグレードすることは不可能です。しかし、datanodesはまだローリング方式でアップグレードすることができます。「
非HAクラスタが、と言うことですためにノード名を再起動する必要性のために、HDFSは、ダウンタイムなしでアップグレードすることはできません。ただし、データノードのロールバックの道をアップグレードすることができます。
HadoopのHDFSは、アップグレードの最も重要なアップグレード、成功HDFSのアップグレードへの鍵となりますが、データの損失をアップグレードする場合は、他のアップグレードが無意味になり、アップグレードです。
ソリューション:
- HDFS名前ノードのメタデータのバックアップは、アップグレード後、アップグレード前と後のファイルの情報を比較します。
- DataNodes単一のアップグレードは、アップグレードは、ブロックの数(小さな浮動範囲、V2およびV3カウント方法は同じではない)の前と後に観察されました。
第一段階のシャットダウンとバックアップディレクトリの名前ノード
コマンドstop-yarn.shとstop-dfs.sh近いHDFSクラスタ:
#ストップ糸。SH #ストップ -dfs。SH
その後、NFSまたはその他のファイルシステムに名前ノードのバックアップディレクトリ、あなたはHDFS-site.xmlファイルを表示することができ、ディレクトリの名前ノードに格納されているアドレスを覚えていない場合:
#1のvim $ HADOOP_HOMEの/ etc / Hadoopの/ HDFS-site.xmlの
Hadoopクラスタ上で新しいバージョンのインストールの第二段階
解凍後のHadoop 3.1.2のダウンロード、最高のPATH環境変数にHadoopのスクリプトを削除するには、この場合には、スクリプトの異なるバージョンのために混同されることはありません。新しいHadoopのにHADOOP_HOMEポイント:
次$ {HADOOP_HOME}属性の/etc/hadoop/hdfs-site.xml値dfs.namenode.name.dir及びポインティングのHadoopの2.7.6 HDFS-site.xmlのをdfs.datanode.data.dir dfs.datanode.data.dir属性と値がdfs.namenode.name.dir。
ローリング・アップグレードを準備する第三段階
プロパティHDFS-site.xmlで増やします。
< プロパティ> < 名前> dfs.namenode.duringRollingUpgrade.enable </ 名前> < 値>真</ 値> </ プロパティ>
最初のHadoopの古いバージョンを起動します。
#は/ usr / local / Hadoopの/ sbinに/起動-DFS。SH
セーフモード:
#HDFS dfsadmin -safemode入力します
ローリング・アップグレードを準備します。
1.ファイル名を指定して実行ロールバック用fsimageを作成するには、「HDFS dfsadmin -rollingUpgradeは準備します」。
2.ファイル名を指定して実行「-rollingUpgradeクエリdfsadmin HDFSは、」ロールバックイメージのステータスを確認します。メッセージ「ローリングアップグレードを続行」まで、コマンドを待ってから、再実行してください。
四段目のアップグレードHDFS
1. SNNをオフにします。
#は/ usr / local / Hadoopの/ sbinに/ Hadoopのデーモン。SHの停止secondarynamenode
2.名前ノードとデータノードをオフにします。
#は/ usr / local / Hadoopの/ sbinに/ Hadoopのデーモン。SH 名前ノードの停止
# /usr/local/hadoop/sbin/hadoop-daemon.sh停止データノードを
新バージョン「-rollingUpgradeが開始」を使用してHadoopの3.オプションでは、NNを開始します。
Hadoopのディレクトリの新しいバージョンでは、その後、道の名前ノードとデータノードをアップグレードするために開始します。
#$ HADOOP_HOME / binに/ HDFSは名前ノードを開始--daemon -rollingUpgradeが開始
#$ HADOOP_HOMEは、/ binに/ HDFSはデータノードを開始--daemon
それは長くないHDFSのアップグレードにかかる時間は、データ損失のリスクが少しアップグレードです。
次のアップグレードおよびSNNを再起動します。
#$ HADOOP_HOME / binに/ HDFSを開始--daemon secondarynamenode
アップグレードが完了するのを待って、あなたがWebページを表示することができ、名前ノードとデータノードのバージョンがバージョン3.1.2にアップグレードされました:
この時点で、完全なローリングアップグレードを持つことができます。
#$ HADOOP_HOME / binに/ HDFS dfsadmin -rollingUpgradeファイナライズ
アップグレードに失敗した場合は、いつでも、ロールバックをロールバックすることができ、データはアップグレード後に、すべてが失敗し、次のステップをロールバックを開始し、データを修正し、アップグレード前のデータの瞬間にロールバックされます。
#は/ usr / hadoop- /ローカル2.7。6 / binに/ Hadoopのデーモン。SH -rollback名前ノードを開始 # /usr/local/hadoop-2.7.6/bin/hadoop-daemon.sh start datanode –rollback
遇到的问题:
参考网址: https://stackoverflow.com/questions/21369102/hadoop-command-not-found
解决方法:查找配置环境变量的文件,/etc/profile、~/.bashrc、hadoop-env.sh,发现在~/.bashrc文件中配置了HADOOP_HOME,用了旧版本的路径,删除或者更新为新的环境变量即可。
参考资料: 《Hadoop权威指南(第四版)》