試着解釋大數據

這篇 blog 原本是在 ourcoders 的一篇回覆。寫完幾天後,以爲還有必要總結留底,因此作了些修改,造成了這篇文章。java

我作大數據其實時間並不長,對大數據的理解也還處於很粗淺的階段,歡迎你們討論。c++

大數據這事其實有兩層意思:一層是單純從業務上說,到底如何收集並有效利用數據作決策;另外一層是指如何處理數據並完成決策所須要的數據支持。程序員

業務上利用數據作決策,是算法科學家或者如今所謂的大數據科學家,甚至是管理層和客戶的事情。他們首先要了解運行的業務是什麼,而後找出能夠量化的關鍵點,再經過數據來檢驗這些量化指標,最終得出決策,聽上去和程序員 debug 差很少。算法

處理數據是公司的基礎 it 架構,屬於運維和開發的範疇,google 的 map/reduce,後來的 hadoop 都是在解決這一塊的問題。sql

通常來講,公司小的時候數據很少,用 excel 就能很好的處理。隨着數據增長,使用數據庫存儲數據,配合腳本計算是經常使用的方法。若是業務很大,須要計算的數值變化頻繁和數據量的增長,單點的數據庫效率會變得愈來愈低,直到徹底無法忍受。這時候就須要考慮使用 mapreduce 的分佈式解決方案。這也是 hadoop 的真正用武之地。數據庫

數據量會暴漲的一個主要緣由,是互聯網正在量化愈來愈多的行爲,由此產生了愈來愈多的數據。之前只能經過抽樣調查獲得的數據(好比收視率,用戶的使用習慣),如今能夠經過各類方式直接拿到全部用戶的數據。既然有數據了就要利用,因此如今企業用來分析的數據也再也不是採樣數據,而更可能是全量數據。因此有人也會把如今的大數據稱做全數據。cookie

講個牛逼的八卦:美國 80 年代有家叫尼爾森的公司,專門作收視率調查。他們作法很是牛逼,會和家庭籤協議,調查這個家庭的一些背景,並放一個與有線電視網聯通的盒子在電視機旁邊。這個盒子可不是小米盒子,而是個錄音盒,目的在根據錄音判斷這家人看到了哪些廣告。這事到這,只能說明當年你們想要收集一些數據都很辛苦,並且收集到的數據有很大的隨機性。可是這事沒完。後來全世界人民都很是開心的把本身的信息主動寫在一個網站上,而尼爾森公司也看到這個機會,就和這家網站合做,取得了大量用戶的背景信息(固然理論上是不能反查到我的的),並利用這些信息和本身的收視率數據合併,因而尼爾森公司就能更加準確地提供收視率了。這家網站,叫 Facebook。架構

這事能夠說是數據上,從抽樣數據轉向全量數據的典型。如今各大網站利用 cookie 這些瀏覽信息暗中串通記錄用戶信息也不是什麼祕密了,也一直有人說我的的行爲在互聯網上徹底無法隱藏。既然公司買賣的都是全量數據,那麼拿來作分析的固然也不會再僅限於抽樣數據,也進入了全量數據處理的時代。運維

大數據的架構,除了要解決使用單點數據庫的性能,方便業務擴展時橫向擴展系統的最大性能,另外一方面也要考慮數據的提出者和使用者並非程序員,而是對技術理解欠佳的決策層和科學家。從技術的發展脈絡上來看,是讓人家寫 c++/java(傳統 mapreduce),仍是翻譯更簡單使用更普遍的 sql(hive)?而 hive 是批處理模式不適合快速查詢,因而 spark 是如何引入內存加速,而 storm 又是如何引入流來加快分析週期?aws 又是如何提供 hadoop 集羣來簡化部署?分佈式

最後試着用一句話總結一下:若是是公司層面思考大數據,更多應該關心如何拿到全量數據,如何才能從全量數據裏拿到有效決策;而若是是工程層面思考大數據,就是如何搭起一套通用靈活的架構,來知足日益增加的分析業務。

相關文章
相關標籤/搜索