- 離線計算組件
1.1 hive
hive是基於Hadoop的一個數據倉庫工具,可以將結構化的數據文件映射爲一張數據庫表,並提供簡單的sql查詢功能,可以將sql語句轉換爲MapReduce任務進行運行。 其優點是學習成本低,可以通過類SQL語句快速實現簡單的MapReduce統計,不必開發專門的MapReduce應用,十分適合數據倉庫的統計分析。但是在轉換爲MapReduce的計算過程中,計算速度比較慢,適合於非實時性的要求的計算。
1.2 impala
impala是Cloudera公司開發的一套大數據計算引擎,它在功能作用上類似hive,但是impala的內部計算模式並沒有採用Hive+MapReduce批處理模式,而是通過使用與商用並行關係數據庫中類似的分佈式查詢引擎,impala是基於內存計算,對內存的要求相比於hive+MapReduce模式會更高些。在對大數據量查詢時,impala會比hive更能及時的響應返回結果。 據說Impala在性能上比Hive高出3~30倍。
所以Hive適合於長時間的批處理查詢分析,而Impala適合於實時交互式SQL查詢,Impala給數據分析人員提供了快速實驗、驗證想法的大數據分析工具。
1.3 spark SQL
sparkSQL 是spark處理結構化數據的庫,它是一種新的計算引擎,它在功能作用上類似hive和impala。spark擴充了的MapReduce計算模型,MapReduce通常將中間結果放到磁盤上,所以與磁盤交互比較多,性能上相對於差些,而Spark是基於內存並行大數據框架,中間結果通常存放在內存,相比於MapReduce來說,迭代數據計算的Spark效率會更高些。
據說在計算性能上比hive高出10~100倍。
2. 流式計算組件
2.1 Strom
Storm是一個流式計算處理框架,擁有低延遲、高性能、分佈式、可擴展、容錯等特性,可以保證消息不丟失,消息處理嚴格有序。通俗講,storm是處理消息源,來一條消息數據,處理一條數據,實現實時響應計算結果,支持亞秒級響應,正真意義上流計算實時響應。
2.2 Spark streaming
Spark Streaming類似於 Storm,也是一個流式計算處理框架,用於流式數據的處理。有高吞吐量和容錯能力強這兩個特點。通俗講,Spark Streaming是實時處理小批量數據,
Spark Streaming接收消息源的一條消息,不像Strom一樣及時處理了,而是當消息數據積累達到一定量的時候再一併處理消息數據,實現秒級響應。
如果對實時性要求非常高的,例如需要亞秒級響應結果的場景 ,建議的使用Strom,而
如果對於實時性不是非常嚴格,例如能在秒級內能響應結果的場景,可以使用Spark streaming。