1. 程式人生 > >Hadoop+Zookeeper搭建叢集

Hadoop+Zookeeper搭建叢集

前期準備

1.修改Linux主機名,每臺都得配置

vim /etc/sysconfig/network

NETWORKING=yes
HOSTNAME=hadoop-server1

2.修改IP /etc/sysconfig/network-scripts/ifcfg-eth0

3.修改主機名和IP的對映關係

vim /etc/hosts

192.168.146.181 hadoop-server1
192.168.146.182 hadoop-server2
192.168.146.183 hadoop-server3
192.168.146.184 hadoop-server4
192.168.146.185 hadoop-server5

######注意######如果你們公司是租用的伺服器或是使用的雲主機(如華為用主機、阿里雲主機等)
/etc/hosts裡面要配置的是內網IP地址和主機名的對映關係 

4.關閉防火牆 

#檢視防火牆狀態
service iptables status
#關閉防火牆
service iptables stop
#檢視防火牆開機啟動狀態
chkconfig iptables --list
#關閉防火牆開機啟動
chkconfig iptables off

前4步用root使用者操作,操作完後重啟機器

5.ssh免登陸hadoop使用者操作

#生成ssh免登陸金鑰
#進入到我的home目錄
cd ~/.ssh


ssh-keygen -t rsa (四個回車)
執行完這個命令後,會生成兩個檔案id_rsa(私鑰)、id_rsa.pub(公鑰)
將公鑰拷貝到要免密登陸的目標機器上
ssh-copy-id hadoop-server2

6.安裝JDK,配置環境變數等root使用者操作

vim /etc/proflie
export JAVA_HOME=/usr/java/jdk1.7.0_65
export HADOOP_HOME=/itcast/hadoop-2.4.1
export PATH=$PATH:$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin


source /etc/profile

叢集規劃:

主機名 IP 安裝軟體 執行程序
hadoop-server1 192.168.146.181:jdk、hadoop namenode resourcemanage DFSZKFailoverController(zkfc)
hadoop-server2 192.168.146.182:jdk、hadoop namenode resourcemanage DFSZKFailoverController(zkfc)
hadoop-server3 192.168.146.183:jdk、hadoop、zookeeper datanode nodemanage journalnode QuorumPeerMain 
hadoop-server4 192.168.146.184:jdk、hadoop、zookeeper datanode nodemanage journalnode QuorumPeerMain
hadoop-server5 192.168.146.185:jdk、hadoop、zookeeper datanode nodemanage journalnode QuorumPeerMain

安裝步驟:
1.安裝配置zooekeeper叢集(在hadoop-server3上)
1.1解壓
tar -zxvf zookeeper-3.4.5.tar.gz -C /home/hadoop/app/
1.2修改配置
cd /home/hadoop/app/zookeeper-3.4.5/conf/
cp zoo_sample.cfg zoo.cfg
vim zoo.cfg
修改:dataDir=/home/hadoop/app/zookeeper-3.4.5/data
在最後新增:
server.1=hadoop-server3:2888:3888
server.2=hadoop-server4:2888:3888
server.3=hadoop-server5:2888:3888
儲存退出
然後建立一個tmp資料夾
mkdir /home/hadoop/app/zookeeper-3.4.5/data
再建立一個空檔案
touch /home/hadoop/app/zookeeper-3.4.5/data/myid
最後向該檔案寫入ID
echo 1 > /home/hadoop/app/zookeeper-3.4.5/data/myid
1.3將配置好的zookeeper拷貝到其他節點
scp -r /home/hadoop/app/zookeeper-3.4.5/ weekend06:/home/hadoop/app/
scp -r /home/hadoop/app/zookeeper-3.4.5/ weekend07:/home/hadoop/app/

注意:修改hadoop-server4、hadoop-server5對應/home/hadoop/app/zookeeper-3.4.5/data/myid內容
hadoop-server4:
echo 2 > /home/hadoop/app/zookeeper-3.4.5/data/myid
hadoop-server5:
echo 3 > /home/hadoop/app/zookeeper-3.4.5/data/myid

