上面的介紹,基本就是一個數據倉庫的構架了。底層HDFS,上面跑MapReduce/Tez/Spark,在上面跑Hive,Pig。或者HDFS上直接跑Impala,Drill,Presto。這解決了中低速數據處理的要求。
什么是Map?什么是Reduce?
對傳統的單機文件系統來說,橫跨不同機器幾乎是不可能完成的任務。而通過HDFS(Hadoop Distributed FileSystem),你可以通過橫跨上千甚至上萬臺機器來完成大量數據得存儲,同時這些數據全部都能歸屬在同一個文件系統之下。你可以通過引用一個文件路徑獲取存儲在許多臺機器上的數據文件。作為一個使用者,你完全不用去計較文件具體存儲的位置,這個文件系統會為你搞定一切。
這看似是個很簡單的模型,但很多算法都可以用這個模型描述了。
有了Hive之后,人們發現SQL對比Java有巨大的優勢。一個是它太容易寫了。剛才詞頻的東西,用SQL描述就只有一兩行,MapReduce寫起來大約要幾十上百行。而更重要的是,非計算機背景的用戶終于感受到了愛:我也會寫SQL!于是數據分析人員終于從乞求工程師幫忙的窘境解脫出來,工程師也從寫奇怪的一次性的處理程序中解脫出來。大家都開心了。Hive逐漸成長成了大數據倉庫的核心組件。甚至很多公司的流水線作業集完全是用SQL描述,因為易寫易改,一看就懂,容易維護。
大數據這個概念本身就太大而且太寬,directadmin安裝,如果一定要嚴格定義是非常困難的一件事,不過Hadoop生態圈或者由其延伸的泛生態系統,基本上都是為了處理大量數據誕生的——一般而言,這種數據依賴單機很難完成。