Hadoopの高可用性アーキテクチャの構築

Hadoopの高可用性アーキテクチャの構築

環境を整える

3つの仮想マシンを準備し、jdk、hadoop、zookeeperをインストールします。また、シークレットフリーアクセスを構成して、Hadoop完全分散環境とZooKeeper完全分散環境がインストールされていることを確認します。

HDFS-HAクラスター構成

最初に1つの仮想マシンを構成してから、ファイルを他の仮想マシンに転送できます。ツールを使用して、3つの仮想マシンを同時に変更することもできます。次の構成ファイルの内容はすべて新しい内容であり、以前のhadoopは完全に分散され、ZooKeeperは完全に分散された構成

core-site.xmlファイルを構成します

hadoop.tmp.dirの値は、実際に対応するhadoopファイルのインストールパスを入力します

<configuration>
<!-- 把两个 NameNode)的地址组装成一个集群 mycluster -->
<property>
    <name>fs.defaultFS</name>
    <value>hdfs://hadoopHA</value>
</property>
<!-- 指定 hadoop 运行时产生文件的存储目录 -->
<property>
    <name>hadoop.tmp.dir</name>
    <value>/root/software/hadoop/data/tmp</value>   
</property>
</configuration>

hdfs-site.xmlを構成します

<configuration>
<!-- 完全分布式集群名称 -->
<property>
    <name>dfs.nameservices</name>
    <value>hadoopHA</value>
</property>
<!-- 集群中 NameNode 节点都有哪些,这里是 nn1 和 nn2 -->
<property>
    <name>dfs.ha.namenodes.hadoopHA</name>
    <value>nn1,nn2</value>
</property>
<!-- nn1 的 RPC 通信地址 -->
<property>
    <name>dfs.namenode.rpc-address.hadoopHA.nn1</name>
    <value>hadoop100:9000</value>
</property>
<!-- nn2 的 RPC 通信地址 -->
<property>
    <name>dfs.namenode.rpc-address.hadoopHA.nn2</name>
    <value>hadoop102:9000</value>
</property>
<!-- nn1 的 http 通信地址 -->
<property>
    <name>dfs.namenode.http-address.hadoopHA.nn1</name>
    <value>hadoop100:50070</value>
</property>
<!-- nn2 的 http 通信地址 -->
<property>
    <name>dfs.namenode.http-address.hadoopHA.nn2</name>
    <value>hadoop102:50070</value>
</property>
<!-- 指定 NameNode 元数据在 JournalNode 上的存放位置 -->
<property>
    <name>dfs.namenode.shared.edits.dir</name>
    <value>qjournal://hadoop100:8485;hadoop101:8485;hadoop102:8485/hadoopHA</value>
</property>
<!-- 配置隔离机制,即同一时刻只能有一台服务器对外响应 -->
<property>
    <name>dfs.ha.fencing.methods</name>
    <value>
    sshfence
    shell(/bin/true)
    </value>
</property>
<!-- 使用隔离机制时需要 ssh 无秘钥登录-->
<property>
    <name>dfs.ha.fencing.ssh.private-key-files</name>
    <value>/root/.ssh/id_rsa</value>
</property>
<!-- 声明 journalnode 服务器存储目录-->
<property>
    <name>dfs.journalnode.edits.dir</name>
    <value>/root/software/hadoop/data/jn</value>
</property>
<!-- 关闭权限检查-->
<property>
    <name>dfs.permissions.enable</name>
    <value>false</value>
</property>
<!-- 访问代理类:client,mycluster,active 配置失败自动切换实现方
式-->
<property>
    <name>dfs.client.failover.proxy.provider.hadoopHA</name>
    <value>org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider</value>
</property>
</configuration>

配置 yarn-site.xml

<configuration>
<property>
    <name>yarn.nodemanager.aux-services</name>
    <value>mapreduce_shuffle</value>
</property>
<!--启用 resourcemanager ha-->
<property>
    <name>yarn.resourcemanager.ha.enabled</name>
</property>
<!--声明两台 resourcemanager 的地址-->
<property>
    <name>yarn.resourcemanager.cluster-id</name>
    <value>cluster-yarn1</value>
</property>
<property>
    <name>yarn.resourcemanager.ha.rm-ids</name>
    <value>rm1,rm2</value>
