◎ 本刊記者 寧冉

幾年前,云計算還是一個很模糊的概念,發展如今已經開始向企業業務的各個層面滲透。很多企業在互聯網戰略上提出比較大的架構調整,要去除傳統架構(IOE),這種大架構調整的背后有一套分布式體系的支撐,有Hadoop分布式技術,以及通過Reduce并行計算形成集群替代了原來的IBM IOE小型機在EMC存儲和Oracle數據庫組成的傳統架構體系。
EasyHadoop創始人童小軍解釋說,Hadoop由多部分組成,它從最早的處理框架轉變成分布式操作系統,在逐漸發展過程中形成生態系統架構。Hadoop本身從最基礎開始,并逐漸在豐富的應用層出現,如數據挖掘算法、搜索引擎組建,以及能夠把數據從Oracle數據庫向其它組建導入等,Hadoop形成了一個健全的生態系統。云計算分IAAS、SAAS、PAAS,Hadoop組建在PAAS,既起到平臺支撐作用,又解決分布式存儲和運算問題。云計算按照對象分,有公有云、私有云、混合云。Hadoop在構建私有云上發揮巨大作用,也有企業應用Hadoop構件公有云。人們將云計算技術分成兩個端:一種是分的技術,把機器分成很多小機器,提高各個利用率,實現多個機器之間虛擬化遷移,保證高可用度。另外一個是合的技術,把一堆小的機器組成大的集群,如把存儲組合成HDFS,充分利用內容使用HBase,可以用Reduce等模型進行并行計算。

在分與合技術之間傳統的IOE架構和虛擬化技術存在著瓶頸,當服務器讀取數據進行計算的時候必須要把數據移動到服務器上進行計算,這個過程是有瓶頸的,磁盤瓶頸和帶寬瓶頸。計算能力可以通過橫向擴充機器解決,但是IO能力是受限制的。
Hadoop將一個文件切成很多小的文件分別存在不同硬盤上,計算時通過存儲HDFS組建,把存儲整合成一個大的集群。計算時會起動MAP和Reduce,MAP可以把任務分發到快的機器上計算,再執行Reduce。這就能實現計算能力和機器數量可以通過橫向擴展機器解決,IO能力和機器數量幾乎是成正比的。IO能力拓展可以通過橫向機器的擴展,中間會不可避免的出現數據的流動,Map和Reduce之間會出現網絡數據傳輸,可以通過優化方法來解決。
以上并不是說Hadoop完全替代IOE,而是進行一種補充,把數據分成歸檔、整合、交互等。如果使用Hadoop進行替換現有的Oracle數據還是有很多問題的。Hadoop本身生態系統能力在逐漸拓展,在企業里用它存儲海量非結構化數據,例如日志、網頁等信息。
Hadoop技術處于剛剛起步階段,發展有幾年的時間,如今也有大量的版本,因為它本身是開源的特點,廠商可以基于自己的需求定制版本。Hadoop最初發源地是在Google。Google在2002到2004年分別發出了三篇論文,包括HDFS、Map Reduce等等。這三篇論文影響下互聯網界給出了一套對應Hadoop解決方案,因此Hadoop的本源是Google的“三架馬車”。Hadoop不僅縱向擴展,還可以通過橫向拓展機器提高它的存儲能力。通過HDFS以及配套的MapReduce框架,Hadoop可以充分利用HDFS存儲的優勢通過它進行并行計算,實現自動的高并行化和可靠性。如果有一個任務失敗了,因為它在另外一個機器上也存在,所以整個任務可以正常運行起來,不會受限于單個結點的故障。Hadoop核心組建是HBase。數據庫有一個特點,除了提供很快的查詢能力,還要解決高并發問題。HDFS和Map Reduce是面向批處理的,而HBase是面向實時處理系統。它有一個很大的優勢在于通過橫向拓展機器提高并發能力。
基于Hadoop平臺案例,童小軍做了一個測試,這個測試是基于阿里云平臺的測試。他準備了20臺機器,分別是4G、500G存儲空間。測了一下它的性能,當數據達到100億的時候,它順序掃描只需要3分鐘就返回。而一億和一百億之間差距并不大。也就是說系統不會隨著數據量膨脹響應時間也會大量增加,它可以通過并行MapReduce增多來提升整體性能。在做分組查詢的時候,信息在一百億時可以達到54分鐘返回,而別的系統在這里就容易出錯,會暴露出一些問題,甚至是無解的問題。
IOE時代如果要構建一個大規模數據分析系統需要花費的成本從百萬到千萬。大數據時代,隨著Hadoop推廣僅僅需要60萬。
云平臺有個特點是當人們將存儲能力從10T提升到100T的時候,實際上是不劃算的,存儲容量相對來說比較貴,在IOE時代,實施周期更是按月計算。Hadoop最大的問題就是學習培訓時間較長,而單純的部署和安裝相對簡單,以周為單位。
IOE時代,IT維護依賴于專業的硬件人員和軟件廠商的售后服務,費用也比較昂貴。自建Hadoop最大的問題在于學習和人才的培養,這部分即使是在互聯網公司也是非常稀缺的。
以智慧交通應用為例,把車牌號數據存在一個集群里,能夠進行很快的掃描和比對出來。優化方面,從小時級優化到分鐘級,基于Hadoop能夠很輕松的實現,甚至能夠優化到秒級。當攝象頭拍到一個車牌號可以存儲到集群里,并可以識別這個車是否年檢了,是否有套牌,是否違章。系統經過優化就可以變得實時,達到分鐘級甚至秒級,車主可以立刻收到超速提醒。這個系統存在不僅僅只為出一個報表,而是實現系統更近乎實時的反饋能力。
Hadoop在通信公司的應用特別多。移動公司有一個“大云計劃”,上線Hadoop系統時做了價格的對比,如16結點集群與原來小型機對比。做數據挖掘應用,原來投資270萬但是遷到Hadoop上只花了36萬,而數據挖掘和性能都有提高。原來商用小型機投入也是幾百萬的,但是基于Hadoop會降低,性能也會提升7—15倍。
電話詳單查詢系統,基于IBM只能存放三個月數據,查詢達到100條查詢/秒,只能通過控制用戶查詢解決問題。而基于Hadoop查詢系統性能就有了很大提升,存儲容量超過400T,查詢達到每秒兩萬條。

