1. 程式人生 > >--筆記心得8-HA環境搭建試驗

--筆記心得8-HA環境搭建試驗

1。剛剛開始搭建看官網,不使用zookeeper,不搭建自動故障轉移,以為可以直接配置使用。但是總是會出現這樣的情況,使用hdfs dfs -mkdir /lcc 總是把檔案建立在本地。最後才知道只要是HA,必須要有zookeeper.
2。建立好zookeeper後,搭建好HA發現還是那個問題。但是使用命令hdfs dfs -mkdir /lcc建立的是本地資料夾,使用hdfs dfs -mkdir hdfs://mycluster/lcc才能建立遠端資料夾,因此猜測預設檔案訪問可能沒有修改。
最後檢視文件發現

<property>
        <name>fs.defaultFS</name
>
<value>hdfs://mycluster</value> </property>

讓我寫成了、

<property>
        <name>dfs.defaultFS</name>
        <value>hdfs://mycluster</value>
</property>

所以錯了。

3.下面開始從新搭建一個完整的HA
首先我們要保證有三臺機器,三臺機器分別設定如下
這裡寫圖片描述
4.首先我們要設定好IP與域名的對應關係,保證能聯網,IP自己設定

修改主機名
[[email protected] ~]# vim /etc/sysconfig/network
NETWORKING=yes
HOSTNAME=biluos2.com

修改對應關係
[[email protected] ~]# vim /etc/hosts
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168
.10.173 biluos.com biluos 192.168.10.174 biluos1.com biluos1 192.168.10.175 biluos2.com biluos2

5。配置ssh無祕鑰登入

biluos.com執行
ssh-keygen -t rsa
ssh-copy-id -i .ssh/id_rsa.pub [email protected].com 
ssh-copy-id -i .ssh/id_rsa.pub [email protected].com 
ssh-copy-id -i .ssh/id_rsa.pub [email protected].com 

biluos1.com執行
ssh-keygen -t rsa
ssh-copy-id -i .ssh/id_rsa.pub [email protected].com 
ssh-copy-id -i .ssh/id_rsa.pub [email protected].com 
ssh-copy-id -i .ssh/id_rsa.pub [email protected].com 

biluos2.com執行
ssh-keygen -t rsa
ssh-copy-id -i .ssh/id_rsa.pub [email protected].com 
ssh-copy-id -i .ssh/id_rsa.pub [email protected].com 
ssh-copy-id -i .ssh/id_rsa.pub [email protected].com 

這裡一定要使用域名,不要使用ip,否則會出現莫名其妙的問題。

6。下載zookeeper和hadoop解壓到/opt/moudles/目錄下,注意下載hadoop是2.7.3建議下載一個高版本的,因為高版本的沒有本地庫問題。這裡沒說安裝jdk,這個必須安裝。

[root@biluos2 ~]# ll /opt/moudles/ 
total 28
drwxr-xr-x. 10 root root 4096 Jul 31 03:09 hadoop-2.7.3
drwxr-xr-x.  3 root root 4096 Jul 30 03:24 hadoop-2.7.3.data
drwxr-xr-x.  8 root root 4096 Jul 26 08:37 jdk1.8.0_121
drwxr-xr-x.  6 root root 4096 Jul 26 08:46 myhadoopdata
drwxr-xr-x.  4 root root 4096 Jul 30 05:04 myzookeeperdata
drwxr-xr-x. 10 root root 4096 Jul 30 05:27 zookeeper-3.4.6

7。配置環境變數

export JAVA_HOME=/opt/moudles/jdk1.8.0_121
export PATH=$PATH:$JAVA_HOME/bin
export CLASSPATH=.:$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib/dt.jar

export HADOOP_HOME=/opt/moudles/hadoop-2.7.3
export PATH=$PATH:$HADOOP_HOME/bin

