溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

Hadoop學(xué)習(xí)--HA配置(不含zookeeper)--day05

發(fā)布時(shí)間:2020-08-01 14:20:04 來(lái)源:網(wǎng)絡(luò) 閱讀:594 作者:zhicx 欄目:大數(shù)據(jù)

1.HA配置

(1).high availability,高可用

       持續(xù)服務(wù)的能力

       多臺(tái)主機(jī)之間進(jìn)行集群配置

(2).failover,容災(zāi)

(3).namenode  , 2nn

    secondary namenode解決的可靠性問(wèn)題

(4).single point of failure(SPOF),單點(diǎn)故障

    nn1+nn2

(5).NFS(Network file System,共享存儲(chǔ)設(shè)備EMC)  +QJM

(6).HA架構(gòu)

   兩臺(tái)主機(jī),一臺(tái)active,另外一臺(tái)standby,active nn復(fù)制客戶端所有操作.

   standby維護(hù)足夠多的狀態(tài),隨時(shí)提供容災(zāi)服務(wù).

   Journal是單獨(dú)的進(jìn)程,用于active nn和standby nn之間的同步信息.

   active nn的ns修改動(dòng)作寫(xiě)入到j(luò)ns,standby nn從jn讀取edit,需要不斷觀察log的變化

   一旦log發(fā)生變化,standby就會(huì)同步到自己的namespace.

   datanode同時(shí)向兩個(gè)nn發(fā)送塊列表信息以及心跳.

   同一時(shí)刻只能有一個(gè)active nn,如果兩個(gè)都是active的namenode,叫做“腦裂”.


2.部署HA配置解析

    一共有8臺(tái)機(jī)器

    hadoop01  192.168.0.11  namenode  jouralnode resourcemanager

    hadoop02  192.168.0.12  datanode  nodemanager

    hadoop03  192.168.0.13  datanode  nodemanager

    hadoop04  192.168.0.14  datanode  nodemanager

    hadoop05  192.168.0.15  datanode  nodemanager

    hadoop06  192.168.0.16  datanode  nodemanager

    hadoop07  192.168.0.17  secondarynamenode jouralnode 

    hadoop08  192.168.0.18  namenode  jouralnode

(1).在hdfs-site.xml中配置名稱(chēng)服務(wù):dfs.nameservices

           名稱(chēng)服務(wù)的邏輯名

    <property>

      <name>dfs.nameservices</name>

      <value>mycluster</value>

    </property>       

(2).配置nameservice中每個(gè)namenode

    dfs.ha.namenodes.[nameservice  ID]

    <property>

      <name>dfs.ha.namenodes.mycluster</name>

      <value>nn1,nn2</value>

    </property>

       注意:目前的hadoop2.7.2最多只能配置2個(gè)namenode

(3).配置每個(gè)namenode的rpc地址

    <property>

      <name>dfs.namenode.rpc-address.mycluster.nn1</name>

      <value>s100:8020</value>

    </property>

    <property>

      <name>dfs.namenode.rpc-address.mycluster.nn2</name>

      <value>s800:8020</value>

    </property>

(4).配置每個(gè)namenode的webui地址

    <property>

      <name>dfs.namenode.http-address.mycluster.nn1</name>

      <value>machine1.example.com:50070</value>

    </property>

    <property>

      <name>dfs.namenode.http-address.mycluster.nn2</name>

      <value>machine2.example.com:50070</value>

    </property>    

(5).配置namenode的共享edit log目錄,實(shí)際上這是個(gè)邏輯目錄

    <property>

      <name>dfs.namenode.shared.edits.dir</name>

      <value>qjournal://s100:8485;s700:8485;s800:8485/mycluster</value>

    </property>

(6).配置客戶端容災(zāi)代理供應(yīng)商類(lèi)

         供客戶端用來(lái)檢測(cè)哪個(gè)是namenode是活頁(yè)節(jié)點(diǎn)

   <property>

     <name>dfs.client.failover.proxy.provider.mycluster</name>

     <value>org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider</value>

   </property>

(7).可選:配置HA防護(hù)方法名集合

    QJM防止腦裂發(fā)生,不存在兩個(gè)active node

            可以配置sshfence或者shell腳本

(8).在core-site.xml中配置hdfs的文件系統(tǒng)

   <property>

     <name>fs.defaultFS</name>

     <value>hdfs://mycluster</value>

   </property>

(9).配置JN的本地存放數(shù)據(jù)(edit log)的目錄

   <property>

     <name>dfs.journalnode.edit.dir</name>

     <value>/home/ubuntu/hadoop/journal</value>

   </property>


3.配置過(guò)程

(1).首先將配置好的hdfs-site.xml和core-site.xml文件發(fā)送到所有的節(jié)點(diǎn)

(2).在JN節(jié)點(diǎn)上啟動(dòng)journalnode進(jìn)程

    $hadoop-daemon.sh start journalnode

(3).啟動(dòng)完成JN之后,需要在disk上完成兩個(gè)nn的元數(shù)據(jù)同步工作

  如果正在構(gòu)建新的hdfs群集,需要先在一臺(tái) namenode上進(jìn)行format工作

  若已經(jīng)格式化文件系統(tǒng)或者在non-ha的群集之上啟用ha功能,需要復(fù)制現(xiàn)有的nn的目錄(~/hadoop/dfs/name)到另外一臺(tái)的nn的相同目錄下,在未格式化的nn上執(zhí)行命令:hdfs namnode -bootstrapStandby,該命令保證jn有足夠多的edit來(lái)啟動(dòng)兩個(gè)nn

  如果正在將non-ha namenode轉(zhuǎn)換成ha,執(zhí)行命令hdfs namenode -initializeShareEdits,會(huì)從local的namenode編輯日志目錄數(shù)據(jù)初始化到j(luò)ns中.啟動(dòng)兩個(gè)nn通過(guò)webui查看每個(gè)nn的狀態(tài)

  http://hadoop01:50070/

  http://hadoop08:50070/

