成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

Hadoop高可用集群部署

大數據 Hadoop
在master節點中使用yarn rmadmin -getAllServiceState命令查看各個節點ResourceManager狀態,接下來停止active狀態節點的ResourceManage進程,ResourceManage active自動跳轉到其他節點,集群仍可用,隨后再啟動該節點ResourceManager進程,最后再次查看狀態,Failed狀態恢復為standby。

背景

生產中Hadoop分布式集群中可能存在著單點故障問題,如果Namenode宕機或是軟硬件升級,集群將無法使用,所以進行搭建高可用的來消除單點故障。

Hadoop介紹

Hadoop集群一般為一個NameNode和ResourceManager,但在實際生產環境中,若恰好具有NameNode和ResourceManager的節點出現故障,那么整個Hadoop集群將會崩潰,這是因為在HDFS中NameNode是系統的核心節點,ResourceManager負責整個系統的資源管理和分配。

為了解決單點故障問題,在Hadoop2后中引入了高可用機制,支持NameNode和ResourceManager一個主節點和一個備用節點,而在Hadoop3中繼續對其進行了優化和提升,它支持一個主節點和多個備用節點。所謂高可用(High Availability, HA)就是7*24 小時不中斷服務,消除單點故障。

Hadoop HA嚴格來說應該分成各個組件的HA機制:HDFS的HA和YARN的HA,可以通過配置多個NameNode和ResourceManager(Active/Standby)實現在集群中的熱備來解決上述問題。

環境準備:

圖片圖片

節點相關進程如下:

圖片圖片

  • 操作系統:centos8
  • 內存:4G
  • Java 版本:jdk8

HDFS和YARN HA集群搭建

3.1 下載hadoop安裝包

官網https://hadoop.apache.org/下載hadoop 3.3.0安裝包解壓至/usr/local下3臺機器需修改的配置文件目錄為/usr/local/hadoop/etc/hadoop下。

3.2  hadoop.env

export JAVA_HOME=/usr/local/jdk #配置jdk路徑
#添加兩行
export HDFS_JOURNALNODE_USER=root
export HDFS_ZKFC_USER=root

3.3 core-site.xml

<?xml versinotallow="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<!-- Put site-specific property overrides in this file. -->
<configuration>
<!-- hdfs分布式文件系統名字/地址 -->
<property>
<name>fs.defaultFS</name>
<value>hdfs://ns</value>
</property>
<!--存放namenode、datanode數據的根路徑 -->
<property>
<name>hadoop.tmp.dir</name>
<value>/usr/local/hadoop/tmp</value>
</property>
<!-- 存放journalnode數據的地址 -->
<property>
<name>dfs.journalnode.edits.dir</name>
<value>/usr/local/hadoop/tmp/jn</value>
</property>
<!-- 列出運行 ZooKeeper 服務的主機端口對 -->
<property>
<name>ha.zookeeper.quorum</name>
<value>hadoop:2181,k8s-2:2181,k8s-3:2181</value>
</property>
</configuration>

3.4 hdfs-site.xml

<?xml versinotallow="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<!--
  Licensed under the Apache License, Version 2.0 (the "License");
  you may not use this file except in compliance with the License.
  You may obtain a copy of the License at
    http://www.apache.org/licenses/LICENSE-2.0
  Unless required by applicable law or agreed to in writing, software
  distributed under the License is distributed on an "AS IS" BASIS,
  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  See the License for the specific language governing permissions and
  limitations under the License. See accompanying LICENSE file.