</property>
<property>
    <name>yarn.resourcemanager.hostname.rm1</name>
    <value>hadoop100</value>
</property>
<property>
    <name>yarn.resourcemanager.hostname.rm2</name>
    <value>hadoop102</value>
</property>
<!--指定 zookeeper 集群的地址-->
<property>
    <name>yarn.resourcemanager.zk-address</name>
    <value>hadoop100:2181,hadoop101:2181,hadoop102:2181</value>
</property>
<!--启用自动恢复-->
<property>
    <name>yarn.resourcemanager.recovery.enabled</name>
    <value>true</value>
</property>
<!--指定 resourcemanager 的状态信息存储在 zookeeper 集群-->
<property>
    <name>yarn.resourcemanager.store.class</name>
    <value>org.apache.hadoop.yarn.server.resourcemanager.recovery.ZKRMStateStore</value>
</property>
</configuration>

HDFS-HAクラスターを開始します

1.zookeeperクラスターを開始します

3つの仮想マシンすべてを起動する必要があります

zkServer.sh start

2.ジャーナルノードを開始します

3つの仮想マシンすべてを起動する必要があります

注:journalnodeは、qjournal分散アプリケーション(管理に使用)の管理edit.logファイルであり、zk管理に依存しているため、zkに3つのノードノードを配置して開始します。Hadoop 2.xは、qjournalを使用してedit.logファイルを管理します。

hadoop-daemon.sh start journalnode

3. HDFSをフォーマットします(最初の起動実行のみ)

マスターノードで実行されているhadoop100

注:以前にhdfsを実行したことがある場合は、hadoophadoop.tmp.dirに対応するディレクトリを削除する必要があります。フォーマットが完了したら、新しいtmpフォルダーを他の2つの仮想マシンに配布する必要があります。

hdfs namenode -format

4. ZKFCをフォーマットします(実行を開始するのは初めて)

注:zkfcは、2つのネームノード間の切り替えプロセスを管理するために使用されます。zkに依存することによって同じことが達成されます。アクティブなネームノードのステータスが異常な場合、ネームノードのzkfcはステータスをzkに送信し、スタンバイのネームノードのzkfcは異常なステータスをチェックし、sshを介してアクティブなネームノードにコマンドを送信します。プロセスを強制終了してアクティブにリセットし、アクティブな一時停止アニメーションとスプリットブレインイベントを配置します。ssh送信が失敗した場合は、カスタム.shスクリプトファイルを開始して、アクティブなnamenodeプロセスを強制的に強制終了することもできます。

hadoop100マスターノードで次のコマンドを実行します

hdfs zkfc -formatZK

5.HDFSを開始します

hadoop100マスターノードで次のコマンドを実行します

start-dfs.sh

6.HDFSをテストします

システムのjpsコマンドを使用して、各仮想マシンのサービスステータスを表示します。
ここに画像の説明を挿入

各サービスの実行ステータスは、次のWebページで確認することもできます
。HDFS:http:// hadoop100:50070マスターノード
http:// hadoop102:50070
ここに画像の説明を挿入
ここに画像の説明を挿入
サブノード上記のnamenodeノードの後に​​hadoop100を手動で強制終了します:
ここに画像の説明を挿入
ここに画像の説明を挿入
メインノードが異常、自動的にサブノードノードに切り替わることができ、設定が完了しました!

7.YARNを開始します

hadoop100マスターノードで次のコマンドを実行します

start-yarn.sh

hadoop102サブノードで実行

yarn-daemon.sh start resourcemanager

8.テストヤーン-HA

ブラウザにスタンバイマシンhadoop102:8088と入力すると、マスターノードhadoop100:8088に自動的にジャンプし、yarn-HAが有効になっていることを証明し、実際のテストではリダイレクトを実行できないことが判明しました。ローカルコンピュータのドメイン名を認識できません。ローカルです
ここに画像の説明を挿入
コンピュータのCドライブに複数のホストファイルが存在する可能性があることに注意してください。検索はパスを区別することです。
開いた後、対応するIPアドレスとホスト名を追加すると、通常どおりページにジャンプできます。
ここに画像の説明を挿入

ここに画像の説明を挿入
ここに画像の説明を挿入

高可用性構成はここで終了します、ありがとうございます!

おすすめ

転載: blog.csdn.net/giantleech/article/details/115086245