Hadoop基礎原理
Hadoop架構
Write:Client向HDFS文件系統保存數據的過程
1、HDFS Client通過HDFS文件系統的API,將數據劃分成指定大小的數據塊
2、向NameNode發起存儲請求,NameNode會告知Client端,數據可以存放在哪些DataNode上
3-5:Client端通FSData OutputStream將數據存儲在2中NameNode返回的DataNode上,在不同的DataNode上保存至少三份,每一份保存完成後,DataNode會向ClientNode發送ACK確認
6、Client端關閉FSData OutputStream 數據流,並告知NameNode,數據存儲完成。
Read:Client向HDFS文件系統讀取數據的過程
1、Client 通過Distributed FileSystem的API向NameNode發起打開文件,並讀取文件的請求
2、NameNode在收到請求後,會查找本地維護的兩張元數據表(一個是所持有的塊信息表,一個是每一個數據塊存放的DataNode路徑信息)返回給客戶端
3-5、客戶端會根據NameNode返回的表查找離自己最近的數據節點來獲取數據,比如第一個數據塊從datanode4上讀取,第2個從datanode5上讀取
6、數據讀取完成後,Client關閉FSData InputStream
mapreduce的過程:
mapreduce主要是用來處理文件的,這個文件上的數據可能是雜亂無章的,hadoop的reduce只能處理鍵值對格式的數據,因此必須將數據抽取成鍵值對數據。
過程如下:
split:啟動一個split任務,將文件中的每一個數據按照用戶所指定的標準切割或者抽取成鍵值對。如<key1,value1>,<key2,value2>
map:將這些鍵值對發送給各個mapper worker進程,mapper worker收到鍵值對後,會對數據做出第一次處理,結束後形成另外一種鍵值對。如<ikey1,ivalue1>、<ikey2,ivalue2>。 這些數據是reducer可折疊的數據。
shuffle&sort:mapper將處理後的數據進行洗牌和排序,發給reduce進行折疊操作,同一個key和其對應的數據發送給同一個reducer。
store:reduce之後的數據進行存儲
HBase:
NoSQL,
Hadoop基礎原理