1. 程式人生 > >hadoop環境搭建

hadoop環境搭建

hadoop簡介 hadoop單節點搭建 hadoop偽節點搭建 hadoop分布式 hadoop高可用

一 hadoop 簡介

1 Hadoop 整體框架

Hadoop 由HDFS 、MapReduce、HBASE、hive 和zookeeper 等成員組成,其中最
基礎最重要的元素是底層用於存儲集群中所有存儲節點文件的文件系統HDFS 來
執行MapReduce 程序的MapReduce 引擎
技術分享圖片

1 pig 是一個基於Hadoop 的大規模數據分析平臺,pig 為復雜的海量數據並行計
算提供了一個簡單的操作和編程接口
2 hive 是基於Hadoop 的一個工具,提供完整的SQL 查詢,可以將sql 語句轉換
為MapReduce (映射)任務進行執行
3 zookeeper:高效的,可擴展的協調系統,存儲和協調關鍵共享狀態

4 HBASE 是一個開源的,基於列存儲模型的分布式數據庫
5 hdfs 是一個分布式文件系統,具有高容錯的特點,適合於那些超大數據集的應
用程序,
6 MapReduce 是一種編程模式,用於大規模數據集的並行計算

2 hadoop 集群部署結構

技術分享圖片
技術分享圖片

3 hadoop 核心設計

技術分享圖片

1 HDFS

是一個高度容錯性的分布式文件系統,可以被廣泛的部署於廉價的PC 上,他以流式訪問模式訪問應用程序的數據,這樣可以提高系統的數據吞吐量,因而非常適合用於具有超大數據集的應用程序中
技術分享圖片
HDFS 架構采用主從架構,一個HDFS 集群應該包含一個namenode 節點和多個datanode 節點,name node 負責整個HDFS 文件系統中的文件元數據的保管和管理,集群中通常只有一臺機器上運行namenode,datanode 節點保存文件中的數據,集群中的機器分別運行一個datenode 實例,在HDFS 中,namenode 節點稱為名稱節點,DataNode 稱為數據節點,DataNode 通過心跳機制與namenode 節點進行定時通信Namenode 相當於mfs 中的master serverDatanode 相當於mfs 中的chunk server

2 HDFS 的讀寫方式
寫入
技術分享圖片

文件寫入:如上圖
1 客戶端向nameode (master server ) 發起文件寫入請求
2 namenode 根據文件大小和文件塊配置情況,返回給客戶端DataNode 信息
(chunkserver)
3 client 將文件劃分成多個文件塊,根據DataNode 的地址信息,按順序寫入每個
DataNode 中

讀取
技術分享圖片
步驟:
1 向namenode 發送讀取請求
2 namenode 返回文件位置列表
3 client 根據列表讀取文件信息

2 MapReduce

是一種編程模型,用於大規模數據集並行計算,map(映射)和reduce(化簡),采用分布方式,(分封制),先把任務分發到集群節點上,並行計算,然後將結果合並,多結點計算,涉及的任務調度,負載均衡,容錯,都有MapReduce 完成

技術分享圖片

用戶提交任務給job tracer ,job tracer 把對應的用戶程序中的map 個reduce 操作映射到tasktracee 節點中,輸入模塊負責把輸入數據數據分成小數據塊,然後把它們傳遞給map 節點,map 節點得到每一個key/value 對,然後產生一個或多個key/value 對,然後寫入文件,reduce 節點獲取臨時文件中的數據,對帶有相同key 的數據進行叠代計算,後將最終結果寫入文件

技術分享圖片

Hadoop 的核心是MapReduce,而MapReduce 的核心又在於map 和reduce 函數。它們是交給用戶實現的,這兩個函數定義了任務本身。

map 函數:接受一個鍵值對(key-value pair)(例如上圖中的Splitting 結果),產生一組中間鍵值對(例如上圖中Mapping 後的結果)。Map/Reduce 框架會將map 函數產生的中間鍵值對裏鍵相同的值傳遞給一個reduce 函數。
reduce 函數:接受一個鍵,以及相關的一組值(例如上圖中Shuffling 後的結果),將這組值進行合並產生一組規模更小的值(通常只有一個或零個值)(例如上圖中Reduce 後的結果)
但是,Map/Reduce 並不是萬能的,適用於Map/Reduce 計算有先提條件:
(1)待處理的數據集可以分解成許多小的數據集;
(2)而且每一個小數據集都可以完全並行地進行處理;
若不滿足以上兩條中的任意一條,則不適合適用Map/Reduce 模式。

二 環境搭建

軟件下載位置
鏈接:https://pan.baidu.com/s/1lBQ0jZC6MGj9zfV-dEiguw
密碼:13xi

1 配置hadoop 用戶

