1. 程式人生 > >hive on spark VS SparkSQL VS hive on tez

hive on spark VS SparkSQL VS hive on tez

dir csdn cluster 並且 http 緩沖 快速 bsp pos

http://blog.csdn.net/wtq1993/article/details/52435563

http://blog.csdn.net/yeruby/article/details/51448188

hive on spark VS SparkSQL VS hive on tez

前一篇已經弄好了SparkSQL,SparkSQL也有thriftserver服務,這裏說說為啥還選擇搞hive-on-spark:

  • SparkSQL-Thriftserver所有結果全部內存,快是快,但是不能滿足查詢大量數據的需求。如果查詢幾千萬的數據,SparkSQL是搞不定的。而hive-on-spark除了計算用spark其他邏輯都是hive的,返回的結果會先寫hdfs,再慢慢返回給客戶端。
  • SparkSQL-Thriftserver代碼的是全部用scala重寫的,和已有hive業務不一定兼容!!
  • SparkSQL-Thriftserver有一個最大的優勢就是整個server相當於hive-on-spark的一個session,網頁監控漂亮清晰。而hive-on-spark不同的session那就相當於不同的application!!(2016-4-13 20:57:23)用了動態分配,沒感覺SparkSQLThriftserver快很多。
  • SparkSQL由於基於內存,再一些調度方面做了優化。如[limit]: hive是死算,sparksql遞增數據量的一次次的試。sparksql可以這麽做的,畢竟算好的數據在內存裏面放著。

hive和sparksql的理念不同,hive的存儲是HDFS,而sparksql只是把HDFS作為持久化工具,它的數據基本都放內存。

查看hive的日誌,可以看到返回結果後有寫HDFS的動作體現,會有類似日誌:

2016-03-28 19:39:25,687 INFO  exec.FileSinkOperator (Utilities.java:mvFileToFinalPath(1882))
 - Moving tmp dir: hdfs://zfcluster/hive/scratchdir/hadoop/de2b263e-9601-4df7-bc38-ba932ae83f42/hive_2016-03-28_19-38-08_834_7914607982986605890-1/-mr-10000/.hive-staging_hive_2016-03-28_19-38-08_834_7914607982986605890-1/_tmp.-ext-10001 
to: hdfs://zfcluster/hive/scratchdir/hadoop/de2b263e-9601-4df7-bc38-ba932ae83f42/hive_2016-03-28_19-38-08_834_7914607982986605890-1/-mr-10000/.hive-staging_hive_2016-03-28_19-38-08_834_7914607982986605890-1/-ext-10001
  • tez的優勢spark都有,並且tez其實緩沖優勢並不大。而spark的緩沖效果更明顯,而且可以快速返回。例如:你查3萬條數據,tez是要全部查詢然後再返回的,而sparksql取到3萬條其他就不算了(效果看起來是這樣子,具體沒看源碼實現;md hive-on-spark還是會全部跑)。
  • tez任務緩沖不能共享,spark更加細化,可以有process級別緩沖(就是用上次計算過的結果,加載過的緩沖)!例如,你查數據記錄同時又要返回count,這時有些操作是prcess_local級別的,這個tez是不能比的!
  • spark的日誌UI看起來更便捷,呵呵

單就從用的角度,spark全面取勝啊。

hive on spark VS SparkSQL VS hive on tez