BD01_Hadoop簡介及搭建

一、簡史

1、Hadoop主要爲了解決兩個問題

  • 海量數據存儲   HDFS 
  • 海量數據運算   MapReduce

2、hadoop的起源

起源於一個開源的項目nutch,

Hadoop源於谷歌的三篇論文:

  • GFS(google  fileSystem),
  • BigTable(key,value對的非關係型數據庫)
  • MapReduce(分佈式計算框架)   

狹義的Hadoop:

  • HDFS+MapReduce

廣義的Hadoop:

  • 指代一個大數據軟件的生態圈,包括各種周邊的其他框架(Hive,HBase,Spark....)

3、三大主流公司

hadoop的發行版本:主要從0.x到1.x到2.x這三個主流的版本

  • apache開源版本:commiter 
    • 優點:版本更新迭代比較快,所有的軟件都有對應的迭代
    • 缺點:版本的升級,兼容,維護等都比較麻煩
    • 實際生產環境當中,儘量不要使用apache的版本
  •  免費開源版本hortonworks:軟件的安裝,升級等都做了
  • 服務收費版本cloudera:軟件有收費版,也有免費版
  • MapR:大數據軟件廠商

4、hadoop的架構模型

 

1.x的版本架構模型介紹

文件系統核心模塊:

  • NameNode:集羣當中的主節點,主要用於管理集羣當中的各種數據(主要維護元數據信息,元數據信息就是表述數據的數據)
  • secondaryNameNode:主要能用於hadoop當中元數據信息的輔助管理
  • DataNode:集羣當中的從節點,主要用於存儲集羣當中的各種數據

數據計算核心模塊:

  • JobTracker:接收用戶的計算請求任務,並分配任務給從節點
  • TaskTracker:負責執行主節點JobTracker分配的任務

1.x當中,主節點 namenode jobtracker都存在單節點故障問題

2.x的版本架構模型介紹

第一種:NameNode與ResourceManager單節點架構模型

 

第二種:NameNode單節點與ResourceManager高可用架構模型

第三種:NameNode高可用與ResourceManager單節點架構模型

第四種:NameNode與ResourceManager高可用架構模型

 

文件系統核心模塊:

  • NameNode:集羣當中的主節點,主要用於管理集羣當中的各種數據,一般都是使用兩個,實現HA高可用
  • DataNode:從節點,用於數據的存儲
  • secondaryNameNode:主要負責瞄着active什麼時候死了,趕緊上位 兩個namenode組成主備的架構
  • 如果namenode高可用:就沒有secondaryNamenode了,取而代之的是journalNode:主要用於同步元數據信息,保證兩個namenode的元數據信息是一致的
  • nameNode active狀態:主要負責用戶的寫請求
  • namenode高可用的自動切換,主要是通過兩個守護進程zkfc來實現的

數據計算核心模塊:

  • ResourceManager:Yarn平臺的主節點,主要用於接收各種任務,通過兩個,構建成高可用
  • NodeManager:Yarn平臺的從節點,主要用於處理ResourceManager分配的任務

 

二 、拓展

1、FastLeaderElection是zookeeper默認提供的選舉算法

選舉流程

目前有5臺服務器,每臺服務器均沒有數據,它們的編號分別是1,2,3,4,5,按編號依次啓動,它們的選擇舉過程如下:

  • 1. 服務器1啓動,給自己投票,然後發投票信息,由於其它機器還沒有啓動所以它收不到反饋信息,服務器1的狀態一直屬於Looking。
  • 2. 服務器2啓動,給自己投票,同時與之前啓動的服務器1交換結果,由於服務器2的編號大所以服務器2勝出,但此時投票數沒有大於半數,所以兩個服務器的狀態依然是LOOKING。
  • 3. 服務器3啓動,給自己投票,同時與之前啓動的服務器1,2交換信息,由於服務器3的編號最大所以服務器3勝出,此時投票數正好大於半數,所以服務器3成爲leader,服務器1,2成爲follower。
  • 4. 服務器4啓動,給自己投票,同時與之前啓動的服務器1,2,3交換信息,儘管服務器4的編號大,但之前服務器3已經勝出,所以服務器4只能成爲follower。
  • 5. 服務器5啓動,後面的邏輯同服務器4成爲follower。

 

