大數據本質也是數據,可是又有了新的特徵,包括數據來源廣、數據格式多樣化(結構化數據、非結構化數據、Excel文件、文本文件等)、數據量大(最少也是TB級別的、甚至多是PB級別)、數據增加速度快等。算法
針對以上主要的4個特徵咱們須要考慮如下問題:sql
數據來源廣,該如何採集彙總?,對應出現了Sqoop,Cammel,Datax等工具。編程
數據採集以後,該如何存儲?,對應出現了GFS,HDFS,TFS等分佈式文件存儲系統。架構
因爲數據增加速度快,數據存儲就必須能夠水平擴展。併發
數據存儲以後,該如何經過運算快速轉化成一致的格式,該如何快速運算出本身想要的結果?app
對應的MapReduce這樣的分佈式運算框架解決了這個問題;可是寫MapReduce須要Java代碼量很大,因此出現了Hive,Pig等將SQL轉化成MapReduce的解析引擎;框架
普通的MapReduce處理數據只能一批一批地處理,時間延遲太長,爲了實現每輸入一條數據就能獲得結果,因而出現了Storm/JStorm這樣的低時延的流式計算框架;機器學習
可是若是同時須要批處理和流處理,按照如上就得搭兩個集羣,Hadoop集羣(包括HDFS+MapReduce+Yarn)和Storm集羣,不易於管理,因此出現了Spark這樣的一站式的計算框架,既能夠進行批處理,又能夠進行流處理(實質上是微批處理)。分佈式
然後Lambda架構,Kappa架構的出現,又提供了一種業務處理的通用架構。高併發
爲了提升工做效率,加快運速度,出現了一些輔助工具:
以上大體就把整個大數據生態裏面用到的工具所解決的問題列舉了一遍,知道了他們爲何而出現或者說出現是爲了解決什麼問題,進行學習的時候就有的放矢了。
大數據方向的工做目前主要分爲三個主要方向:
【必須掌握的技能】
【高階技能】
1)Linux學習(鳥哥教材)
2)Java 高級學習(《深刻理解Java虛擬機》、《Java高併發實戰》)
3)Zookeeper學習
4)Hadoop (《Hadoop 權威指南》)