1. 程式人生 > >Hadoop之——Hadoop2.5.2 HA高可靠性叢集搭建(Hadoop+Zookeeper)前期準備

Hadoop之——Hadoop2.5.2 HA高可靠性叢集搭建(Hadoop+Zookeeper)前期準備

今天是十一長假的第三天,節前,很多朋友發來私信說,網上基於HA的Hadoop叢集,動不動就是7、8臺伺服器,甚至是10幾臺伺服器,自己的電腦Hold不住這麼多虛擬機器啊!有什麼辦法可以將伺服器縮減為3臺嗎?今天,我就為大家帶來一篇如何在3臺CentOS 虛擬機器上搭建基於HA的hadoop叢集,首先讓我們先來準備下伺服器的基礎環境和了解下Hadoop相關的名詞,這篇文章中的內容是要求我們必須掌握的,如果您已經掌握了本博文的內容,那您可以直接進入下一篇博文《Hadoop之——Hadoop2.5.2 HA高可靠性叢集搭建(Hadoop+Zookeeper)》的閱讀,  那麼接下來,我們就直接進入主題吧。

一、伺服器規劃

我這裡用的是3臺CentOS虛擬機器。

1、IP地址規劃

IP地址分別為:

192.168.0.145
192.168.0.146
192.168.0.147

2、修改主機名

以192.168.0.145伺服器為例:

在192.168.0.145上分別執行如下命令:

1)修改會話hostname
hostname liuyazhuang145
2)/etc/sysconfig/network中的hostname
vi /etc/sysconfig/network
HOSTNAME=liuyazhuang145
3)修改host檔案
vi /etc/hosts
192.168.0.145 liuyazhuang145
其他2臺伺服器類似,只是192.168.0.146對應liuyazhuang146、192.168.0.147對應liuyazhuang147
注意:要將3臺伺服器的資訊全部註冊到每臺伺服器的/etc/hosts檔案中,如下所示:
cat /etc/hosts
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.0.145 liuyazhuang145
192.168.0.146 liuyazhuang146
192.168.0.147 liuyazhuang147
完成以上配置後,伺服器的規劃為:
192.168.0.145 ——> liuyazhuang145
192.168.0.146 ——> liuyazhuang146
192.168.0.147 ——> liuyazhuang147

二、關閉防火牆

centos 7:
systemctl stop firewalld.service #停止
systemctl disable firewalld.service #禁用
之前的版本:
service iptables stop #停止
chkconfig iptables off #禁用

三、配置SSH免密碼登入

在liuyazhuang145節點上執行

ssh-keygen -t rsa
命令,將會在~/.ssh目錄下生成id_rsa和id_rsa.pub兩個檔案,其中id_rsa為金鑰檔案,rd_rsa.pub為公鑰檔案,然後我們輸入命令
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys 
將id_rsa.pub公鑰檔案寫入authorized_keys中,此時,我們就完成了liuyazhuang145主機上的免密碼登入配置,我們可以利用ssh liuyazhuang145命令來檢測ssh免密碼登入是否配置成功。

在其他主機上分別執行ssh-keygen -t rsa命令,並將生成的id_rsa.pub檔案拷貝到liuyazhuang145主機:

[[email protected] ~]# scp .ssh/id_rsa.pub liuyazhuang145:/root/.ssh/146
[[email protected] ~]# scp .ssh/id_rsa.pub liuyazhuang145:/root/.ssh/147
然後再liuyazhuang145主機上執行命令:
cat ~/.ssh/146 >> ~/.ssh/authorized_keys
cat ~/.ssh/147 >> ~/.ssh/authorized_keys
然後將authorized_keys檔案分別複製到liuyazhuang146、liuyazhuang147
[[email protected] ~]# scp .ssh/authorized_keys liuyazhuang146:/root/.ssh/authorized_keys
[[email protected] ~]# scp .ssh/authorized_keys liuyazhuang147:/root/.ssh/authorized_keys
刪除liuyazhuang145節點上~/.ssh下的146/147檔案
rm ~/.ssh/146
rm ~/.ssh/147
此時,完成了各臺主機間的ssh免密碼登入。
注意:一定是在root下配置 免密碼登陸,不是的話,很麻煩 ! 每臺都是!

四、Hadoop名詞瞭解

4.1 背景 (hadoop2.x 使用的背景)

 在hadoop1.x 中使用的問題 :
(1)HDFS存在的問題:
    1.NameNode單點故障,難以應用與線上場景
    2.NameNode壓力過大,且記憶體受限,影響系統擴充套件性
(2)MapReduce存在的問題:
    1.JobTracker訪問壓力大,影響系統拓展性
    2.難以支援除了MapReduce之外的計算框架,比如Spark,Storm等
        Spark :記憶體計算框架,Storm 流式計算框架;


4.2.Hadoop2.x

  1)HDFS :NN Federation , HA ;
  2)MapReduce : 執行 在YARN上的MR;
  3)YARN : 資源管理系統

4.3.HDFS 2.x

  1)解決了HDFS的單點故障和記憶體受限問題
  2)解決單點故障
     2.1) HDFS HA :通過主備NameNode解決
     2.2 )如果主NameNode發生故障,則切換到備NameNode上

4.4解決記憶體受限問題

    4.4.1 HDFSFederation
    4.4.2 水平拓展,支援多個NameNode
    4.4.3 每個NameNode分管一部分目錄
    4.4.4 所有的NameNode共享所有的DataNode儲存資源
    4.4.5.僅僅是架構上發生了變化,使用方式不變化;
    4.4.6.對HDFS使用者透明,Java API 還可以使用!