2、zookeeper四種類型的znode

1、PERSISTENT-持久化目錄節點

客戶端與zookeeper斷開連接後,該節點依舊存在

2、PERSISTENT_SEQUENTIAL-持久化順序編號目錄節點

客戶端與zookeeper斷開連接後,該節點依舊存在,只是Zookeeper給該節點名稱進行順序編號

3、EPHEMERAL-臨時目錄節點

客戶端與zookeeper斷開連接後,該節點被刪除

4、EPHEMERAL_SEQUENTIAL-臨時順序編號目錄節點

客戶端與zookeeper斷開連接後,該節點被刪除,只是Zookeeper給該節點名稱進行順序編號

3、Zookeeper對節點的watch監聽通知是永久的嗎?

不是。官方聲明:一個Watch事件是一個一次性的觸發器,當被設置了Watch的數據發生了改變的時候,則服務器將這個改變發送給設置了Watch的客戶端,以便通知它們。

爲什麼不是永久的,舉個例子,如果服務端變動頻繁,而監聽的客戶端很多情況下,每次變動都要通知到所有的客戶端,這太消耗性能了。

 

4、集羣如果有3臺機器,掛掉一臺集羣還能工作嗎?掛掉兩臺呢

過半存活即可用。

 

5、集羣支持動態添加機器嗎

其實就是水平擴容了,Zookeeper在這方面不太好。

兩種方式:

全部重啓:關閉所有Zookeeper服務,修改配置之後啓動。不影響之前客戶端的會話。

逐個重啓:在重啓的過程中,需要保證一臺機器重啓完成後,再進行下一臺機器的重啓。這樣就整個集羣中每個時刻只有一臺機器不能正常工作,而集羣中有過半的機器是正常工作的,那麼整個集羣對外就是可用的。所以這個時候不會出現錯誤,也不會出現停止服務,整個擴容過程對用戶是無感知的。

 

三、環境搭建

apache軟件下載地址:

http://archive.apache.org/dist/

cdh所有軟件下載地址:

http://archive.cloudera.com/cdh5/cdh/5/

分佈式環境搭建(適用於工作當中正式環境搭建)

使用完全分佈式,實現namenode高可用,ResourceManager的高可用

 

192.168.1.100

192.168.1.110

192.168.1.120

zookeeper

zk

zk

zk

HDFS

JournalNode

JournalNode

JournalNode

NameNode

NameNode

 

ZKFC

ZKFC

 

DataNode

DataNode

DataNode

YARN

 

ResourceManager

ResourceManager

NodeManager

NodeManager

NodeManager

MapReduce

 

 

JobHistoryServer

hadoop安裝包結構

hadoop-2.7.5/bin:一些shell腳本,供我們使用
hadoop-2.7.5/sbin:一些shell腳本,供我們使用
hadoop-2.7.5/etc/hadoop:所有的配置文件的路徑
hadoop-2.7.5/lib/native:本地的C程序庫

檢測hadoop的本地程序庫

bin/hadoop checknative

hadoop: true 本地庫,支持我們使用C程序來訪問hadoop
zlib: true 壓縮庫
snappy: false 壓縮庫 谷歌出品的一種壓縮算法,谷歌出品,必屬精品
lz4: true 壓縮庫
bzip2: false 壓縮庫

hadoop 六個核心配置文件的作用:

core-site.xml:核心配置文件,主要定義了我們文件訪問的格式 hdfs://
hadoop-env.sh:主要配置我們的java路徑
hdfs-site.xml:主要定義配置我們的hdfs的相關配置
mapred-site.xml 主要定義我們的mapreduce相關的一些配置
slaves:控制我們的從節點在哪裏 datanode nodemanager在哪些機器上
yarn-site.xml:配置我們的resourcemanager資源調度

 

安裝包解壓

修改配置文件

啓動集羣

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章