2.安裝配置hadoop叢集(在hadoop-server1上操作)
2.1解壓
tar -zxvf hadoop-2.4.1.tar.gz -C /weekend/
2.2配置HDFS(hadoop2.0所有的配置檔案都在$HADOOP_HOME/etc/hadoop目錄下)
#將hadoop新增到環境變數中
vim /etc/profile
export JAVA_HOME=/hadoop/home/app/jdk1.7.0_55
export HADOOP_HOME=/home/hadoop/app/hadoop-2.4.1
export PATH=$PATH:$JAVA_HOME/bin:$HADOOP_HOME/bin

#hadoop2.0的配置檔案全部在$HADOOP_HOME/etc/hadoop下
cd /home/hadoop/app/hadoop-2.4.1/etc/hadoop

2.2.1修改hadoo-env.sh
export JAVA_HOME=/home/hadoop/app/jdk1.7.0_55

2.2.2修改core-site.xml
<configuration>
<!-- 指定hdfs的nameservice為ns1 -->
<property>
<name>fs.defaultFS</name>
<value>hdfs://ns1/</value>
</property>
<!-- 指定hadoop臨時目錄 -->
<property>
<name>hadoop.tmp.dir</name>
<value>/home/hadoop/app/hadoop-2.4.1/tmp</value>
</property>

<!-- 指定zookeeper地址 -->
<property>
<name>ha.zookeeper.quorum</name>
<value>hadoop-server3:2181,hadoop-server3:2181,hadoop-server3:2181</value>
</property>
</configuration>

2.2.3修改hdfs-site.xml
<configuration>
<!--指定hdfs的nameservice為ns1,需要和core-site.xml中的保持一致 -->
<property>
<name>dfs.nameservices</name>
<value>ns1</value>
</property>
<!-- ns1下面有兩個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>hadoop-server1:9000</value>
</property>
<!-- nn1的http通訊地址 -->
<property>
<name>dfs.namenode.http-address.ns1.nn1</name>
<value>hadoop-server1:50070</value>
</property>
<!-- nn2的RPC通訊地址 -->
<property>
<name>dfs.namenode.rpc-address.ns1.nn2</name>
<value>weekend02:9000</value>
</property>
<!-- nn2的http通訊地址 -->
<property>
<name>dfs.namenode.http-address.ns1.nn2</name>
<value>hadoop-server2:50070</value>
</property>
<!-- 指定NameNode的元資料在JournalNode上的存放位置 -->
<property>
<name>dfs.namenode.shared.edits.dir</name>
<value>qjournal://hadoop-server3:8485;hadoop-server4:8485;hadoop-server5:8485/ns1</value>
</property>
<!-- 指定JournalNode在本地磁碟存放資料的位置 -->
<property>
<name>dfs.journalnode.edits.dir</name>
<value>/home/hadoop/app/hadoop-2.4.1/journaldata</value>
</property>
<!-- 開啟NameNode失敗自動切換 -->
<property>
<name>dfs.ha.automatic-failover.enabled</name>
<value>true</value>
</property>
<!-- 配置失敗自動切換實現方式 -->
<property>
<name>dfs.client.failover.proxy.provider.ns1</name>
<value>org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider</value>
</property>
<!-- 配置隔離機制方法,多個機制用換行分割,即每個機制暫用一行-->
<property>
<name>dfs.ha.fencing.methods</name>
<value>
sshfence
shell(/bin/true)
</value>
</property>
<!-- 使用sshfence隔離機制時需要ssh免登陸 -->
<property>
<name>dfs.ha.fencing.ssh.private-key-files</name>
<value>/home/hadoop/.ssh/id_rsa</value>
</property>
<!-- 配置sshfence隔離機制超時時間 -->
<property>
<name>dfs.ha.fencing.ssh.connect-timeout</name>
<value>30000</value>
</property>
</configuration>

2.2.4修改mapred-site.xml
<configuration>
<!-- 指定mr框架為yarn方式 -->
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
</configuration> 

