Spark專案學習-慕課網日誌分析-days1-hadoop
1. HDFS架構
1 Master(NameNode/NM) 帶 N個Slaves(DataNode/DN)
HDFS/YARN/HBase
1個檔案會被拆分成多個Block
NN:
1)負責客戶端請求的響應
2)負責元資料(檔案的名稱、副本系數、Block存放的DV)的管理
DN:
1)儲存使用者的檔案對應的資料塊(Block)
2)要定期向NN傳送心跳資訊,彙報本身及其所有的block資訊,健康狀況
replication factor:副本系數、副本因子
2. HDFS shell常用命令的使用
1)ls 檢視目錄 fs -ls -R 遞迴檢視
2)get 獲取檔案
3)cat 檢視內容
4)mkdir 建立資料夾 fs -mkdir -p /a/b 建立多個目錄
5)hadoop fs -put hafs.cmd /test/ 複製檔案
6)hadoop fs -text xxx 檢視內容
7)hadoop fs -rmr /a rmr遞迴的刪除
3. HDFS優點
1)高容錯
2)適合批處理
3)適合大資料處理
4)可構建在廉價的機器上
HDFS缺點:
1)低延遲的資料訪問
2)小檔案儲存
4. 分散式計算框架MapReduce(公司裡基本不用了)
1)易於程式設計
2)良好的擴充套件性
3)高容錯性
4)適合海量資料的離線處理
5)將計算向儲存轉移
(1)MapReduce不擅長的場景
1)實時計算;
2)流式計算;(流式計算的特點是 無時無刻都在產生資料,但是MapReduce的資料是靜態離線的)
3)DAG計算;(DAG是指任務相互之間存在先後關係的)
(2)NapReduce程式設計模型
1)input
2)map&reduce
3)output
4)過程:首先被分成3個塊,然後逐步處理每行,每行以空格分割,然後map逐個統計個數,形成kv對,然後在reduce中將相同key值得value加起來
5.資源排程框架YARN
(1)YARN產生背景
1)MapReduce1.x存在的問題:JobTracker負責資源管理,任務排程,工作較多:容易發生單點故障
2)資源利用率&運維成本比較高,因為幾個框架Hadoop,spark,MPI不能統一調配
YARN的優點在於,所有的資源管理都是可以由YARN完成的,無論是什麼框架和資料型別,都可以跑在YARN上
(2)YARN架構
由1個RM(Resource Manger) + N個NM(Node Manger)
RM(ResourceManager)的職責:一個叢集active狀態的RM只有一個,負責整個叢集的資源管理和排程
1)處理客戶端的請求(啟動/殺死)
2)啟動、監控ApplicationMaster(一個作業對應一個AM)
3)監控NM
4)系統的資源分配和排程
NodeManager:整個叢集中有N個,負責單個節點的資源管理和使用以及task的執行情況
1)定期向RM彙報本節點的資源使用請求和各個Container的執行狀態
2)接收並處理RM的container啟停的各種命令
3)單個節點的資源管理和任務管理
ApplicationMaster:一個作業對應一個,負責應用程式的管理
1)資料的切分
2)為應用程式向RM申請資源(container),並分配給內部任務
3)與NM通訊以啟停task,task是執行在container中的
4)task的監控和容錯
Container:對任務執行情況的描述:cpu、memory、環境變數等
(3)YARN的執行流程:首先客戶端找到RM,然後RM找到NM,然後NM找到一個AM,並且AM向RM彙報和申請資源,並在對應的NM上啟動,開始作業
1)使用者向YARN提交作業
2)RM為該作業分配第一個container(AM)
3)RM會與對應的NM通訊,要求NM在這個container上啟動應用程式的AM
4)AM首先向RM註冊,然後AM將為各個任務申請資源,並監控執行情況
5)AM採用輪訓的方式通過RPC協議向RM申請和領取資源
6)AM申請到資源以後,便和響應的NM通訊,要求NM啟動任務
7)NM啟動我們作業對應的task
6. 大資料資料倉庫Hive
(1)Hive產生背景
1)MapReduce的程式設計不便性(必須本地編好程式碼,並打包上傳檔案執行
2)HDFS上的檔案缺少Scheme(Scheme是指資料型別資訊,必須學習到Java或者MapReduce相關程式設計技巧)
(2)Hive是什麼
1)由facebook開源的,最初用於解決海量結構化的日誌資料統計問題
2)構建在Hadoop之上的資料倉庫
3)Hive定義了一種類SQL查詢語言:HQL(類似SQL但不完全相同)
4)通常用於進行離線資料處理(採用MapReduce)
5)底層支援多種不同的執行引擎(可以使用spark,Tez,MapReduce,Hive on spark)
6) 支援多種不同的壓縮格式,儲存格式以及自定義函式(壓縮:GZIP,LZO,Snappy,BZIP2;儲存:TextFile,SequenceFile,RCFile,ORC)
(3)為什麼要使用Hive
1)簡單,容易上手(提供類似於SQL查詢語言HQL)
2)為超大資料集設計的計算/儲存擴充套件能力(MR計算,HDFS儲存)
3)統一的元資料管理(可與Presto/Impala(基於記憶體)/SparkSQL等共享資料) 意味著建立的表在相互之間可與通用
(4)Hive體系架構
1)最上層:可與通過shell和JDBC等客戶端進行操作,寫SQL語句
2)Driver:首先解析SQL語句,生成邏輯執行計劃,然後進行優化,然後生成物理執行計劃,最後生成執行引擎,提交到MapReduce執行
3)採用HDFS,HBase執行
4)左側是指表格存放在Mysql中
Hive部署架構--生產環境
1)所有元資料管理都放在MySQL中執行
2)Hive在Hadoop上執行
3)具有Active MySQL和Standby MySQL
4)Hive只需要部署一個,因為他只是一個客戶端,用來提交SQL
Hive的基本使用
1)建立表 CREAT TABLE table_name(資料名 資料型別)
2)將資料載入 LOAD DATA LOCAL INPATH 'filepath' INTO TABLE tablename
3)查詢語句 select word,count(1) from hive_wordcount lateral view explode(split(context,'\t')) wc as word group by word;
lateral view explode();