10、Flink高可用HA


先搭建zookeeper

上傳zookeeper並解壓

 

 

 

 

把沒有用的刪除

 

 

 

 創建一個目錄zkData

 

 

 

修改zookeeper的配置文件

 

 

 

 

dataDir=/opt/modules/apache-zookeeper-3.6.1-bin/zkData

server.1=master:2888:3888
server.2=slave1:2888:3888
server.3=slave2:2888:3888

 

 

 

創建myid文件

 

 在里面輸入1

 

 

 

現在我們對zookeeper的配置就完成了,接下來就是分發給另外兩台機器。

 scp -r apache-zookeeper-3.6.1-bin/ hadoop@slave1:/opt/modules/

 scp -r apache-zookeeper-3.6.1-bin/ hadoop@slave2:/opt/modules/

 

 

分發完之后分別把/opt/modules/apache-zookeeper-3.6.1-bin/zkData 下的myid改成2和3

 

接下來啟動zookeeper服務,在三台機器都要啟動

 

 

 

 

 

 

啟動完之后我們就可以通過客戶端來連接我們的服務了

 

 

 

 

現在查看誰是“老大”

 

 

 

 

 

zookeeper部署完成!!

 

 

 

 

 

顯然這里需要先部署hadoop的高可用

 先上傳hadoop包,解壓

 

 

 

修改配置文件

 

 

修改  hadoop-env.sh

 

export JAVA_HOME=/opt/modules/jdk1.8.0_221

 

 

 

修改  yarn-env.sh

 

 

export JAVA_HOME=/opt/modules/jdk1.8.0_221

 

 

 

 vim  mapred-env.sh 

 

 

export JAVA_HOME=/opt/modules/jdk1.8.0_221

 

 

 

修改hdfs-site.xml

 <property>
        <name>dfs.nameservices</name>
        <value>ns</value>
    </property>
    
    <property>
        <name>dfs.ha.namenodes.ns</name>
        <value>nn1,nn2</value>
    </property>
    
    <property>
        <name>dfs.namenode.rpc-address.ns.nn1</name>
        <value>master:9000</value>
    </property>
    
    <property>
        <name>dfs.namenode.http-address.ns.nn1</name>
        <value>master:50070</value>
    </property>
    
    <property>
        <name>dfs.namenode.rpc-address.ns.nn2</name>
        <value>slave1:9000</value>
    </property>
    
    <property>
        <name>dfs.namenode.http-address.ns.nn2</name>
        <value>slave1:50070</value>
    </property>
    
    <property>
        <name>dfs.namenode.shared.edits.dir</name>
        <value>qjournal://master:8485;slave1:8485;slave2:8485/ns</value>
    </property>
    
    <property>
        <name>dfs.journalnode.edits.dir</name>
        <value>/opt/modules/hadoop-2.8.5/data/jn</value>
    </property>
    
    <property>
        <name>dfs.ha.automatic-failover.enabled</name>
        <value>true</value>
    </property>

    <property>
        <name>dfs.client.failover.proxy.provider.ns</name>
        <value>org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider</value>
    </property>

    <property>
        <name>dfs.ha.fencing.methods</name>
        <value>
            sshfence
        </value>
    </property>

    <property>
        <name>dfs.ha.fencing.ssh.private-key-files</name>
        <value>/home/hadoop/.ssh/id_rsa</value>
    </property>
    <property>
        <name>dfs.replication</name>
        <value>3</value>
    </property>
    <property>
        <name>dfs.permissions.enabled</name>
        <value>false</value>
    </property>

 

 

 

 

修改core-site.xml

 <property>
        <name>fs.defaultFS</name>
        <value>hdfs://ns/</value>
    </property>
    
    <property>
        <name>hadoop.tmp.dir</name>
        <value>/opt/modules/hadoop-2.8.5/tmp</value>
    </property>
    
    <property>
        <name>ha.zookeeper.quorum</name>
        <value>master:2181,slave1:2181,slave2:2181</value>
    </property>

 