技術分享圖片
技術分享圖片
技術分享圖片
技術分享圖片
技術分享圖片

2 下載並解壓相關軟件

技術分享圖片
技術分享圖片

3 修改環境變量,使得hadoop運行在Java平臺之上

技術分享圖片
技術分享圖片
技術分享圖片

4 修改java環境變量,使其可以查看到hadoop進程開啟狀態

技術分享圖片
技術分享圖片

5 查看

技術分享圖片

二 單節點部署

1 創建文件夾,並將數據導入用於測試單節點,

並使用Hadoop內部方法完成基本配置。其中output是自動創建的,無需手工創建
技術分享圖片

2 查看其統計結果

技術分享圖片
技術分享圖片

三 偽節點部署

1 配置文件系統管理相關

技術分享圖片
技術分享圖片

2 配置文件保存的份數

技術分享圖片
技術分享圖片

3 配置hadoop密碼並設置ssh免密認證

技術分享圖片
技術分享圖片

4 配置datanode節點

技術分享圖片

5 namenode節點格式化

技術分享圖片
返回值為0,表示格式化成功
技術分享圖片

6 啟動服務並查看進程狀態

技術分享圖片
測試顯示結果
技術分享圖片

7 測試

創建目錄上傳
技術分享圖片
查看
技術分享圖片
技術分享圖片
上傳文件至服務端
技術分享圖片
查看
技術分享圖片
使用命令查看結果
刪除並查看其顯示結果
技術分享圖片
技術分享圖片
技術分享圖片
技術分享圖片
技術分享圖片
技術分享圖片
技術分享圖片

8 高級配置:mapred配置

技術分享圖片
技術分享圖片
技術分享圖片
技術分享圖片

9 啟動服務並查看

技術分享圖片

10 查看是否成功

技術分享圖片

四 分布式配置

1 停止之前的偽節點配置

技術分享圖片

2 在超級用戶下安裝服務用以共享存儲

技術分享圖片
技術分享圖片
技術分享圖片

3 啟動服務

技術分享圖片

4 配置共享存儲

技術分享圖片
技術分享圖片

5 刷新看是否成功

技術分享圖片

6 客戶端啟動服務並掛載掛載

技術分享圖片
技術分享圖片
技術分享圖片

7 查看配置

技術分享圖片
技術分享圖片

8 配置datanode節點

技術分享圖片
技術分享圖片

9 配置備份存儲數量

技術分享圖片
技術分享圖片

10 格式化namenode節點

技術分享圖片
技術分享圖片
技術分享圖片

11 設置免密

技術分享圖片

12 啟動服務並查看

技術分享圖片

13 datanode節點查看服務

技術分享圖片

14 查看datanode節點是否存在並正常掛載

技術分享圖片
技術分享圖片

五 在線添加節點

1 安裝並配置基礎環境

技術分享圖片

2 啟動服務並掛載

技術分享圖片

3 配置datanode節點

技術分享圖片
技術分享圖片

4 配置免密認證

技術分享圖片

5 啟動服務並查看其進程

技術分享圖片

6 查看其是否加入存儲系統中

技術分享圖片
技術分享圖片

六 節點數據遷移

1 創建數據目錄並上傳數據

技術分享圖片

2 查看是否上傳成功

技術分享圖片

3 查看其各個節點存儲狀態

技術分享圖片
技術分享圖片
技術分享圖片
技術分享圖片

4 配置下線

技術分享圖片
技術分享圖片
配置下線用戶為server3
技術分享圖片
技術分享圖片

5 生效配置文件

技術分享圖片

6 查看serever3狀態,如果為normal 則表示遷移完成,否則未完成

技術分享圖片
技術分享圖片

7 查看其他節點存儲,發現存儲已經增加,則表明數據遷移完成

技術分享圖片
技術分享圖片
技術分享圖片

8 關閉datanode節點,下線成功

技術分享圖片

9 開啟其他節點的nodemanager服務

技術分享圖片

七 高可用

簡介:
在典型的HA集群中,通常有兩臺不同的機器充當NN(namenode),在任何時間,只有一臺機器處於active狀態,另一臺機器則處於standby狀態,active NN負責集群中所有客戶端的操作,而standby NN主要用於備用,主要維持足夠的狀態,如果有必要,可以提供快速的故障恢復

為了讓standby NN狀態和 active NN 保持同步,及元數據保持一致,他會都會和journalnodes 守護進程通信,當active NN 執行任何有關命名空間的修改,他都需要持久化到一半以上的journalnodes 上(通過edits log 持久化存儲),而standby NN負責觀察edits log 的變化,他能夠從JNS 中讀取edits 信息,並更新其內部的名稱空間,一旦active NN 出現故障,standby NN 會將保證從JNS中讀取了全部edits,然後切換成active 狀態,standby NN讀取全部的edits 可確保發生故障轉移之前,是和active NN擁有完全同步的命名空間狀態