export ZOOKEEPER_HOME=/opt/moudles/zookeeper-3.4.6
export PATH=$PATH:$ZOOKEEPER_HOME/bin:$ZOOKEEPER_HOME/conf

8。配置zookeeper

[[email protected] zookeeper-3.4.6]# vim conf/zoo.cfg 
# The number of milliseconds of each tick
tickTime=2000
# The number of ticks that the initial 
# synchronization phase can take
initLimit=10
# The number of ticks that can pass between 
# sending a request and getting an acknowledgement
syncLimit=5
# the directory where the snapshot is stored.
# do not use /tmp for storage, /tmp here is just 
# example sakes.
dataDir=/opt/moudles/myzookeeperdata/data
dataLogDir=/opt/moudles/myzookeeperdata/logs
# the port at which the clients will connect
clientPort=2181
# the maximum number of client connections.
# increase this if you need to handle more clients
#maxClientCnxns=60
#
# Be sure to read the maintenance section of the 
# administrator guide before turning on autopurge.
#
# http://zookeeper.apache.org/doc/current/zookeeperAdmin.html#sc_maintenance
#
# The number of snapshots to retain in dataDir
#autopurge.snapRetainCount=3
autopurge.snapRetainCount=30
# Purge task interval in hours
# Set to "0" to disable auto purge feature
#autopurge.purgeInterval=1
autopurge.purgeInterval=24
server.1=biluos.com:2888:3888
server.2=biluos1.com:2888:3888
server.3=biluos2.com:2888:3888

9.上面配置的兩個路徑dataDir=/opt/moudles/myzookeeperdata/datadataLogDir=/opt/moudles/myzookeeperdata/logs需要自己手動建立,並且在dataDir=/opt/moudles/myzookeeperdata/data這個路徑下,建立檔案myid,第一個在主機biluos.com裡為1,第二個在biluos1.com為2,第三個biluos2.com為3,記住了,一定要正確,不要多字元少,字元。否則會啟動不起來。
10。啟動,並且驗證是否zookeeper是否正常啟動,在三臺機器每個都執行bin/zkServer.sh start 這個去啟動zookeeper,然後驗證bin/zkServer.sh status

[root@biluos zookeeper-3.4.6]# bin/zkServer.sh status
JMX enabled by default
Using config: /opt/moudles/zookeeper-3.4.6/bin/../conf/zoo.cfg
Mode: follower

[root@biluos1 zookeeper-3.4.6]# bin/zkServer.sh status
JMX enabled by default
Using config: /opt/moudles/zookeeper-3.4.6/bin/../conf/zoo.cfg
Mode: leader

[root@biluos2 zookeeper-3.4.6]# bin/zkServer.sh status
JMX enabled by default
Using config: /opt/moudles/zookeeper-3.4.6/bin/../conf/zoo.cfg
Mode: follower

jps命令下出現

[root@biluos ~]# jps
3113 QuorumPeerMain
4862 Jps

[root@biluos1 ~]# jps
3113 QuorumPeerMain
4862 Jps

[root@biluos2 ~]# jps
3113 QuorumPeerMain
4862 Jps

出現了一個領導者,兩個跟隨者就是成功了。然後不用zookeeper了。

10。配置hadoop環境


hadoop-env.sh 
export JAVA_HOME=/opt/moudles/jdk1.8.0_121

配置hdfs-site.xml
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>