-->
<configuration>
    <property>
        <name>dfs.replication</name>
        <value>3</value>
    </property>
    <property>
        <name>dfs.namenode.name.dir</name>
        <value>/usr/local/hadoop/dfs/name</value>
    </property>
    <property>
        <name>dfs.datanode.data.dir</name>
        <value>/usr/local/hadoop/dfs/data</value>
    </property>
    <property>
        <name>dfs.journalnode.edits.dir</name>
        <value>/usr/local/hadoop/dfs/journalnode</value>
        <description>The path where the JournalNode daemon will store its local state.</description>
    </property>
    <property>
        <name>dfs.nameservices</name>
        <value>ns</value>
        <description>The logical name for this new nameservice.</description>
    </property>
    <property>
        <name>dfs.ha.namenodes.ns</name>
        <value>nn1,nn2,nn3</value>
        <description>Unique identifiers for each NameNode in the nameservice.</description>
    </property>
    <property>
        <name>dfs.namenode.rpc-address.ns.nn1</name>
        <value>hadoop:8020</value>
        <description>The fully-qualified RPC address for nn1 to listen on.</description>
    </property>
    <property>
        <name>dfs.namenode.rpc-address.ns.nn2</name>
        <value>k8s-2:8020</value>
        <description>The fully-qualified RPC address for nn2 to listen on.</description>
    </property>
    <property>
        <name>dfs.namenode.rpc-address.ns.nn3</name>
        <value>k8s-3:8020</value>
        <description>The fully-qualified RPC address for nn3 to listen on.</description>
    </property>
    <property>
        <name>dfs.namenode.http-address.ns.nn1</name>
        <value>hadoop:9870</value>
        <description>The fully-qualified HTTP address for nn1 to listen on.</description>
    </property>
    <property>
        <name>dfs.namenode.http-address.ns.nn2</name>
        <value>k8s-2:9870</value>
        <description>The fully-qualified HTTP address for nn2 to listen on.</description>
    </property>
    <property>
        <name>dfs.namenode.http-address.ns.nn3</name>
        <value>k8s-3:9870</value>
        <description>The fully-qualified HTTP address for nn3 to listen on.</description>
    </property>
    <property>
        <name>dfs.namenode.shared.edits.dir</name>
        <value>qjournal://hadoop:8485;k8s-3:8485;k8s-2:8485/ns</value>
        <description>The URI which identifies the group of JNs where the NameNodes will write/read edits.</description>
    </property>
    <property>
        <name>dfs.client.failover.proxy.provider.ns</name>
<value>org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider</value>
        <description>The Java class that HDFS clients use to contact the Active NameNode.</description>
    </property>
    <property>
        <name>dfs.ha.fencing.methods</name>
        <value>
            sshfence
            shell(/bin/true)
        </value>
        <description>
            A list of scripts or Java classes which will be used to fence the Active NameNode during a failover.
            sshfence - SSH to the Active NameNode and kill the process
            shell - run an arbitrary shell command to fence the Active NameNode
        </description>
    </property>
    <property>
        <name>dfs.ha.fencing.ssh.private-key-files</name>
        <value>/root/.ssh/id_rsa</value>
        <description>Set SSH private key file.</description>
    </property>
    <property>
        <name>dfs.ha.automatic-failover.enabled</name>
        <value>true</value>
        <description>Automatic failover.</description>
    </property>
</configuration>

3.5 mapred-site.xml

<?xml versinotallow="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<!--
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License. See accompanying LICENSE file.
-->
<!-- Put site-specific property overrides in this file. -->
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
<property>
<name>yarn.app.mapreduce.am.env</name>
<value>HADOOP_MAPRED_HOME=/usr/local/hadoop</value>
</property>
<property>
<name>mapreduce.map.env</name>
<value>HADOOP_MAPRED_HOME=/usr/local/hadoop</value>
</property>
<property>
<name>mapreduce.reduce.env</name>
<value>HADOOP_MAPRED_HOME=/usr/local/hadoop</value>
</property>
</configuration>

3.6 yarn-site.xml

<?xml versinotallow="1.0"?>
<!--
  Licensed under the Apache License, Version 2.0 (the "License");
  you may not use this file except in compliance with the License.
  You may obtain a copy of the License at
    http://www.apache.org/licenses/LICENSE-2.0
  Unless required by applicable law or agreed to in writing, software
  distributed under the License is distributed on an "AS IS" BASIS,
  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  See the License for the specific language governing permissions and
  limitations under the License. See accompanying LICENSE file.
-->
<configuration>
<property>
    <name>yarn.resourcemanager.ha.enabled</name>
    <value>true</value>
    <description>Enable RM HA.</description>
</property>
<property>
    <name>yarn.resourcemanager.cluster-id</name>
    <value>yrc</value>
    <description>Identifies the cluster.</description>
</property>
<property>
    <name>yarn.resourcemanager.ha.rm-ids</name>
    <value>rm1,rm2,rm3</value>
    <description>List of logical IDs for the RMs. e.g., "rm1,rm2".</description>
</property>
<property>
    <name>yarn.resourcemanager.hostname.rm1</name>
    <value>hadoop</value>
    <description>Set rm1 service addresses.</description>