修改mapred-site.xml

 mv mapred-site.xml.template mapred-site.xml

 

vim  mapred-site.xml

 <property>
        <name>mapreduce.framework.name</name>
        <value>yarn</value>
    </property>

<property>
        <name>mapreduce.jobhistory.webapp.address</name>
        <value>master:19888</value>
    </property>
<property>
        <name>mapreduce.jobhistory.address</name>
<value>master:10020</value>
</property>

 

 

vim yarn-site.xml

<!-- 開啟RM高可用 -->
    <property>
        <name>yarn.resourcemanager.ha.enabled</name>
        <value>true</value>
    </property>
    <!-- 指定RM的cluster id -->
    <property>
        <name>yarn.resourcemanager.cluster-id</name>
        <value>rs</value>
    </property>
    <!-- 指定RM的名字 -->
    <property>
        <name>yarn.resourcemanager.ha.rm-ids</name>
        <value>rm1,rm2</value>
    </property>
    <!-- 分別指定RM的地址 -->
    <property>
        <name>yarn.resourcemanager.hostname.rm1</name>
        <value>master</value>
    </property>
    <property>
        <name>yarn.resourcemanager.hostname.rm2</name>
        <value>slave1</value>
    </property>
    <!-- 指定zk集群地址 -->
    <property>
        <name>yarn.resourcemanager.zk-address</name>
        <value>master:2181,slave1:2181,slave2:2181</value>
    </property>
    <property>
        <name>yarn.nodemanager.aux-services</name>
        <value>mapreduce_shuffle</value>
    </property>

 

 

修改slaves

master
slave1
slave2

 

 

將配置好的hadoop分發給其他節點

 scp -r hadoop-2.8.5/ hadoop@slave1:/opt/modules/

 scp -r hadoop-2.8.5/ hadoop@slave2:/opt/modules/

 

 

啟動journalnode(在所有機器都啟動)

./hadoop-daemon.sh start journalnode

 

 

 

 

 

 

 

 

 

 

格式化namenode

bin/hdfs namenode -format

 

 

 

 

 

如果出現這樣的問題

 

 檢查對應的機器的防火牆是否關閉

 

 

啟動namenode

./hadoop-daemon.sh start namenode

 

 

 

在nn2上同步nn1的元數據信息

bin/hdfs  namenode  -bootstrapStandby

 

 

 

 

 

 

格式化ZKFC

bin/hdfs zkfc -formatZK

 

 

 

直接一鍵啟動吧

 

 

 

 

 

 

 

配置flink的高可用

 

 

vim flink-conf.yaml 

 

 

 

high-availability: zookeeper
high-availability.zookeeper.quorum: master:2181,slave1:2181,slave2:2181,
high-availability.zookeeper.path.root: /flink
high-availability.cluster-id: /cluster_one 
high-availability.storageDir: hdfs://ns/flink/recovery

 

 

同時把修改后的配置文件同步到另外兩個節點

 

 

 

修改master文件

 

 

 

 

把master文件同步到另外兩個節點去

 

 

在master節點

vim flink-conf.yaml 

 

 

 

 

 

在slave1節點

vim flink-conf.yaml 

 

 

 

 

配置hadoop環境變量,三個節點都配置

#hadoop
export HADOOP_HOME=/opt/modules/hadoop-2.8.5
export PATH=$HADOOP_HOME/bin:$PATH

 

 

 

啟動flink集群

 

 

我們查看進程,發現並沒有flink的進程

 

 

 

 

 

 

查看日志

 

 

 

這樣解決

進入flink的官網https://flink.apache.org/downloads.html#all-stable-releases

根據自己的hadoop版本下載對應的架包

 

 

 

把架包上傳到三個節點的flink/lib目錄下

 

 

 

重新啟動一下flink集群

 

 

分別查三個節點的進程

 

 

 

 

 

 

打開瀏覽器訪問flink的主頁

 

 

 

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM