我面臨一個獨特的問題,並希望您的意見在這裏。Spark作爲Mapreduce的存儲層
我有一個傳統的map-reduce應用程序,其中多個map-reduce作業按順序運行,中間數據來回寫入HDFS。由於將中間數據寫入HDFS,具有小數據的作業將比HDFS的功能獲得的收益損失更多,而且花費的時間要遠遠多於非Hadoop等價物所花費的時間。最終,我計劃將我所有的地圖縮減工作轉換爲Spark DAG,但這是一個巨大的改變,所以我相當拖延。
作爲一個短期解決方案,我真正想要的是改變存儲層,以便繼續從map-reduce並行性中受益,但不要爲存儲層付出太多代價。在這個方向上,我正在考慮使用Spark作爲存儲層,其中map-reduce作業將通過Spark上下文將其輸出存儲在Spark中,並且輸入將被再次讀取(通過創建Spark輸入拆分,每個拆分將擁有它自己的Spark Spark)。
以這種方式,我將能夠以內存速度操作中間數據讀/寫,這在理論上會給我顯着的性能提升。
我的問題是,這個架構方案是否有意義?有沒有人遇到過這樣的情況?我錯過了一些重要的東西,即使在解決方案的初步階段,我也應該考慮這些東西?
在此先感謝!
你能詳細說明一下你想要以一步一步的方式做什麼的例子。 [如何問](http://stackoverflow.com/help/how-to-ask) –
嗨拉姆,我想採用一些內存存儲層的中間數據我的地圖減少工作產生的。目前,map-reduce輸出存儲在HDFS中,這會導致性能損失而不是複製/分佈式存儲性質(我不想在某些環境中出現這種情況,例如系統測試環境) – Abhishek