好程式設計師大資料學習路線分享hdfs學習乾貨

好程式設計師IT發表於2019-08-20

好程式設計師大資料學習路線分享hdfs學習乾貨,能處理大資料的技術:


Hadoop離線計算  spark實時計算  strom流式計算


一、hadoop背景


Apache Hadoop 是一個可靠的,可擴充套件的分散式計算開發軟體


Apache Hadoop 可以理解為一個框架. 它允許使用簡單的程式設計模型來計算分散式的大型資料集合(海量資料)


包括哪些模組:


Hadoop Common : Hadoop的一些模組工具


Hadoop分散式檔案系統(HDFS):是一種分散式檔案系統,可以提供應用程式資料的高吞吐量的訪問


Hadoop YARN:作業排程和叢集資源管理的框架


Hadoop MapReduce:一種用於處理大型資料集的基於YARN的系統(分散式計算框架)


ps:MapReduce論計算能力 很一般而且資料慢


上述的每個模組都有自己獨立的功能,而模組和模組之間又有一定的聯絡


二、


Hadoop在大資料,雲端計算中位置和關係


雲端計算是分散式計算,並行技術,網路計算,多核計算,網路儲存,虛擬化,負載均衡等傳統的計算機技術和網際網路技術融合的一個產物


現階段雲端計算的底層兩大技術支撐"虛擬化"和"大資料技術"


而Hadoop則是雲端計算平臺即服的解決方案


ps:laaS(基礎設施即服務) PaaS(平臺即服務) S aaS(軟體即服務)


三、Hadoop案例:


1. 大型網站web伺服器的日誌分析:一個大型網站的web伺服器,每5分鐘就收錄的點選量就高達800GB,峰值點選可以達到每秒900萬次每隔5分鐘將資料裝載到記憶體中,高速計算網站的熱點url,並將這些資訊反饋給前端快取伺服器,以提高快取命中率

2. 運營商流量分析:每天的流量資料在2TB-5TB之間,複製到HDFS上,透過互動式分析引擎模板,能夠進行幾百個複雜的資料清洗和報表任務,總時間類似的硬體配置的小叢集(DB2)要快2-3倍

3. 城市交通卡口影片監控資訊實時分析:採用基於流式進行全省範圍的交通卡口的影片監控的資訊進行實時的分析,警告和統計,可以對全省範圍內未年檢和套牌車輛進行300毫秒左右就可以得到結論並實時進行警告


四、Hadoop生態圈


重要元件


1. HDFS:分散式檔案系統

2. MapReduce:分散式計算框架

3. Hive:基於大資料技術的SQL資料倉儲工具(檔案系統+運算框架)

4. HBase:基於Hadoop的分散式海量資料資料庫(NOSQL非關係型資料庫,列式儲存)

5. Zookeeper:分散式協調服務基礎元件

6. Oozie:工作流排程框架

7. Sqoop:資料匯入匯出工具

8. Flume:日誌資料採集框架

9. Mahout:基於Mapreduce/Spark/flink等分散式框架的機器學習演算法庫


分散式系統


一、分散式軟體系統


分散式軟體系統是由一組透過網路進行通訊,為了完成共同的任務而協調工作的計算機節點所組成的系統.  分散式系統的出現為了用廉價,普通的機器完成單個計算機完成的計算/儲存等任務,其目的就是充分利用計算機來處理更多的任務


二、常用的分散式軟體系統的案例:


Web伺服器叢集,單臺伺服器的效能和資源時優先,支援的連線併發數也是有上限,因此必須採用多型伺服器叢集的方式才能提供併發資料和計算機計算速度


每臺web伺服器會分配一個域名,肯定是同一個域名的進入的是同一個入口


百度有上千(甚至更多)臺web伺服器,此時我們使用一個入口進行訪問,至於哪臺伺服器提供我們服務,具體的就需要底層實現一個技術,負載均衡


離線資料的分析流程


web日誌資料探勘


案例分析:


網站點選流量日誌資料探勘系統


需求:


web點選流日誌,包含著網站運營的重要資訊,透過日誌的分析,我們可以知道網站的訪問量,那個網頁訪問人數的最多,那個網頁最有價值,廣告轉換率,訪客的來源資訊,訪客的終端資訊