</property>
<property>
    <name>yarn.resourcemanager.hostname.rm2</name>
    <value>k8s-2</value>
    <description>Set rm2 service addresses.</description>
</property>
<property>
    <name>yarn.resourcemanager.hostname.rm3</name>
    <value>k8s-3</value>
    <description>Set rm3 service addresses.</description>
</property>
<property>
    <name>yarn.resourcemanager.webapp.address.rm1</name>
    <value>hadoop:8088</value>
    <description>Set rm1 web application addresses.</description>
</property>
<property>
    <name>yarn.resourcemanager.webapp.address.rm2</name>
    <value>k8s-2:8088</value>
    <description>Set rm2 web application addresses.</description>
</property>
<property>
    <name>yarn.resourcemanager.webapp.address.rm3</name>
    <value>k8s-3:8088</value>
    <description>Set rm3 web application addresses.</description>
</property>
<property>
    <name>hadoop.zk.address</name>
    <value>hadoop:2181,k8s-2:2181,k8s-3:2181</value>
    <description>Address of the ZK-quorum.</description>
</property>
</configuration>

3.7 workers

hadoop
k8s-2
k8s-3

安裝zookeeper

版本:zookeeper-3.6.4

通過https://www.apache.org/dyn/closer.lua/zookeeper/zookeeper-3.6.4/apache-zookeeper-3.6.4-bin.tar.gz 下載安裝包,3臺機器進行解壓配置安裝。

echo "1" > /data/zookeeperdata/myid #不同機器id不同

zoo.cfg配置如下:

tickTime=2000
initLimit=10
syncLimit=5
dataDir=/data/zookeeperdata #數據目錄
dataLogDir=/data/zookeeperdata/logs #日志目錄
clientPort=2181 #端口
server.1=192.xxx.xxx.128:2888:3888
server.2=192.xxx.xxx.132:2888:3888
server.3=192.xxx.xxx.131:2888:3888

環境變量配置

vi /etc/profile

export JAVA_HOME=/usr/local/jdk
export HAD00P_HOME=/usr/local/hadoop
export PATH=$PATH:$HADOOP_HOME/bin
export HADOOP_CLASSPATH=`hadoop classpath`
source /etc/profile

啟動集群

在所有節點上使用rm -rf /usr/local/hadoop/dfs命令,刪除之前創建的存儲路徑,同時在master節點上執行mkdir -p /usr/local/hadoop/dfs/name /usr/local/hadoop/dfs/data /usr/local/hadoop/dfs/journalnode,再次創建存儲路徑。

在所有節點上使用rm -rf /usr/local/hadoop/tmp /usr/local/hadoop/logs && mkdir -p /usr/local/hadoop/tmp /usr/local/hadoop/logs命令,重置臨時路徑和日志信息。

通過以上步驟,Hadoop HA集群就配置完成了,當第一次啟動HA集群時需要依次執行以下命令:

$ZOOKEEPER_HOME/bin/zkServer.sh start # 開啟Zookeeper進程(所有節點上執行)
$HADOOP_HOME/bin/hdfs --daemon start journalnode # 開啟監控NameNode的管理日志的JournalNode進程(所有節點上執行)
$HADOOP_HOME/bin/hdfs namenode -format # 命令格式化NameNode(在master節點上執行)
scp -r /usr/local/hadoop/dfs k8s-2:/usr/local/hadoop  # 將格式化后的目錄復制到slave1中(在master節點上執行)
scp -r /usr/local/hadoop/dfs k8s-3:/usr/local/hadoop   # 將格式化后的目錄復制到slave2中(在master節點上執行)
$HADOOP_HOME/bin/hdfs zkfc -formatZK # 格式化Zookeeper Failover Controllers(在master節點上執行)
start-dfs.sh&&start-yarn.sh # 啟動HDFS和Yarn集群(在master節點上執行)

若不是第一次啟動HA集群(常規啟動HA集群),則只需要依次執行以下命令:

$ZOOKEEPER_HOME/bin/zkServer.sh start    # 開啟Zookeeper進程(所有節點上執行)
start-all.sh或者$HADOOP_HOME/sbin/start-dfs.sh && $HADOOP_HOME/sbin/start-yarn.sh # 啟動HDFS和Yarn集群(在master節點上執行)

