日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

HA机制的大数据集群的搭建过程

發(fā)布時(shí)間:2023/12/20 编程问答 20 豆豆
生活随笔 收集整理的這篇文章主要介紹了 HA机制的大数据集群的搭建过程 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

文章目錄

  • 集群規(guī)劃
  • 1、 準(zhǔn)備Linux環(huán)境
    • 1.1、修改Linux主機(jī)名
    • 1.3、修改主機(jī)名和IP的映射關(guān)系
    • 1.4、關(guān)閉防火墻
    • 1.5、ssh免登陸(主節(jié)點(diǎn)和從節(jié)點(diǎn)之間)
  • 2、 安裝JDK
    • 2.1、上傳
    • 2.2、解壓jdk
    • 2.3、將java添加到環(huán)境變量中
    • 2.4、刷新配置
    • 2.5、驗(yàn)證
  • 3、安裝zookeeper
    • 3.1、解壓
    • 3.2、修改環(huán)境變量
    • 3.3、刷新配置
    • 3.4、修改配置文件
    • 3.5、將配置好的zookeeper拷貝到其他節(jié)點(diǎn)
  • 4、安裝配置hadoop集群
    • 4.1、解壓
    • 4.2、修改環(huán)境變量
    • 4.3、修改hadoop配置文件
    • 4.4、將配置好的hadoop拷貝到其他節(jié)點(diǎn)
    • 4.5、初始化集群的步驟
    • 4.6、驗(yàn)證集群的配置

集群規(guī)劃


說明:
1、在hadoop2.0中通常由兩個(gè)NameNode組成,一個(gè)處于active狀態(tài),另一個(gè)處于standby狀態(tài)。Active NameNode對外提供服務(wù),而Standby NameNode則不對外提供服務(wù),僅同步active namenode的狀態(tài),以便能夠在它失敗時(shí)快速進(jìn)行切換。主備NameNode之間通過一組JournalNode同步元數(shù)據(jù)信息,一條數(shù)據(jù)只要成功寫入多數(shù)JournalNode即認(rèn)為寫入成功。通常配置奇數(shù)個(gè)JournalNode。這里還配置了一個(gè)zookeeper集群,用于ZKFC(DFSZKFailoverController)故障轉(zhuǎn)移,當(dāng)Active NameNode掛掉了,會自動(dòng)切換Standby NameNode為standby狀態(tài)。
2、hadoop-2.2.0中依然存在一個(gè)問題,就是ResourceManager只有一個(gè),存在單點(diǎn)故障,hadoop-2.6.4解決了這個(gè)問題,有兩個(gè)ResourceManager,一個(gè)是Active,一個(gè)是Standby,狀態(tài)由zookeeper進(jìn)行協(xié)調(diào)。

集群環(huán)境:
Hadoop2.6.4+Hive2.1.1+Hbase2.0.0+Zookeeper3.4.5+JDK1.8+Centos6.9+Sqoop1.4.6

這里只說下hadoop的搭建過程,其他組件的安裝過程可參考我的其他文章:
Hive2.1.1:https://blog.csdn.net/qq_16633405/article/details/78278979
Hbase2.0.0:https://blog.csdn.net/qq_16633405/article/details/81908283
Sqoop1.4.6:https://blog.csdn.net/qq_16633405/article/details/82224289

1、 準(zhǔn)備Linux環(huán)境

所有節(jié)點(diǎn)都需配置。

1.1、修改Linux主機(jī)名

vi /etc/sysconfig/network 1. NETWORKING=yes 2. HOSTNAME=ha1 ###自定義主機(jī)名

1.2、修改IP

vim /etc/sysconfig/network-scripts/ifcfg-eth03. DEVICE=eth0 4. TYPE=Ethernet 5. ONBOOT=yes 6. NM_CONTROLLED=yes 7. BOOTPROTO=static 8. IPADDR=192.168.112.200 9. GATEWAY=192.168.112.2 ###網(wǎng)關(guān)地址和子網(wǎng)IP不要重復(fù) 10. NETMASK=255.255.255.0 11. DNS=192.168.112.2

1.3、修改主機(jī)名和IP的映射關(guān)系

vim /etc/hosts 1. 192.168.112.21 ha2 2. 192.168.112.22 ha3 3. 192.168.112.20 ha1

1.4、關(guān)閉防火墻

#查看防火墻狀態(tài) service iptables status #關(guān)閉防火墻 service iptables stop #查看防火墻開機(jī)啟動(dòng)狀態(tài) chkconfig iptables --list #關(guān)閉防火墻開機(jī)啟動(dòng) chkconfig iptables off

1.5、ssh免登陸(主節(jié)點(diǎn)和從節(jié)點(diǎn)之間)

在ha1上生產(chǎn)一對鑰匙 ssh-keygen -t rsa #將公鑰拷貝到其他節(jié)點(diǎn),包括自己 ssh-coyp-id ha1 ssh-coyp-id ha2 …… #配置ha2到ha3、ha4、ha5的免密碼登陸 #在ha2上生產(chǎn)一對鑰匙 ssh-keygen -t rsa #將公鑰拷貝到其他節(jié)點(diǎn) ssh-coyp-id ha2 ssh-coyp-id ha3 …… #注意:兩個(gè)namenode之間要配置ssh免密碼登陸 #在ha2上執(zhí)行 ssh-coyp-id ha1 驗(yàn)證: ssh ha1 exit

2、 安裝JDK

所有節(jié)點(diǎn)都需配置

2.1、上傳

2.2、解壓jdk

創(chuàng)建文件夾 mkdir /home/hadoop/app #解壓 tar -zxvf jdk-7u55-linux-i586.tar.gz -C /home/hadoop/app

2.3、將java添加到環(huán)境變量中

vim /etc/profile#在文件最后添加 4. export JAVA_HOME=/home/hadoop/app/jdk-7u_65-i585 5. export PATH=$PATH:$JAVA_HOME/bin

2.4、刷新配置

source /etc/profile

2.5、驗(yàn)證

Jsp

3、安裝zookeeper

版本:3.4.5
安裝配置zooekeeper集群(在ha1、ha2、ha3上)

3.1、解壓

tar -zxvf zookeeper-3.4.5.tar.gz -C /home/hadoop/app/

3.2、修改環(huán)境變量

vi /etc/profile #添加內(nèi)容: 6. export ZOOKEEPER_HOME=/root/hadoop/zookeeper 7. export PATH=$PATH:$ZOOKEEPER_HOME/bin

3.3、刷新配置

source /etc/profile

3.4、修改配置文件

cd /home/hadoop/app/zookeeper-3.4.5/conf/ cp zoo_sample.cfg zoo.cfg vim zoo.cfg 修改:dataDir=/root/apps/zookeeper-3.4.5/tmp 在最后添加: 8. server.1=ha1:2888:3888 9. server.2=ha2:2888:3888 10. server.3=ha3:2888:3888保存退出 然后創(chuàng)建一個(gè)tmp文件夾: mkdir /home/hadoop/app/zookeeper-3.4.5/tmp echo 1 > /home/hadoop/app/zookeeper-3.4.5/tmp/myid

3.5、將配置好的zookeeper拷貝到其他節(jié)點(diǎn)

首先分別在ha2、ha3根目錄下創(chuàng)建一個(gè)hadoop目錄:mkdir /Hadoop

scp -r /home/hadoop/app/zookeeper-3.4.5/ ha2:/home/hadoop/app/ scp -r /home/hadoop/app/zookeeper-3.4.5/ ha3:/home/hadoop/app/

注意:修改ha2、ha3對應(yīng)/hadoop/zookeeper-3.4.5/tmp/myid內(nèi)容
Ha2:

echo 2 > /home/hadoop/app/zookeeper-3.4.5/tmp/myid
ha3:
echo 3 > /home/hadoop/app/zookeeper-3.4.5/tmp/myid

4、安裝配置hadoop集群

版本:2.6.4
在ha1上操作。

4.1、解壓

tar -zxvf hadoop-2.6.4.tar.gz -C /home/hadoop/app/

4.2、修改環(huán)境變量

hadoop2.0所有的配置文件都在$HADOOP_HOME/etc/hadoop目錄下。

#將hadoop添加到環(huán)境變量中 vim /etc/profile11. export HADOOP_HOME=/hadoop/hadoop-2.6.4 12. export PATH=$PATH:$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin

4.3、修改hadoop配置文件

cd /home/hadoop/app/hadoop-2.6.4/etc/hadoop

4.3.1修改hadoo-env.sh

13. export JAVA_HOME=/home/hadoop/app/jdk1.7.0_55

4.3.2修改core-site.xml

14. <configuration> 15. <!-- 指定hdfs的nameservice為ns1 --> 16. <property> 17. <name>fs.defaultFS</name> 18. <value>hdfs://bi/</value> 19. </property> 20. <!-- 指定hadoop臨時(shí)目錄 --> 21. <property> 22. <name>hadoop.tmp.dir</name> 23. <value>/home/hadoop/app/hdpdata/</value> 24. </property> 25. 26. <!-- 指定zookeeper地址 --> 27. <property> 28. <name>ha.zookeeper.quorum</name> 29. <value>mini5:2181,mini6:2181,mini7:2181</value> 30. </property> 31. </configuration>

4.3.3修改hdfs-site.xml

32. <configuration> 33. <!--指定hdfs的nameservice為bi,需要和core-site.xml中的保持一致 --> 34. <property> 35. <name>dfs.nameservices</name> 36. <value>bi</value> 37. </property> 38. <!-- bi下面有兩個(gè)NameNode,分別是nn1,nn2 --> 39. <property> 40. <name>dfs.ha.namenodes.bi</name> 41. <value>nn1,nn2</value> 42. </property> 43. <!-- nn1的RPC通信地址 --> 44. <property> 45. <name>dfs.namenode.rpc-address.bi.nn1</name> 46. <value>ha1:9000</value> 47. </property> 48. <!-- nn1的http通信地址 --> 49. <property> 50. <name>dfs.namenode.http-address.bi.nn1</name> 51. <value>ha1:50070</value> 52. </property> 53. <!-- nn2的RPC通信地址 --> 54. <property> 55. <name>dfs.namenode.rpc-address.bi.nn2</name> 56. <value>ha2:9000</value> 57. </property> 58. <!-- nn2的http通信地址 --> 59. <property> 60. <name>dfs.namenode.http-address.bi.nn2</name> 61. <value>ha2:50070</value> 62. </property> 63. <!-- 指定NameNode的edits元數(shù)據(jù)在JournalNode上的存放位置 --> 64. <property> 65. <name>dfs.namenode.shared.edits.dir</name> 66. <value>qjournal://ha3:8485/bi</value> 67. </property> 68. <!-- 指定JournalNode在本地磁盤存放數(shù)據(jù)的位置 --> 69. <property> 70. <name>dfs.journalnode.edits.dir</name> 71. <value>/home/hadoop/journaldata</value> 72. </property> 73. <!-- 開啟NameNode失敗自動(dòng)切換 --> 74. <property> 75. <name>dfs.ha.automatic-failover.enabled</name> 76. <value>true</value> 77. </property> 78. <!-- 配置失敗自動(dòng)切換實(shí)現(xiàn)方式 --> 79. <property> 80. <name>dfs.client.failover.proxy.provider.bi</name> 81. <value>org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider</value> 82. </property> 83. <!-- 配置隔離機(jī)制方法,多個(gè)機(jī)制用換行分割,即每個(gè)機(jī)制暫用一行--> 84. <property> 85. <name>dfs.ha.fencing.methods</name> 86. <value> 87. sshfence 88. shell(/bin/true) 89. </value> 90. </property> 91. <!-- 使用sshfence隔離機(jī)制時(shí)需要ssh免登陸 --> 92. <property> 93. <name>dfs.ha.fencing.ssh.private-key-files</name> 94. <value>/root/.ssh/id_rsa</value> 95. </property> 96. <!-- 配置sshfence隔離機(jī)制超時(shí)時(shí)間 --> 97. <property> 98. <name>dfs.ha.fencing.ssh.connect-timeout</name> 99. <value>30000</value> 100. </property> 101. </configuration>

4.3.4修改mapred-site.xml

102. <configuration> 103. <!-- 指定mr框架為yarn方式 --> 104. <property> 105. <name>mapreduce.framework.name</name> 106. <value>yarn</value> 107. </property> 108. </configuration>

4.3.5修改yarn-site.xml

109. <configuration> 110. <!-- 開啟RM高可用 --> 111. <property> 112. <name>yarn.resourcemanager.ha.enabled</name> 113. <value>true</value> 114. </property> 115. <!-- 指定RM的cluster id --> 116. <property> 117. <name>yarn.resourcemanager.cluster-id</name> 118. <value>yrc</value> 119. </property> 120. <!-- 指定RM的名字 --> 121. <property> 122. <name>yarn.resourcemanager.ha.rm-ids</name> 123. <value>rm1,rm2</value> 124. </property> 125. <!-- 分別指定RM的地址 --> 126. <property> 127. <name>yarn.resourcemanager.hostname.rm1</name> 128. <value>ha1</value> 129. </property> 130. <property> 131. <name>yarn.resourcemanager.hostname.rm2</name> 132. <value>ha2</value> 133. </property> 134. <!-- 指定zk集群地址,用來存儲RM的狀態(tài),配置三個(gè)節(jié)點(diǎn)(三份數(shù)據(jù))就OK了 --> 135. <property> 136. <name>yarn.resourcemanager.zk-address</name> 137. <value>ha3:2181</value> 138. </property> 139. <property> 140. <name>yarn.nodemanager.aux-services</name> 141. <value>mapreduce_shuffle</value> 142. </property> 143. </configuration>

4.3.6修改slaves
slaves是指定子節(jié)點(diǎn)的位置,因?yàn)橐趆a1上啟動(dòng)HDFS、yarn,所以ha1上的slaves文件指定的是datanode、nodemanager的位置。添加需要的節(jié)點(diǎn):

144. ha3

4.4、將配置好的hadoop拷貝到其他節(jié)點(diǎn)

scp -r /hadoop/hadoop-2.6.4/ hadoop@ha2:/hadoop/ scp -r /hadoop/hadoop-2.6.4/ hadoop@ha3:/hadoop/

4.5、初始化集群的步驟

注意:嚴(yán)格按照下面的步驟!!!
4.5.1啟動(dòng)zookeeper集群
分別在ha1、ha2、ha3上啟動(dòng)zk

cd /hadoop/zookeeper-3.4.5/bin/./zkServer.sh start#查看狀態(tài):一個(gè)leader,兩個(gè)follower./zkServer.sh status

4.5.2啟動(dòng)journalnode
在ha3上啟動(dòng)journalnode

cd /hadoop/hadoop-2.6.4sbin/hadoop-daemon.sh start journalnode#運(yùn)行jps命令檢驗(yàn),ha3上多了JournalNode進(jìn)程

4.5.3格式化HDFS
在ha1上執(zhí)行命令:

hdfs namenode -format #格式化后會在根據(jù)core-site.xml中的hadoop.tmp.dir配置生成個(gè)文件,這里我配置的是/hadoop/hadoop-2.6.4/tmp,然后將/hadoop/hadoop-2.6.4/tmp拷貝到ha2的/hadoop/hadoop-2.6.4/下。scp -r tmp/ hadoop02:/home/hadoop/app/hadoop-2.6.4/##也可以這樣,建議hdfs namenode -bootstrapStandby

4.5.4格式化ZKFC
在ha1上執(zhí)行一次即可

hdfs zkfc -formatZK

4.5.5啟動(dòng)HDFS
在ha1上執(zhí)行

sbin/start-dfs.sh

4.5.6啟動(dòng)YARN
分別在ha1、ha2上啟動(dòng)ResourceManager

sbin/start-yarn.sh

4.6、驗(yàn)證集群的配置

hadoop-2.6.4配置完畢,驗(yàn)證集群的配置。
可以統(tǒng)計(jì)瀏覽器訪問:
http://ha1:50070
NameNode ‘hadoop01:9000’ (active)
http://ha2:50070
NameNode ‘hadoop02:9000’ (standby)

4.6.1驗(yàn)證HDFS HA
首先向hdfs上傳一個(gè)文件

hadoop fs -put /etc/profile /profile

#查看上傳到hdfs的文件

hadoop fs -ls /

然后再kill掉active的NameNode

kill -9 <pid of NN>

通過瀏覽器訪問:http://ha2:50070
NameNode ‘hadoop02:9000’ (active)
這個(gè)時(shí)候ha2上的NameNode變成了active
在執(zhí)行命令:

hadoop fs -ls / -rw-r--r-- 3 root supergroup 1926 2014-02-06 15:36 /profile

剛才上傳的文件依然存在!
手動(dòng)啟動(dòng)那個(gè)掛掉的NameNode

sbin/hadoop-daemon.sh start namenode

通過瀏覽器訪問:http://ha1:50070
NameNode ‘ha1:9000’ (standby)

4.6.2驗(yàn)證YARN:
運(yùn)行一下hadoop提供的demo中的WordCount程序:

hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.4.1.jar wordcount /profile /out 無報(bào)錯(cuò),OK,大功告成!

4.6.3測試集群工作狀態(tài)的一些指令

bin/hdfs dfsadmin -report 查看hdfs的各節(jié)點(diǎn)狀態(tài)信息bin/hdfs haadmin -getServiceState nn1 獲取一個(gè)namenode節(jié)點(diǎn)的HA狀態(tài)sbin/hadoop-daemon.sh start namenode 單獨(dú)啟動(dòng)一個(gè)namenode進(jìn)程./hadoop-daemon.sh start zkfc 單獨(dú)啟動(dòng)一個(gè)zkfc進(jìn)程

總結(jié)

以上是生活随笔為你收集整理的HA机制的大数据集群的搭建过程的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。