首先,提及大數據一詞的概念。大數據本質還在於數據,但是它有着新的特徵亮點。包括:數據來源廣,數據格式多樣化(結構化數據、非結構化數據、Excel文件、文本文件等)、數據量大(最少也是TB級別的、甚至可能是PB級別)、數據增長速度快等等。
擴展講大數據的4個基本特徵,我們將進行下面額思考:
1.數據來源廣?
廣泛的數據來源從何而來,通過何種方式進行採集與彙總?相對應的我們出現Sqoop,
Cammel,Datax等工具。
2.數據採集之後,該如何存儲?
採集之後,爲了方便存儲,我們對應的出現了GFS,HDFS,TFS等分佈式文件存儲系統。
並且,介於數據的增長速度非常之快,這也就要求我們,數據存儲必須可以進行水平擴展。
3.數據存儲之後,該如何通過運算快速轉化成一致的格式,又該如何快速運算出自己想要的結果?
對此,MapReduce的分佈式運算框架提出瞭解決方案。但是由於MapReduce需要java的編程代碼較多,由此,又出現了Hive,Pig等將SQL轉化成MapReduce的解析引擎;再有,因普通的MapReduce只能一批一批地批量處理數據,時間消耗過多,最終目的又要求我們輸入的一條數據就能得到結果,於是又出現了Storm/JStorm這樣的低時延的流式計算框架;但是如果同時需要批處理和流處理,按照如上就得搭兩個集羣,Hadoop集羣(包括HDFS+MapReduce+Yarn)和Storm集羣,不易於管理,所以出現了Spark這樣的一站式的計算框架,既可以進行批處理,又可以進行流處理(實質上是微批處理)。而後Lambda架構,Kappa架構的出現,又提供了一種業務處理的通用架構。
4.此外,爲了提高工作效率,加快運速度,出現了一些輔助工具:
Ozzie,azkaban:定時任務調度的工具。
Hue,Zepplin:圖形化任務執行管理,結果查看工具。
Scala語言:編寫Spark程序的最佳語言,當然也可以選擇用Python。
Python語言:編寫一些腳本時會用到。
Allluxio,Kylin等:通過對存儲的數據進行預處理,加快運算速度的工具。