啟動完成后每個節點使用jps命令會出現NameNode、DataNode、ResourceManager、NodeManager、JournalNode、DFSZKFailoverController、QuorumPeerMain和Jps 8個進程。

圖片圖片

圖片圖片

通過頁面訪問查看:

http://192.xxx.xxx.128:9870/

圖片圖片

http://192.xxx.xxx.128:8088/cluster/nodes

圖片圖片

hdfs HA驗證

6.1 查看各個節點NameNode狀態

圖片圖片

6.2 驗證hdfs的高可用

在開啟HA集群并成功啟動的情況下,在master節點中使用hdfs haadmin -getAllServiceState命令查看各個節點NameNode狀態,接下來停止active狀態節點的NameNode進程。

圖片圖片

Namenode active自動跳轉其他節點,集群仍可用。

圖片圖片

圖片圖片

隨后再啟動該節點NameNode進程,最后再次查看狀態,可以發現HDFS HA是正常的,并且沒有發生搶占。

圖片圖片

驗證yarn 高可用

在master節點中使用yarn rmadmin -getAllServiceState命令查看各個節點ResourceManager狀態,接下來停止active狀態節點的ResourceManage進程,ResourceManage active自動跳轉到其他節點,集群仍可用,隨后再啟動該節點ResourceManager進程,最后再次查看狀態,Failed狀態恢復為standby。

圖片圖片

若要關閉集群可以master使用$HADOOP_HOME/sbin/stop-yarn.sh && $HADOOP_HOME/sbin/stop-dfs.sh命令或者stop-all.sh 即可關閉hadoop集群,然后關閉zookeeper,三臺機器分別執行/data/apache-zookeeper-3.6.4-bin/bin/zkServer.sh  stop。

責任編輯:武曉燕 來源: IT那活兒
相關推薦

2013-07-11 13:39:23

Hadoop

2019-11-27 16:34:00

配置

2021-03-17 10:05:42

KubernetesRedis數據庫

2019-12-24 14:28:00

KeepalivedNginxTomcat

2022-09-02 16:59:13

Kubernetes高可用Linux

2012-02-15 22:40:23

heartbeat高可用

2023-05-08 08:16:00

高可用MongoDB

2018-01-12 14:20:37

數據庫MySQL高可用架構

2017-02-06 11:43:57

ZooKeeper集群

2017-02-19 19:57:05

ZooKeeper集群

2019-08-27 15:56:44

MySQL 互聯網數據庫

2021-03-04 13:10:32

KubernetesRedisLinux

2022-05-31 08:04:03

Redis高可用集群

2014-10-09 10:04:23

CentOS集群

2023-10-13 18:57:22

2017-01-17 10:25:06

HBase集群運維

2024-02-27 09:48:25

Redis集群數據庫

2022-07-08 14:17:18

Kubernetes集群高可用Linux

2017-11-13 11:07:32

Nginx搭建高可用

2020-10-28 07:10:07

Nginx高可用高并發
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 成人精品视频在线观看 | 成人午夜电影网 | 亚洲a一区 | 中文在线a在线 | 狠狠躁天天躁夜夜躁婷婷老牛影视 | 欧美视频在线播放 | 亚洲第一区国产精品 | 色婷婷综合久久久久中文一区二区 | 久久久精品网 | 91在线视频免费观看 | 中文字幕欧美日韩 | 中文字幕一区二区三区四区 | 欧美日韩久久精品 | 国产资源在线播放 | 亚洲欧美综合 | 亚洲一区二区不卡在线观看 | 日韩欧美中文在线 | 久久精品网 | 久久精品中文字幕 | 日本三级电影在线看 | 国产在线1 | 精品久久久久一区二区国产 | 狠狠综合久久av一区二区老牛 | 91精品国产91久久久久游泳池 | 成人亚洲综合 | 久久国产日韩 | 在线资源视频 | 日本视频在线播放 | 一区二区三区亚洲视频 | 激情综合五月天 | 6996成人影院网在线播放 | 成人一区av偷拍 | 91精品久久久久久久久久 | 欧美日韩在线精品 | 日本精a在线观看 | 超碰97人人人人人蜜桃 | 免费99精品国产自在在线 | 亚洲性视频网站 | 亚洲a视频 | 欧美一区2区三区4区公司 | 亚洲精品欧美 |