hadoop2.8 ha 集群搭建
簡(jiǎn)介:
最近在看hadoop的一些知識(shí),下面搭建一個(gè)ha (高可用)的hadoop完整分布式集群:
hadoop的單機(jī),偽分布式,分布式安裝
? ? ? ?hadoop2.8 集群 1 (偽分布式搭建
? ? ? ?hadoop2.8 ha 集群搭建
hbase完整分布式集群搭建
hadoop完整集群遇到問題匯總
搭建步驟:
| 主機(jī) | 別名 | 安裝軟件 | 現(xiàn)有進(jìn)程 | 服務(wù)地址 |
| 192.168.248.138 | cdh1 | hadoop2.8 jdk1.8 | namenode DFSZKFailoverController | http://cdh1:50070? |
| 192.168.248.139 | cdh2 | hadoop2.8 jdk1.8 | namenode DFSZKFailoverController | http://cdh1:50070 |
| 192.168.248.140 | cdh3 | hadoop2.8 jdk1.8 | ResourceManager | ? |
| 192.168.248.141 | cdh4 | hadoop2.8 jdk1.8 zookeeper3.4.13 | QuorumPeerMain JournalNode DataNode NodeManager | ?http://cdh3:8088 |
| 192.168.248.142 | cdh5 | hadoop2.8 jdk1.8 zookeeper3.4.13? | QuorumPeerMain JournalNode DataNode NodeManager? | ? |
| 192.168.248.143 | cdh6 | hadoop2.8 jdk1.8 zookeeper3.4.13? | QuorumPeerMain JournalNode DataNode NodeManager? | ? |
| 192.168.248.144 | cdh7 | hadoop2.8 jdk1.8? | JournalNode DataNode NodeManager? | ? |
?
1>??關(guān)閉防火墻,禁止設(shè)置開機(jī)啟動(dòng):
(1)?//臨時(shí)關(guān)閉 systemctl stop firewalld
(2)?//禁止開機(jī)啟動(dòng) systemctl disable firewalld
?
注意:centos7防火墻默認(rèn)是:firewalld??
centos6 的命令是:
//臨時(shí)關(guān)閉
service iptables stop
//禁止開機(jī)啟動(dòng)
chkconfig iptables off
2>?修改selinux 屬性為disabled
?
注意:修改了selinux或者修改了hostname需要重啟使其生效【在這我沒立即啟動(dòng),下面配置好基礎(chǔ)環(huán)境后再統(tǒng)一啟動(dòng)】
3>?Yum 安裝net-tools.x86_64和lrzsz.x86_64 ?
(1)?Net-tools是為了ifconfig ???yum install -y net-tools.x86_64
(2)?Lrzsz是方便拖文件上傳 ???yum install -y ?lrzsz.x86_64
因?yàn)槲业溺R像是,mini版的centos,除了基礎(chǔ)命令和yum其他命令都需要自己安裝。如果用完整版centos這些命令都已經(jīng)集成進(jìn)去了。?
4>??準(zhǔn)備集群所需要的相應(yīng)軟件安裝包
(1)?Jdk1.8
(2)?Hadoop2.8
(3)?Zookeeper3.4.13
暫時(shí)準(zhǔn)備這這些基本軟件,在cdh家目錄下創(chuàng)建一個(gè)hadoop目錄,把上述基本軟件上傳到該家目錄下的hadoop文件夾下。
?
(4)?安裝jdk【用root權(quán)限去安裝】
①?[cdh@localhost hadoop]$ tar -zxvf jdk-8u181-linux-x64.tar.gz
②?修改環(huán)境變量 ?vi ~/.bash_profile | ??vi /etc/profile
source ~/.bash_profile ?使其生效
Java -version 驗(yàn)證安裝是否成功
?
到這cdh1號(hào)機(jī)器基本軟件安裝完成:下面我來關(guān)閉cdh1來克隆幾份服務(wù)器,這樣cdh1安裝配置那些軟件和配置都會(huì)同步過去。克隆步驟如下
(1)?首先關(guān)閉cdh1服務(wù)器,因?yàn)樵趩?dòng)和掛起的狀態(tài)下無法克隆機(jī)器。
?
?
?
?
? 啟動(dòng)cdh1-cdh7 ??在xshell中建立對(duì)七個(gè)虛機(jī)的連接
?
?
注意,在這我使用的不是root用戶,都是普通用戶cdh
5>?安裝hadoop集群的準(zhǔn)備工作:
(1)?修改主機(jī)名:
root用戶登錄
vi /etc/hostname
自定義主機(jī)名
重啟 reboot
(2)?ssh免密登錄問題。
? 分別在每個(gè)節(jié)點(diǎn)上生成公鑰私鑰:
?? ??? ? cd /root/.ssh?? ?
?? ??? ? ssh-keygen -t rsa三次回車
?? ??? ? cp id_rsa.pub ?authorized_keys?
?
復(fù)制秘鑰報(bào)錯(cuò),是因?yàn)榻馕鲋鳈C(jī)報(bào)錯(cuò)。配置/etc/hosts即可
?
?
將cdh2、cdh3、cdh4、cdh5、cdh6,cdh7的私鑰復(fù)制到cdh1節(jié)點(diǎn)上:
??????? ?在cdh2節(jié)點(diǎn)上執(zhí)行:ssh-copy-id -i cdh1
?????? ??在cdh3節(jié)點(diǎn)上執(zhí)行:ssh-copy-id -i cdh1
?????? ??在cdh4節(jié)點(diǎn)上執(zhí)行:ssh-copy-id -i cdh1
??????? ?在cdh5節(jié)點(diǎn)上執(zhí)行:ssh-copy-id -i cdh1
???????? 在cdh6節(jié)點(diǎn)上執(zhí)行:ssh-copy-id -i cdh1
在cdh7節(jié)點(diǎn)上執(zhí)行:ssh-copy-id -i cdh1
???? 將cdh1節(jié)點(diǎn)上的authorized_keys復(fù)制給cdh2、cdh3、cdh4、cdh5、cdh6,cdh7節(jié)點(diǎn):
?????? ??在cdh1節(jié)點(diǎn)上執(zhí)行:scp /root/.ssh/authorized_keys cdh2:/root/.ssh/
???????? 在cdh1節(jié)點(diǎn)上執(zhí)行:scp /root/.ssh/authorized_keys cdh3:/root/.ssh/
??????? ?在cdh1節(jié)點(diǎn)上執(zhí)行:scp /root/.ssh/authorized_keys cdh4:/root/.ssh/
??????? ?在cdh1節(jié)點(diǎn)上執(zhí)行:scp /root/.ssh/authorized_keys cdh5:/root/.ssh/
???????? 在cdh1節(jié)點(diǎn)上執(zhí)行:scp /root/.ssh/authorized_keys cdh6:/root/.ssh/
???????? 在cdh1節(jié)點(diǎn)上執(zhí)行:scp /root/.ssh/authorized_keys cdh7:/root/.ssh/
???? 驗(yàn)證ssh免密碼登錄(包括登錄自己):
???????? 在cdh1節(jié)點(diǎn)上執(zhí)行:ssh cdh1、ssh cdh2、ssh cdh3、ssh cdh4、ssh cdh5、ssh cdh6,ssh cdh7
??????? ?在cdh2節(jié)點(diǎn)上執(zhí)行:ssh cdh1、ssh cdh2、ssh cdh3、ssh cdh4、ssh cdh5、ssh cdh6,ssh cdh7
???????? 在cdh3節(jié)點(diǎn)上執(zhí)行:ssh cdh1、ssh cdh2、ssh cdh3、ssh cdh4、ssh cdh5、ssh cdh6,ssh cdh7
???????? 在cdh4節(jié)點(diǎn)上執(zhí)行:ssh cdh1、ssh cdh2、ssh cdh3、ssh cdh4、ssh cdh5、ssh cdh6,ssh cdh7
???????? 在cdh5節(jié)點(diǎn)上執(zhí)行:ssh cdh1、ssh cdh2、ssh cdh3、ssh cdh4、ssh cdh5、ssh cdh6,ssh cdh7
???????? 在cdh6節(jié)點(diǎn)上執(zhí)行:ssh cdh1、ssh cdh2、ssh cdh3、ssh cdh4、ssh cdh5、ssh cdh6,ssh cdh7
??????? ?在cdh7節(jié)點(diǎn)上執(zhí)行:ssh cdh1、ssh cdh2、ssh cdh3、ssh cdh4、ssh cdh5、ssh cdh6,ssh cdh7
? 6>?在cdh1節(jié)點(diǎn)上配置hadoop2.8
(1)?配置hadoop環(huán)境變量
?
source /etc/profile ?保存生效
(2)?修改位于hadoop/etc/hadoop下的配置文件(hadoop-env.sh、core-site.xml、hdfs-site.xml、mapred-site.xml、yarn-site.xml、slaves)
? 修改hadoop-env.sh:
?
修改core-site.xml
?
修改hdfs-site.xml
<configuration><!--指定hdfs的nameservice為ns1,需要和core-site.xml中的保持一致 --><property><name>dfs.nameservices</name><value>ns1</value></property><!-- ns1下面有兩個(gè)NameNode,分別是nn1,nn2 --><property><name>dfs.ha.namenodes.ns1</name><value>nn1,nn2</value></property><!-- nn1的RPC通信地址 --><property><name>dfs.namenode.rpc-address.ns1.nn1</name><value>cdh1:9000</value></property><!-- nn1的http通信地址 --><property><name>dfs.namenode.http-address.ns1.nn1</name><value>cdh1:50070</value></property><!-- nn2的RPC通信地址 --><property><name>dfs.namenode.rpc-address.ns1.nn2</name><value>cdh2:9000</value></property><!-- nn2的http通信地址 --><property><name>dfs.namenode.http-address.ns1.nn2</name><value>cdh2:50070</value></property><!-- 指定NameNode的元數(shù)據(jù)在JournalNode上的存放位置 --><property><name>dfs.namenode.shared.edits.dir</name><value>qjournal://cdh4:8485;cdh5:8485;cdh6:8485/ns1</value></property><!-- 指定JournalNode在本地磁盤存放數(shù)據(jù)的位置 --><property><name>dfs.journalnode.edits.dir</name><value>/cloud/hadoop/journal</value></property><!-- 開啟NameNode失敗自動(dòng)切換 --><property><name>dfs.ha.automatic-failover.enabled</name><value>true</value></property><!-- 配置失敗自動(dòng)切換實(shí)現(xiàn)方式 --><property><name>dfs.client.failover.proxy.provider.ns1</name><value>org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider</value></property><!-- 配置隔離機(jī)制 --><property><name>dfs.ha.fencing.methods</name><value>sshfence</value></property><!-- 使用隔離機(jī)制時(shí)需要ssh免登陸 --><property><name>dfs.ha.fencing.ssh.private-key-files</name><value>/root/.ssh/id_rsa</value></property> </configuration>
?
修改mapred-site.xml
?
修改yarn-site.xml
修改slaves:(datanode節(jié)點(diǎn)設(shè)置,cdh7是我預(yù)留的機(jī)器,裝ozzie或者pig的暫時(shí)不放入datanode節(jié)點(diǎn)中)【如果需要把其他機(jī)器作為datanode節(jié)點(diǎn)。只需要在這配置,然后同步到其他機(jī)器上,然后namenode重新格式化即可】
cdh4
cdh5
cdh6
注意:core-site.xml中指定了hadoop數(shù)據(jù)存放的本地磁盤路徑是/hadoop/data,而這個(gè)/hadoop/下data文件夾是不存在需要?jiǎng)?chuàng)建;
? ? ? ? ?hdfs-site.xml中指定了JournalNode在本地磁盤存放數(shù)據(jù)的位置是/hadoop/journal,而/hadoop/下的journal文件夾是不存在的需要?jiǎng)?chuàng)建。
?? ?此上6個(gè)配置文件都是hdp1節(jié)點(diǎn)上的,修改完成后將配置好的環(huán)境變量/etc/profile文件、/cloud/jdk文件夾和/cloud/hadoop文件夾復(fù)制到其他節(jié)點(diǎn):
?? ??? ?
? ? ? ? ? ? ??在hdp1節(jié)點(diǎn)上執(zhí)行: scp -r /hadoop/ cdh2:/
在hdp1節(jié)點(diǎn)上執(zhí)行: scp -r /hadoop/ cdh3:/
在hdp1節(jié)點(diǎn)上執(zhí)行: scp -r /hadoop/ cdh4:/
在hdp1節(jié)點(diǎn)上執(zhí)行: scp -r /hadoop/ cdh5:/
在hdp1節(jié)點(diǎn)上執(zhí)行: scp -r /hadoop/ cdh6:/
在hdp1節(jié)點(diǎn)上執(zhí)行: scp -r /hadoop/ cdh7:/
??? 將環(huán)境變量/etc/profile文件復(fù)制到其他節(jié)點(diǎn)(在其他節(jié)點(diǎn)上要執(zhí)行source /etc/profile使其修改立即生效):
?? ??? ??? scp /etc/profile cdh2:/etc/
scp /etc/profile cdh3:/etc/
scp /etc/profile cdh4:/etc/
scp /etc/profile cdh5:/etc/
scp /etc/profile cdh6:/etc/
scp /etc/profile cdh7:/etc/
7>?在cdh4,cdh5,cdh6配置zk集群
? cd /hadoop/目錄下
???????? 解壓zookeeper-3.4.13.tar.gz:tar -zxvf zookeeper-3.4.13.tar.gz(當(dāng)前目錄下多了一個(gè)zookeeper-3.4.13文件夾)
?????? ??重命名zookeeper-3.4.13:mv zookeeper-3.4.13 zookeeper
???????? cd到/hadoop/zookeeper/conf/目錄下:cp zoo_sample.cfg zoo.cfg
???????? vi zoo.cfg
???????????? 修改:dataDir=/hadoop/zookeeper/data
????????????在最后面添加:
??????????? ?server.1=cdh4:2888:3888
??????????? ?server.2=cdh5:2888:3888
???????????? server.3=cdh6:2888:3888
????????在/hadoop/zookeeper/創(chuàng)建data文件夾,進(jìn)入/hadoop/zookeeper/data下創(chuàng)建myid文件,內(nèi)容為1
????????將/hadoop/zookeeper文件夾復(fù)制到cdh5和cdh6下:
????????????在cdh4節(jié)點(diǎn)上執(zhí)行:scp -r /hadoop/zookeeper cdh5:/hadoop/
????????????在cdh4節(jié)點(diǎn)上執(zhí)行:scp -r /hadoop/zookeeper cdh6:/hadoop/
????????????
????????????在cdh5節(jié)點(diǎn)上修改/hadoop/zookeeper/data/myid為2
????????????在cdh6節(jié)點(diǎn)上修改/hadoop/zookeeper/data/myid為3 ?
? 啟動(dòng)zk集群:
啟動(dòng)cdh4、cdh5和cdh6節(jié)點(diǎn)上的zk
??? ?分別在每個(gè)節(jié)點(diǎn)上執(zhí)行:
?????? ??cd /hadoop/zookeeper/bin目錄下
?????? ??啟動(dòng)zk:./zkServer.sh start
??????? ?查看狀態(tài):
??????????? ?zkServer.sh status(leader或follower)
??????????? ?jps后多出來個(gè)quorumpeerMain
8>?8在cdh1節(jié)點(diǎn)上啟動(dòng)journalnode(會(huì)啟動(dòng)所有journalnode)
????cd /hadoop/hadoop-2.8.0/sbin目錄下
啟動(dòng)journalnode:hadoop-daemons.sh start journalnode(在cdh4、cdh5和cdh6節(jié)點(diǎn)上運(yùn)行jps命令檢驗(yàn),多了JournalNode進(jìn)程)
?
?
9>?在hdp1節(jié)點(diǎn)上格式化HDFS
?? ?格式化HDFS:hadoop namenode -format
?? ?將格式化后生成的hadoop的數(shù)據(jù)文件都在hdp1節(jié)點(diǎn)上,需要將hdp1節(jié)點(diǎn)上的數(shù)據(jù)同步到hdp2節(jié)點(diǎn)上,因?yàn)?/span>hdp1節(jié)點(diǎn)和hdp2節(jié)點(diǎn)是ha,這里我直接復(fù)制:
scp -r /hadoop/data hdp2:/hadoop
10>?在cdh1節(jié)點(diǎn)上格式化ZK
???格式化ZK:hdfs zkfc -formatZK
11>?在cdh1節(jié)點(diǎn)上啟動(dòng)HDFS
?????cd /cloud/hadoop/sbin目錄下
??啟動(dòng)HDFS:start-dfs.sh
12>?在cdh3節(jié)點(diǎn)上啟動(dòng)YARN
?? ?cd /hadoop/hadoop2.8.0/sbin目錄下
?? ?啟動(dòng)YARN:start-yarn.sh
13>?驗(yàn)證namenode
?? ?驗(yàn)證cdh1節(jié)點(diǎn)上的NameNode:jps或者http://cdh1:50070
?? ?驗(yàn)證cdh2節(jié)點(diǎn)上的NameNode:jps或者http://cdh2:50070
?? ?驗(yàn)證cdh3節(jié)點(diǎn)上的YARN:jps或者http://cdh3:8088/
?
?
?
?
到這,hadoop的高可用集群已經(jīng)搭建好了,有興趣的可以仔細(xì)看看搭建過程
?
補(bǔ)充:各節(jié)點(diǎn)的啟動(dòng)進(jìn)程? (jps看)
?
轉(zhuǎn)載于:https://www.cnblogs.com/huhongy/p/10942121.html
總結(jié)
以上是生活随笔為你收集整理的hadoop2.8 ha 集群搭建的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 使用LiveNVR实现将RTSP转RTM
- 下一篇: 第二阶段 冲刺十