Hadoopのバージョンアップ(2.7.6 => 3.1.2)

    ホスト上の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のアップグレードへの鍵となりますが、データの損失をアップグレードする場合は、他のアップグレードが無意味になり、アップグレードです。

  ソリューション:

  1. HDFS名前ノードのメタデータのバックアップは、アップグレード後、アップグレード前と後のファイルの情報を比較します。
  2. 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.76 / 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权威指南(第四版)》

       https://hadoop.apache.org/docs/r3.0.0/hadoop-project-dist/hadoop-hdfs/HdfsRollingUpgrade.html#Upgrade_with_Downtime

おすすめ

転載: www.cnblogs.com/luengmingbiao/p/11324801.html