Hadoop本質來說僅僅是個存儲模型,這個存儲模型附帶有一種計算模型(map reduce),國人一上來可能比較生疏,但是hadoop僅僅是個基礎模型。
數據庫技術興起的時候,那個時候連foxbase都很搶手,歷史證明了真正帶給人們價值的不是數據庫,而是ERP。IBM整個軟件體系不怎么搞應用,搞得 都是基礎,db2,websphere,rational,tivoli,lotus,結果一敗涂地,這可是很近的歷史事實了。我做個比較:
db2-mysql
websphere-nginx
rational-那個UML其實沒什么大的作用,并且各種替代品
tivoli-各種存儲,廉價硬盤就能把tivoli替代了
lotus-openoffice,并且支持智能手機
當年IBM對這一套底氣很足的,我記得一篇報道說,人家IBM承諾不做應用,意思是不和自己的合作伙伴競爭搞應用軟件。
接著說大數據,我曾經去過一家公司面試,我當時是搞數據庫的,感覺那個職位自己應該是勝任的,結果面試官一上來就問,你知道哪些數據倉庫的模型?我一聽就傻了。搞得好像hadoop一出,數據庫就被秒殺了一樣。
hadoop本質來說僅僅是個存儲模型,這個存儲模型附帶有一種計算模型(map/reduce),國人一上來可能比較生疏,但是hadoop僅僅是個基礎模型。
hadoop的存儲模型本質來說其難度沒有超過數據庫的難度,加上計算模型也一樣。
歷史告訴我們的結論是,hadoop作為基礎結構沒有價值。
那什么是有價值的?只有說當你的業務存在時間維度上的價值的時候,hadoop這個模型才有價值。有時間維度的業務不多,真的。對于一家互聯網公司來說, 半衰期大約=5年,甚至更短。也就是說,5年后,市面上的新興的這些互聯網/移動互聯網公司要去掉一半。這其實是個很保守的數字了。5年根本談不上你的數 據還要有什么時間維度上的操作。再看看電子商務,網上是一些比較新潮的商品,5年之后早就更新換代好幾批了,也就是說相對于公司的半衰期,商品的半衰期更 短。
其實真正具有時間維度上的要求的數據是金融數據,然后就是搜索引擎,再次是電子商務,進入移動時代,數據是移動的,數據瞬間消失的就跟那個玻色子一樣。數 據就是在K-V里面的,支付也是如此,數據過了有效期,那只能重新連接重來了,數據失效了,支付失敗了,記錄這個失敗沒有意義,及時處理支付失敗才有意 義,數據在時間維上不是越來越大,而是越來越小。
那大家為什么hadoop一哄而上?這個背后肯定是有推手的,目的就是讓大家跟著倒霉,唯我獨大。為什么這么說呢,因為這個hadoop技術是有陷阱的,這個陷阱就是java,歷史告訴人們什么呢?
我這一代人,整個70后80后,黃金一代,毀在java手里。原因是什么,我也不知道。事實是什么,這個我經歷了,就知道了。
現在說這個可不是什么經驗之談,這是常識之談。打著數據挖掘/機器學習的招牌搞大數據,十有八九也會被大數據胡弄了。因為它的根底就比較淺。hadoop的根底淺,java技術毀人不倦,不滿足業務上的半衰期。
然后再來說機器學習,很奇怪,hadoop根底淺,機器學習也跟著上不了什么很高的檔次。我也去過一家公司面試,還是個上市公司,一進去直覺告訴我,這家公司已經不怎么地了。但是整個數據挖掘機器學習的面試,感覺很不爽。我大體上說一下,模式差不多。
統計基礎+矩陣運算+SVM機器學習流派+信號識別(所謂深度學習)
公司已經快不怎么樣了,這些機器學習的大師們拿著這一套好像就跟陽春白雪一樣,自我剪裁一番配上大數據hadoop就無敵了。
就這些,核心還是貝葉斯模型,翻來覆去的貝葉斯模型。問題就是,貝葉斯模型真的比傳統數據庫的關系模型強嗎?不是說一定是否定的,只要不是絕對肯定的,你的業務就跟著over了。問題是,人們需要哪家公司用自己的業務去檢驗貝葉斯模型?
我只談數據倉庫,因為這是我覺得最容易入門、最有用、最難用好的技術之一。
出現數據倉庫這概念的時候,貌似還沒有hadoop呢。
數據倉庫存儲的是原始數據經過一定的業務、維度聚合獲得的中間數據。模型價值很大,過去大數據處理都是先建立數據倉庫模型。
若是做數據庫不知道數據倉庫、ETL技術,無論你用什么數據庫,大數據量時都是有局限性的。
舉個例子最簡單的例子,你有用戶的交易流水,每天24億條新記錄。你需要做個系統查詢,統計一定天數的交易總金額。
那么,一個簡單的數據倉庫就是,每天計算一次前一天交易總額值后存在一張以天為單位的表里,這樣每天計算一次,表每天增加一條記錄。查詢天交易總額是我只需要查詢這張以天為單位的表就行了。通過這張天為單位的表,很快的計算周,月,年的數據統計。
這張表就是一個最簡單的數據倉庫,每天從原始數據計算這張表的過程就是ETL。
使用數據庫的人一定使用或接觸過數據倉庫,只不過自己沒意識到而已。
也許你會問如果我要查3天前~到現在9點20的總金額怎么辦?這時我們只需要當天的原始數據(實時數據),在加上之前設計的中間表里3天的匯總數據即可。
一個良好的,持久穩定的,針對大量數據產品,必須有良好的數據倉庫支持。
PS:現在大家都跟風追hadoop,領導覺得好非讓你用,你也沒辦法。
畢竟現很多時候談客戶,別人都吹hadoop技術,你說你不用hadoop,絕對是你悲劇。