根據對各類生態組件的分析,較好的一種架構是:html
存儲層:使用HDFS for Parquet/Kudu/Hbase(HDFS for Parquet和Kudu各有利弊,HBase做爲補充)前端
資源調度層:YARN(也成爲MR2)java
批處理:Hive(2.0中,beeline代替了hive控制檯)或MapReducenode
上面也是Hadoop自己的三大組成部分。python
實時查詢:Impala(也能夠Spark)(Impala不支持基於HDFS的表修改操做,須要使用Kudu引擎,參考https://www.jianshu.com/p/a49e68c0015b)mysql
支持:SQL-92 支持:HDFS, HBase, 文本文件Parquet, Avro, SequenceFile, RCFile以及Snappy, GZIP, Deflate, BZIP 安全:Kerberos認證
MPP架構
Impalad: 與DataNode運行在同一節點上,由Impalad進程表示,一個datanode對應一個impalad,它接收客戶端的查詢請求(接收查詢請求的Impalad爲Coordinator,Coordinator經過JNI調用java前端解釋SQL查詢語句,生成查詢計劃樹,再經過調度器把執行計劃分發給具備相應數據的其它Impalad進行執行),讀寫數據,並行執行查詢,並把結果經過網絡流式的傳送回給Coordinator,由Coordinator返回給客戶端。同時Impalad也與State Store保持鏈接,用於肯定哪一個Impalad是健康和能夠接受新的工做。在Impalad中啓動三個ThriftServer: beeswax_server(鏈接客戶端),hs2_server(借用Hive元數據), be_server(Impalad內部使用)和一個ImpalaServer服務。 Impala State Store: 跟蹤集羣中的Impalad的健康狀態及位置信息,由statestored進程表示,它經過建立多個線程來處理Impalad的註冊訂閱和與各Impalad保持心跳鏈接,各Impalad都會緩存一份State Store中的信息,當State Store離線後(Impalad發現State Store處於離線時,會進入recovery模式,反覆註冊,當State Store從新加入集羣后,自動恢復正常,更新緩存數據)由於Impalad有State Store的緩存仍然能夠工做,但會由於有些Impalad失效了,而已緩存數據沒法更新,致使把執行計劃分配給了失效的Impalad,致使查詢失敗。 Catalogd:做爲metadata訪問網關,從Hive Metastore等外部catalog中獲取元數據信息,放到impala本身的catalog結構中。impalad執行ddl命令時經過catalogd由其代爲執行,該更新則由statestored廣播。 CLI: 提供給用戶查詢使用的命令行工具(Impala Shell使用python實現),同時Impala還提供了Hue,JDBC, ODBC使用接口。
執行計劃: Impala: 經過詞法分析生成執行計劃,執行計劃表現爲一棵完整的執行計劃樹,能夠更天然地分發執行計劃到各個Impalad執行查詢,在分發執行計劃後,Impala使用拉式獲取數據的方式獲取結果,把結果數據組成按執行樹流式傳遞聚集,減小的了把中間結果寫入磁盤的步驟,再從磁盤讀取數據的開銷。 impala的前端負責將sql轉化成執行計劃(java),包含兩個階段:單節點計劃生成、並行化和分段。第一階段對sql進行解析、分析、優化(RBO和CBO,統計信息目前只有表大小和列的NDV,無histogram),第二階段生成分佈式的執行計劃,肯定是否要加exchange節點(是否存在partitioned join或hash aggregation),選擇join strategy(partitioned join or broadcast join)等,最後以exchange爲邊界將計劃分段(fragment),做爲impala的基本運行單元。
實時MySQL數據同步:canal->Kafkasql
定時批量同步:sqoop,從mysql導出緩存
實時預測:Spark Streaming/Flink(優先)/Apache Storm(主要用於實時風控、推薦、實時統計的大屏幕,http://f.dataguru.cn/thread-907180-1-1.html)安全
Spark SQL和Impala的性能測試結果參考http://www.cnblogs.com/jins-note/p/9513448.html,http://www.cnblogs.com/wasu/p/5828586.html網絡
SparkStreaming讀Kafka數據寫Kudu:https://cloud.tencent.com/developer/article/1158193(結合canal寫到kafka,就實現Mysql實時到Kudu)
kafka落地到Hbase:https://www.cnblogs.com/liuwei6/p/6893036.html
新一代流式計算框架在金融行業的應用:https://blog.csdn.net/dingxiangtech/article/details/83022673
流式大數據處理的三種框架:Storm,Spark和Flink:https://blog.csdn.net/cm_chenmin/article/details/53072498
發行版:
優先使用CDH企業版或CDH Express,減小沒必要要的整合時間浪費。
學習思路推薦:
一、先用CDH quick-start,從Spark或Impala開始(Kudu或Parquet先搞定一種),一開始HDFS/MapReduce會很無聊(在此過程當中不少HDFS的原理和事件就順帶掌握了)。
二、流式計算;
三、反過來開始安全、認證、集羣安裝;