很多朋友問時下如火如荼的 hadoop 是否適合引進我們自己的專案,什麼時候用 sql,什麼時候用 hadoop,它們之間如何取捨?aaron cordova 用一張圖來回答你這個問題,對於不同的資料場景,如何選取正確的資料儲存處理工具進行了詳細描述。aaron cordova 是美國大資料分析及架構專家,koverse cto 及聯合創始人。
twitter 上的
@merv
**了一篇部落格《
三角形的統計
》。這是一篇關於如何統計一張圖形裡的三角形的部落格,並將使用 vertica 和 hadoop 的 mapreduce 的結果進行了對比。在 1.3 gb 的資料之上,vertica 比 hadoop 快了 22-40x 倍。而且它只用了三行 sql。統計表明,在 1.3 gb 資料之上,vertica 更簡單更快速。但這個結果不是太那麼有意思。
對於寫入任務的結果將會截然不同 - 是,sql 在這個案例裡確實非常簡單,大家都知道。sql 是比 mapreduce 簡單得多,但在分布式計算的場合 mapreduce 卻又比 sql 簡單的多。而且 mapreduce 還能做 sql 做不到的事情,比如影象處理。
以 1.3 gb 的資料作為 vertica 或者 hadoop 的衡量基準,就像說"我們將要在波音 737 和 dc10 之間進行一場 50 公尺賽跑比賽"一樣。這樣的一場比賽甚至都無須起飛。上面部落格的對比也是一樣的道理。這些技術顯然都不是設計用來處理這種級別的資料集。
如果有乙個可伸縮的系統即使在小規模資料仍然很快的話當然更好,但這不是本文所討論的。在大規模資料時的效能結果是否還是這麼明顯,這個問題就不是那麼顯而易見的了,確實值得證明。
為了幫大家如何基於自己的實際情況選取哪種技術,我畫了這個流程圖:
。
何時使用或何時不使用malloc函式
在初學資料結構時,我們往往不太清楚在定義乙個結構體指標時要不要使用malloc函式。例如以下的 linklist init linklist retrun h linklist s s data x 以上這兩句 是不行的,因為s沒有指向確切的位址,所以不能通過s來向它要指向的位址賦值 但是linkl...
何時使用或何時不使用malloc函式
在初學資料結構時,我們往往不太清楚在定義乙個結構體指標時要不要使用malloc函式。例如以下的 linklist init linklist retrun h linklist s s data x 以上這兩句 是不行的,因為s沒有指向確切的位址,所以不能通過s來向它要指向的位址賦值 但是linkl...
python 何時單用 hash 或 eq
目錄 一 說明 二 應用 1 以下 只用到了 eq 因為沒涉及一中的說明,這裡根本沒涉及hash 2 如果自定義類重寫了 eq 方法沒有重寫 hash 方法,那麼這個類無法作為雜湊集合的元素使用 這個hashable collections指的是set frozenset和dict 3 如果自定義類...