1. 程式人生 > >當你學會抄菜的時候,你就學會了大數據

當你學會抄菜的時候,你就學會了大數據

抽油煙機 鍋碗瓢盆 大冬瓜 豆腐塊 宜家

最近在學習數倉跟BI,突然發現,結合自己所學會抄的菜。試著把學過的大數據重新理解一番,希望各位都能來一起討論,共同進步。



走進廚房
走進廚房後,相信大家會看到各種鍋碗瓢盆,案板,切菜刀,調料,櫥櫃,水池...........而這些就相當於是大數據的架構。
技術分享


其中櫥櫃,相當於是Hadoop。櫥櫃可以儲存各種食材,而Hadoop可以存儲各種不同類的數據(結構化與非結構化)。而櫥櫃可以存放不同食材,比如不規整的豆腐塊,大冬瓜,土豆....還有一些規整的食材,比如大米,小米,綠豆........規整的食材與不規整的食材的區別,各家有各家不同的規定,而一般的規定就是規格的食材要用袋子把它們裝起來。這裏就相當於是大數據裏的數據整理流程。而這些半規整的食材要放到一個個小袋子裏,比如說,澱粉,姜粉,蒜泥.....用袋子或者盒子把它們裝好,放在相應櫥櫃的地方,就相當於我們大數據裏說的ETL(抽取,封裝,加載),以備後用。
而不同廠家的櫥櫃又會有不同的格子劃分及存儲區,比如:歐派,宜家的櫥櫃就會劃分出很多小的分區來裝不同的東西。而這一塊就相當於HBase,竈臺下邊有專門用於涼碗的,還有抽油煙機旁邊專門用於放刀具的區域,還有專門用於放各種鍋的區域。而當HBase劃分的好的時候,就對上層的MapReduce有很大的幫助,因為你各個區域規劃的越好,當你開始抄菜的時候,取用各種餐具的時候就會更加的得心用手。

至於上邊的Mahout,Pig,Hive就相當於你如何在櫥櫃中找到你相應的食材的過程,比如說,你要抄西紅柿雞蛋,你要找雞蛋跟西紅柿...........再往上走就是一個對廚房的整體管理了。你做過的哪些菜,或者你想按照某個食譜來做菜,你就要有一個本子寫上你每次做菜的步驟,這個就相當於是FlumeL,而Sqoop就相當於蘿蔔擦,你想吃蘿蔔絲,你就要用工具把蘿蔔切成絲才可以,這裏,用刀具可以,用蘿蔔擦會更高效。
再來說說Zookeeper吧!它就相當於把你經常用的幾項工具放到離你做菜最近的一個櫥櫃中。方便管理這些工具。


技術分享

好了,說完了Hadoop,再來說一說Spark.它跟櫥櫃的唯一不同就是:櫥櫃是給你全部安裝固定好了的,而Spark這種櫥櫃是可以移動的櫥櫃,同時對於你經常用的工具,可以進行優先排序。讓你更快的對食材進行加工。剛開始,你做完一道菜,要半個小時多,而當你熟練之後,加之Spark移動櫥櫃+優先推送食材(內存計算+可叠代算法),你可以在5分鐘內就做完這道菜。


加工食材
技術分享

實際上,我們食材的儲存過程就相當於是一個數倉的建立過程,而在一個數倉的建立過程中。最重要的莫過於區分不同維度。比如在大數據裏的Key+Value,Big list,實際上都是提供一種基於可擴展的列值存儲。而在數據可視化中,數據多維分維裏,也是強調數據的不同維度的區分。這裏我們就以食材的區分為例來說明。
首先,廚房裏的食材維度可以大致分析:蔬菜維度,禽肉維度,米面維度............不同的維度決定了你對食物的理解程度,比如:你可以把糯米放在米面維度,也可以放在糕點維度。所以數據的不同維度也取決於你對食材的功能及使用場景。再比如:把你香茹切的很小,曬幹,然後碾成粉,要這些香茹粉就會從蔬菜維度進入到調料維度。
當我們明白了食材維度的這個概念之後,我們就要開始我們的加工了。是先抄,還是先炸,還是先熱水湯一下,都是對食材的一種加工。這裏就相當於對初始數據進行相應的整形。由於要用到不同的廚具,就涉及到前邊講的走進廚房的細節的。在大數據裏,可以用不同的組件對原始數據進行處理。而在廚房,可以用不同的廚具對食材進行處理。比如:蒸饅頭,可以用抄鍋來蒸,同時可以用鋼精鍋來蒸。雖然都能達到能吃的地步。但是所用的時間及口感不同。這些也就相當於大數據裏各種不同組件之間的動行效果。
技術分享

最後,先感謝下我現在的公司,每個月不定期給我們發菜,同時也感謝下老婆,教會了我抄各種菜。最後,附一張我抄好的菜吧(先給它起一個響亮的名字:亂棍打死豬八戒!技術分享 )!敬請期待下一次的技術普及課:如何上菜?數據可視化流程

本文出自 “數據挖掘與可視化” 博客,轉載請與作者聯系!

當你學會抄菜的時候,你就學會了大數據