Hadoop之——Hadoop2.5.2 HA高可靠性叢集搭建(Hadoop+Zookeeper)
一、Hadoop(HA)叢集的規劃
叢集規劃
主機名 | IP | NameNode | DataNode | Yarn | ZooKeeper | JournalNode |
liuyazhuang145 | 192.168.0.145 | 是 | 是 | 否 | 是 | 是 |
liuyazhuang146 | 192.168.0.146 | 是 | 是 | 否 | 是 | 是 |
liuyazhuang147 | 192.168.0.147 | 否 | 是 | 是 | 是 | 是 |
二、Hadoop(HA)叢集環境搭建
注:我們搭建環境集中在liuyazhuang145主機上搭建,搭建完畢將相應的檔案拷貝到liuyazhuang146和liuyazhuang147主機。
1、安裝JDK
1.1下載JDK
1.2解壓JDK
在命令列輸入tar -zxvf jdk-7u72-linux-x64.tar.gz 進行解壓
1.3配置環境變數
在命令列輸入vim /etc/profile開啟profile檔案,在檔案末尾新增如下程式碼:
JAVA_HOME=/usr/local/jdk1.7.0_72
CLASS_PATH=.:$JAVA_HOME/lib
PATH=$JAVA_HOME/bin:$PATH
export JAVA_HOME CLASS_PATH PATH
輸入命令source /etc/profile使環境變數生效1.4拷貝檔案
在命令列輸入如下命令將JDK環境和/etc/profile檔案拷貝到liuyazhuang146和liuyazhuang147主機上。
scp -r /usr/local/jdk1.7.0_72 liuyazhuang146:/usr/local
scp -r /usr/local/jdk1.7.0_72 liuyazhuang147:/usr/local
scp /etc/profile liuyazhuang146:/etc/
scp /etc/profile liuyazhuang147:/etc/
同時,我們分別在liuyazhuang146和liuyazhuang147主機上執行命令source /etc/profile使環境變數生效
至此,JDK環境搭建完成。
2、搭建Zookeeper叢集
2.1下載Zookeeper
2.2解壓Zookeeper
在命令列輸入tar -zxvf zookeeper-3.4.9.tar.gz對zookeeper進行解壓。
2.3Zookeeper叢集搭建
切換到Zookeeper的conf目錄下執行以下命令
cp zoo_sample.cfg zoo.cfg
然後輸入vim 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=/usr/local/zookeeper-3.4.9/data
dataLogDir=/usr/local/zookeeper-3.4.9/datalog
# 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=liuyazhuang145:2888:3888
server.2=liuyazhuang146:2888:3888
server.3=liuyazhuang147:2888:3888
同時在Zookeeper目錄下新建data和dataLog兩個目錄用來存放Zookeeper的myid檔案和日誌檔案,
mkdir data
mkdir dataLog
將目錄切換到zookeeper的data目錄下
執行命令
vim myid
按下鍵盤i輸入1後,按下esc鍵,再按下shift+; (也就是輸入冒號:),再輸入wq退出,此時就在zookeeper的data目錄下建立了一個myid檔案,這個myid的檔案中的內容為1。
2.4配置Zookeeper環境變數
為操作方便,我們也將Zookeeper配置到環境變數中,加上之前配置的JDK,我們在profile的配置如下:
JAVA_HOME=/usr/local/jdk1.7.0_72
CLASS_PATH=.:$JAVA_HOME/lib
ZOOKEEPER_HOME=/usr/local/zookeeper-3.4.9
PATH=$JAVA_HOME/bin:$ZOOKEEPER_HOME/bin:$PATH
export JAVA_HOME HADOOP_HOME CLASS_PATH PATH
2.5拷貝檔案
將Zookeeper環境和profile檔案分別拷貝到liuyazhuang146和liuyazhuang147主機上。如下命令:
scp -r /usr/local/zookeeper-3.4.9 liuyazhuang146:/usr/local
scp -r /usr/local/zookeeper-3.4.9 liuyazhuang147:/usr/local
scp /ect/profile liuyazhuang146:/etc/
scp /ect/profile liuyazhuang147:/etc/
同時,我們分別在liuyazhuang146和liuyazhuang147主機上執行命令source /etc/profile使環境變數生效。
2.6修改其他主機的myid檔案
注:別忘了將liuyazhuang146主機上Zookeeper中myid檔案內容修改為2 將liuyazhuang147主機上Zookeeper中myid檔案內容修改為3
至此,Zookeeper叢集環境搭建完畢。
3、Hadoop叢集環境搭建
同樣的,我們也是現在liuyazhuang145主機上搭建Hadoop環境,然後將環境拷貝到liuyazhuang146主機和liuyazhuang147主機上。
3.1下載Hadoop
同樣的,我們也是在Apache官網下載的Hadoop,我這裡下載的hadoop 2.5.2版本的。
3.2解壓Hadoop
輸入命令tar -zxvf hadoop-2.5.2.tar.gz解壓Hadoop
3.3配置Hadoop
1) core-site.xml
<configuration>
<!-- 指定hdfs的nameservice為ns -->
<property>
<name>fs.defaultFS</name>
<value>hdfs://ns</value>
</property>
<!--指定hadoop資料臨時存放目錄-->
<property>
<name>hadoop.tmp.dir</name>
<value>/usr/local/hadoop-2.5.2/tmp</value>
</property>
<property>
<name>io.file.buffer.size</name>
<value>4096</value>
</property>
<!--指定zookeeper地址-->
<property>
<name>ha.zookeeper.quorum</name>
<value>liuyazhuang145:2181,liuyazhuang146:2181,liuyazhuang147:2181</value>
</property>
</configuration>
2) hdfs-site.xml
<configuration>
<!--指定hdfs的nameservice為ns,需要和core-site.xml中的保持一致 -->
<property>
<name>dfs.nameservices</name>
<value>ns</value>
</property>
<!-- ns下面有兩個NameNode,分別是nn1,nn2 -->
<property>
<name>dfs.ha.namenodes.ns</name>
<value>nn1,nn2</value>
</property>
<!-- nn1的RPC通訊地址 -->
<property>
<name>dfs.namenode.rpc-address.ns.nn1</name>
<value>liuyazhuang145:9000</value>
</property>
<!-- nn1的http通訊地址 -->
<property>
<name>dfs.namenode.http-address.ns.nn1</name>
<value>liuyazhuang145:50070</value>
</property>
<!-- nn2的RPC通訊地址 -->
<property>
<name>dfs.namenode.rpc-address.ns.nn2</name>
<value>liuyazhuang146:9000</value>
</property>
<!-- nn2的http通訊地址 -->
<property>
<name>dfs.namenode.http-address.ns.nn2</name>
<value>liuyazhuang146:50070</value>
</property>
<!-- 指定NameNode的元資料在JournalNode上的存放位置 -->
<property>
<name>dfs.namenode.shared.edits.dir</name>
<value>qjournal://liuyazhuang145:8485;liuyazhuang146:8485;liuyazhuang147:8485/ns</value>
</property>
<!-- 指定JournalNode在本地磁碟存放資料的位置 -->
<property>
<name>dfs.journalnode.edits.dir</name>
<value>/usr/local/hadoop-2.5.2/journal</value>
</property>
<!-- 開啟NameNode故障時自動切換 -->
<property>
<name>dfs.ha.automatic-failover.enabled</name>
<value>true</value>
</property>
<!-- 配置失敗自動切換實現方式 -->
<property>
<name>dfs.client.failover.proxy.provider.ns</name>
<value>org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider</value>
</property>
<!-- 配置隔離機制 -->
<property>
<name>dfs.ha.fencing.methods</name>
<value>sshfence</value>
</property>
<!-- 使用隔離機制時需要ssh免登陸 -->
<property>
<name>dfs.ha.fencing.ssh.private-key-files</name>
<value>/root/.ssh/id_rsa</value>
</property>
<property>
<name>dfs.namenode.name.dir</name>
<value>file:///usr/local/hadoop-2.5.2/hdfs/name</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>file:///usr/local/hadoop-2.5.2/hdfs/data</value>
</property>
<property>
<name>dfs.replication</name>
<value>2</value>
</property>
<!-- 在NN和DN上開啟WebHDFS (REST API)功能,不是必須 -->
<property>
<name>dfs.webhdfs.enabled</name>
<value>true</value>
</property>
</configuration>
3) mapred-site.xml
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
</configuration>
4) yarn-site.xml<configuration>
<!-- 指定nodemanager啟動時載入server的方式為shuffle server -->
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<!-- 指定resourcemanager地址 -->
<property>
<name>yarn.resourcemanager.hostname</name>
<value>liuyazhuang147</value>
</property>
</configuration>
在hadoop下手動建立journal目錄,在hadoop下手動建立/hdfs/name目錄和/hdfs/data目錄
別分輸入如下命令:
mkdir -p /usr/local/hadoop-2.5.2/journal
mkdir -p /usr/local/hadoop-2.5.2/hdfs/name
mkdir -p /usr/local/hadoop-2.5.2/hdfs/data
注:後續如果Hadoop啟動失敗,可能是配置檔案的編碼問題,如果是配置檔案的編碼問題,則將上面的配置檔案中的中文註釋全部刪除掉即可。
5) hadoop-env.sh
找到檔案的export JAVA_HOME=${JAVA_HOME} 一行,將其修改為export JAVA_HOME=/usr/local/jdk1.7.0_72
6)slaves
liuyazhuang145
liuyazhuang146
liuyazhuang147
7)配置Hadoop環境變數
加上之前配置的JDK環境變數和Zookeeper環境變數,/etc/profile檔案如下所示:
JAVA_HOME=/usr/local/jdk1.7.0_72
CLASS_PATH=.:$JAVA_HOME/lib
HADOOP_HOME=/usr/local/hadoop-2.5.2
ZOOKEEPER_HOME=/usr/local/zookeeper-3.4.9
PATH=$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$ZOOKEEPER_HOME/bin:$PATH
export JAVA_HOME HADOOP_HOME CLASS_PATH PATH
8)複製Hadoop環境到其他主機
在命令列分別輸入如下命令
scp -r /usr/local/hadoop-2.5.2 liuyazhuang146:/usr/local
scp -r /usr/local/hadoop-2.5.2 liuyazhuang147:/usr/local
scp /etc/profile liuyazhuang146:/etc
scp /etc/profile liuyazhuang147:/etc
同時,我們分別在liuyazhuang146和liuyazhuang147主機上執行命令source /etc/profile使環境變數生效。
至此,Hadoop叢集環境搭建完畢。
三、叢集的啟動
1、啟動Zookeeper叢集
分別在liuyazhuang145、liuyazhuang146、liuyazhuang147上執行如下命令啟動zookeeper叢集;
zkServer.sh start
驗證叢集zookeeper叢集是否啟動,分別在liuyazhuang145、liuyazhuang146、liuyazhuang147上執行如下命令驗證zookeeper叢集是否啟動,叢集啟動成功,有兩個follower節點跟一個leader節點;
如下:
2、啟動journalnode叢集
在liuyazhuang145上執行如下命令完成JournalNode叢集的啟動
[[email protected] ~]# hadoop-daemons.sh start journalnode
執行jps命令,可以檢視到JournalNode的java程序pid3、格式化zkfc,在zookeeper中生成ha節點
在liuyazhaung145執行如下命令,完成格式化
hdfs zkfc –formatZK
(注意,這條命令最好手動輸入,直接copy執行有可能會有問題)
4、 格式化hdfs
hadoop namenode –format
(注意,這條命令最好手動輸入,直接copy執行有可能會有問題)5、 啟動NameNode
首先在mast1上啟動active節點,在liuyazhuang145上執行如下命令
[[email protected] ~]# hadoop-daemon.sh start namenode
在liuyazhuang146上同步namenode的資料,同時啟動standby的namenode,命令如下#把NameNode的資料同步到liuyazhuang146上
[[email protected] ~]# hdfs namenode -bootstrapStandby
#啟動liuyazhuang146上的namenode作為standby
[[email protected] ~]# hadoop-daemon.sh start namenode
6、啟動啟動datanode
在liuyazhuang145上執行如下命令
[[email protected] ~]# hadoop-daemons.sh start datanode
7、 啟動yarn
在作為資源管理器上的機器上啟動,我這裡是liuyazhuang147,執行如下命令完成yarn的啟動
[[email protected] ~]# start-yarn.sh
8、啟動ZKFC
在liuyazhaung145上執行如下命令,完成ZKFC的啟動
[[email protected] ~]# hadoop-daemons.sh start zkfc
全部啟動完後分別在liuyazhuang145,liuyazhuang146,liuyazhuang147上執行jps是可以看到下面這些程序
liuyazhuang145:
[[email protected] ~]# jps
3914 DFSZKFailoverController
3557 DataNode
4081 NameNode
2552 QuorumPeerMain
3357 JournalNode
3669 NodeManager
5716 Jps
[[email protected] ~]#
liuyazhuang146:
[[email protected] ~]# jps
3719 NameNode
3129 DataNode
6543 Jps
2460 QuorumPeerMain
3451 DFSZKFailoverController
3241 NodeManager
3025 JournalNode
[[email protected] ~]#
liuyazhuang147:
[[email protected] ~]# jps
2700 JournalNode
2838 DataNode
3569 Jps
2952 ResourceManager
3040 NodeManager
2471 QuorumPeerMain
[[email protected] ~]#
四、測試HA的高可用性
啟動後liuyazhuang145的namenode和liuyazhuang146的namenode如下所示:
此時,我們停掉liuyazhuang145主機上的namenode
在liuyazhuang145主機上執行命令hadoop-daemon.sh stop namenode ,此時liuyazhuang146上的namenode變為active狀態
此時,我們啟動liuyazhuang145上的namenode,在命令列輸入命令:hadoop-daemon.sh start namenode
此時,我們看到liuyazhuang145上的namenode為standby狀態 liuyazhuang146上的namenode為active狀態
如果liuyazhuang146上的namenode掛掉,liuyazhuang145上的namenode就會變為active狀態,再次重啟liuyazhuang146上的namenode,liuyazhuang146上的namenode即變為standby狀態,實現了namenode的高可用。
五、附錄
增減DataNode需要更改的檔案:
hdfs-site.xml
slaves
/etc/hosts
另外如果新加入節點,需要更新叢集內所有節點的公鑰,以便互相之間可以無密碼訪問。
至此,Hadoop2.5.2 HA高可靠性叢集搭建(Hadoop+Zookeeper)搭建完畢。
相關推薦
Hadoop之——Hadoop2.5.2 HA高可靠性叢集搭建(Hadoop+Zookeeper)前期準備
今天是十一長假的第三天,節前,很多朋友發來私信說,網上基於HA的Hadoop叢集,動不動就是7、8臺伺服器,甚至是10幾臺伺服器,自己的電腦Hold不住這麼多虛擬機器啊!有什麼辦法可以將伺服器縮減為3臺嗎?今天,我就為大家帶來一篇如何在3臺CentOS 虛擬機器上搭建基於
Hadoop之——Hadoop2.5.2 HA高可靠性叢集搭建(Hadoop+Zookeeper)
一、Hadoop(HA)叢集的規劃 叢集規劃 主機名 IP NameNode DataNode Yarn ZooKeeper JournalNode liuyazhuang145 192.168.0.145 是 是 否 是 是 liuyazhuang146 192.16
Hadoop2.7.3 HA高可靠性叢集搭建(Hadoop+Zookeeper)
一.概述 在hadoop1時代,只有一個NameNode。如果該NameNode資料丟失或者不能工作,那麼整個叢集就不能恢復了。這是hadoop1中的單點問題,也是hadoop1不可靠的表現。
centos7 hadoop HA高可用叢集搭建( hadoop2.7 zookeeper3.4 )
目錄 七、總結 上篇文章寫了如何用ssh免密登入,當然這些操作都是在hadoop賬號上的操作,包括這篇文章也是一樣 三臺主機 一、伺服器環境 主機名 IP 使用者名稱 密碼 安裝目錄 node1 192.168.31.
CentOS7+Hadoop2.7.2(HA高可用+Federation聯邦)+Hive1.2.1+Spark2.1.0 完全分散式叢集安裝
本文件主要記錄了Hadoop+Hive+Spark叢集安裝過程,並且對NameNode與ResourceManager進行了HA高可用配置,以及對NameNode的橫向擴充套件(Federation聯邦) 1VM網路配置 將子網IP設定為192.168.1.0: 將閘道器設定
Hadoop HA高可用叢集搭建(2.7.2)
<configuration> <!--指定hdfs的nameservice為ns1,需要和core-site.xml中的保持一致 --> <property> <name>dfs.nameservices</name> <valu
三節點高可用叢集搭建——Hadoop-HA+zookeeper
目錄 HDFS -HA模式的工作機制示意圖 叢集規劃——三節點高可用 Hadoop HA叢集搭建 前期準備 建立新的虛擬機器 配置虛擬機器 克隆虛擬機器 配置環境變數,重新整理(master、slave1、slave2都配置一下環境變數) 安裝zookeeper叢集 配置檔案 拷貝檔案 拷貝
超詳細Hadoop HA高可用叢集搭建及常見問題處理
最近研究了下公司的hadoop叢集並模仿搭建了一個在本地測試使用的hadoop叢集。本文介紹下詳細的搭建過程以及各種常見問題的處理解決。 1 , 前期準備 1.0 , 準備Linux環境。 安裝vmware linux虛擬機
Hadoop之——CentOS + hadoop2.5.2分散式環境配置
一、基礎環境準備 系統:(VMWare) CentOS-6.5-x86_64-bin-DVD1.iso hadoop版本:hadoop-2.5.2 jdk版本:jdk-7u72-linux-x64.tar.gz 1.叢集機器 三臺測試叢集,一個master(liuyazh
linux 安裝hadoop 的四大執行模式——HA高可用分佈模式(版本2.9.1)
hadoop的HA高可用配置:hadoop的名稱節點部署在不同的伺服器上(簡單理解),具體定義請自行查詢 備註:簡述過程如果前面步驟按步驟進行,後續的步驟就不做詳細解釋 準備:建立h105作為高可用的名稱節點(namenode),一般會再建議一個數據節點(及配置4個數據節點,兩個名稱節點),
hadoop2.5.2學習14--MR之協同過濾天貓推薦演算法實現01
一、程式碼步驟: 1、 去重 2、 獲取所有使用者的喜歡矩陣: 3、 獲得所有物品之間的同現矩陣 4、 兩個矩陣相乘得到三維矩陣 5、 三維矩陣的資料相加獲得所有使用者對所有物品的推薦值(二維矩陣) 6、 按照推薦值降序排序。
虛擬機器下Linux系統Hadoop單機/偽分散式配置:Hadoop2.5.2+Ubuntu14.04(半原創)
系統: Ubuntu 14.04 64bitHadoop版本: Hadoop 2.5.2 (stable)JDK版本: JDK 1.6 虛擬機器及Ubuntu安裝 1. 下載並安裝 VMware workstation 11 下載地址:https://my.vmwar
CentOS 7部署Hadoop叢集(HA高可用叢集)
目錄 測試環境 Hadoop 組織框架 HDFS架構 YARN架構 HA叢集部署規劃 自動故障轉移 關於叢集主機時間 Linux環境搭建 配置Java環境 安裝單機版Hadoop Zookeeper叢集安裝 配置環境變數 關閉防火牆 修
Hadoop2.5.2叢集部署(完全分散式)
環境介紹 硬體環境 CPU 4 MEM 4G 磁碟 60G 軟體環境 OS:centos6.5版本 64位 Hadoop:hadoop2.5.2 64位 JDK: JDK 1.8.0_91 主機配
Hadoop2.5.2集群部署(完全分布式)
tex 免密碼登錄 文件復制 job src 時間 配置環境 8.0 上進 環境介紹 硬件環境 CPU 4 MEM 4G 磁盤 60G 軟件環境 OS:centos6.5版本 64位 Hadoop:hadoop2.5.2 64位 JDK: JDK 1.8.0_91 主機
Python3學習之路~5.2 time & datetime模組
time模組 時間相關的操作,時間有三種表示方式: 時間戳 1970年1月1日之後的秒,即:time.time() 格式化的字串 2014-11-11 11:11, &nb
Hadoop部署(六)——CentOS 7部署Hadoop叢集(HA高可用叢集)
目錄 測試環境 關閉防火牆 測試環境 Linux系統版本:CentOS 7 64位 Hadoop 組織框架 Hadoop主要包括兩部分: 一部分是HDFS(Hadoop Distr
教你Windows平臺安裝配置Hadoop2.5.2(不借助cygwin)
剛入門hadoop,開發環境的搭建估計能把一部分人逼走。我也差點瘋了。 估計能看到這篇文章的小夥伴們都飽受cygwin和各種配置檔案的折磨了吧? 如果你不想在linux上搭建,又不想安裝cygwin。那就繼續往下看啦~ 一、 安裝hadoop2
大資料 hadoop2.5.2偽分散式搭建
1.準備Linux環境 1.0點選VMware快捷方式,右鍵開啟檔案所在位置 -> 雙擊vmnetcfg.exe -> VMnet1 host-only ->修改subnet ip 設定網段:192.168.8.0 子網掩碼:255.255.255.0 -> apply -&g
企業級Linux講座之在SAN上建立高可靠性SAMBA叢集
2、Install and setup Red Hat Cluster Manager 1) 安裝Red Hat 叢集管理員套件 用root 登入rhel3-1 安裝clumanager 與redhat-config-cluster 套件才能設定Red Hat 叢集管理員,將光碟收入光