<configuration>

    <property>
        <name>dfs.nameservices</name>
        <value>mycluster</value>
    </property>

    <property>
        <name>dfs.ha.namenodes.mycluster</name>
        <value>myNameNode1,myNameNode2</value>
    </property>

    <property>
        <name>dfs.namenode.rpc-address.mycluster.myNameNode1</name>
        <value>biluos.com:8020</value>
    </property>
    <property>
        <name>dfs.namenode.servicerpc-address.mycluster.myNameNode1</name>
        <value>biluos.com:8022</value>
    </property>
    <property>
        <name>dfs.namenode.http-address.mycluster.myNameNode1</name>
        <value>biluos.com:50070</value>
    </property>
    <property>
        <name>dfs.namenode.https-address.mycluster.myNameNode1</name>
        <value>biluos.com:50470</value>
    </property>
    <property>
        <name>dfs.namenode.secondary.http-address.mycluster.myNameNode1</name>
        <value>biluos.com:50090</value>
    </property>



    <property>
        <name>dfs.namenode.rpc-address.mycluster.myNameNode2</name>
        <value>biluos1.com:8020</value>
    </property>
    <property>
        <name>dfs.namenode.servicerpc-address.mycluster.myNameNode2</name>
        <value>biluos1.com:8022</value>
    </property>
    <property>
        <name>dfs.namenode.http-address.mycluster.myNameNode2</name>
        <value>biluos1.com:50070</value>
    </property>
    <property>
        <name>dfs.namenode.https-address.mycluster.myNameNode2</name>
        <value>biluos1.com:50470</value>
    </property>
    <property>
        <name>dfs.namenode.secondary.http-address.mycluster.myNameNode2</name>
        <value>biluos1.com:50090</value>
    </property>


    <property>
        <name>dfs.namenode.name.dir</name>
        <value>/opt/moudles/hadoop-2.7.3.data/ha/data/dfs/namenode/name</value>
    </property>
    <property>
        <name>dfs.namenode.edits.dir</name>
        <value>/opt/moudles/hadoop-2.7.3.data/ha/data/dfs/namenode/edits</value>
    </property>
    <property>
        <name>dfs.datanode.data.dir</name>
        <value>/opt/moudles/hadoop-2.7.3.data/ha/data/dfs/dn</value>
    </property>
    <property>
        <name>dfs.datanode.checkpoint.dir</name>
        <value>/opt/moudles/hadoop-2.7.3.data/ha/data/dfs/secondarynamenode/name</value>
    </property>
    <property>
        <name>dfs.datanode.checkpoint.edits.dir</name>
        <value>/opt/moudles/hadoop-2.7.3.data/ha/data/dfs/secondarynamenode/edits</value>
    </property>


    <property>
        <name>dfs.namenode.shared.edits.dir</name>
        <value>qjournal://biluos.com:8485;biluos1.com:8485;biluos2.com:8485/mycluster</value>
    </property>

    <property>
        <name>dfs.journalnode.edits.dir</name>
        <value>/opt/moudles/hadoop-2.7.3.data/ha/data/dfs/jn</value>
    </property>

    <property>
        <name>dfs.client.failover.proxy.provider.mycluster</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>/root/.ssh/id_rsa</value>
    </property>


    <property>
        <name>dfs.replication</name>
        <value>1</value>
    </property>
    <property>
        <name>dfs.permissions.enabled</name>
        <value>false</value>
    </property>

    <property>
        <name>dfs.ha.automatic-failover.enabled</name>
        <value>true</value>
    </property>



</configuration>
注意:上面一些資料夾要在本地自己建立。
mkdir -p /opt/moudles/hadoop-2.7.3.data/ha/data/dfs/namenode/name
mkdir -p /opt/moudles/hadoop-2.7.3.data/ha/data/dfs/namenode/edits
mkdir -p /opt/moudles/hadoop-2.7.3.data/ha/data/dfs/dn
mkdir -p /opt/moudles/hadoop-2.7.3.data/ha/data/dfs/secondarynamenode/name
mkdir -p /opt/moudles/hadoop-2.7.3.data/ha/data/dfs/secondarynamenode/edits
mkdir -p /opt/moudles/hadoop-2.7.3.data/ha/data/dfs/jn

dfs.ha.fencing.methods這個不要寫成dfs.ha.fencing.method這個了,我就是寫錯了,導致叢集看起來很正常,但是就是不會自動切換active狀態,兩個都是standby狀態。