(4).在s100上啟動(dòng)hdfs namenode -initializeShareEdits會(huì)有報(bào)錯(cuò),關(guān)閉namenode解鎖

    s100$hadoop-daemon.sh stop namenode

    然后再次執(zhí)行:

    s100$hdfs namenode -initializeSharedEdits

(5).然后啟動(dòng)兩個(gè)nn

    s100$hadoop-daemon.sh start namenode

    s800$hadoop-daemon.sh start namenode

(6).啟動(dòng)所有的數(shù)據(jù)節(jié)點(diǎn)

    s100$hadoop-daemons.sh start datanode

(7).切換活動(dòng)的節(jié)點(diǎn)

    s100$hdfs haadmin -transitionToActive nn1

    這個(gè)時(shí)候s800將不能允許讀了


4.機(jī)架感知

(1).保證在交換機(jī)故障或者集群內(nèi)部事件問(wèn)題出現(xiàn)時(shí),數(shù)據(jù)任然可用的,通過(guò)兩種方式來(lái)實(shí)現(xiàn)配置機(jī)架感知

  A:一種是通過(guò)配置一個(gè)腳本來(lái)進(jìn)行映射

   在core-site.xml中的topology.script.file.name參數(shù)指定腳本文件的位置

   具體腳本見(jiàn)rack.sh和topology.data,把原來(lái)topology.data文件內(nèi)容改了下,把hostname也添加進(jìn)去了,這樣保證正確性.因?yàn)镴obTracker是通過(guò)hostname進(jìn)行映射的.

  B:另外一種是通過(guò)實(shí)現(xiàn)DNSToSwtichMapping接口的resolve()方法來(lái)完成網(wǎng)絡(luò)位置的映射dnsToSwitchMapping的值是由"core-site.xml"配置文件中"topology.node.switch.mapping.impl"參數(shù)指定,默認(rèn)值是ScriptBaseMapping,也就是通過(guò)讀提前寫(xiě)好的腳本文件來(lái)進(jìn)行網(wǎng)絡(luò)位置映射的,但如果這個(gè)腳本沒(méi)有配置的話,那就使用默認(rèn)值

    "default-rack"作為所有節(jié)點(diǎn)的網(wǎng)絡(luò)位置。自定義了一個(gè)MyResolveNetworkTopology類(lèi)放在了core包的org.apache.hadoop.net目錄下,

    在“core-site.xml”文件中的配置如下:

      <property>

      <name>topology.node.switch.mapping.impl</name>

      <value>org.apache.hadoop.net.MyResolveNetworkTopology</value>

      <description> The default implementation of the DNSToSwitchMapping. It

         invokes a script specified in topology.script.file.name to resolve

         node names. If the value for topology.script.file.name is not set, the

         default value of DEFAULT_RACK is returned for all node names.

      </description>

      </property>

      

(2).編寫(xiě)一個(gè)腳本或者實(shí)現(xiàn)接口org.apache.hadoop.net.DNSToSwitchMapping

   返回?cái)?shù)據(jù)格式如:'/myrack/myhost'

(3).將自定義的機(jī)架感知類(lèi)打成jar包,分發(fā)到所有節(jié)點(diǎn)的${hadoop_home}/share/hadoop/common/lib/

(4).配置類(lèi),指定自定義的類(lèi)名

    topology.node.switch.mapping.impl

    具體格式參照以上信息

(5).刪除所有節(jié)點(diǎn)的日志,啟動(dòng)namenode

    $bin/hadoop dfsadmin -printTopology來(lái)查看機(jī)架感知的位置信息

    

5.distcp集群間數(shù)據(jù)的拷貝

(1).通過(guò)hadoop mr技術(shù)實(shí)現(xiàn)并行復(fù)制,遞歸復(fù)制文件夾.性能較高,可以實(shí)現(xiàn)跨集群復(fù)制

(2).使用方法

    $hadoop distcp hdfs://s100:8020/user/hadoop/data hdfs://X.X.X.X:8020/user/hadoop/new


14.歸檔

(1).java    jar  //jar archieve

(2).hadoop  har  //hadoop archieve

$hadoop archive -archiveName new.har -p /user/hadoop/new  /user/hadoop

(3).刪除垃圾箱

    $hadoop fs -rm -R -f /user/hadoop/.Trash

(4).查看歸檔文件的內(nèi)容

    $hadoop fs -lsr har:///user/hadoop/new.har


6.數(shù)據(jù)完整性

(1).校驗(yàn)和

    Checksum

(2).CRC-32

    cycle redundent check-32

(3).指定校驗(yàn)的字節(jié)數(shù)組長(zhǎng)度

    io.bytes.per.checksum

(4).$hdfs dfs -get -crc /user/hadoop/demo.txt ./downloads

    會(huì)在指定的文件夾下出現(xiàn)一個(gè)叫.demo.txt.crc的文件

(5).$cat .demo.txt.crc 


向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI