欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

centos7搭建hadoop2.10高可用(HA)

 更新時(shí)間:2020年02月03日 10:27:46   作者:七星6609  
這篇文章主要介紹了centos7搭建hadoop2.10高可用(HA),本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下

本篇介紹在centos7中搭建hadoop2.10高可用集群,首先準(zhǔn)備6臺(tái)機(jī)器:2臺(tái)nn(namenode);4臺(tái)dn(datanode);3臺(tái)jns(journalnodes)

IP hostname 進(jìn)程
192.168.30.141 s141 nn1(namenode),zkfc(DFSZKFailoverController),zk(QuorumPeerMain)
192.168.30.142 s142 dn(datanode), jn(journalnode),zk(QuorumPeerMain)
192.168.30.143 s143 dn(datanode), jn(journalnode),zk(QuorumPeerMain)
192.168.30.144 s144 dn(datanode), jn(journalnode)
192.168.30.145 s145 dn(datanode)
192.168.30.146 s146 nn2(namenode),zkfc(DFSZKFailoverController)

各個(gè)機(jī)器 jps進(jìn)程:

由于本人使用的是vmware虛擬機(jī),所以在配置好一臺(tái)機(jī)器后,使用克隆,克隆出剩余機(jī)器,并修改hostname和IP,這樣每臺(tái)機(jī)器配置就都統(tǒng)一了每臺(tái)機(jī)器配置添加hdfs用戶及用戶組,配置jdk環(huán)境,安裝hadoop,本次搭建高可用集群在hdfs用戶下,可以參照:centos7搭建hadoop2.10偽分布模式

下面是安裝高可用集群的一些步驟和細(xì)節(jié):

1.設(shè)置每臺(tái)機(jī)器的hostname 和 hosts

修改hosts文件,hosts設(shè)置有后可以使用hostname訪問(wèn)機(jī)器,這樣比較方便,修改如下:

127.0.0.1 locahost
192.168.30.141 s141
192.168.30.142 s142
192.168.30.143 s143
192.168.30.144 s144
192.168.30.145 s145
192.168.30.146 s146

2.設(shè)置ssh無(wú)密登錄,由于s141和s146都為namenode,所以要將這兩臺(tái)機(jī)器無(wú)密登錄到所有機(jī)器,最好hdfs用戶和root用戶都設(shè)置無(wú)密登錄

我們將s141設(shè)置為nn1,s146設(shè)置為nn2,就需要s141、s146能夠通過(guò)ssh無(wú)密登錄到其他機(jī)器,這樣就需要在s141和s146機(jī)器hdfs用戶下生成密鑰對(duì),并將s141和s146公鑰發(fā)送到其他機(jī)器放到~/.ssh/authorized_keys文件中,更確切的說(shuō)要將公鑰添加的所有機(jī)器上(包括自己)

在s141和s146機(jī)器上生成密鑰對(duì):

ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa

將id_rsa.pub文件內(nèi)容追加到s141-s146機(jī)器的/home/hdfs/.ssh/authorized_keys中,現(xiàn)在其他機(jī)器暫時(shí)沒(méi)有authorized_keys文件,我們就將id_rsa.pub更名為authorized_keys即可,如果其他機(jī)器已存在authorized_keys文件可以將id_rsa.pub內(nèi)容追加到該文件后,遠(yuǎn)程復(fù)制可以使用scp命令:

s141機(jī)器公鑰復(fù)制到其他機(jī)器

scp id_rsa.pub hdfs@s141:/home/hdfs/.ssh/id_rsa_141.pub
scp id_rsa.pub hdfs@s142:/home/hdfs/.ssh/id_rsa_141.pub
scp id_rsa.pub hdfs@s143:/home/hdfs/.ssh/id_rsa_141.pub
scp id_rsa.pub hdfs@s144:/home/hdfs/.ssh/id_rsa_141.pub
scp id_rsa.pub hdfs@s145:/home/hdfs/.ssh/id_rsa_141.pub
scp id_rsa.pub hdfs@s146:/home/hdfs/.ssh/id_rsa_141.pub

s146機(jī)器公鑰復(fù)制到其他機(jī)器

scp id_rsa.pub hdfs@s141:/home/hdfs/.ssh/id_rsa_146.pub
scp id_rsa.pub hdfs@s142:/home/hdfs/.ssh/id_rsa_146.pub
scp id_rsa.pub hdfs@s143:/home/hdfs/.ssh/id_rsa_146.pub
scp id_rsa.pub hdfs@s144:/home/hdfs/.ssh/id_rsa_146.pub
scp id_rsa.pub hdfs@s145:/home/hdfs/.ssh/id_rsa_146.pub
scp id_rsa.pub hdfs@s146:/home/hdfs/.ssh/id_rsa_146.pub

在每臺(tái)機(jī)器上可以使用cat將秘鑰追加到authorized_keys文件

cat id_rsa_141.pub >> authorized_keys
cat id_rsa_146.pub >> authorized_keys

此時(shí)authorized_keys文件權(quán)限需要改為644(注意,經(jīng)常會(huì)因?yàn)檫@個(gè)權(quán)限問(wèn)題導(dǎo)致ssh無(wú)密登錄失敗)

chmod 644 authorized_keys

3.配置hadoop配置文件(${hadoop_home}/etc/hadoop/)

配置細(xì)節(jié):

注意:s141和s146具有完全一致的配置,尤其是ssh.

1) 配置nameservice

[hdfs-site.xml]
<property>
 <name>dfs.nameservices</name>
 <value>mycluster</value>
</property>


2) dfs.ha.namenodes.[nameservice ID]

[hdfs-site.xml]
<!-- myucluster下的名稱節(jié)點(diǎn)兩個(gè)id -->
<property>
  <name>dfs.ha.namenodes.mycluster</name>
  <value>nn1,nn2</value>
</property>

3) dfs.namenode.rpc-address.[nameservice ID].[name node ID]

[hdfs-site.xml]
配置每個(gè)nn的rpc地址。
<property>
 <name>dfs.namenode.rpc-address.mycluster.nn1</name>
 <value>s141:8020</value>
</property>
<property>
 <name>dfs.namenode.rpc-address.mycluster.nn2</name>
 <value>s146:8020</value>
</property>

4) dfs.namenode.http-address.[nameservice ID].[name node ID]
配置webui端口

[hdfs-site.xml]
<property>
 <name>dfs.namenode.http-address.mycluster.nn1</name>
 <value>s141:50070</value>
</property>
<property>
 <name>dfs.namenode.http-address.mycluster.nn2</name>
 <value>s146:50070</value>
</property>

5) dfs.namenode.shared.edits.dir
名稱節(jié)點(diǎn)共享編輯目錄.選擇三臺(tái)journalnode節(jié)點(diǎn),這里選擇s142、s143、s144三臺(tái)機(jī)器

[hdfs-site.xml]
<property>
 <name>dfs.namenode.shared.edits.dir</name>
 <value>qjournal://s142:8485;s143:8485;s144:8485/mycluster</value>
</property>

6) dfs.client.failover.proxy.provider.[nameservice ID]
配置一個(gè)HA失敗轉(zhuǎn)移的java類(改配置是固定的),client使用它判斷哪個(gè)節(jié)點(diǎn)是激活態(tài)。

[hdfs-site.xml]
<property>
 <name>dfs.client.failover.proxy.provider.mycluster</name>
 <value>org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider</value>
</property>

7) dfs.ha.fencing.methods
腳本列表或者java類,在容災(zāi)保護(hù)激活態(tài)的nn.

[hdfs-site.xml]
<property>
 <name>dfs.ha.fencing.methods</name>
 <value>sshfence</value>
</property>

<property>
 <name>dfs.ha.fencing.ssh.private-key-files</name>
 <value>/home/hdfs/.ssh/id_rsa</value>
</property>

8) fs.defaultFS
配置hdfs文件系統(tǒng)名稱服務(wù)。這里的mycluster為上面配置的dfs.nameservices  

[core-site.xml]
<property>
 <name>fs.defaultFS</name>
 <value>hdfs://mycluster</value>
</property>

9) dfs.journalnode.edits.dir
配置JN存放edit的本地路徑。

[hdfs-site.xml]
<property>
 <name>dfs.journalnode.edits.dir</name>
 <value>/home/hdfs/hadoop/journal</value>
</property>

完整配置文件:

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>/home/hdfs/hadoop</value>
 </property>
</configuration>

hdfs-site.xml

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

<configuration>
 <property>
   <name>dfs.replication</name>
   <value>3</value>
 </property>
 <property>
   <name>dfs.hosts</name>
   <value>/opt/soft/hadoop/etc/dfs.include.txt</value>
 </property>
 <property>
   <name>dfs.hosts.exclude</name>
   <value>/opt/soft/hadoop/etc/dfs.hosts.exclude.txt</value>
 </property>
 <property>
  <name>dfs.nameservices</name>
  <value>mycluster</value>
 </property>
 <property>
  <name>dfs.ha.namenodes.mycluster</name>
  <value>nn1,nn2</value>
 </property>
 <property>
  <name>dfs.namenode.rpc-address.mycluster.nn1</name>
  <value>s141:8020</value>
 </property>
 <property>
  <name>dfs.namenode.rpc-address.mycluster.nn2</name>
  <value>s146:8020</value>
 </property>
 <property>
  <name>dfs.namenode.http-address.mycluster.nn1</name>
  <value>s141:50070</value>
 </property>
 <property>
  <name>dfs.namenode.http-address.mycluster.nn2</name>
  <value>s146:50070</value>
 </property>
 <property>
  <name>dfs.namenode.shared.edits.dir</name>
  <value>qjournal://s142:8485;s143:8485;s144:8485/mycluster</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>/home/hdfs/.ssh/id_rsa</value>
 </property>
 <property>
  <name>dfs.journalnode.edits.dir</name>
  <value>/home/hdfs/hadoop/journal</value>
 </property>
</configuration>

mapred-site.xml

<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>

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

yarn-site.xml

<?xml version="1.0"?>

<configuration>

<!-- Site specific YARN configuration properties -->
 <property>
   <name>yarn.resourcemanager.hostname</name>
   <value>s141</value>
 </property>
 <property>
    <name>yarn.nodemanager.aux-services</name>
   <value>mapreduce_shuffle</value>
 </property>
</configuration>

4. 部署細(xì)節(jié)

1)在jn節(jié)點(diǎn)分別啟動(dòng)jn進(jìn)程(s142,s143,s144)

hadoop-daemon.sh start journalnode

2)啟動(dòng)jn之后,在兩個(gè)NN之間進(jìn)行disk元數(shù)據(jù)同步

  a)如果是全新集群,先f(wàn)ormat文件系統(tǒng),只需要在一個(gè)nn上執(zhí)行。
  [s141|s146]

hadoop namenode -format

  b)如果將非HA集群轉(zhuǎn)換成HA集群,復(fù)制原NN的metadata到另一個(gè)NN上.

    1.步驟一
    在s141機(jī)器上,將hadoop數(shù)據(jù)復(fù)制到s146對(duì)應(yīng)的目錄下

scp -r /home/hdfs/hadoop/dfs hdfs@s146:/home/hdfs/hadoop/

    2.步驟二
    在新的nn(未格式化的nn,我這里是s146)上運(yùn)行以下命令,實(shí)現(xiàn)待命狀態(tài)引導(dǎo)。注意:需要s141namenode為啟動(dòng)狀態(tài)(可以執(zhí)行:hadoop-daemon.sh start namenode )。

hdfs namenode -bootstrapStandby

    如果沒(méi)有啟動(dòng)s141名稱節(jié)點(diǎn),就會(huì)失敗,如圖:

    啟動(dòng)s141名稱節(jié)點(diǎn)后,在s141上執(zhí)行命令

hadoop-daemon.sh start namenode

    然后在執(zhí)行待命引導(dǎo)命令,注意:提示是否格式化,選擇N,如圖:

    3. 步驟三

    在其中一個(gè)NN上執(zhí)行以下命令,完成edit日志到j(luò)n節(jié)點(diǎn)的傳輸。

hdfs namenode -initializeSharedEdits

    如果執(zhí)行過(guò)程中報(bào):java.nio.channels.OverlappingFileLockException 錯(cuò)誤:

      說(shuō)明namenode在啟動(dòng)中,需要停掉namenode節(jié)點(diǎn)(hadoop-daemon.sh stop namenode)

      執(zhí)行完后查看s142,s143,s144是否有edit數(shù)據(jù),這里查看生產(chǎn)了mycluster目錄,里面有編輯日志數(shù)據(jù),如下:

      4.步驟四

      啟動(dòng)所有節(jié)點(diǎn).

      在s141上啟動(dòng)名稱節(jié)點(diǎn)和所有數(shù)據(jù)節(jié)點(diǎn):

hadoop-daemon.sh start namenode
hadoop-daemons.sh start datanode

      在s146上啟動(dòng)名稱節(jié)點(diǎn)

hadoop-daemon.sh start namenode

此時(shí)在瀏覽器中訪問(wèn)http://192.168.30.141:50070/http://192.168.30.146:50070/你會(huì)發(fā)現(xiàn)兩個(gè)namenode都為standby

  

這時(shí)需要手動(dòng)使用命令將其中一個(gè)切換為激活態(tài),這里將s141(nn1)設(shè)置為active

hdfs haadmin -transitionToActive nn1

此時(shí)s141就為active

hdfs haadmin常用命令:

至此手動(dòng)容災(zāi)高可用配置完成,但是這種方式不智能,不能夠自動(dòng)感知容災(zāi),所以下面介紹自動(dòng)容災(zāi)配置

5.自動(dòng)容災(zāi)配置

需要引入zookeeperquarum 和 zk 容災(zāi)控制器(ZKFC)兩個(gè)組件

  搭建zookeeper集群,選擇s141,s142,s143三臺(tái)機(jī)器,下載 zookeeper:http://mirror.bit.edu.cn/apache/zookeeper/zookeeper-3.5.6

  1) 解壓zookeeper:

tar -xzvf apache-zookeeper-3.5.6-bin.tar.gz -C /opt/soft/zookeeper-3.5.6

  2) 配置環(huán)境變量,在/etc/profile中添加zk環(huán)境變量,并重新編譯/etc/profile文件

復(fù)制代碼 代碼如下:
source /etc/profile

  3) 配置zk配置文件,三臺(tái)機(jī)器配置文件統(tǒng)一

# 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=/home/hdfs/zookeeper
# 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
# Purge task interval in hours
# Set to "0" to disable auto purge feature
#autopurge.purgeInterval=1
server.1=s141:2888:3888
server.2=s142:2888:3888
server.3=s143:2888:3888

  4)分別

    在s141的/home/hdfs/zookeeper(在zoo.cfg配置文件中配置的dataDir路徑)目錄下創(chuàng)建myid文件,值為1(對(duì)應(yīng)zoo.cfg配置文件中的server.1)

    在s142的/home/hdfs/zookeeper(在zoo.cfg配置文件中配置的dataDir路徑)目錄下創(chuàng)建myid文件,值為2(對(duì)應(yīng)zoo.cfg配置文件中的server.2)

    在s143的/home/hdfs/zookeeper(在zoo.cfg配置文件中配置的dataDir路徑)目錄下創(chuàng)建myid文件,值為3(對(duì)應(yīng)zoo.cfg配置文件中的server.3)

  5) 分別在每臺(tái)機(jī)器上啟動(dòng)zk

zkServer.sh start

  啟動(dòng)成功會(huì)出現(xiàn)zk進(jìn)程:

配置hdfs相關(guān)配置:

  1)停止hdfs所有進(jìn)程

stop-all.sh

  2)配置hdfs-site.xml,啟用自動(dòng)容災(zāi).

[hdfs-site.xml]
<property>
 <name>dfs.ha.automatic-failover.enabled</name>
 <value>true</value>
</property>

  3) 配置core-site.xml,指定zk的連接地址.

<property>
 <name>ha.zookeeper.quorum</name>
 <value>s141:2181,s142:2181,s143:2181</value>
</property>

  4) 分發(fā)以上兩個(gè)文件到所有節(jié)點(diǎn)。

  5) 在其中的一臺(tái)NN(s141),在ZK中初始化HA狀態(tài)

hdfs zkfc -formatZK

  出現(xiàn)如下結(jié)果說(shuō)明成功:

  也可去zk中查看:

  6) 啟動(dòng)hdfs集群

start-dfs.sh

查看各個(gè)機(jī)器進(jìn)程:

啟動(dòng)成功,再看一下webui

  s146為激活態(tài)

  s141為待命態(tài)

至此hadoop 自動(dòng)容災(zāi)HA搭建完成

總結(jié)

以上所述是小編給大家介紹的centos7搭建hadoop2.10高可用(HA),希望對(duì)大家有所幫助!

相關(guān)文章

  • 詳解Linux下隨機(jī)生成密碼的命令總結(jié)

    詳解Linux下隨機(jī)生成密碼的命令總結(jié)

    本文詳細(xì)介紹了如何使用Linux下命令來(lái)隨機(jī)生成安全、符合密碼復(fù)雜度的命令。 非常具有實(shí)用價(jià)值,需要的朋友可以參考下
    2017-04-04
  • Linux分區(qū)格式化的命令

    Linux分區(qū)格式化的命令

    當(dāng)硬盤(pán)分區(qū)完成后,需要對(duì)分區(qū)進(jìn)行格式化。 下面小編給大家?guī)?lái)了Linux分區(qū)格式化的命令,感興趣的朋友一起看看吧
    2018-08-08
  • Linux系統(tǒng)cpu飆高的排查方法

    Linux系統(tǒng)cpu飆高的排查方法

    本文介紹了如何在Linux系統(tǒng)中通過(guò)檢查CPU使用率、系統(tǒng)負(fù)載、進(jìn)程資源、系統(tǒng)調(diào)用、日志分析以及使用性能工具如perf來(lái)診斷CPU占用過(guò)高的問(wèn)題,幫助用戶定位和解決問(wèn)題,需要的朋友可以參考下
    2024-10-10
  • 11個(gè)有用的Linux命令

    11個(gè)有用的Linux命令

    Linux命令行吸引了大多數(shù)Linux愛(ài)好者。一個(gè)正常的Linux用戶一般掌握大約50-60個(gè)命令來(lái)處理每日的任務(wù)。今天為你解釋下面幾個(gè)命令:sudo、python、mtr、Ctrl+x+e、nl、shuf、shuf、last。
    2013-10-10
  • linux命令如何查看jvm堆內(nèi)存信息

    linux命令如何查看jvm堆內(nèi)存信息

    這篇文章主要介紹了linux命令如何查看jvm堆內(nèi)存信息方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-07-07
  • linux性能調(diào)試之vmstat分析

    linux性能調(diào)試之vmstat分析

    這篇文章主要介紹了linux性能調(diào)試之vmstat分析。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2018-03-03
  • Linux與Windows文件互傳(VMWare)

    Linux與Windows文件互傳(VMWare)

    這篇文章主要介紹了Linux與Windows文件互傳的相關(guān)資料,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-06-06
  • Linux中find命令的用法入門(mén)

    Linux中find命令的用法入門(mén)

    Linux系統(tǒng)下的find 命令用于在目錄結(jié)構(gòu)中查找文件,同時(shí)還可以對(duì)查找結(jié)果進(jìn)行指定的操作。下面這篇文章主要介紹了Linux中find命令的用法,需要的朋友可以參考借鑒,下面來(lái)一起看看吧。
    2017-01-01
  • CentOS平臺(tái)快速搭建LAMP環(huán)境的方法

    CentOS平臺(tái)快速搭建LAMP環(huán)境的方法

    這篇文章主要介紹了CentOS平臺(tái)快速搭建LAMP環(huán)境的方法,結(jié)合實(shí)例形式分析了CentOS服務(wù)器上搭建LAMP環(huán)境的步驟、相關(guān)命令與操作注意事項(xiàng),需要的朋友可以參考下
    2019-05-05
  • 如何配置Apache服務(wù)器中的虛擬機(jī)

    如何配置Apache服務(wù)器中的虛擬機(jī)

    Apache 的虛擬主機(jī)就是在一臺(tái)服務(wù)器上運(yùn)行多個(gè)網(wǎng)站,每個(gè)虛擬主機(jī)都可以綁定獨(dú)立的域名,為這些域名可以指定單獨(dú)的目錄,訪問(wèn)這些域名的時(shí)候,Apache 會(huì)打開(kāi)對(duì)應(yīng)目錄里面的東西。本文給大家介紹Apache服務(wù)器虛擬機(jī)的配置方法,感興趣的朋友一起學(xué)習(xí)吧
    2016-04-04

最新評(píng)論