配置core-site.xml
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>

    <property>
        <name>fs.defaultFS</name>
        <value>hdfs://mycluster</value>
    </property>

    <property>
        <name>hadoop.tmp.dir</name>
        <value>/opt/moudles/hadoop-2.7.3.data/ha/data/tmp</value>
    </property>

    <property>
        <name>fs.trash.interval</name>
        <value>10080</value>
    </property>

    <property>
        <name>ha.zookeeper.quorum</name>
        <value>biluos.com:2181,biluos1.com:2181,biluos2.com:2181</value>
    </property>


</configuration>

注意:fs.defaultFS這個不要寫成dfs.defaultFS了,我就是寫錯了,導致一直使用hdfs dfs -mkdir /lcc  命令結果把資料夾建立本地了。因為配錯了。

配置slaves檔案
biluos.com
biluos1.com
biluos2.com

11。按照步驟啟動

1)先在每個zookeeper節點啟動(我這裡是三臺都啟動)
        /opt/moudles/zookeeper-3.4.6/bin/zkServer.sh start
        jps如下:
        [[email protected] ~]# jps
        1509 QuorumPeerMain
    (2)啟動每個zookeeper節點journalnode(我這裡是三臺都啟動)
        /opt/moudles/hadoop-2.7.3/sbin/hadoop-daemon.sh start journalnode
        jps如下:
        [[email protected] ~]# jps
        1509 QuorumPeerMain
        5851 JournalNode
    (3)格式化第一條安裝namenode的機器,我的是biluos.com
        /opt/moudles/hadoop-2.7.3/bin/hadoop namenode -format
        不要出錯。如果報錯
        java.io.IOException: Incompatible clusterIDs in /opt/moudles/hadoop-
            c31a265c5e6e; datanode clusterID = CID-a2b73025-f5cc-4bf2-8793-
                    c1ff1a3628bd at org.apache.hadoop.hdfs.server.datanode.DataStorage.
                    doTransition(DataStorage.java:775)
        java.io.IOException: All specified directories are failed to load.
                at org.apache.hadoop.hdfs.server.datanode.DataStorage.
                recoverTransitionRead(DataStorage.java:574)
        一定是datanode Id不對了,刪除掉重新格式化,或者修改配置檔案
        rm -rf /opt/moudles/hadoop-2.7.3.data

        mkdir -p /opt/moudles/hadoop-2.7.3.data/ha/data/dfs/namenode/name
        mkdir -p /opt/moudles/hadoop-2.7.3.data/ha/data/dfs/namenode/edits
        mkdir -p /opt/moudles/hadoop-2.7.3.data/ha/data/dfs/dn
        mkdir -p /opt/moudles/hadoop-2.7.3.data/ha/data/dfs/secondarynamenode/name
        mkdir -p /opt/moudles/hadoop-2.7.3.data/ha/data/dfs/secondarynamenode/edits
        mkdir -p /opt/moudles/hadoop-2.7.3.data/ha/data/dfs/jn

     (4)在第1臺機器上啟動nameNode,我的是biluos.com 
          /opt/moudles/hadoop-2.7.3/sbin/hadoop-daemon.sh start namenode
     (5)在第二臺機器上進行元資料同步,我的是biluos1.com 
         /opt/moudles/hadoop-2.7.3/bin/hdfs namenode -bootstrapStandby
         啟動nameNode
         /opt/moudles/hadoop-2.7.3/sbin/hadoop-daemon.sh start namenode
     (6)所有節點啟動dataNode
        /opt/moudles/hadoop-2.7.3/sbin/hadoop-daemon.sh start datanode
     (7)此時兩個nameNode都啟動了,但是都是standby狀態
        /opt/moudles/hadoop-2.7.3/sbin/hadoop-daemon.sh start datanode
    (8)格式化zk,在一臺機器上執行就可以了
        hdfs zkfc -formatZK 
    (9)在有nameNode的節點上啟動DFSZKFailoverController
        /opt/moudles/hadoop-2.7.3/sbin/hadoop-daemon.sh start zkfc
        啟動完成後,會發現,nameNode其中一個自動轉換為active狀態了。
    (10)最後jps結果如下
        [[email protected] moudles]# jps
        7536 NameNode
        8018 Jps
        2024 QuorumPeerMain
        7849 DFSZKFailoverController
        7673 DataNode
        7451 JournalNode

        [[email protected] ~]# jps
        6240 DFSZKFailoverController
        1509 QuorumPeerMain
        5975 NameNode
        6535 Jps
        5851 JournalNode
        6109 DataNode
        [[email protected] ~]# 

        [[email protected] ~]# jps
        3684 JournalNode
        4006 Jps
        3770 DataNode
        1501 QuorumPeerMain
        [[email protected] ~]# 