資料來源:


獲取方式,在頁面預處理一段js程式,為了頁面想要堅挺的標籤繫結時間,只要使用者點選或觸發,就可以得到使用者的資訊,併產生日誌檔案


資料處理流程:


1. 資料採集:定製開發程式或使用Flume

2. 資料預處理:定製開發MapReduce程式執行在Hadoop計算

3. 資料倉儲計算:基於Hadoop智商使用hive技術完成數倉 數倉中會完成資料清洗(ETL)

4. 資料匯出:需要使用sqoop將資料匯出

5. 資料視覺化:就由web人員完成  ps:可以使用Oozie來輔助開發


HDFS分散式檔案系統


HDFS的源於Google的一篇技術論文GFS,HDFS時GFS的一個克隆 HDFS全稱 Hadoop Distributed /dɪ'strɪbjʊtɪd/(分散式) File System HDFS易於擴充套件的分散式檔案系統,執行在大量普通廉價的機器上,提供內容錯機制,為大量使用者提供效能不錯的檔案 存取服務


HDFS的優點和缺點


優點:


1.高可靠性:Hadoop按位儲存和處理資料的能力強


2.高擴充套件性:Hadoop是在可用的計算機叢集中分配資料完成計算計算任務


3.高效性: Hadoop能夠站在節點之間動態的移動資料,並保證每個節點的動態平衡


4.高容錯性: Hadoop能夠自動儲存資料的多個副本,並且能夠自動將失敗的任務重新分配


缺點:


1.不適合低延遲訪問


2.無法高效儲存大量小檔案


3.不支援多使用者寫入即任意修改檔案


HDFS的重要特性


1.HDSF中檔案在物理上是分塊儲存(block),塊的大小可以透過引數(dfs.blocksize)來設定, 預設大小Hadoop2.x版本中預設大小128M , hadoop1.x版本即使64M


2.HDFS檔案系統會給客戶端提供一個統一的抽象目錄樹,透過客戶端對相應路徑下的檔案進行訪問


3.目錄結構及檔案的分塊資訊(後設資料)都由NameNode節點承擔 NameNode是HDFS集合中的主節點,負責維護整個HDFS檔案系統的目錄樹,以及每一個路徑所對應的Block塊資訊 (block是id以及所在DataNode伺服器)


4.檔案的各個block塊儲存的管理DataNode來節點進行管理 DataNode是HDFS叢集的從節點,每一個Block都可以在多個DataNode上儲存多個副本(副本數量是可以設定 dfs.replication)


HDSF在Hadoop中的儲存模型


HDSF是面向檔案, 檔案會線性切割成塊(Block) 每一個塊都有一個偏移量offset(byte),偏移量是描述這個塊是屬於這個檔案的那一個部分 一個大文切分成很多塊,每 個塊面臨是這個檔案的位置,也就是說每一個塊的第一個位元組對應著這個大檔案某個位置的字 節,這個位元組就是偏移量 Block分散儲存到叢集節點中 單一檔案block的大小是一致的,也就是說一個大的檔案,定義的每個塊的大小是固定的,所有切出來的檔案大小也是固定的.但若檔案最後剩餘大小和塊的大小不一致,那麼會按照塊的大小佔位,實際儲存剩餘檔案的大小,也就是說在記憶體中開闢的空間是實際檔案的大小Block可以設定的副本數,副本分散在不同的節點中,副本數不要超過節點的數量 副本相當於一個備份(複製),HDFS的預設副本數量是3,副本的額作用就是保證檔案丟失的情況下,可以在其他節點中 得到同一個資訊,所以絕對不能出現副本和塊出現在同一個節點 檔案上傳的時候可以設定Block塊的大小和副本的而數量,已經上傳的block副本數可以調整,但是塊的是不變,只支援 一寫入 但是可以多次讀取,若想追加資料只能在最後一個節點中新增


HDFS讀寫流程

hdfs讀流程 :


1.client連結namenode,檢視後設資料,找到資料的儲存位置。


2.client透過hdfs的api併發讀取資料。


3.關閉連線。

hdfs寫流程 :


1.client連結namenode存資料


