Java大數據技術棧

大數據技術板塊劃分

數據採集
    flume kafka logstash filebeat ...
    
    數據存儲
    mysql redis hbase hdfs ...
    
    數據查詢
    hive impala elasticsearch kylin ...
    
    數據計算
    實時計算
        storm sparkstreaming flink ...
        
        離線計算
        hadoop spark ...
        
    
    其他框架
    zookeeper ..
         
    
學習步驟及大概作用


    linux基礎和javase基礎【包含mysql】

    這些是基本功,剛開始也不可能學的很精通,最起碼要對linux中的一些基本的命令混個臉熟,後面學習各種框架的時候都會用到,用多了就熟悉了。javase的話建議主要看面向對象,集合,io,多線程,以及jdbc操作即可。
    
    
    zookeeper

    zookeeper是很多大數據框架的基礎,中文名稱是動物園的意思,因爲目前的大數據框架的圖標很多都是動物的形狀,所以zookeeper其實就是可以管理很多大數據框架的。針對這個框架,主要掌握如何搭建單節點和集羣,以及掌握如何在zkcli客戶端下對zookeeper的節點進行增刪改查操作即可。
    
    
    hadoop

    目前企業中一般都是用hadoop2.x的版本了,所以就沒有必要再去學hadoop1.x版本了,hadoop2.x主要包含三大塊
        hdfs 前期,主要學習hdfs的一些命令即可,上傳,下載,刪除,移動,查看等命令...
            mapreduce 這個需要重點學習下,要理解mr的原理以及代碼實現,雖然現在工作中真正寫mr的代碼次數很少了,但是原理還是要理解的。
            yarn 前期瞭解即可,只需要知道yarn是一個資源調度平臺,主要負責給任務分配資源即可,yarn不僅可以給mapreduce任務調度資源,還可以爲spark任務調度資源...yarn是一個公共的資源調度平臺,所有滿足條件的框架都可以使用yarn來進行資源調度。
        
    
    
    hive

    hive是一個數據倉庫,所有的數據都是存儲在hdfs上的,具體【數據倉庫和數據庫】的區別大家可以去網上搜索一下,有很多介紹。其實如果對mysql的使用比較熟悉的話,使用hive也就簡單很多了,使用hive主要是寫hql,hql是hive的sql語言,非常類似於mysql數據庫的sql,後續學習hive的時候主要理解一些hive的語法特性即可。其實hive在執行hql,底層在執行的時候還是執行的mapredce程序。
        注意:其實hive本身是很強大的,數據倉庫的設計在工作中也是很重要的,但是前期學習的時候,主要先學會如何使用就好了。後期可以好好研究一下hive。
    
    
    hbase

    hbase是一個nosql 數據庫,是一個key-value類型的數據庫,底層的數據存儲在hdfs上。在學習hbase的時候主要掌握 row-key的設計,以及列簇的設計。要注意一個特點就是,hbase基於rowkey查詢效率很快,可以達到秒級查詢,但是基於列簇中的列進行查詢,特別是組合查詢的時候,如果數據量很大的話,查詢性能會很差。
    
    
    redis

    redis也是一個nosql 數據庫和key-value類型的數據庫,但是這個數據庫是純基於內存的,也就是redis數據庫中的數據都是存儲在內存中的,所以它的一個特點就是適用於快速讀寫的應用場景,讀寫可以達到10W次/秒,但是不適合存儲海量數據,畢竟機器的內存是有限的,當然,redis也支持集羣,也可以存儲大量數據。在學習redis的時候主要掌握string,list,set,sortedset,hashmap這幾種數據類型的區別以及使用,還有pipeline管道,這個在批量入庫數據的時候是非常有用的,以及transaction事務功能。
    
    
    flume

    flume是一個日誌採集工具,這個還是比較常用的,最常見的就是採集應用產生的日誌文件中的數據。一般有兩個流程,一個是flume採集數據存儲到kafka中,爲了後面使用storm或者sparkstreaming進行實時處理。另一個流程是flume採集的數據落盤到hdfs上,爲了後期使用hadoop或者spark進行離線處理。在學習flume的時候其實主要就是學會看flume官網的文檔,學習各種組建的配置參數,因爲使用flume就是寫各種的配置。
    
    
    kafka

    kafka 是一個消息隊列,在工作中常用於實時處理的場景中,作爲一箇中間緩衝層,例如,flume->kafka->storm/sparkstreaming。學習kafka主要掌握topic,partition,replicate等的概念和原理。
    
    
    storm

    storm是一個實時計算框架,和hadoop的區別就是,hadoop是對離線的海量數據進行處理,而storm是對實時新增的每一條數據進行處理,是一條一條的處理,可以保證數據處理的時效性。學習storm主要學習topology的編寫,storm並行度的調整,以及storm如何整合kafka實時消費數據。
    
    
    spark

    spark 現在發展的也很不錯,也發展成了一個生態圈,spark裏面包含很多技術,spark core,spark steaming,spark mlib,spark graphx。
        spark生態圈裏麪包含的有離線處理spark core,和實時處理spark streaming,在這裏需要注意一下,storm和spark streaming ,兩個都是實時處理框架,但是主要區別是:storm是真正的一條一條的處理,而spark streaming 是一批一批的處理。
        spark中包含很多框架,在剛開始學習的時候主要學習spark core和spark streaming即可。這個一般搞大數據的都會用到。spark mlib和spark graphx 可以等後期工作需要或者有時間了在研究即可。
    

 flink

   窗口粒度更細

    
    elasticsearch

    elasticsearch是一個適合海量數據實時查詢的全文搜索引擎,支持分佈式集羣,其實底層是基於lucene的。在查詢的時候支持快速模糊查詢,求count,distinct,sum,avg等操作,但是不支持join操作。elasticsearch目前也有一個生態圈,elk(elasticsearch logstash kibana)是一個典型的日誌收集,存儲,快速查詢出圖表的一整套解決方案。在學習elasticsearch的時候,前期主要學習如何使用es進行增刪改查,es中的index,type,document的概念,以及es中的mapping的設計。


 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章