HAクラスタ構造が完全に分散的に構築することができます
目的:
単一障害点の発生率を減らします
計画の構成図
NN1 | NN2 | DN | ZK | ZKFC | JNN | RM | |
---|---|---|---|---|---|---|---|
hadoop100 | * | * | * | * | * | * | |
hadoop101 | * | * | * | * | * | * | |
hadoop102 | * | * | * |
図NN、DN、ZK、ZKFC、 JNN、RMは、 以下のように呼ばれる
名前ノード:NN
DN:DataNodes
ZK:飼育係
ZKFC:飼育係クライアント
JNN:Journalnode
RM:このResourceManager
準備:
1、設定時刻同期サーバ(オプション)
すべてのノードが実行します
yum -y install ntp
ntpdate ntp1.aliyun.com
2、各ホストのマッピングを設定する(自分のBaiduのを解決するのか分かりません)
3、近くにログインを避けます
すべてのノードが実行します
ssh-keygen-t rsa //生成密钥 中途停下询问的一直按回车到执行成功为止
ssh-copy-id hadoop101 //发送公钥到其他节点上
4、ファイアウォールの設定をオフにします
systemctl stop firewalld.service //暂时关闭
systemctl disable firewalld.service //永久关闭
高可用性Hadoopクラスタを構築するために始めました
JDKのインストール(それが良いを抽出し、直接インストールされていない最小限のインストールのCentOSのデフォルトのJDKの場合、グラフィカルインストールをインストールするには、元のJDKをアンインストールが必要です)
インストールパッケージを抽出するのHadoop
tar xf hadoop2.7.7... -C /module/ha/
ディレクトリにHadoopの設定ファイル
cd /module/ha/hadoop/etc/hadoop
スリー(Hadoopの、糸、mapred)-env.shファイルは、JAVA_HOMEセットJDKインストールパスを見つけます
配置core-site.xml
vi core-site.xml
<!-- 设置hdfs的nameservice服务 名称自定义 -->
<property>
<name>fs.defaultFS</name>
<value>hdfs://mycluster</value>
</property>
<!-- 设置hadoop的元数据存放路径 -->
<property>
<name>hadoop.tmp.dir</name>
<value>/moudle/ha/hadoop/data</value>
</property>
<!-- 指定zookeeper地址 -->
<property>
<name>ha.zookeeper.quorum</name>
<value>hadoop100:2181,hadoop101:2181,hadoop102:2181</value>
</property>
VI HDFS-site.xmlの
<!-- 完全分布式集群名称 -->
<property>
<name>dfs.nameservices</name>
<value>mycluster</value>
</property>
<!-- 集群中NameNode节点都有哪些 -->
<property>
<name>dfs.ha.namenodes.mycluster</name>
<value>nn1,nn2</value>
</property>
<!-- nn1的RPC通信地址 -->
<property>
<name>dfs.namenode.rpc-address.mycluster.nn1</name>
<value>hadoop100:9000</value>
</property>
<!-- nn2的RPC通信地址 -->
<property>
<name>dfs.namenode.rpc-address.mycluster.nn2</name>
<value>hadoop101:9000</value>
</property>
<!-- nn1的http通信地址 -->
<property>
<name>dfs.namenode.http-address.mycluster.nn1</name>
<value>hadoop100:50070</value>
</property>
<!-- nn2的http通信地址 -->
<property>
<name>dfs.namenode.http-address.mycluster.nn2</name>
<value>hadoop101:50070</value>
</property>
<!-- 指定NameNode元数据在JournalNode上的存放位置 -->
<property>
<name>dfs.namenode.shared.edits.dir</name>
<value>qjournal://hadoop100:8485;hadoop101:8485;hadoop102:8485/mycluster</value>
</property>
<!-- 配置隔离机制,即同一时刻只能有一台服务器对外响应 -->
<property>
<name>dfs.ha.fencing.methods</name>
<value>sshfence</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>/module/ha/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.mycluster</name>
<value>org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider</value>
</property>
<!--设置开启HA故障自动转移-->
<property>
<name>dfs.ha.automatic-failover.enabled</name>
<value>true</value>
</property>
配置mapred-site.xml
vi mapred-site.xml
次の設定を追加します。
<!-- 指定mr框架为yarn方式 -->
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
コンフィギュレーション・糸site.xmlの(オプション)
vi yarn-site.xml
次の設定を追加します。
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<!--启用resourcemanager ha-->
<property>
<name>yarn.resourcemanager.ha.enabled</name>
<value>true</value>
</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>hadoop101</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>
コンフィギュレーション・スレーブ
vi slaves
hadoop100
hadoop101
hadoop102
設定は、すべてのノードに配布終了しました
scp –r -p /usr/local/hadoop/ root@master2:/usr/local/
飼育係のインストール
ファイルを解凍します
tar xf 文件名 -C 存放路径
グッド自己構成環境変数
修正confディレクトリの下にzoo_sample.cfg
mv zoo_sample.cfg zoo.cfg
vi zoo.cfg
パス設定に保存されたメタデータを格納するZK
dataDir=/module/zookeeper/zk
ファイルの一番下に、以下のデータを追加
Server.1=hadoop100:2888:3888
Server.2=hadoop101:2888:3888
Server.3=hadoop102:2888:3888
修正飼育係の場所ログの生成変更することはできません
vi bin/zkEnv.sh
修正パスを指す矢印セカンド店に自分の希望を配置するには
ZKのストレージ・パスに保存されたファイルのメタデータを作成します
mkdir /module/zookeeper/zk
すべてのノードに飼育係のZooKeeperの設定ファイルを配布
IDに対応する異なるノードで書かれました
echo 1 > /module/zookeeper/zk/myid # hadoop100节点上:
クラスタの各ノードでのZooKeeper、起動スクリプトのZooKeeperサービスを実行
zkServer.sh start
展開の詳細
1、あなたはjournalnodeを起動する必要があります
hadoop-daemons.sh start journalnode
選択は、HadoopのノードNNに表形式を実行するように構成されている請求項2、
bin/hdfs namenode –format
3. NN開始名前ノードを選択します
sbin/hadoop-daemon.sh start namenode
図4に示すように、データの同期は、別のノード上で実行されるNN
bin/hdfs namenode -bootstrapStandby
5、NNに前記フォーマットを行っzkfc
bin/hdfs zkfc –formatZK
NNは、Hadoopのクラスタを起動します
sbin/start-dfs.sh
表示するために使用JPSコマンド各ノード以下のノードが存在する
HAクラスタのHadoop完全のポイントは!!!!
RMが開かれるが、HAを行うRMノード上に配置されています
sbin/start-yarn.sh
別の構成では、ノード上で実行されるRM
sbin/yarn-daemon.sh start resourcemanager
すべてのノードがこれまでに成功したHAクラスタ構成RMの次のノードを持ってください!!!!!!
頻繁に使用するコマンドの名前ノードのプロセスが開始:hadoop-daemon.shスタート名前ノード
データノードのプロセスが開始:hadoop-daemon.sh開始データノードHA高可用性環境、あなたは、プロセスを開始する必要があります:飼育係:zkServer.sh開始zkServer.shストップスタートストップ
zkServer.shステータスをリーダーfollwerのステータスを表示しますjournalnode clusterコマンドhadoop-daemon.sh開始journalnodeはhadoop-daemon.sh開始
STOPストップjournalnodeをZKFCフォーマット:HDFS zkfc -formatZK zkfcプロセスを開始します。hadoop-daemon.sh開始zkfc
停止zkfcプロセスを:hadoop-daemon.shストップzkfc名前ノードのデータ同期名:HDFS名前ノード-bootstrapStandby
糸のプロセスを開始します。
yarn-daemon.shのResourceManagerを開始
アナログスイッチに自動的にフェールオーバースタンバイ状態NN
- 使用JPSビュー名前ノードのプロセスID
jps
- ストップ名前ノードプロセス
kill -9 namenode的进程id
次に、2人の名前ノードのWebページを切り替えるのステータスを表示するかどうかを確認
3.再起動の名前ノードのプロセスを:
hadoop-daemon.sh start namenode