一.hadoop是什麼node
Hadoop被公認是一套行業大數據標準開源軟件,在分佈式環境下提供了海量數據的處理能力。幾乎全部主流廠商都圍繞Hadoop開發工具、開源軟件、商業化工具和技術服務。今年大型IT公司,如EMC、Microsoft、Intel、Teradata、Cisco都明顯增長了Hadoop方面的投入。編程
二 .hadoop能幹什麼安全
hadoop擅長日誌分析,facebook就用Hive來進行日誌分析,2009年時facebook就有非編程人員的30%的人使用HiveQL進行數據分析;淘寶搜索中的自定義篩選也使用的Hive;利用Pig還能夠作高級的數據處理,包括Twitter、LinkedIn 上用於發現您可能認識的人,能夠實現相似Amazon.com的協同過濾的推薦效果。淘寶的商品推薦也是!在Yahoo!的40%的Hadoop做業是用pig運行的,包括垃圾郵件的識別和過濾,還有用戶特徵建模。(2012年8月25新更新,天貓的推薦系統是hive,少許嘗試mahout!)服務器
三.hadoop的核心架構
1.HDFS: Hadoop Distributed File System 分佈式文件系統框架
2.YARN: Yet Another Resource Negotiator 資源管理調度系統分佈式
3.Mapreduce:分佈式運算框架函數
四.HDFS的架構工具
主從結構oop
•主節點, namenode
•從節點,有不少個: datanode
namenode負責:
•接收用戶操做請求
•維護文件系統的目錄結構
•管理文件與block之間關係,block與datanode之間關係
datanode負責:
•存儲文件
•文件被分紅block存儲在磁盤上
•爲保證數據安全,文件會有多個副本
Secondary NameNode負責:
合併fsimage和edits文件來更新NameNode的metedata
五.Hadoop的特色
擴容能力(Scalable):能可靠地(reliably)存儲和處理千兆字節(PB)數據。
成本低(Economical):能夠經過普通機器組成的服務器羣來分發以及處理數據。這些服務器羣總計可達數千個節點。
高效率(Efficient):經過分發數據,hadoop能夠在數據所在的節點上並行地(parallel)處理它們,這使得處理很是的快速。
可靠性(Reliable):hadoop能自動地維護數據的多份副本,而且在任務失敗後能自動地從新部署(redeploy)計算任務。
六.NameNode
1.簡介
namenode是整個文件系統的管理節點。他維護着整個文件系統的文件目錄樹,文件/目錄的元信息和每一個文件對應的數據塊列表。接收用戶的操做請求。
文件包括:
fsimage:元數據鏡像文件。存儲某一時段NameNode內存元數據信息。
edits:操做日誌文件。
fstime:保存最近一次checkpoint的時間。
2.NameNode的工做特色
NameNode始終在內存中保存metedata,用於處理「讀請求」,到有「寫請求」到來時,NameNode首先會寫editlog到磁盤,即向edits文件中寫日誌,成功返回後,纔會修改內存,而且向客戶端返回。
Hadoop會維護一我的fsimage文件,也就是NameNode中metedata的鏡像,可是fsimage不會隨時與NameNode內存中的metedata保持一致,而是每隔一段時間經過合併edits文件來更新內容。Secondary NameNode就是用來合併fsimage和edits文件來更新NameNode的metedata的。
3.何時checkpoint
fs.checkpoint.period 指定兩次checkpoint的最大時間間隔,默認3600秒。 fs.checkpoint.size 規定edits文件的最大值,一旦超過這個值則強制checkpoint,不論是否到達最大時間間隔。默認大小是64M。
七.SecondaryNameNode
1.簡介
HA的一個解決方案。但不支持熱備。配置便可。 執行過程:從NameNode上下載元數據信息(fsimage,edits),而後把兩者合併,生成新的fsimage,在本地保存,並將其推送到NameNode,替換舊的fsimage. 默認在安裝在NameNode節點上,但這樣...不安全!
2.工做流程
(1)secondary通知namenode切換edits文件; (2)secondary從namenode得到fsimage和edits(經過http); (3)secondary將fsimage載入內存,而後開始合併edits; (4)secondary將新的fsimage發回給namenode; (5)namenode用新的fsimage替換舊的fsimage;
八.DataNode
提供真實文件數據的存儲服務。 文件塊(block):最基本的存儲單位。對於文件內容而言,一個文件的長度大小是size,那麼從文件的0偏移開始,按照固定的大小,順序對文件進行劃分並編號,劃分好的每個塊稱一個Block。HDFS默認Block大小是128MB,以一個256MB文件,共有256/128=2個Block. dfs.block.size 不一樣於普通文件系統的是,HDFS中,若是一個文件小於一個數據塊的大小,並不佔用整個數據塊存儲空間; Replication:多複本。默認是三個。
九.HDFS
(1)讀過程
1.初始化FileSystem,而後客戶端(client)用FileSystem的open()函數打開文件
2.FileSystem用RPC調用元數據節點,獲得文件的數據塊信息,對於每個數據塊,元數據節點返回保存數據塊的數據節點的地址。
3.FileSystem返回FSDataInputStream給客戶端,用來讀取數據,客戶端調用stream的read()函數開始讀取數據。
4.DFSInputStream鏈接保存此文件第一個數據塊的最近的數據節點,data從數據節點讀到客戶端(client)
5.當此數據塊讀取完畢時,DFSInputStream關閉和此數據節點的鏈接,而後鏈接此文件下一個數據塊的最近的數據節點。
6.當客戶端讀取完畢數據的時候,調用FSDataInputStream的close函數。
7.在讀取數據的過程當中,若是客戶端在與數據節點通訊出現錯誤,則嘗試鏈接包含此數據塊的下一個數據節點。
8.失敗的數據節點將被記錄,之後再也不鏈接。
(2)寫過程
1.初始化FileSystem,客戶端調用create()來建立文件
2.FileSystem用RPC調用元數據節點,在文件系統的命名空間中建立一個新的文件,元數據節點首先肯定文件原來不存在,而且客戶端有建立文件的權限,而後建立新文件。
3.FileSystem返回DFSOutputStream,客戶端用於寫數據,客戶端開始寫入數據。
4.DFSOutputStream將數據分紅塊,寫入data queue。data queue由Data Streamer讀取,並通知元數據節點分配數據節點,用來存儲數據塊(每塊默認複製3塊)。分配的數據節點放在一個pipeline裏。Data Streamer將數據塊寫入pipeline中的第一個數據節點。第一個數據節點將數據塊發送給第二個數據節點。第二個數據節點將數據發送給第三個數據節點。
5.DFSOutputStream爲發出去的數據塊保存了ack queue,等待pipeline中的數據節點告知數據已經寫入成功。
6.當客戶端結束寫入數據,則調用stream的close函數。此操做將全部的數據塊寫入pipeline中的數據節點,並等待ack queue返回成功。最後通知元數據節點寫入完畢。
7.若是數據節點在寫入的過程當中失敗,關閉pipeline,將ack queue中的數據塊放入data queue的開始,當前的數據塊在已經寫入的數據節點中被元數據節點賦予新的標示,則錯誤節點重啓後可以察覺其數據塊是過期的,會被刪除。失敗的數據節點從pipeline中移除,另外的數據塊則寫入pipeline中的另外兩個數據節點。元數據節點則被通知此數據塊是複製塊數不足,未來會再建立第三份備份。
———————————————— 原文連接:blog.csdn.net/gwd11549783…