大資料入門
- hadoop
- HDFS
- YARN
- SPARK
hadoop
hadoop生态圈包括以下各個組成部分:
HDFS:用于分布式檔案存儲,切分成塊,多副本存于多台機器。
YARN:用于資源管理和排程,job scheduling & cluster mangment
Zookeeper:各個架構的管理和協調
Hive:使系統支援SQL語句
ooize:工作流
pig:使用腳本scripting離線
Flume:收集log
sqoop:DB中資料轉向别處
原生的hadoop有諸多問題,如jar包沖突,難以管理,一般不直接用于生産環境。
是以一般使用CDH版的hadoop。
特點:可靠性—多副本存儲+作業重新排程計算
可擴充—橫向多機擴充+縱向單叢集多節點
可建設在廉價機器上,并有可靠而完整的生态圈子
HDFS
特性:
分塊- - -每塊小,可以并行;每台機器存儲量差不多,存儲量均衡
備援- - -備援機制保障了可靠性
分為管理節點的namenode NN和存儲資料的節點DataNode DN
NN:相應client請求,管理檔案名,副本系數,block存放的DN
DN:存儲block,向NN發送心跳以及block report
注:NN和DN可同台機器,但是不建議這樣配置
副本因子決定了每個副本存放幾份。
副本的存放政策:先在本台機器上存儲,再在本機架上的DN上存儲,最後存放在别的機架上的DN。
調用HDFS的方式有shell方式和調用java API接口的方式完成
HDFS讀寫檔案流程:
特點總結:
備援容錯機制,廉價機器組建,處理流的資料通路(一次寫入多次讀取)适合存取大檔案。但是不适合存儲小檔案,通路慢,中繼資料太多存取吃力。
YARN
Yet Another Resource Negotiator
産生的背景在于:原來版本的hadoop架構存在問題,單點壓力過大,不易擴充,不支援别的計算架構(如spark)
效果:hadoop1.x隻支援MapReduce架構
2.x之後有了YARN,可以支援多種計算架構
提升了資源使用率,多個叢集可以化為1個共享叢集使用,不用跨域。
SPARK
MapReduce缺陷:M和R過程都要有,隻能一個接一個的計算。計算結果放在磁盤落地存儲,IO開銷過大。程序級别消費(Map和Reduce)
Spark的改進:程式編寫簡單,支援多種計算方式,計算結果放在記憶體,适合于疊代處理、流式處理、互動式處理。
spark是一個分布式的計算架構,最早來源于一篇論文。快在基于線程和記憶體計算。支援多種語言編寫(Java/Scala/Python)有互動式指令行可以随機測試。可在多種環境下運作,通路多種資料源。
spark也有相應hadoop的BDAS生态圈