4.5.HDFS - Federation

  4.5.1 通過多個namenode / namespcae 把元資料的儲存和管理分散到多個節點中,
使得namenode/namespace可以通過增加機器來進行水平拓展;
  4.5.2 能把單個namenode的負載分散到多個節點中,在HDFS資料規模較大的時候,不會也降低HDFS的效能。可以通過多個namespace來隔離不同型別的應用,把不同型別的應>用HDFS元資料儲存和管理分派到不同的namenode中;
  4.5.3 每個NameNode獨立工作,資料共享;


4.6 .HDFS 2.x HA

  主備NameNode
  4.6.1 解決單點故障問題
    (1)主NameNode對外提供服務,備NameNode同步主NameNode元資料以待切換;
    (2)所有的DataNode同時向兩個NameNode彙報資料塊資訊
  4.6.2 兩種切換選擇
   (1)手動切換:通過命令實現主備之間的切換,可以用HDFS升級等場合
   (2)自動切換:基於Zookeeper的實現
  4.6.3 基於Zookeeper自動切換方案
   (1)Zookeeper Failover Controller :監控NameNode的健康狀態,並向Zookeeper註冊NameNode
    (2) NameNode掛掉後, ZKFC 為NameNode競爭鎖,獲得ZKFC鎖的NameNode變為active

4.7.YARN

  yarn : Yet Another Resource Negoiator
  4.7.1 Hadoop2.x  資源管理系統
    (1) 核心思想:將MRv1 中 的 JobTracker的資源管理和任務排程兩個功能分開,>分別由ResourceManager和ApplicationMaster程序實現
    (2) ResourceManaer :負責整個叢集的資源管理和排程
    (3) ApplicationMaster : 負責應用程式相關的事務,比如任務排程,任務監控和
容錯;
  4.7.2 YARN的引入使得多個計算框架可以執行在一個叢集中
    (1)每個應用程式對應一個ApplicationMaster
     (2) 目前多個計算框架可以執行在YARN上,比如MapReduce ,Spark ,Storm 等;

4.8 .MapReduc On YARN

  將MapReduce作業直接執行在YARN上,而不是由JObTracker和TaskTracker構建的MRv>系統中
  4.8.1 基本功能模組
    (1)YARN負責資源管理和排程
    (2)MRAppMaster :負責任務切分,任務排程,任務監控和容錯等;
    (3)MapTask/ReduceTask :任務驅動,與MRv1一致;
  4.8.2 每個MapReduce作業對應一個MRAppMaster
    (1)MrAppMaster任務排程
   (2)YARN將資源分配給MRAPPMaster
    (3)MRAppMaster進一步將資源分配給內部的任務
  4.8.3 MRAppMater容錯
    (1)失敗:由YARN重新啟動
    (2)任務失敗後,MRAppMaster重新申請資源;

五、Hadoop名詞進階

5.1 hadoop1.0的單點問題

Hadoop中的NameNode好比是人的心臟,非常重要,絕對不可以停止工作。在hadoop1時代,只有一個NameNode。如果該NameNode資料丟失或者不能工作,那麼整個叢集就不能恢復了。這是hadoop1中的單點問題,也是hadoop1不可靠的表現。如下圖所示,便是hadoop1.0的架構圖;

5.2 hadoop2.0對hadoop1.0單點問題的解決

為了解決hadoop1中的單點問題,在hadoop2中新的NameNode不再是隻有一個,可以有多個(目前只支援2個)。每一個都有相同的職能。一個是active狀態的,一個是standby狀態的。當叢集執行時,只有active狀態的NameNode是正常工作的,standby狀態的NameNode是處於待命狀態的,時刻同步active狀態NameNode的資料。一旦active狀態的NameNode不能工作,通過手工或者自動切換,standby狀態的NameNode就可以轉變為active狀態的,就可以繼續工作了。這就是高可靠。

5.3 使用JournalNode實現NameNode(Active和Standby)資料的共享

Hadoop2.0中,2個NameNode的資料其實是實時共享的。新HDFS採用了一種共享機制,Quorum Journal Node(JournalNode)叢集或者Nnetwork File System(NFS)進行共享。NFS是作業系統層面的,JournalNode是hadoop層面的,我們這裡使用JournalNode叢集進行資料共享(這也是主流的做法)。如下圖所示,便是JournalNode的架構圖。

兩個NameNode為了資料同步,會通過一組稱作JournalNodes的獨立程序進行相互通訊。當active狀態的NameNode的名稱空間有任何修改時,會告知大部分的JournalNodes程序。standby狀態的NameNode有能力讀取JNs中的變更資訊,並且一直監控edit log的變化,把變化應用於自己的名稱空間。standby可以確保在叢集出錯時,名稱空間狀態已經完全同步了

5.4 NameNode之間的故障切換

對於HA叢集而言,確保同一時刻只有一個NameNode處於active狀態是至關重要的。否則,兩個NameNode的資料狀態就會產生分歧,可能丟失資料,或者產生錯誤的結果。為了保證這點,這就需要利用使用ZooKeeper了。首先HDFS叢集中的兩個NameNode都在ZooKeeper中註冊,當active狀態的NameNode出故障時,ZooKeeper能檢測到這種情況,它就會自動把standby狀態的NameNode切換為active狀態。

相關推薦

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 叢集管理員,將光碟收入光