這裡可能會出現很多問題,但是問題主要都是配置錯誤,記得關閉防火牆,否則會失敗的。

相關推薦

--筆記心得8-HA環境搭建試驗

1。剛剛開始搭建看官網,不使用zookeeper,不搭建自動故障轉移,以為可以直接配置使用。但是總是會出現這樣的情況,使用hdfs dfs -mkdir /lcc 總是把檔案建立在本地。最後才知道只要是HA,必須要有zookeeper. 2。建立好zook

tomcat8+jdk1.8.0_131環境搭建與添加用戶(win764位)

tomcattomcat8下載地址:http://mirrors.tuna.tsinghua.edu.cn/apache/tomcat/tomcat-8/v8.5.14/bin/apache-tomcat-8.5.14-windows-x64.zip jdk1.8.0下載地址:http://download.

Java學習筆記一:Java開發環境搭建

默認安裝 進制 二進制文件 text ase www. java學習 span home Java開發環境搭建 第一步:安裝JDK 1.下載地址:http://www.oracle.com/technetwork/java/javase/downloads 非

Hadoop的HA環境搭建

resource 執行 事務隔離級別 hdf dfa def rop proxy 不可重復讀 一、集群的規劃 Zookeeper集群:192.168.176.131 (bigdata112)192.168.176.132 (bigdata113)192.168.176.13

Cordova開發Android程式筆記一:開發環境搭建

  Cordova開發Android程式筆記一:開發環境搭建   一、Java開發環境搭建   參考資料:Eclipse+ADT+Android SDK 搭建安卓開發環境  https://www.cnblogs.com/zh719588366/p/

Linux應用程式開發筆記:make menuconfig環境搭建

