2012-02-21 60 views
0

我一直在閱讀有關的map/reduce,這樣我可以提高我的大數據處理技術的理解,但我在幾件事情有點不清楚:有關地圖的一些問題/減少概念

  1. 即使使用10個worker/threads/machines/cpus/whatever操作大型數據集,是不是map函數仍然會很慢?例如,如果數據集有十億條記錄,這意味着每個工作者仍需要迭代超過1億條記錄,並且該變換仍需要存儲在某處進行處理。

  2. 如何將數據因素的索引導入地圖/縮小場景(如果有的話)?

作爲獎勵的問題,我想要做的是產生實時(< 100毫秒響應時間)超過已在20-50萬條記錄的區域數據集的搜索解決方案並且可以在1-3個字段上排序結果,並在嵌套的,分組的AND/OR查詢中查詢大約20-30個不同的字段。 map/reduce可能是我正在做的最好的方法嗎?

回答

1

map函數將提取reduce函數將要執行的數據子集(以最終輸出格式)。由於地圖是摘錄,因此期望索引將成爲執行速度的主要因素是合理的。任何時候您在查看數十億條記錄時,都需要進行適當的優化和適當的平臺,以便及時進行。

map函數的輸出需要存儲在某個地方,以便減少操作,這是不可避免的。

Map/Reduce爲您提供了將您的搜索細分爲更小,更易於管理的塊的機會,因此適合您的任務。請記住,除非您使用多個系統,否則僅向該任務添加線程可能會產生反效果,因爲它會增加爲全部服務所需的上下文切換。我不會爲每個系統分配比物理內核數量更多的線程,還要爲線程競爭磁盤訪問或NIC訪問時的延遲做好準備。

你有很多事情要做,我會看看別人是如何實現這樣的系統,看看我是否不能重用其中的一個,而不是自己嘗試這樣做。如果這是一項智力活動,那麼我希望你能在某個博客文章中分享這些試驗,磨難和成果。

+0

謝謝,實際上我已經投入了相當多的時間,但還有更多要學習和弄清楚。當我有時間的時候,我可能會在某個時候寫一篇文章。 – 2012-02-21 16:04:06