范煒瑋,趙東升
?
大數(shù)據(jù)處理平臺Spark及其生物醫(yī)學應用
范煒瑋1,2,趙東升1*
1.軍事醫(yī)學科學院衛(wèi)生勤務與醫(yī)學情報研究所,北京100850;2.解放軍第309醫(yī)院信息科,北京100091
隨著生命科學和醫(yī)療信息化的快速發(fā)展,生物醫(yī)學數(shù)據(jù)出現(xiàn)了爆炸式增長趨勢,其處理面臨數(shù)據(jù)量大、維度關系復雜和交互式響應要求高等問題。傳統(tǒng)的數(shù)據(jù)庫以及Hadoop框架在處理生物醫(yī)學大數(shù)據(jù)方面都存在一些不足。Spark是一個新興的基于內(nèi)存計算的開源大數(shù)據(jù)平臺,具有豐富的編程接口、通用的處理框架和多元化的運行模式。本文介紹了Spark的關鍵技術和特性,以及不同來源生物醫(yī)學大數(shù)據(jù)特點和成功案例,表明Spark在生物醫(yī)學大數(shù)據(jù)處理中的適用性和潛在優(yōu)勢。
大數(shù)據(jù);Spark;醫(yī)學研究;生物醫(yī)學信息學
對生物醫(yī)學數(shù)據(jù)的處理,最終目的是從中獲取知識,為提高衛(wèi)生服務效率、促進醫(yī)學發(fā)展和衛(wèi)生管理提供支持,使得“數(shù)據(jù)-信息-知識”的認知鏈更臻完善。隨著生命組學、醫(yī)學技術和醫(yī)療信息化的快速發(fā)展,生物醫(yī)學數(shù)據(jù)出現(xiàn)了爆炸式增長趨勢,其處理面臨數(shù)據(jù)量大、維度關系復雜、計算強度高等問題。將大數(shù)據(jù)技術引入醫(yī)學領域,可以及時充分地共享醫(yī)療信息、感知醫(yī)療資源,通過模型分析和數(shù)據(jù)挖掘,描述生命現(xiàn)象和醫(yī)療決策中規(guī)律并預測其發(fā)展趨勢。例如,谷歌在2009年初通過用戶在網(wǎng)上的搜索記錄成功預測甲型H1N1流感的爆發(fā),其“流感趨勢系統(tǒng)”通過結合傳統(tǒng)監(jiān)測方法和大數(shù)據(jù)處理技術,可以預測美國未來1周的流感感染情況[1];美國的Flatiron Health公司,致力于通過收集和分析海量的臨床數(shù)據(jù)進行癌癥治療的分析和預測,該公司已獲得谷歌風投部門超過1億美元的投資[2];美國政府于2012年3月發(fā)布了“大數(shù)據(jù)的研究和發(fā)展計劃”[3],其中多個項目涉及醫(yī)療、公共衛(wèi)生和生命組學研究。
Hadoop是Apache基金會的頂級開源項目,已成為目前最重要的大數(shù)據(jù)技術框架之一,其MapReduce計算模型和完善的生態(tài)系統(tǒng)大大簡化了大數(shù)據(jù)處理系統(tǒng)開發(fā)和運維管理。Hadoop在生物醫(yī)學大數(shù)據(jù)處理中得到成功應用,涵蓋了生物信息學、智慧醫(yī)療、健康檔案、流行病預警、傳染病監(jiān)測等多個方面[4-10]。Explorys醫(yī)療數(shù)據(jù)公司基于Hadoop的云平臺能夠幫助醫(yī)生提高聚合、分析、管理和獲得輔助決策信息的能力[11]。當前的Hadoop版本也存在一些不足。由于MapReduce在設計上追求簡化的計算模型、大規(guī)模分布計算的容錯性和可擴展性,因而存在較大的磁盤I/O開銷以及冗余讀寫和編程不夠靈活等問題,更適合大規(guī)模數(shù)據(jù)的批量或離線計算,不能充分滿足數(shù)據(jù)挖掘和機器學習常用的迭代計算、圖計算和低延遲的交互式查詢計算等更復雜的計算需求。
Spark最初由伯克利大學AMPLab實驗室于2009年提出[12],是一個通用大數(shù)據(jù)處理引擎,旨在快速、易用地處理復雜數(shù)據(jù)。Spark的出現(xiàn)彌補了Hadoop的不足,成為發(fā)展最快的大數(shù)據(jù)處理平臺之一,已廣泛應用于騰訊、雅虎和淘寶等一線互聯(lián)網(wǎng)公司的報表和廣告推薦等業(yè)務,在生物醫(yī)學領域也出現(xiàn)了一些成功案例。
1.1 Spark特點和關鍵技術
Spark(http://spark.apache.org/)是Apache基金會開源項目,它充分整合利用了現(xiàn)有云計算和大數(shù)據(jù)技術,具有豐富的編程接口,支持在單機、Hadoop Yarn、Mesos(http://mesos.apache.org/)集群和亞馬遜EC2云等多種平臺上運行,能夠訪問HDFS文件系統(tǒng)和Hbase數(shù)據(jù)庫等任意Hadoop支持的數(shù)據(jù)源,提供批處理、交互式、流處理等多種數(shù)據(jù)處理模式,為大數(shù)據(jù)應用提供一個統(tǒng)一的平臺。據(jù)Apache官方測試,Spark運行邏輯回歸算法的計算速度是Hadoop的10~100倍。如此之高的性能提升,得益于以下關鍵技術。
1.1.1 彈性分布式數(shù)據(jù)集(Resilient Distributed Datasets, RDD) RDD[13]是Spark計算框架的核心技術。在Spark中,所有的數(shù)據(jù)都抽象成RDD。用戶可將中間結果緩存在內(nèi)存中,便于有效地被重用和進行并發(fā)操作,免去不必要的I/O開銷。RDD只能通過兩種方式創(chuàng)建,一是讀取本地或Hadoop分布式文件系統(tǒng)(HDFS)上的文件,二是由其他RDD轉(zhuǎn)換而來,具有只讀(一組RDD可以通過數(shù)據(jù)集操作生成另外一組RDD,但是不能直接被改寫)、彈性擴展和容錯等特性。
1.1.2 共享變量 與MapReduce不同的是,Spark提供廣播(Broadcast)和累加器(Accumulators)兩種受限的共享變量,可以像分布式內(nèi)存系統(tǒng)一樣提供全局地址空間接口,提高了數(shù)據(jù)的共享性[14]。
1.1.3 容錯機制 分布式共享內(nèi)存系統(tǒng)一般通過檢查點(checkpoint)和回滾(rollback)方式容錯,而RDD通過稱為“世系關系”(Lineage)的機制提供高效的容錯,該機制使RDD包含其演化過程中一系列的依賴關系,能夠自動從節(jié)點失敗中重構丟失的RDD。
1.1.4 支持有向無環(huán)圖(Directed Acyclic Graph, DAG)編程框架 由于MapReduce設計上的約束,Hadoop缺少對迭代計算和DAG運算的支持。Spark具有豐富全面的數(shù)據(jù)集運算操作,除了Map和Reduce操作,還增加了過濾、抽樣、分組、排序、并集、連接、分割、計數(shù)、收集、查找等80多種算子,并合理地劃分為Transformation(變換)和Action(動作)兩大類。利用這些算子,能夠方便地建立起RDD的DAG計算模型,將所有操作優(yōu)化成DAG圖,提高計算效率和編程靈活性。
1.2 Spark相關子項目
Spark在機器學習、交互式查詢、流計算和圖計算等方面都有相關子項目,使用同一個引擎便能高效地滿足數(shù)據(jù)統(tǒng)計查詢、機器學習和流數(shù)據(jù)處理的應用需求。這些子項目形成了Spark核心計算框架上的工具(庫),以便于開發(fā)無縫集成的應用程序。
1.2.1 流計算框架(Spark Streaming) 流計算框架(http://spark.apache.org/streaming/)將數(shù)據(jù)流根據(jù)小時間片分解成一系列短小的批處理作業(yè),根據(jù)業(yè)務需求對中間結果疊加計算或者存儲到外部設備,具有高吞吐量和高效的容錯處理能力。
1.2.2 可擴展機器學習庫(MLBase/MLlib) Mllib(http://spark.apache.org/mllib/)包括一些常見的機器學習算法和實用程序,包括分類、回歸、聚類、協(xié)同過濾、降維、特征變換及底層優(yōu)化。MLbase通過邊界定義,力圖將MLbase打造成一個機器學習平臺,讓一些并不深入了解機器學習的用戶也能方便地使用MLbase來處理自己的數(shù)據(jù),其機器學習優(yōu)化器能夠根據(jù)用戶輸入場景選擇最適合的機器學習算法和相關參數(shù)。
1.2.3 即席數(shù)據(jù)查詢引擎(Spark SQL) 從Apache Hive表、parquet和JSON格式的文件中裝載和查詢數(shù)據(jù),通過Python、Scala和Java語言編程接口將結構化數(shù)據(jù)作為RDD進行查詢,實現(xiàn)SQL查詢(http://spark.apache.org/sql/)和Spark程序的無縫集成,使運行帶有SQL查詢的復雜分析算法更容易。同時,可以不加修改地運行Apache Hive數(shù)據(jù)倉庫查詢,支持傳統(tǒng)JDBC/ODBC連接。
1.2.4 并行圖計算框架(GraphX) GraphX(http:// spark.apache.org/graphx/)基于Spark的圖處理和圖并行計算API,可將一組數(shù)據(jù)同時看作集合(Collection)和圖(Graph)兩種視圖,每種視圖都有自己獨特的操作符,利用基于RDD的圖操作保證了操作靈活性和執(zhí)行效率。
1.2.5 采樣近似計算查詢引擎(BlinkDB) BlinkDB(http://blinkdb.org/)是一個在海量數(shù)據(jù)上運行交互式查詢的大規(guī)模并行查詢引擎。它通過維護一組多維樣本的自適應優(yōu)化框架和動態(tài)樣本選擇策略,允許用戶權衡數(shù)據(jù)精度來提升查詢響應時間性能,而數(shù)據(jù)會被限制在誤差范圍以內(nèi)。在2012年超大規(guī)模數(shù)據(jù)庫(Very Large Database, VLDB)會議上的一個演示中,BlinkDB對17 TB數(shù)據(jù)的一組查詢不到2 s即可完成,比Hive快200倍,而錯誤率在2%~10%之間[15]。
1.2.6 分布式內(nèi)存文件系統(tǒng)(Tachyon) Tachyon(http://tachyon-project.org/)是一個高容錯的分布式文件系統(tǒng),允許文件以內(nèi)存的速度在計算機集群中進行可靠的讀寫和共享,以達到提高效率的目的。項目開發(fā)者提出了一種在存儲層利用“世系信息”(lineage)的容錯機制,克服了傳統(tǒng)寫操作中數(shù)據(jù)同步的瓶頸,在測試中比HDFS快110倍[16]。
2.1 生物醫(yī)學大數(shù)據(jù)來源及特點
當前的生物醫(yī)學大數(shù)據(jù)主要包括以下5大類,以高通量測序為代表的生命組學數(shù)據(jù),以靶向藥物研發(fā)為代表的藥物研究實驗產(chǎn)生的過程數(shù)據(jù),以電子病歷為代表的臨床醫(yī)療服務數(shù)據(jù),以居民電子健康檔案為代表的個人健康監(jiān)測與健康管理數(shù)據(jù),以疾病監(jiān)測和衛(wèi)生監(jiān)督為代表的公共衛(wèi)生管理數(shù)據(jù)。這些數(shù)據(jù)與電子商務、社交媒體等互聯(lián)網(wǎng)大數(shù)據(jù)相比,具有明顯的不同。
互聯(lián)網(wǎng)大數(shù)據(jù)的樣本量至少在億級,例如,淘寶2014年“雙十一”促銷活動1天就產(chǎn)生了2.78億筆交易。但其每個樣本只是一次交易記錄,結構化較強,樣本的屬性數(shù)量不會超過100個。同時,其數(shù)據(jù)分析主要是基于人群分類的廣告推薦等,計算結果不需很精確。而醫(yī)療數(shù)據(jù)涉及到人的生命安全,對其進行分析研究,要求結果要很精確。
2.1.1 生命組學大數(shù)據(jù) 目前的單個研究樣本量不大,但每個樣本的數(shù)據(jù)量很大且復雜度高,是典型的“小樣本大數(shù)據(jù)”。以“國際千人基因組計劃”為例,總樣本量只有1200人,但每個人的全基因組測序數(shù)據(jù)量很大,根據(jù)測序深度的不同可達數(shù)十甚至數(shù)百GB,因此該項目數(shù)據(jù)總量很大,經(jīng)過整理后達50 TB;同時,數(shù)據(jù)結構復雜、維度很高,每個人的原始數(shù)據(jù)包含幾千萬短串序列,覆蓋3萬條基因的各種信息。因此,對其挖掘分析技術要求很高。
2.1.2 臨床醫(yī)療大數(shù)據(jù) 樣本量較大,一家三甲醫(yī)院每年可產(chǎn)生上百萬條門診紀錄、幾萬份住院病歷,單個樣本的數(shù)據(jù)量比基因測序數(shù)據(jù)小,但描述樣本的信息復雜、關聯(lián)度強,因此是“大樣本復雜關聯(lián)數(shù)據(jù)”。以中醫(yī)醫(yī)院的臨床信息系統(tǒng)為例,對每個就診患者而言,既有門診、住院、實驗室檢驗等結構化和半結構化數(shù)據(jù),也有病理分析、B超、PACS影像等大量非結構化數(shù)據(jù);既有按照中醫(yī)診療方法和術語規(guī)范產(chǎn)生的數(shù)據(jù),也有按照現(xiàn)代西醫(yī)標準產(chǎn)生的數(shù)據(jù)。此外,臨床醫(yī)療數(shù)據(jù)天然地具有分布式特性,醫(yī)療機構信息系統(tǒng)內(nèi)部及與其他衛(wèi)生機構信息系統(tǒng)之間還存在數(shù)據(jù)標準不統(tǒng)一、融合性差等問題。因此,臨床醫(yī)療大數(shù)據(jù)研究的重點在于如何標化整理這些數(shù)據(jù)、基于大數(shù)據(jù)的循證醫(yī)學以及個性化醫(yī)療。
2.1.3 公共衛(wèi)生大數(shù)據(jù) 樣本量很大,但每個樣本的數(shù)據(jù)量較小,結構簡單,需要融合不同類別的監(jiān)測數(shù)據(jù)進行分析。以我國傳染病監(jiān)測報告為例,監(jiān)測的樣本量數(shù)以億計,而每條記錄僅為幾十個特定的結構化字段。但為了監(jiān)測和預測傳染病暴發(fā),需要同時對傳染病報告數(shù)據(jù)、癥狀群監(jiān)測數(shù)據(jù)、互聯(lián)網(wǎng)搜索熱詞數(shù)據(jù)、環(huán)境氣象數(shù)據(jù)進行融合分析,才能得出較準確的結果。因此,公共衛(wèi)生大數(shù)據(jù)是融合大數(shù)據(jù)。
生物醫(yī)學大數(shù)據(jù)的應用場景包括醫(yī)學研究、個性化醫(yī)療、衛(wèi)生統(tǒng)計決策、流行病預警和趨勢預測等,其處理分析主要集中在清洗轉(zhuǎn)換、特性抽取、語義建模、分類、聚類、序列分析、關聯(lián)分析和回歸分析等方面,對迭代計算、交互式查詢和計算精度的要求都很高。
2.2 醫(yī)學大數(shù)據(jù)Spark應用案例
隨著Spark平臺不斷發(fā)展完善,一些醫(yī)學研究機構開始使用Spark來提高數(shù)據(jù)處理能力。
美國的霍華德·休斯醫(yī)學研究所使用250個節(jié)點的Spark集群進行大腦工作機制的研究,通過統(tǒng)計分析、回歸分析、降維和聚類分析處理1 TB/min的影像數(shù)據(jù),可在幾秒鐘之內(nèi)對6800萬條時間序列進行處理,研究大腦不同區(qū)域在處理特定方向移動時的表現(xiàn),生成大腦對方向響應的高清區(qū)域圖。采用Spark Streaming實時監(jiān)視神經(jīng)元,以此來發(fā)現(xiàn)神經(jīng)元之間的互相影響[17]。該研究是Spark用于處理醫(yī)學大數(shù)據(jù)的成功嘗試,在2013年Spark峰會上引起了強烈反響和關注。他們的研究一直持續(xù),并在2014年Spark峰會上開源了一個尋找模式復雜、高維神經(jīng)反應的庫“Thunder”,采用Spark Streaming和MLLib進行流處理和機器學習算法的整合,適用于多種神經(jīng)數(shù)據(jù)的處理。
基因組學大數(shù)據(jù)分析在臨床醫(yī)療尤其是個性化醫(yī)療中將發(fā)揮非常關鍵的作用。2014年Spark峰會上,加州大學伯克利分校的研究人員介紹了他們將Spark引入到在基因組學研究中的部分成果。短讀基因序列校準器是數(shù)據(jù)處理中最昂貴的步驟之一,他們研發(fā)的基于Spark的核苷酸排列程序(Scalable Nucleotide Alignment Program, SNAP)是迄今為止最準確和最快的校準器[18],使此類數(shù)據(jù)的處理速度比之前快3~10倍。ADAM是一個基于Spark的高性能DNA測序數(shù)據(jù)分析流程,能夠執(zhí)行復雜的計算密集型任務。使用一個82個節(jié)點的Spark集群,ADAM可以用比其他系統(tǒng)快50~110倍的速度來執(zhí)行基因?qū)W中兩個最關鍵的步驟[19]。他們還將Spark處理平臺用于識別個體和參考標準之間的差異,提出了一種具有合適評價指標的基因組學基準SMASH[20]。
Spark作為一個開源的大數(shù)據(jù)處理平臺,以其內(nèi)存計算、可伸縮及高效的容錯特性,與分布式文件存儲系統(tǒng)、分布式數(shù)據(jù)庫結合使用,配合其豐富的生態(tài)系統(tǒng),解決了數(shù)據(jù)增長和處理性能需求之間存在的瓶頸問題。Spark能夠滿足醫(yī)學信息處理中以交互式查詢和迭代計算為代表的統(tǒng)計分析、數(shù)據(jù)挖掘、圖形計算等各種數(shù)據(jù)處理需求,可用于臨床轉(zhuǎn)化醫(yī)學研究、基于海量原始數(shù)據(jù)的實時衛(wèi)生統(tǒng)計和輔助決策、文獻挖掘、流行病預警和預測,加速從發(fā)現(xiàn)知識到實際應用的過程,將在生物醫(yī)學大數(shù)據(jù)處理分析中得到更廣泛和深入的應用。
[1] MW Davidson, DA Haim, JM Radin. Using Networks to Combine “Big Data” and Traditional Surveillance to Improve Influenza Predictions[J/OL].[2015-01-29].http://www.nature.com/srep/2015/150129/srep08154/full/srep08154.html.
[2] Miguel Helft.大數(shù)據(jù)能治愈癌癥嗎?[EB/OL].[2014-10-29]. http://www.fortunechina.com/business/c/2014-10/29/content_225089.htm.
[3] OBAMA ADMINISTRATION: Big Data Research and Development Initiative[EB/OL].[2012-03-30].http://www.whitehouse.gov/sites/default/files/microsites/ostp/big_data_press_release.pdf.
[4] RC Taylor. An overview of the Hadoop/MapReduce/HBase framework and its current applications in bioinformatics[J].BMC Bioinformatics,2010,11(Suppl 12):S1.
[5] MC Schatz. Cloudburst: Highly Sensitive Read Mapping with Mapreduce[J]. Bioinformatics,2009,25(11):1363-1369.
[6] S Leo, F Santoni, G Zanetti. Biodoop: Bioinformatics on hadoop[C]//Proceedings of the 38th International Conference on Parallel Processing Workshops (ICPPW 2009). Vienna, Austria: 2009:415-422.
[7] A Matsunaga, M Tsugawa, J Fortes. CloudBLAST: Combining Mapreduce and Virtualization on Distributed Resources for Bioinformatics Applications[C]//IEEE 4th International Conference on eScience (eScience 2008). Indiana,USA:2008:222- 229.
[8] H Lee, Y Yang, H Chae, et al. BioVLAB-MMIA: A cloud environment for microRNA and mRNA integrated analysis (MMIA) on Amazon EC2[J]. IEEE Transactions on NanoBioscience,2012,11(3):266- 272.
[9] AP Heath, M Greenway, R Powell, et al. Bionimbus: a cloud for managing, analyzing and sharing large genomics datasets[J]. J Am Med Inform Assoc,2014,21(6):969-975.
[10] J Zhang, DW Chen, JH Zhao, et al. RASS: A Portable Real-time Automatic Sleep Scoring System[C]// Proceedings of 2012 IEEE 33rd Conference on Real-Time Systems Symposium(RTSS). Washington D.C., USA:2012:105-114.
[11] Explorys Co.Ltd. Unlocking the Power of BIG DATA to Improve Healthcare for Everyone [EB/OL].[2015-01-20].https://www.explorys. com/docs/data-sheets/explorys-overview_factsheet.pdf.
[12] M Zaharia, M Chowdhury, M.J. Franklin, et al. Spark: Cluster Computing with Working Sets[C].//Proceedings of the 2nd USENIX Workshop on Hot Topics in Cloud Computing. Boston, USA,2010.
[13] M Zaharia, M Chowdhury, T Das, et al. Resilient distributed datasets: a fault-tolerant abstraction for in-memory cluster computing[C]//Proceedings of the 9th USENIX conference on Networked Systems Design and Implementation. San Jose: USENIX Association,2012:2-2.
[14] M Chowdhury. Performance and Scalability of Broadcast in Spark[EB/OL].[2014-10-08].http://www.cs.berkeley.edu/~agearh/ cs267.sp10/files/mosharaf-spark-bc-report-spring10.pdf.
[15] S Agarwal, A Panda, B Mozafari, et al. Blink and It’s Done: Interactive Queries on Very Large Data[C]//Proceedings of 38th International Conference on Very Large Databases (VLDB 2012). Istanbul, Turkey,2012:1902-1905.
[16] L Haoyuan, G Ali, Z Matei, et al. Tachyon: Reliable, Memory Speed Storage for Cluster Computing Frameworks[C]// Proceedings of the ACM Symposium on Cloud Computing(SOCC '14). Seattle, Washington, USA,2014:1-15.
[17] D Patterson. Spark meets Genomics: Helping Fight the Big C with the Big D [EB/OL].[2015-02-25].http://spark-summit.org/2014/ talk/david-patterson.
[18] Z Matei, William J. Bolosky, C Kristal, et al. Faster and More Accurate Sequence Alignment with SNAP[EB/OL].[2015-02-25]. http://arxiv.org/abs/1111.5572.
[19] M Massie, F Nothaft, C Hartl, et al. ADAM: Genomics Formats and Processing Patterns for Cloud Scale Computing[EB/OL]. [2013-12-15].http://www.eecs.berkeley.edu/Pubs/TechRpts/2013/ EECS-2013-207.html.
[20] A Talwalkar,J Liptrap,J Newcomb, et al. SMASH: A Benchmarking Toolkit for Human Genome Variant Calling[J]. Bioinformatics, 2014,30(19):2787-2795.
Big Data Processing Platform Spark and Its Biomedical Applications
FAN Wei-wei1,2, ZHAO Dong-sheng1*
(1. Institute of Health Service and Medical Information, Academy of Military Medical Sciences, Beijing 100850, China; 2. Information Department of 309 PLA Hospital, Beijing 100091, China)
With the rapid development of life sciences and medical informatization, an explosive growth trend of biomedical data has appeared, whose processing has the problems of a large mount of data, complex multi-dimensional relations and high interactive response demands. There are some defects in biomedical big data processing by using traditional database and Hadoop. Spark is a novel open-source big data platform based on memory computation, which has abundant programming interfaces, general processing framework and pluralistic operation modes. This article introduced the key technologies and features of Spark, combined analysis of characteristics of biomedical big data and successful cases of Spark, and discussed the applicability and potential advantages of Spark in the biomedical big data processing.
big data; Spark; medical research; biomedical informatics
10.3969/j.issn.2095-5707.2015.02.001
(2015-02-27;編輯:張華敏)
軍隊后勤科技“十二五”重點項目(BS211R008,BS212J009)
范煒瑋,工程師,研究方向為醫(yī)學信息學。E-mail: vivianfan_81@139.com
趙東升,研究員,研究方向為生物醫(yī)學信息學。E-mail: dszhao@bmi.ac.cn