2.namenode記錄一條資料位置資訊(後設資料),告訴client存哪。


3.client用hdfs的api將資料塊(預設是64M)儲存到datanode上。


4.datanode將資料水平備份。並且備份完將反饋client。


5.client通知namenode儲存塊完畢。


6.namenode將後設資料同步到記憶體中。


7.另一塊迴圈上面的過程。  


HDFS檔案系統存在讀寫許可權


r --> read w --> writer x --> execute


--- | --- | --- 可以看成是一個八進位制 1代表有許可權 0代表沒有許可權


 rxw | r-- | -w- --> 數字的形式 111 | 100 | 010 ---> 742


HDFS的Shell命令:


ps:無論看到是hdfs dfs 形式還是 hadoop fs這種形式 都可以 完成對HDFS的操作


1.向HDSF上傳檔案


 put: 從本地檔案系統賦值單個或多個原路徑目標檔案到HDFS檔案系統中


hdfs dfs -put 本地檔案路徑 HDFS檔案系統路徑


2.將HDFS檔案系統中的檔案下載回來


get:從HDFS檔案系統中將檔案複製到本地檔案系統中


hdfs dfs -get HDFS檔案系統路徑 本地檔案系統路徑


ps:HDFS有一個和put和get類似的而方法 copyFromlocal 相當於put 和 copyTolocal 相當於 get


3.檢視HDFS檔案系統中的檔案內容


cat:檢視HDFS檔案系統中的檔案內容


hdfs dfs -cat HDFS檔案系統中檔案的路徑


ps:不要檢視非檔案 在檢視檔案的同時追加檔案到本地路徑


4.HDFS檔案系統中進行復制操作


cp:將HDFS檔案系統中的檔案進行復制,複製到HDFS系統中


hdfs dfs -cp 源HDFS檔案系統中的檔案路徑 目標HDFS檔案系統中的路徑


5.HDFS檔案系統中的檔案進行移動操作


mv:將原始檔移動目標路徑,這個命令可允許有多個源路徑,此時目標路徑必須是一個資料夾(目錄) 不允許不同的檔案系統互相移動檔案


hdfs dfs -mv 源HDFS檔案系統中的檔案路徑 目標HDFS檔案系統中的路徑


相當於剪下


6.檢視HDFS檔案系統中檔案的大小


hdfs dfs -du HDFS檔案系統中路徑中的一個檔案


7.在HDSF系統中建立資料夾


mkdir 建立資料夾


hdfs dfs -mkdir HDFS檔案系統中的路徑


8.檢視HDFS檔案系統下的所有檔案


hdfs dfs -ls HDFS檔案系統路徑


9.刪除HDFS檔案系統中的目錄或檔案


ps:只能是單個檔案 或 空目錄


hdfs dfs -rm HDFS檔案系統路徑


若引數資料夾中有多個檔案 加 -r hdfs dfs -rm -r HDFS檔案系統路徑


10.更改檔案的許可權


r可讀 w可寫 x可執行


--- | ---| --- 1代表有權 0代表沒有許可權 所有每三位可以作為一個八進位制處理


例如 rwx | rwx | rwx


111 | 111 | 111


 =========================


7 7 7


hdfs dfs -chmod 許可權值 HDFS檔案系統路徑


若需要更改目錄下許可權都需要修改


hdfs dfs -chmod -R 許可權值 HDFS檔案系統路徑下的資料夾


ps:並且資料夾下的所有子檔案和資料夾都會被修改


11.回收站


Hadoop回收站trash,預設是關閉的,建議開啟


[]:


ps:預設為是沒有許可權操作回收站的,所以操作之前開啟許可權


 hdfs dfs -chmod -R 777 HDFS檔案系統中回收站的路徑


例子:hdfs dfs -chmod -R 777 /user 刪除檔案後,發現誤刪了,恢復檔案


hdfs dfs -mv HDFS檔案系統中回收站的路徑下的檔案   HDFS檔案系統路徑


清空回收站


hdfs dfs -rm -r HDFS檔案系統中回收站的路徑


例如:hdfs dfs -rm -r /user/root/.Trash


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69913892/viewspace-2654305/,如需轉載,請註明出處,否則將追究法律責任。

相關文章