您好,登錄后才能下訂單哦!
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 是一種編程模式,用于大規模數據集的并行計算
是一個高度容錯性的分布式文件系統,可以被廣泛的部署于廉價的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 根據列表讀取文件信息
是一種編程模型,用于大規模數據集并行計算,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
并使用Hadoop內部方法完成基本配置。其中output是自動創建的,無需手工創建
返回值為0,表示格式化成功
測試顯示結果
創建目錄上傳
查看
上傳文件至服務端
查看
使用命令查看結果
刪除并查看其顯示結果
配置下線用戶為server3
簡介:
在典型的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;事實上,運行這些守護進程是錯誤的。
zookeeper 至少為三臺,總結點數為奇數個
A 指定hdfs的nameservices 為master
B 定義namenode節點(server1 server5 )
C 指定namenode 元數據在journalNode上的存放位置
D指定journalnode在本地磁盤存放數據的位置
E 開啟namenode 失敗自動切換,及自動切換實現方式,隔離機制方式以及使用sshfence 隔離機制需要ssh免密以及隔離機制超時時間等參數
斷開主節點查看情況
則切換到server5上
查看server5 狀態
啟動server1
查看server1狀態
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。