為了提供快速的故障恢復,standby NN也需要保存集群中各個文件塊的存儲位置,為了實現這個,集群中的所有Datanode 將配置好的active NN和standby NN的位置,並向他們發送快文件所在的位置及心跳。
為了部署HA 集群,你需要準備以下事項:
(1)、NameNode machines:運行Active NN 和Standby NN 的機器需要相同的硬件配置;
(2)、JournalNode machines:也就是運行JN 的機器。JN 守護進程相對來說比較輕量,所以這些守護進程可以可其他守護線程(比如NN,YARN ResourceManager)運行在同一臺機器上。在一個集群中,最少要運行3 個JN 守護進程,這將使得系統有一定的容錯能力。當然,你也可以運行3 個以上的JN,但是為了增加系統的容錯能力,你應該運行奇數個JN(3、5、7 等),當運行N 個JN,系統將最多容忍(N-1)/2 個JN 崩潰。在HA 集群中,Standby NN 也執行namespace 狀態的checkpoints,所以不必要運行Secondary NN、CheckpointNode 和BackupNode;事實上,運行這些守護進程是錯誤的。

1 DHFS 高可用

1 關閉之前的服務

技術分享圖片

2 查看各節點配置

技術分享圖片
技術分享圖片
技術分享圖片

3 配置服務

技術分享圖片
技術分享圖片

4 刪除原有配置

技術分享圖片

5 清空原有配置,以防影響

技術分享圖片
技術分享圖片
技術分享圖片
技術分享圖片
技術分享圖片

6 配置安裝服務zookeeper

zookeeper 至少為三臺,總結點數為奇數個
技術分享圖片
技術分享圖片
技術分享圖片
技術分享圖片
技術分享圖片
技術分享圖片
技術分享圖片

7 啟動服務

技術分享圖片
技術分享圖片
技術分享圖片

8 查看那個是leader

技術分享圖片
技術分享圖片
技術分享圖片

9 在leader 上啟動服務並查看相關配置

技術分享圖片
技術分享圖片

10 配置集群相關配置

1 配置指定hdfs的namenode 為master(名稱隨意)指定zookeeper 集群主機地址(server2,server3,server4的IP地址)

技術分享圖片
技術分享圖片

2 編輯hdfs-site.xml文件

技術分享圖片
A 指定hdfs的nameservices 為master
技術分享圖片
B 定義namenode節點(server1 server5 )
技術分享圖片
C 指定namenode 元數據在journalNode上的存放位置
技術分享圖片
D指定journalnode在本地磁盤存放數據的位置
技術分享圖片
E 開啟namenode 失敗自動切換,及自動切換實現方式,隔離機制方式以及使用sshfence 隔離機制需要ssh免密以及隔離機制超時時間等參數
技術分享圖片

11 配置server5進行掛載

技術分享圖片
技術分享圖片
技術分享圖片

12 啟動日誌服務器server2 server3 server4

技術分享圖片
技術分享圖片
技術分享圖片

13 格式化namenode

技術分享圖片
技術分享圖片

14 將生成的數據發送到另一個高可用節點

技術分享圖片

15 配置免密認證

技術分享圖片

16 啟動zkfc服務

技術分享圖片

17 查看服務

技術分享圖片
技術分享圖片
技術分享圖片
技術分享圖片
技術分享圖片
技術分享圖片

18 驗證高可用,關閉服務

技術分享圖片
技術分享圖片

技術分享圖片

技術分享圖片

技術分享圖片

2 高可用之 YARN

技術分享圖片

1 指定yarn的框架為mapreduce

技術分享圖片

技術分享圖片

2 配置可以在nodemanager上運行mapreduce程序

技術分享圖片

3 激活RM高可用

技術分享圖片

4 指定RM的集群ID

技術分享圖片

5 定義RM節點

技術分享圖片
技術分享圖片

6激活RM 自動恢復

技術分享圖片

7 配置RM狀態信息存儲方式,有memstore和ZKstore

技術分享圖片

8 配置為zookeeper 存儲時,指定ziikeeper集群的地址

技術分享圖片

9啟動yarn 服務並查看

技術分享圖片

10 另一個節點需要手工啟動服務

技術分享圖片

11 查看集群狀態

技術分享圖片
技術分享圖片
技術分享圖片

12 測試

斷開主節點查看情況
技術分享圖片
則切換到server5上
技術分享圖片
查看server5 狀態
技術分享圖片
啟動server1
技術分享圖片
查看server1狀態
技術分享圖片

3 服務的關閉方式

技術分享圖片
技術分享圖片
技術分享圖片
技術分享圖片
技術分享圖片

hadoop環境搭建