2.2.5修改yarn-site.xml
<configuration>
<!-- 開啟RM高可用 -->
<property>
   <name>yarn.resourcemanager.ha.enabled</name>
   <value>true</value>
</property>
<!-- 指定RM的cluster id -->
<property>
   <name>yarn.resourcemanager.cluster-id</name>
   <value>yrc</value>
</property>
<!-- 指定RM的名字 -->
<property>
   <name>yarn.resourcemanager.ha.rm-ids</name>
   <value>rm1,rm2</value>
</property>
<!-- 分別指定RM的地址 -->
<property>
   <name>yarn.resourcemanager.hostname.rm1</name>
   <value>hadoop-server1</value>
</property>
<property>
   <name>yarn.resourcemanager.hostname.rm2</name>
   <value>hadoop-server2</value>
</property>
<!-- 指定zk叢集地址 -->
<property>
   <name>yarn.resourcemanager.zk-address</name>
   <value>hadoop-server3:2181,hadoop-server4:2181,hadoop-server5:2181</value>
</property>
<property>
   <name>yarn.nodemanager.aux-services</name>
   <value>mapreduce_shuffle</value>
</property>
</configuration>


2.2.6修改slaves(slaves是指定子節點的位置)
hadoop-server3
hadoop-server4
hadoop-server5


2.2.7配置免密碼登陸
#首先要配置hadoop-server1到hadoop-server2、hadoop-server3、hadoop-server4、hadoop-server5的免密碼登陸
#在hadoop-server1上生產一對鑰匙
ssh-keygen -t rsa
#將公鑰拷貝到其他節點,包括自己
ssh-coyp-id hadoop-server1
ssh-coyp-id hadoop-server2
ssh-coyp-id hadoop-server3
ssh-coyp-id hadoop-server4
ssh-coyp-id hadoop-server5
#注意:resourcemanager到nodemanager要配置免密登入
#注意:兩個namenode之間要配置ssh免密碼登陸,別忘了配置hadoop-server2到hadoop-server1的免登陸
在hadoop-server2上生產一對鑰匙
ssh-keygen -t rsa
ssh-coyp-id -i hadoop-server1 

2.4將配置好的hadoop拷貝到其他節點
scp -r /home/hadoop/app/hadoop-2.4.1/ [email protected]:/home/hadoop/app/
scp -r /home/hadoop/app/hadoop-2.4.1/ [email protected]:/home/hadoop/app/

scp -r /home/hadoop/app/hadoop-2.4.1/ [email protected]:/home/hadoop/app/
scp -r /home/hadoop/app/hadoop-2.4.1/ [email protected]:/home/hadoop/app/

###注意:嚴格按照下面的步驟
2.5啟動zookeeper叢集(分別在hadoop-server3、hadoop-server4、hadoop-server5上啟動zk)
cd /home/hadoop/app/zookeeper-3.4.5/bin/
./zkServer.sh start
#檢視狀態:一個leader,兩個follower
./zkServer.sh status

2.6啟動journalnode(分別在在hadoop-server3、hadoop-server4、hadoop-server5上執行)
cd /home/hadoop/app/hadoop-2.4.1
sbin/hadoop-daemon.sh start journalnode
#執行jps命令檢驗,hadoop-server3、hadoop-server4、hadoop-server5上多了JournalNode程序

2.7格式化HDFS
#在hadoop-server1上執行命令:
hdfs namenode -format
#格式化後會在根據core-site.xml中的hadoop.tmp.dir配置生成個檔案,這裡我配置的是/home/hadoop/app/hadoop-2.4.1/tmp,然後將/home/hadoop/app/hadoop-2.4.1/tmp拷貝到hadoop-server2的/home/hadoop/app/hadoop-2.4.1/下。
scp -r tmp/ hadoop-server2:/home/hadoop/app/hadoop-2.4.1/
##也可以這樣,在hadoop-server2上執行命令:建議hdfs namenode -bootstrapStandby

2.8格式化ZKFC(在hadoop-server1上執行即可)
hdfs zkfc -formatZK