1、目的 Linux應用程式開發採用與Linux核心一致的menuconfig圖形配置,方便功能元件裁剪。   2、準備工作 下載:Kconfiglib原始碼(https://github.com/ulfalizer/Kconfiglib)   3、環境搭

Django學習筆記——背景瞭解及環境搭建

背景瞭解 Django是什麼 Django是一個開放原始碼的Web應用框架,由Python寫成。採用了MVC的框架模式,即模型M,檢視V和控制器C。 特點 在Django中,控制器接受使用者輸入的部分由框架自行處理,所以 Django 裡更關注的是模型(

[基礎篇]ESP8266-NonOS學習筆記(一)之開發環境搭建

上篇文章我們瞭解了ESP8266到底是個什麼“東西”,瞭解了ESP8266在這個萬物互聯時代有哪些優勢,那我們不能光是瞭解,我們還需要去深入的學習一下,爭做物聯網時代的弄潮兒~繼往開來第二篇,本篇文章主要介紹一下幾種常見的ESP8266開發方式,感覺現在不管是學習硬體開發還是軟體開發,第一節課都是先學習一下開

VS2015+Qt5.8 x86環境搭建

最近用一套別人的程式碼,發現庫都是各種32位的,於是解除安裝了我辛辛苦苦下載的VS 2017和Qt5.9,重新弄。對應2017版本的Qt似乎沒有32位的,很惱火,不然VS那麼大,誰願意重新下載哇。 首先下載VS2015,官網要登陸,於是從這裡下載的: 下載得到一個.i

SpringMVC學習筆記(一、環境搭建

SpringMVC主要功能 在獲取多個引數、檔案上傳、servlet功能單一方面都有很好的解決辦法 SpringMVC 環境搭建 構建一個空的WEB專案(記住勾選xml檔案) 匯入所需jar包 書寫主配置檔案: 建立resource資料夾 建立spring

Web-專案_雲筆記-專案簡介和環境搭建

目錄   專案簡介: 專案概述: 模組劃分: 設計思想: 技術架構: 整體規範:   建立雲筆記專案環境 專案簡介: 專案概述: 雲筆記,用於客戶進行線上學習記錄,分享,收藏筆記,以及參與社群活動 模組劃分: -使用者模

python3成長筆記(一)環境搭建

idea外掛 因長期寫java程式碼,還是使用idea作為開發工具,idea的plugin裡面搜到python。安裝,重啟。 環境搭建 程式碼 新建工程,選擇python的sdk路徑,下面的依賴可選可

【android筆記】android開發環境搭建--android studio安裝與配置

一、下載安裝android studio軟體 目前最新的版本是3.1.2版本,下載即可. 下載完成之後開始安裝,安裝過程不難如下 選擇軟體的安裝路徑 安裝完成後啟動android studio 這裡預設選擇”do not i

CentOS下 Storm0.8.2 環境搭建記錄

Storm是Twitter開源的一個實時計算框架,它需要依賴Zookeeper,ZeroMQ;同時還需要你的系統環境中有Java和Python。所以整個搭建步驟如下: 1. 搭建Zookeeper叢集。 2. 在控制節點機[

redis3.2.8叢集環境搭建

環境準備 centos6.7 redis3.2.8 安裝步驟 第二步: 解壓壓縮包到中/inner_dev_env/redis-3.2.8 [root@allere /inner_dev_env/redis-3.2.8]# pwd /i

React Native學習筆記2:Android環境搭建

背景 各位童鞋有木有感覺官方文件很坑啊,根據官網的描述,首先在chocolate就直接卡死了,VPN沒什麼卵用,於是逐個去官網下載,直到昨天才發現不用VPN也可以下!公司是windows環境,這裡就先用windows搭建。 因為本身是移動開發者,所以

Python資料分析與挖掘學習筆記一:庫和環境搭建

概念介紹: 資料分析:  用適當的統計分析方法對收集來的大量資料進行詳細研究和概括總結,以求最大化地發揮資料的作用,提取有用資訊和形成結論 資料探勘: 從大量資料中通過演算法搜尋隱藏於其中資訊的過程. 資料分析的三大作用:現狀分析、原因分析、預測分析。 資料分析的流程

Hadoop學習筆記—22.Hadoop2.x環境搭建與配置

自從2015年花了2個多月時間把Hadoop1.x的學習教程學習了一遍,對Hadoop這個神奇的小象有了一個初步的瞭解,還對每次學習的內容進行了總結,也形成了我的一個博文系列《Hadoop學習筆記系列》。其實,早在2014年Hadoop2.x版本就已經開始流行了起來,並且已經成為了現在的主流。當然,還有一些非

JavaWeb學習心得之開發環境搭建(Tomcat伺服器)

疑問:學習web開發,為什麼必須要先裝一個WEB伺服器?   在本地計算機上隨便建立一個web頁面,使用者是無法訪問到的,但是如果啟動tomcat伺服器,把web頁面放在tomcat伺服器中,使用者就

NDK開發筆記(一)---環境搭建

安裝NDK開發環境:   結果: 執行 cygwin ,在彈出的命令列視窗輸入: cygcheck -c cygwin 命令,會打印出當前 cygwin 的版本和執行狀       態,如果 status 是 ok 的話,則 cygwin 執行正常。       然後依次