QJMとHDFSの高可用性高可用性(HA)

 

可用性とは何か:

1.サービスを継続する能力が。

           2.故障の故障シングルポイントのシングルポイントを回避するために、SPOF

障害迂回

災害復旧

障害tolerent

フォールトトレランス

 

HAを実現する2つの方法をHadoopの

クォーラムジャーナルマネージャを1.Using(QJM)

ネットファイルシステムを2.NFS

3.QJMアーキテクチャ

          同時に、唯一つのアクティブノード2つのNNを設定し、他方が待機状態(スタンバイ)です。

          スタンバイの役割は、災害復旧用に準備する状態データの十分な数を維持することです。

           アクティブおよびスタンバイノードは、2つの別個のデーモン・ノード(JournalNodes)を同期

            伝えます

            アクティブな名前空間の修正は、スタンバイJNから読み出され、一次バージョンJNに記録されます

            災害が発生した場合、

            、その後、確実にするためにノードの名前のように、アクティブ状態に切り替え読みスタンバイ編集データのすべてのことを確認してください

            状態は同期です。

            迅速なディザスタリカバリを実現するために、スタンバイブロックはそう、すべてのデータノードの情報を持っている必要があります

            すべてのデータ

           2つのノードは2つの名前のノードを送信するために、ノード名、リアルタイムの心拍数情報を設定する必要があります

           脳分割(スプリットブレイン):アクティブ状態の二つのノードに名前を付けます。この、JN同じ時間を防止するため、

           NNは、災害が発生した場合、書き込みNN JNを引き継ぐアクティブ駅となって作家としてだけ刻ま

            他のアクティブな書き込みを防ぎます

 

4.QJM災害トレランス構成(コア:シェア編集ログ

        1.ハードウェアリソース:

                           複数個。NNホスト

                           B。複数のJN

                              JNは、軽量プロセスであり、そして他のデータノードは、同じホスト上にある少​​なくとも三つのJNのノードを構成することができます。

                           cお願い:.スタンバイ]はまた、それ以外の場合はエラーになり、動作するようにチェックポイントを実行しているので、2NNを設定することはできません

         2.展開(公式ドキュメントを参照するようにApache):

                            ネームサービスIDがNNの複数で構成されています

                            構成の詳細[HDFS-site.xmlの]

                            

1.dfs.nameservices
<property>
<!-- 名称服务逻辑名称 -->
  <name>dfs.nameservices</name>
  <value>mycluster</value>
</property>


2.dfs.ha.namenodes.[nameservice ID]
<property>
<!-- 名称节点逻辑名称,2.x版本只允许两个名称节点 -->
  <name>dfs.ha.namenodes.mycluster</name>
  <value>nn1,nn2</value>
</property>
Note: Currently, only a maximum of two NameNodes may be configured per nameservice.


 3.dfs.namenode.rpc-address.[nameservice ID].[name node ID] 
<!-- 名称节点远端过程调用地址 -->
<property>
  <name>dfs.namenode.rpc-address.mycluster.nn1</name>
  <value>s101:8020</value>
</property>
<property>
  <name>dfs.namenode.rpc-address.mycluster.nn2</name>
  <value>s102:8020</value>
</property>


4.dfs.namenode.http-address.[nameservice ID].[name node ID]
<!-- 名称节点WEBUI地址 -->
<property>
  <name>dfs.namenode.http-address.mycluster.nn1</name>
  <value>s101:50070</value>
</property>
<property>
  <name>dfs.namenode.http-address.mycluster.nn2</name>
  <value>s102:50070</value>
</property>


5.dfs.namenode.shared.edits.dir
<!-- 共享日志目录地址 -->
<property>
  <name>dfs.namenode.shared.edits.dir</name>
  <value>qjournal://s103:8485;s104:8485;s105:8485/mycluster</value>
</property>

6.dfs.client.failover.proxy.provider.[nameservice ID]
<!-- 客户端容灾代理供应商就,客户端通过该类判断哪个NN是active状态 -->
<!-- 固定值 -->
<property>
  <name>dfs.client.failover.proxy.provider.mycluster</name>
  <value>org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider</value>
</property>

7.dfs.ha.fencing.methods 
<!-- 当容灾发生时,对active的保护方法 -->
<property>
      <name>dfs.ha.fencing.methods</name>
      <value>sshfence</value>
    </property>

    <property>
      <name>dfs.ha.fencing.ssh.private-key-files</name>
      <value>/home/exampleuser/.ssh/id_rsa</value>
    </property>

8.Fs.defaultFS
[core-site.xml]
<!-- 配置文件系统的主机 -->
<property>
  <name>fs.defaultFS</name>
  <value>hdfs://mycluster</value>
</property>

9.dfs.Journalnode.Editor s.dir
[hdfs-site.xml]
<!-- JournalNode编辑日志的绝对路径 -->
<property>
  <name>dfs.journalnode.edits.dir</name>
  <value>/path/to/journal/node/local/data</value>
</property>

 

 

おすすめ

転載: blog.csdn.net/qq_29082603/article/details/95315292