2.9啟動HDFS(在hadoop-server1上執行)
sbin/start-dfs.sh


2.10啟動YARN(#####注意#####:是在hadoop-server1上執行start-yarn.sh)
sbin/start-yarn.sh

在hadoop-server2上啟動 yyarn-daemon.sh start rescourcemanager



到此,hadoop-2.4.1配置完畢,可以統計瀏覽器訪問:
http://192.168.146.181:50070
NameNode 'hadoop-server1:9000' (active)
http://192.168.146.182:50070
NameNode 'hadoop-server2:9000' (standby)

驗證HDFS HA
首先向hdfs上傳一個檔案
hadoop fs -put /etc/profile /profile
hadoop fs -ls /
然後再kill掉active的NameNode
kill -9 <pid of NN>
通過瀏覽器訪問:http://192.168.146.182:50070
NameNode 'hadoop-server2:9000' (active)
這個時候hadoop-server2上的NameNode變成了active
在執行命令:
hadoop fs -ls /
-rw-r--r--   3 root supergroup       1926 2015-06-24 15:36 /profile
剛才上傳的檔案依然存在!!!
手動啟動那個掛掉的NameNode
sbin/hadoop-daemon.sh start namenode
通過瀏覽器訪問:http://192.168.146.181:50070
NameNode 'hadoop-server1:9000' (standby)

驗證YARN:
執行一下hadoop提供的demo中的WordCount程式:
hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.4.1.jar wordcount /profile /out

OK,大功告成!!!





測試叢集工作狀態的一些指令 :
bin/hdfs dfsadmin -report  檢視hdfs的各節點狀態資訊




bin/hdfs haadmin -getServiceState nn1  獲取一個namenode節點的HA狀態


sbin/hadoop-daemon.sh start namenode  單獨啟動一個namenode程序




./hadoop-daemon.sh start zkfc   單獨啟動一個zkfc程序

相關推薦

Hadoop+Zookeeper搭建叢集

前期準備 1.修改Linux主機名,每臺都得配置 vim /etc/sysconfig/network NETWORKING=yes HOSTNAME=hadoop-server1 2.修改IP /etc/sysconfig/network-scripts/ifcf

hadoop\zookeeper\hbase叢集重啟後出現的相關問題

1、在叢集上的主節點/usr/local/hadoop/bin目錄下,執行./start-dfs.sh命令後,只有主節點下的namenode進行啟動,分支節點中的datanode沒有正常啟動 解決方式: 1)刪除hadoop目錄中的tmp目錄檔案及log目錄檔案(叢集中所有節點) 2)在

zookeeper 搭建叢集環境 linux

1.下載地址:http://mirror.bit.edu.cn/apache/zookeeper/zookeeper-3.4.10/ 2.下載完成後 3.執行 tar -zxvf zookeeper-3.4.9.tar.gz  4.解壓完成後 進入 zookeeper

本地zookeeper搭建叢集

一、安裝zookeeper 自己在百度上搜索; 二、搭建叢集需要註冊的事專案 1、zookeeper的選舉模式圖; 2、zookeeper配置檔案需要注意的地方; a、在conf資料夾下面,複製三份zoo.cfg檔案,自己命名;比如:zoo_server1.cf

hadoop分散式搭建叢集

hadoop搭建叢集 1 .生成公鑰和私鑰 ssh-keygen -t rsa 一直按回車 ssh-copy-id hadoop101 自己的伺服器也需要配置 ssh-copy-id

