當你學會炒菜的時候,你就學會了大資料

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



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


  其中櫥櫃,相當於是Hadoop。櫥櫃可以儲存各種食材,而Hadoop可以儲存各種不同類的資料(結構化與非結構化)。而櫥櫃可以存放不同食材,比如不規整的豆腐塊,大冬瓜,土豆….還有一些規整的食材,比如大米,小米,綠豆……..規整的食材與不規整的食材的區別,各家有各家不同的規定,而一般的規定就是規格的食材要用袋子把它們裝起來。這裡就相當於是大資料裡的資料整理流程。而這些半規整的食材要放到一個個小袋子裡,比如說,澱粉,姜粉,蒜泥…..用袋子或者盒子把它們裝好,放在相應櫥櫃的地方,就相當於我們大資料裡說的ETL(抽取,封裝,載入),以備後用。
  而不同廠家的櫥櫃又會有不同的格子劃分及儲存區,比如:歐派,宜家的櫥櫃就會劃分出很多小的分割槽來裝不同的東西。而這一塊就相當於HBase,灶臺下邊有專門用於涼碗的,還有抽油煙機旁邊專門用於放刀具的區域,還有專門用於放各種鍋的區域。而當HBase劃分的好的時候,就對上層的MapReduce有很大的幫助,因為你各個區域規劃的越好,當你開始炒菜的時候,取用各種餐具的時候就會更加的得心用手。
  至於上邊的Mahout,Pig,Hive就相當於你如何在櫥櫃中找到你相應的食材的過程,比如說,你要抄蕃茄雞蛋,你要找雞蛋跟蕃茄………..再往上走就是一個對廚房的整體管理了。你做過的哪些菜,或者你想按照某個食譜來做菜,你就要有一個本子寫上你每次做菜的步驟,這個就相當於是FlumeL,而Sqoop就相當於蘿蔔擦,你想吃蘿蔔絲,你就要用工具把蘿蔔切成絲才可以,這裡,用刀具可以,用蘿蔔擦會更高效。
  再來說說Zookeeper吧!它就相當於把你經常用的幾項工具放到離你做菜最近的一個櫥櫃中。方便管理這些工具。




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


加工食材


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


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

相關文章