大數(shù)據(jù)和云計算已被視為一體兩面,但在云上開發(fā)大數(shù)據(jù)應(yīng)用并非易事,CSDN記者近日采訪了IBM中國云數(shù)據(jù)服務(wù)資深架構(gòu)師李鵬(Eric),深入探討構(gòu)建大數(shù)據(jù)分析應(yīng)用面臨的挑戰(zhàn)及需求,Bluemix云平臺的大數(shù)據(jù)分析技術(shù)能夠為加速大數(shù)據(jù)應(yīng)用的開發(fā)、部署和管理解決哪些問題,并重點介紹一些重要技術(shù)的實現(xiàn),以及一些應(yīng)用案例/場景,供開發(fā)者參考。
大數(shù)據(jù)開發(fā)的關(guān)鍵要素
云上大數(shù)據(jù)分析系統(tǒng)可以分成三個關(guān)鍵要素去考慮:
1. 分析的類型。根據(jù)信息密度和信息質(zhì)量,需要選擇不同的分析服務(wù)。如銀行交易數(shù)據(jù)是高質(zhì)量的信息,可以使用成熟的MPP RDBMS和自帶列存儲、機器學(xué)習(xí)庫的庫內(nèi)分析技術(shù),但像日志、用戶行為是低質(zhì)量的信息,數(shù)據(jù)量非常大,但是它的信息密度是不高的,可以考慮具有高可擴展能力的廉價集群存儲,像NoSQL Database,并用企業(yè)級的Spark和Hadoop服務(wù)進行分析操作。
2. 數(shù)據(jù)傳輸效率。把數(shù)據(jù)上傳到云端,低密度數(shù)據(jù)的傳輸可能存在效率的問題,需要高速的端到云的傳輸技術(shù),具有高壓縮比、高并發(fā)和高效傳輸協(xié)議的傳輸服務(wù)。
3. 數(shù)據(jù)存儲類型選擇,包括隨機對象存儲,大對象的存儲,本地盤和遠(yuǎn)程存儲,和存儲的性價比。在云平臺上可以考慮有的數(shù)據(jù)做離線計算,對于低活躍度的數(shù)據(jù)可以使用大對象存儲。例如Swift,S3等。對于在線分析,需要IO吞吐率比較高,使用傳輸效率更好的本地SSD存儲、或者掛載外部SAN、iSCSI等陣列。
IBM Bluemix的對應(yīng)策略:
1. 針對數(shù)據(jù)生命周期不同階段的分析要求,IBM Bluemix提供了針對高質(zhì)量業(yè)務(wù)信息的dashDB ——基于關(guān)系型數(shù)據(jù)庫的數(shù)據(jù)倉庫,有列存儲、分布式能力。來自與多源業(yè)務(wù)系統(tǒng)的數(shù)據(jù),可以匯聚于Cloudant——IBM的NoSQL Operational DataStore,既支持實時業(yè)務(wù)系統(tǒng),也可支持基于MapReduce的數(shù)據(jù)分析。對于低質(zhì)量、低密度但數(shù)量非常大的非業(yè)務(wù)數(shù)據(jù)和歷史數(shù)據(jù)提供基于企業(yè)級Hadoop的BigInsight和IBM Spark這樣的分析服務(wù)。
2. 傳輸?shù)姆?wù)使用新收購的Aspera技術(shù)。根據(jù)最近的測試報告,在網(wǎng)絡(luò)帶寬允許的情況下,10G數(shù)據(jù)上傳時間可以達到8.4秒,即便是100G以上的數(shù)據(jù)傳輸,也只是在分鐘級別完成。
3.不同的云架構(gòu)上,IOPS、吞吐量不一樣,IBM Softlayer SAN以及SSD內(nèi)置盤的IOPS可以達到6000,吞吐量可以在200M/s以上,甚至達到500M/s。
此外,在做具體分析時,還要考慮服務(wù)輕重的不同需求。如做預(yù)測其實是運用模型的很輕量的服務(wù),但是對數(shù)據(jù)的訓(xùn)練,就需要一個很強大的計算存儲的服務(wù),只有針對用戶場景,輕重結(jié)合才能有效的解決客戶問題。對輕和重的服務(wù),無論是計算、存儲,都是需要可伸縮化的,可以做更有效的資源調(diào)度,高可用的支持,這也是云端能帶來的最大的好處。
對于IaaS還是PaaS的選擇,要根據(jù)開發(fā)人員的IT能力,以及對服務(wù)需求的理解。如果想在業(yè)務(wù)層面做得更深入,企業(yè)或開發(fā)人員希望把精力花在業(yè)務(wù)分析層面,使用PaaS也能把入門的門檻降低,可以更快地啟動分析服務(wù)。如果IT團隊能力非常強并對大數(shù)據(jù)平臺本身構(gòu)建很熟悉,可以選擇基于IaaS搭建自己的大數(shù)據(jù)平臺,高可用性、運維需要自己保證。
開源技術(shù)的選擇
開源當(dāng)?shù)溃琁BM也很看重Spark、Hadoop和NoSQL(CouchDB)等開源技術(shù)在數(shù)據(jù)分析領(lǐng)域的作用,并投入了大量的工程師和資源,包括2015年在Spark上投入數(shù)億美元,以及貢獻IBM積累的SystemML機器學(xué)習(xí)庫來完善Spark生態(tài)。生態(tài)系統(tǒng)是IBM Bluemix大數(shù)據(jù)分析服務(wù)選擇開源技術(shù)最看重的因素之一,并且生態(tài)系統(tǒng)要有足夠的可擴展、活躍度、接受度。比如說Spark的接受度,很大的程度來源于Hadoop存量用戶。企業(yè)用戶在HDFS上累積了大量的數(shù)據(jù)之后,一種新的技術(shù)能夠基于內(nèi)存直接分析這些數(shù)據(jù),并極大地提升計算效率,自然就吸引了大量的Hadoop客戶群體嘗試遷移到Spark上。再者SparkSQL提供了更容易上手的查詢分析接口,以前使用SQL做數(shù)據(jù)分析的程序員和數(shù)據(jù)科學(xué)家很容易遷移到Spark平臺上。同樣機器學(xué)習(xí)庫的完善、流式分析、圖分析等都吸引不同應(yīng)用場景的客戶。
不過,IBM會區(qū)別處理結(jié)構(gòu)化和非結(jié)構(gòu)化,基于積累了幾十年的SQL優(yōu)化經(jīng)驗,用更成熟的RDBMS技術(shù)處理結(jié)構(gòu)化高信息密度的大數(shù)據(jù)的問題,而不是使用SparkSQL。與新生的SparkSQL相比,IBM BigSQL對標(biāo)準(zhǔn)的支持更為完善。IBM Big SQL在HDFS的層次上提供了更好的SQL優(yōu)化和更佳的執(zhí)行路徑推導(dǎo),完整地支持SQL2011標(biāo)準(zhǔn),對于TPC-DS 性能測試中的99個基準(zhǔn)SQL,對于使用同樣的數(shù)據(jù)和硬件,BigSQL能完整地支持,并在性能上領(lǐng)先于Spark SQL,而SparkSQL作為后來者大約只支持半數(shù)。
在NoSQL領(lǐng)域,IBM主推的是分布式數(shù)據(jù)存儲解決方案Cloudant,Cloudant有靈活的水平擴展的能力,以及強大的高可用性。它可以在短時間內(nèi)把集群節(jié)點數(shù)量從幾個擴展到幾十個甚至上百個,能夠輕松應(yīng)對業(yè)務(wù)量的爆發(fā)式增長,非常適合Web應(yīng)用開發(fā)和移動應(yīng)用開發(fā)。Cloudant支持混合云的部署方式,既提供本地安裝版本,同時也提供云上的全托管服務(wù),讓開發(fā)者能夠靈活、經(jīng)濟地獲取Cloudant數(shù)據(jù)存儲能力。因為CAP原則,它可以更好的做到可用性和擴展性,能夠處理很大的并發(fā),但是在一致性上Cloudant采用的是最終一致性,所以不適合對事務(wù)的一致性要求很高的場景。但因為高一致性和低一致性場景是一直存在的,SQL和NoSQL會長期并存。
Bluemix整體架構(gòu)和核心組件
集成開源技術(shù),到目前為止,Bluemix平臺上提供幾十個數(shù)據(jù)服務(wù)(IBM的十幾個服務(wù)加上第三方的服務(wù)),針對不同行業(yè)不同的業(yè)務(wù)場景來構(gòu)建大數(shù)據(jù)分析平臺和大數(shù)據(jù)分析服務(wù)。其總體的設(shè)計思路是以解決方案、業(yè)務(wù)場景驅(qū)動,劃分出來幾種不同的產(chǎn)品。
Cloudant是一個文檔型的數(shù)據(jù)庫,不需要事先定義數(shù)據(jù)模式,預(yù)定義表結(jié)構(gòu),數(shù)據(jù)中的每條記錄都可能有不同的屬性和格式。只要求數(shù)據(jù)的存儲格式為JSON。
dashDB是針對高質(zhì)量數(shù)據(jù)的分析業(yè)務(wù),可以在1- 10+TB級別對最高質(zhì)量數(shù)據(jù)做快速地分析,支持R、分析引擎、庫內(nèi)分析、列存儲,MPP等。
DB2 on Cloud主要針對于傳統(tǒng)的RDBMS 的用戶,可以做全托管的數(shù)據(jù)庫,讓它在上面完成相關(guān)業(yè)務(wù)。
BigInsight和Spark,針對的是低信息密度的大數(shù)據(jù)量的分析場景。Spark加入了IBM獨特的的調(diào)度引擎,而不是純粹采用開源的引擎。
算法支持
Bluemix上整個大數(shù)據(jù)分析對主流的算法都是支持的。一些機器學(xué)習(xí)的算法,如樸素貝葉斯、K-means、決策樹、隨機森林、協(xié)同過濾等等都可以在不同的服務(wù)中找到。IBM把之前很多的Netezza分析庫上的算法,都內(nèi)降到了dashDB里面。而且對數(shù)據(jù)分析中常用的R語言也有很好的支持,大部分的數(shù)據(jù)服務(wù),都可以直接使用R來完成數(shù)據(jù)建模,可視化。
性能優(yōu)化
性能調(diào)優(yōu),如dashDB對于SQL調(diào)優(yōu),IBM有成套的工具,可以很好地發(fā)現(xiàn)問題,進行調(diào)優(yōu)。對于Spark和企業(yè)級Haoop的支持,有完整的監(jiān)控體系,可以發(fā)現(xiàn)死鎖Job,讓任務(wù)終止,或者是釋放更多資源來自動完成大數(shù)據(jù)的分析。大部分情況下,Job的監(jiān)控是不需要用戶感知的。
優(yōu)化代碼
如果通過SQL開發(fā)一些場景,可以用query tuner解釋、優(yōu)化代碼。像R語言,則是有一些現(xiàn)成的IDE去完成。當(dāng)然代碼優(yōu)化很大程度和性能調(diào)優(yōu)有一定的關(guān)系,就是針對不同的任務(wù)和數(shù)據(jù)特征,使用不同的運行參數(shù),保證Job在平臺上跑得更快更好,同時使用各種云端工具提供各種代碼的優(yōu)化建議。再者,因為用Scala寫的和用R寫的都有可能是單獨運行的。現(xiàn)在的做法是把很多的算法和序列封裝到庫里面,盡量減少代碼量,容易出錯的概率就減少,讓代碼更加接近于優(yōu)化。
數(shù)據(jù)安全
Bluemix通過了ISO27001數(shù)據(jù)安全的認(rèn)證。而Bluemix的數(shù)據(jù)服務(wù)層面上主要做了幾方面:
數(shù)據(jù)庫本身的加密,Admin也沒有辦法看到用戶數(shù)據(jù)。
對于HDFS本身的加密,對Big Insight、Spark的加密。
運營系統(tǒng)的SLA。每個人的操作完全可監(jiān)控。
Bluemix大數(shù)據(jù)分析生態(tài)
IBM去年宣布投資1億美元成立Spark研發(fā)中心,把SystemML貢獻給社區(qū),并且已經(jīng)有很多的貢獻者進入到了Spark社區(qū)。對于Cloudant,IBM有很多的代碼貢獻給了CouchDB社區(qū)。
舉辦黑客松活動,在全世界范圍內(nèi)吸引開發(fā)人員了解、學(xué)習(xí)和使用IBM的大數(shù)據(jù)分析平臺。
在不同的學(xué)校,IBM也有一些課程去教授大數(shù)據(jù)分析技術(shù)。
IBM還有一個大數(shù)據(jù)大學(xué)的全球計劃,在國內(nèi)會通過在線教育網(wǎng)站MOOC,提供了很多大數(shù)據(jù)分析的課程,以及一些基礎(chǔ)課程。目標(biāo)是在全世界訓(xùn)練一百萬個數(shù)據(jù)科學(xué)家或者數(shù)據(jù)編程者,更廣泛的擁抱大數(shù)據(jù)分析的平臺。
獲取更多大數(shù)據(jù)分析相關(guān)課程
中國站:http://www.bigdatauniversity.com.cn/courses
美國站:http://bigdatauniversity.com/#
應(yīng)用入門
在Bluemix上做一個大數(shù)據(jù)分析應(yīng)用。首先第要考慮數(shù)據(jù)的清洗、變換,尋找關(guān)鍵的因子,之后才能根據(jù)問題建立模型。然后使用更多的數(shù)據(jù)驗證這個模型準(zhǔn)確率和召回率,取得反饋,再應(yīng)用反饋到數(shù)據(jù)處理階段以及模型設(shè)計里,反復(fù)迭代,最后完成數(shù)據(jù)的清洗、建模、校驗、預(yù)測、反饋,然后再建模再收集反饋,多次迭代,構(gòu)建出更加精準(zhǔn)的模型。
Bluemix是一個基于CloudFoundry的平臺,對不同服務(wù)的整合和應(yīng)用的整合是非常輕量的。開發(fā)者在本地區(qū)完成開發(fā),做一個在線的綁定,就可以把這些服務(wù)很快地連接在一起,應(yīng)用很快就能在Bluemix平臺上跑起來。
當(dāng)然,使用Bluemix,首先需要對CloudFoundry有一定了解,因為Bluemix的每個服務(wù)的配置是不一樣的,根據(jù)業(yè)務(wù)場景選擇了不同的服務(wù),會限制可以使用的資源。比如存儲的限制,dashDB free的版本是20G,如果強行要30G可能就出問題了。這些可能是新手會遇到的問題。有一些還和編程上的習(xí)慣有關(guān)的問題。可以通過郵件和在線幫助系統(tǒng)獲得答案。
應(yīng)用案例
目前在Bluemix上使用dashDB服務(wù)、Spark服務(wù)、Hadoop服務(wù)等做大數(shù)據(jù)分析的活躍用戶有3-4萬,Cloudant用戶有9-10萬,有幾十個大用戶在使用大數(shù)據(jù)分析平臺的Big Insight、Spark和dashDB。一些中國的游戲公司已經(jīng)開始在商業(yè)環(huán)境里面使用使用NoSQL來完成游戲的開發(fā)和擴容,一些做地理位置信息的公司也在使用Cloudant。
IBM客戶群體集中在金融、保險、生物制藥、零售行業(yè)等,以及其他領(lǐng)域的世界五百強的企業(yè)。在這種不同的領(lǐng)域,IBM構(gòu)建了不同的解決方案和服務(wù)去針對它的產(chǎn)品做處理。
例如,使用IBM dashDB做用戶流失分析案例,通過選擇合適的相關(guān)因子例如購買次數(shù)、購買品牌以及交易類型,采用樸素貝葉斯算法訓(xùn)練模型,然后使用測試數(shù)據(jù)去驗證這個模型,最后放入一個全新數(shù)據(jù)來預(yù)測用戶流失可能性。這是一個典型的案例,詳細(xì)的建模過程參見:https://github.com/cuericlee/dashDB
又如極限追蹤的案例,對實時LBS的數(shù)據(jù)的進行預(yù)測分析,來確認(rèn)極限運動的飛行狀態(tài),以及預(yù)測極限運動員是否即將遭遇危險。預(yù)測模型試圖回答兩個基本問題:1.運動員是否處于飛行狀態(tài)?2. 極限運動是否是即將經(jīng)歷危險?IBM在超過8000萬的存量數(shù)據(jù)序列上使用IBM Spark服務(wù)分類、清洗、擬合模型,并在Bluemix上部署模型應(yīng)用,為極限追蹤提供輕量的REST接口,對追蹤的實時數(shù)據(jù)做出低延遲的精確預(yù)測,目前準(zhǔn)確率可以到達90%。當(dāng)然中間有很多的數(shù)據(jù)的清洗、變型和不停地迭代,還要處理一些特定的問題,比如說,如果極限運動員坐在汽車在山間穿行,追蹤器產(chǎn)生的數(shù)據(jù)就會對模型產(chǎn)生很大的干擾。如何去規(guī)避這些問題,需要去不斷修正模型并引入新的因子和規(guī)則,例如等高線數(shù)據(jù)等。IBM正在把這些成果應(yīng)用于極限追蹤的在線產(chǎn)品系統(tǒng)中,并會在未來的一些會議中公開技術(shù)方案。
交通方面的案例,比如和福特合作的一個智慧交通項目。是用Clouant移動設(shè)備端開發(fā)能力和對地理空間信息強大的存儲、索引和分析能力,能夠?qū)崟r地預(yù)測一個可以停車的地方。通過大量的數(shù)據(jù)分析可以找到一個更適合停車的位置。考慮交通流量分析、紅綠燈、店鋪的位置等。
對于開發(fā)者的價值,Bluemix不只是一個技術(shù)的堆疊。首先是服務(wù)之間的合理集成,這部分工作在其他的應(yīng)用平臺上需要自己去搭建和管理,分析平臺需要自己去運維。最主要的是對特定的業(yè)務(wù)場景,如果沒有經(jīng)驗,要走很多的彎路,Bluemix平臺承諾提供很多幫助給客戶的特定場景的案例、SLA以及專業(yè)的支持和指導(dǎo),比如說適合于使用哪種模板完成業(yè)務(wù),使用哪種服務(wù)去清洗數(shù)據(jù)、變型數(shù)據(jù),像處理變型和規(guī)劃,還有使用哪些存儲服務(wù)更適合場景,還有如何驗證模型,讓預(yù)測服務(wù)和生產(chǎn)系統(tǒng)之間做完整的集成,這些都會提供建議,以更快地實施大數(shù)據(jù)分析方案,讓生產(chǎn)系統(tǒng)運轉(zhuǎn)起來。
IBM有7×24小時的服務(wù)團隊。根據(jù)SLA,收費用戶能得到7×24小時的反饋,特別嚴(yán)重的級別的問題,能在一個小時以內(nèi)得到響應(yīng)的。
Bluemix大數(shù)據(jù)未來技術(shù)路線
普通的大數(shù)據(jù)、結(jié)構(gòu)化的大數(shù)據(jù)和NoSQL,三方面都會有更大的投入。
持續(xù)地在Spark上面投入。Spark會滲入到的分析產(chǎn)生的各個地方,包含ETL里,分析服務(wù)里面都會和Spark結(jié)合。Spark的計算平臺會更加的擴展性,能支持更多數(shù)據(jù)源和服務(wù)集成,提供更友好的交互接口,讓用戶更透明的在上面運行Spark。
RDBMS。會在dashDB集群并行化上投入更多的精力。現(xiàn)在可以支持多節(jié)點的規(guī)模(6+),以后還將實現(xiàn)更多計算節(jié)點的線性擴展以及高可用性。
NoSQL。會繼續(xù)投入Cloudant,如地理位置信息查詢的支持,更大規(guī)模的集群,以及Master-Master適合多國的機器的支持。