大資料系列(hadoopHadoop+Zookeeper 3節點高可用叢集搭建

原文地址:https://www.cnblogs.com/YellowstonePark/p/7750213.html一、叢集規劃主機名ipNameNodeDataNodeYarnZooKeeperJournalNodenode01192.168.1.201是是否是是node

Hadoop2.7.3 HA高可靠性叢集搭建(Hadoop+Zookeeper)

一.概述       在hadoop1時代,只有一個NameNode。如果該NameNode資料丟失或者不能工作,那麼整個叢集就不能恢復了。這是hadoop1中的單點問題,也是hadoop1不可靠的表現。    

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

hadoop+hbase+zookeeper 分散式叢集搭建完美執行

備註:      搭建完(hadoop+hbase)整個叢集是能夠完美的執行,其中期間出過些小問題,如有一臺機器和其他機器時間相差很遠,結果是HRegionServer啟動的時候超時,這個時候要麼時間同步,或者在配置檔案中新增相應的引數      我所在的實驗室,整個叢集是

Hadoop+HBase+ZooKeeper分散式叢集環境搭建

一、環境說明 叢集環境至少需要3個節點(也就是3臺伺服器裝置):1個Master,2個Slave,節點之間區域網連線,可以相互ping通,下面舉例說明,配置節點IP分配如下: Hostname IP User Password

基於 ZooKeeper 搭建 Hadoop 高可用叢集

一、高可用簡介 二、叢集規劃 三、前置條件 四、叢集配置 五、啟動叢集 六、檢視叢集 七、叢集的二次啟動 一、高可用簡介 Hadoop 高可用 (High Availability) 分為 HDFS 高可用和 YARN 高可用,兩者的實現基本類似,但 HDFS NameNode 對資料儲存及其一致性的要求

Hadoop 系列(八)—— 基於 ZooKeeper 搭建 Hadoop 高可用叢集

一、高可用簡介 Hadoop 高可用 (High Availability) 分為 HDFS 高可用和 YARN 高可用,兩者的實現基本類似,但 HDFS NameNode 對資料儲存及其一致性的要求比 YARN ResourceManger 高得多,所以它的實現也更加複雜,故下面先進行講解: 1.1 高可用

hadoop Cloudera-Manager叢集搭建總結

1、網上搭建步驟很多,我參考的這個連結的:https://blog.csdn.net/suifeng3051/article/details/45477773 2、安裝上述步驟基本沒問題,但是有幾點注意如下:    (1)服務端安裝完畢後客戶端最好手工的方式在每個客戶端上

搭建hadoop偽分散式叢集環境過程中遇見的問題總結

1、網路配置問題: 在centos7中配置網路環境後,本機(win10系統)與虛擬機器centos7網路不通(本機可以ping通虛擬機器,但是虛擬機器ping不通本機); 解決方式: 方式1:檢視本機win10系統的防火牆是否關閉,若沒有,直接關閉win10系統的防火牆即可; 方式2

單機搭建zookeeper叢集

一:簡介 分散式應用程式可以基於Zookeeper實現例如配置管理、資料釋出/訂閱、負載均衡、命名服務、協調通知、叢集管理、Master選舉、分散式鎖、分散式佇列等功能。 https://zookeeper.apache.org/ ###Zookeeper中重要的概念:

HBase+Hadoop+Zookeeper環境搭建的錯誤排查

確認hbase下的hbase-site.xml中的hbase.rootdir的埠和hadoop下的core-site.xml中的fs.defaultFS共用一個埠,否則在進入hbase shell的時候輸入list會報Can't get master address from Z

Zookeeper伺服器叢集搭建與操作

ZooKeeper 作用:Zookeeper 可以用來保證資料在zk叢集之間的資料的事務性一致(原子操作)。 介紹:Zookeeper 是 Google 的 Chubby一個開源的實現,是 Hadoop 的分散式協調服務。 它包含一個簡單的原語集,分散式應用程式可以基於它實現同

大資料之Hadoop學習(環境配置)——Hadoop偽分散式叢集搭建

title: Hadoop偽分散式叢集搭建 date: 2018-11-14 15:17:20 tags: Hadoop categories: 大資料 點選檢視我的部落格: Josonlee’s Blog 文章目錄 前言準備 偽分

Windows環境下搭建ZooKeeper叢集

        在生產環境和開發環境ZooKeeper服務的搭建,我們一般常用叢集和單機兩種模式。但是在自己學習過程中,如果想要了解叢集模式的效能,則可以使用偽叢集來了解ZooKeeper叢集模式下的一些工作機制。 1.下載與配置   &