某電商有將近3200臺機器,每日新增數據20T,該電商有三大戰略:平臺、數據、金融。它的金融能改變銀行業的應用,它提供了小額貸款,金額很小,放貸速度很快而且無擔保。整個體系相當于國家的金融中心,所以含金量很高。因為它擁有大量數據能夠把各種各樣數據計算和存儲。如果更多人想在上面做生意、貸款,也是數據的一個正循環。該電商在做促銷活動,最后的交易額達百億元,中間會產生大量的數據,需要快速處理和響應。中間就用的數據工場的概念,會跑到Hadoop集群上以及其它組建,數據工場不再局限于給個別人用,而是開放給公司的業務人員、平臺人員。用戶不是以層級式提交查詢報告再返回的方式,而是直接查詢數據工場最原始的數據。這是非常重大的革新,在傳統數據庫里要實現,有可能會造成系統崩潰。
數據系統經歷了第一代(直接數據系統),再經歷了第二代(數據倉庫),都以失敗告終。其中出現了一些技術問題,最根本的是IOE問題沒有解決。第三代系統,把數據錄入到Hadoop集群里通過并行計算來解決,這個問題才得以解決。
Hadoop既然能夠解決很多問題,它推廣的難點在哪?很多人不知道Hadoop的原理,其實當人們擁有合理硬件的時候,Hadoop的性能是可以發揮出來的。用三臺線上機器測試,擁有大量磁盤的機器,性能很不錯。
Hadoop在實施過程當中遇到了一些障礙,特別值得思考的是大數據價值問題以及商業模式的轉變。
大集群和大數據的需求問題,是第一座大山。不是所有公司都有大集群和大數據的需求。所以應用的人也就少。第二個問題是原有系統改造問題。很多公司都是IT外包,依賴于IOE架構,所以遷移改造會有很多羈絆。不像互聯網公司自己研發、自己上線那么輕松。第三個問題,大量資金投進去看不到產出。這是大數據和云計算落地的很大問題。

大數據的服務方式。互聯網時代用戶直接去數據庫里查。2.0時代是編輯人員和產品研發轉變成了規則制定者。規則制定者研發邏輯而不是具體內容,不再產生內容,用戶產生內容,通過邏輯挖掘之后回饋給用戶,最后每個用戶都擁有一份自己的報告和唯一獨特的數據服務,這中間必然需要大規模計算。
在企業里面,報表和數據的閉環。可以把這一層想象成企業的內循環。外循環就是用戶和企業之間的循環,這中間不僅僅是報表,而是向用戶直接服務。這種更實時的線上的系統,是大數據發揮的價值。當然它的維度越細、精準度越高,價值就越高。
開源Hadoop之路有哪些難點?管理難、實施難、各種各樣的研發難。童小軍希望提供安裝、部署、學習等等環節來掃平一系列障礙。通過社區和培訓方式讓更多的人知道Hadoop大數據能做什么,怎么用以及如何落地,并為人們提供解決方案。從Hadoop開始擴展算法、管理工具等組建和解決方案。
Hadoop安全性也有一些問題,因為Hadoop軟件開源性可以自己修改、定義。各種關口暴露、文件系統訪問權限等等,這都存在大量問題。還需要各方的努力來完善這個系統。
童小軍之前在暴風影音做的工作是偏研發的。他發現解決現有系統要從系統的瓶頸點著手。比如原來需要7小時,現在可以優化到10分鐘。所以企業如果要使用Hadoop歸根結底是要解決問題。如果報表算慢了,是不是能夠通過Hadoop使其速度快起來。先從一個點先切入,從非核心,離線非交易的分析業務開始,小規模集群開始,而不是立刻進行大量硬件投資。最后從依賴于Web團隊轉化到自主培養人才,這樣才能讓Hadoop在企業內部落地。