范煒瑋,王虹,吳飛
解放軍第309醫院 信息科,北京 100091
基于Spark的醫療服務大數據統計平臺的應用
范煒瑋,王虹,吳飛
解放軍第309醫院 信息科,北京 100091
目的探索大數據處理方法及技術在醫療服務大數據領域中的應用,提高交互式統計計算效率,從而為醫療服務大數據的進一步挖掘和利用提供第一手的實踐資料。方法 梳理了醫療服務大數據的來源范疇、數據特征及其處理技術的發展,圍繞大數據時代下的醫療服務數據統計、分析及利用的功能和性能需求,并提出了一套基于Spark的并行計算解決方案。結果完成了醫療服務大數據交互式分析平臺的系統架構設計,以Spark計算平臺為基礎進行了統計系統原型的實現、對比和驗證。結論Spark能夠滿足醫療服務大數據處理中以交互式查詢為代表的統計分析的數據處理需求,同時也能滿足以迭代計算為代表的數據挖掘,圖形分析等數據處理需求,將在醫療服務大數據處理中得到更廣泛和深入的應用。
Spark;交互式分析平臺;醫療服務;醫療大數據;統計系統原型;數據挖掘
隨著計算機性能的指數增長(摩爾定律)、數據庫技術的普及以及網絡技術(移動終端)的發展,人們開始面臨數據的爆炸性增長,根據互聯網數據中心(IDC)《數字宇宙》研究報告預測,數據以每兩年翻倍的速度增長,到2020年全球新建和復制的信息量將高達44 ZB,是2012年的12倍[1]。醫療領域同樣如此,臨床醫療服務、醫學研究、健康管理和公共衛生等業務范疇產生的數據也呈爆炸式的增長。臨床醫療服務數據以電子病歷為代表。隨著醫療信息化的發展,電子病歷涵蓋了醫院和診所信息系統、實驗室系統、影像系統和健康檔案等多系統和端口數據。臨床醫療服務數據樣本量大,增長速度快,一家三甲醫院每年可產生上百萬條門診記錄、幾萬份住院病歷,且同時存在結構化、半結構化及非結構化的數據,具有典型的大數據特征。除影像數據外,其單個樣本的數據量不大,但描述樣本的信息復雜、關聯度強,是典型的“大樣本復雜關聯數據”。由此可知醫療統計工作已經進入了大數據時代,面臨巨大的挑戰。
隨著衛生統計的信息化發展,其采用的技術手段從簡單的統計工具如Excel,到專業的統計軟件SAS[2]、SPSS[3]和R[4],再到數據集離線分析的決策支持系統如數據倉庫、商務智能技術。其中,統計軟件適用于特定主題的分析活動,側重于科學合理的多因素實驗設計及統計學方法的應用,其處理的樣本量小、結構簡單且數據之間關聯性不強,難以支持大量數據、復雜關聯的數據統計分析。在數據庫中直接采用聯機事務處理[5]方式進行數據表的查詢統計,其操作模式簡單、易于操作,但對在線業務的干擾較大,一旦數據量增加、數據之間的關聯關系復雜,計算的性能下降很快,單靠提高服務器的性能難以保證統計效率,無法支持決策分析活動。商務智能則一般是采用建立數據倉庫的形式,雖然對系統日常運作的干擾小,但數據倉庫的數據更新一般周期較長,不能很好地體現數據的實時態勢[6-7]。綜上所述,目前的統計方法和系統還存在統計粒度不夠細、交互式查詢響應速度慢等問題,對輔助決策支撐能力不足。因而,醫療服務大數據處理的下一步發展方向將會是以大數據為技術支撐的分布式交互式統計分析決策支持平臺[8-11]。
大數據處理技術在醫療領域的應用不乏先例,如谷歌在2009年初通過用戶在網上的搜索記錄成功預測甲型H1N1流感的爆發,其“流感趨勢系統”通過結合傳統監測方法和大數據處理技術,可以預測美國未來一周的流感感染情況[12];美國的Flatiron Health公司,致力于通過收集和分析海量的臨床數據進行癌癥治療的分析和預測,該公司已獲得谷歌風投部門超過1億美元的投資[13];美國政府于2012年3月發布了“大數據的研究和發展計劃”,其中多個項目涉及醫療、公共衛生和生命組學研究[14]。
由中國計算學會大數據專家委員會和中關村大數據產業聯盟主編的《中國大數據技術與產業發展白皮書(2014)》[15]提出,互聯網、金融、電信、新媒體等領域的大數據產品創新此起彼伏,大數據的應用廣度將不斷拓寬,深度不斷加強,在電網、交通、醫衛、地信、政府、農業領域的大數據應用也明顯提速,由此帶來的積極影響將推動Hadoop、Spark等大數據處理新方法更廣泛地應用,實現從傳統的數據處理向大數據處理的過渡。
Hadoop作為大數據處理的代表技術,其MapReduce計算模型和豐富完善的產品生態系統涵蓋了底層存儲、分布式計算、分布式數據庫和分布式協同等諸多領域,大大簡化了大數據處理的流程,提高了處理效率[15]。由于MapReduce模型本身的限制,以及要保證計算的容錯性,Hadoop集群在計算過程中存在較大的I/O磁盤開銷,因此更適用于大數據離線計算的決策分析支持。Spark的出現彌補了Hadoop的不足,其內存計算模式能夠減少迭代計算中的I/O磁盤開銷,支持更快速和更加簡易地處理大數據。據相關研究證明,Spark在內存中數據處理速度為Hadoop的100倍以上[16]。目前,Spark在諸多領域已取代Hadoop,成為Apache基金會的頂級項目[17-20]。本研究搭建的Spark集群,是Spark平臺用于醫療服務大數據統計中的有益探索和成功嘗試,其快速計算特性是醫療服務大數據進一步挖掘和利用的堅實基礎。
為滿足醫療服務大數據分析的實時性和交互性需求,整個平臺需要具備數據抽取存儲、快速統計和結果展現等基本功能。
統計平臺處理的數據對象為醫療服務大數據,從這個角度來說,其在設計原則上應該滿足大數據系統和分布式計算的一般性原則,即可用性、容錯性和可擴展性。同時,為更好地動態掌握衛勤態勢,統計平臺應該滿足交互性查詢的基本原則,即實時性。
(1)可用性。本研究的目的是為衛勤部門提供交互性、用戶界面友好的數據分布統計,理論上需要零宕機提供有效的服務,因此其可用性變得十分重要。平臺使用經過多領域實例驗證的分布式文件系統HDFS、數據庫HBase及高效內存計算框架Spark,總體上能夠滿足99.9%以上的高可用率條件。
(2)容錯性。容錯性指該數據分析平臺在執行查詢過程中遭遇錯誤,特別是不可恢復的系統錯誤和硬件錯誤,以及算法在遭遇輸入、運算等異常時繼續正常運行的能力。本研究中的存儲系統對輸入系統的數據采取了多副本(采用HDFS默認的副本數量3)的放置策略,同時,使用了Zookeeper分布式一致性框架來保證上層應用系統的容錯性,只要系統有一半以上的物理節點處于可用狀態,那么系統就能夠持續正確的運行。
(3)可擴展性。可擴展性度量的是系統在進行擴展、增加硬件計算資源和存儲資源時,是否能夠自然和無縫地完成,同時使得上層應用的性能和正確性不受影響。平臺采用的底層存儲HDFS系統和計算框架Spark都提供了高擴展性,在實際操作中,只需要讓Master節點感知到新節點的存在,則可自然地實現集群的擴容,而當有節點失效時,Master節點也會自動地將任務和數據轉發至活躍的節點。整個過程對查詢和統計的其他性能不造成干擾。
(4)實時性。在處理龐大復雜的醫療服務數據時,能夠迅速對用戶的查詢和統計請求做出反饋,為決策支持提供數據基礎是對衛勤管理的一個巨大挑戰。傳統的醫療數據統計分析系統能夠實時地支持數據量較小的統計;對于數據量中等的統計,往往需要每周(或每天)從系統中定時地計算出來;一旦數據量加大、數據之間的關聯復雜,加之對異構數據的處理,則傳統的統計分析系統無法對突發數據實時地做出正確響應。因此,本研究從設計之初便采用了基于內存儲存的Spark分布式處理平臺,利用內存在讀寫速度上高于硬盤2~3個數量級的優勢,達到實時、高效的統計查詢和數據操作的目的。對于常用的數據結果集查詢操作,利用HBase高性能分布式數據庫進行緩存,進一步提高了可視化顯示時的讀取速度,能夠滿足大部分統計查詢需求。
本文論述的醫療服務大數據統計平臺體系架構,見圖1。從疾病、人群、時間、空間、環境因素等多維度,以圖表、時間序列、地圖、數據流、層級關系、矩陣和一些關聯信息圖的形式進行可視化的對比展現。應用Web服務器也可用于監控分布式文件系統HDFS,分布式數據庫HBase和Spark集群的運行狀態。

圖1 醫療服務大數據統計平臺系統架構圖
在基于云模型的平臺邏輯設計中,既有PaaS層提供數據存儲管理服務,又有SaaS層提供直觀的應用服務,如統計分析、結果查詢和交互式展現等。平臺邏輯設計,見圖2。該平臺分為底層存儲層、計算服務層和數據應用層。
數據ELT(Extract-Transform-Load)服務器主要負責從HIS、LIS、EMR等相關業務系統中采集信息,對數據清洗后導入分布式存儲模塊中。使用Sqoop作為數據ETL的工具,來實現醫療服務大數據的抽取、轉換、批量加載和增量更新。由于Sqoop支持以時間戳為單位的數據文件更新,非常適合醫療服務大數據這種時序性極強的數據。
分布式存儲由基于云的分布式文件系統(Hadoop Distributed File System,HDFS)和分布式數據庫HBase組成。原始的醫療服務數據清洗后被導入至HDFS文件系統中,啟動統計任務時,按照時間戳順序增量導入至內存,由計算框架提供分布式、并行高速計算服務。統計度量值的計算結果集合根據不同的主題存放在HBase數據庫中。HBase同樣也提供基于時間戳的更新功能,能夠為后續Web可視化展示提供快速的數據服務。
分布式內存計算框架Spark集群是平臺架構的關鍵組成部分。集群的規模可以根據需處理數據量的大小彈性增加,且節點之間為松耦合的關系,節點的增加和失效對整個平臺的上層應用,如統計查詢功能不造成影響。計算任務提交至Spark計算框架后,Master節點將任務分成不同的Task,并分發至各個Slave節點進行運算。在運算過程中,采取的是優先傳送任務的原則,即將任務分發至數據所在的物理節點。計算的結果集根據不同的主題,存儲在HBase數據庫中。大部分的統計分析需求都是可預知的,即可以根據衛生統計的指標體系進行預定義。同時,平臺也支持實時交互式的自定義指標的查詢分析。
應用Web服務器負責整個Spark集群和平臺的管理、控制與通信,同時負責接收臨時性的查詢請求。采用開源的Web框架Web2py讀取HBase數據庫中的計算結果集,

圖2 醫療服務大數據統計平臺邏輯設計
存儲位于系統的最底層,以HDFS和HBase作為存儲的載體,為查詢和統計算法的執行提供高效,可擴展的數據獲取能力,并且持久化計算的結果,為后續的計算和數據展示提供輸入。
計算部分是平臺的核心環節,采用Spark作為計算部分的主引擎,為整個計算過程提供無縫的擴展能力和與存儲系統交互的接口,并且提供比Hadoop更高效的執行效率,并將統計度量值結果集加入時間戳存儲在HBase數據庫中。
數據應用層以Web2py框架為基礎,通過Happybase插件與HBase數據庫進行交互,將計算結果集高效和多維度的動態展示在網頁上,并且能夠解析用戶提交的臨時性查詢統計需求,提交到Spark集群進行計算后返回結果,為用戶提供交互式的查詢能力。整個系統架構中,采用Zookeeper用來保證分布式存儲介質和計算節點之間的高性能通信。
根據系統的設計原則,對系統進行了各模塊的詳細設計及實現。醫療服務大數據統計平臺,采用的軟件開發及部署環境,見表1。
統計平臺使用了8個節點的分布式Spark集群,采用B/S模式,用戶能夠以訪問Web的方式,管理和控制Spark集群,根據任務需求,設定有效的內存資源參數,使其對內存的利用率達到最優。同時,還可以通過Web2py接口對預定義的查詢統計指標進行設置、分類,在任務提交后,能夠及時查看統計分析結果。平臺部分統計顯示結果,見圖 3~4。

表1 平臺軟件環境

圖3醫院門診量折線圖

圖4 醫院門診數據分類餅圖
本研究對真實門診數據進行抽樣,根據數據分布特性和系統要求復制抽樣數據,生成了6個不同規模的測試數據集。數據集1~6的樣本數呈級數增長,數量級分別為103、104、105、106、107、108。以科室門診量統計為例,縱向對比醫療數據統計平臺在使用不同節點數、統計分析不同大小數據集的計算性能,同時使用相同配置的Oracle數據庫進行橫向對比。對比測試結果折線圖,見圖5。
驗證結果表明,相較于Oracle,Oracle對中小規模數據集的統計計算具有優勢;但隨著數據集規模的增大,尤其是數據樣本量在千萬級別以上時,Spark集群能夠通過增加計算節點,得到近乎線性的并行處理能力的提升。

圖5 集群性能對比圖
基于Spark的醫療服務大數據統計平臺是大數據技術在衛生統計工作中的成功嘗試和有益探索,快速計算框架能夠滿足交互式的統計需求,能夠基于海量原始醫療數據提供以“天”為單位的細粒度統計模式,在處理的數據量增加時,可通過增加處理節點的方式線性提升平臺的統計分析處理能力,更好地為衛勤決策提供數據支持。以快速計算為基礎,Spark計算框架同時也能滿足以迭代計算為代表的數據挖掘,圖形分析等數據處理需求,將在醫療服務大數據處理中得到更廣泛和深入的應用。
[1] Turner V,Gantz JF,Reinsel D,et al.The digital universe of opportunities: Rich data and the increasing value of the internet of things[J].IDC Anal Futur,2014.
[2] 深圳國泰安教育技術股份有限公司,陳工孟,須成忠.大數據分析: R基礎及應用[M].北京:清華大學出版社,2015:181.
[3] 張沛武,梁彥冰.SPSS 19.0統計分析入門與提高[M].北京:清華大學出版社,2014:3.
[4] 薛毅,陳立萍.R語言實用教程統計分析軟件[M].北京:清華大學出版社,2014:13.
[5] 許薇,謝艷新.數據庫原理與應用[M].北京:清華大學出版社,2011:37.
[6] 陳文偉.數據倉庫與數據挖掘教程[M].北京:清華大學出版社,2006:15.
[7] 鄭建智,段占祺,應桂英.數據倉庫和OLAP技術在衛生統計決策支持系統中的應用[J].中國衛生信息管理雜志,2012,9(3):47-51.
[8] 段占祺,陳文,潘驚萍,等.衛生統計數據采集與決策支持系統發展概述[J].中國衛生信息管理雜志,2014,(4):414-418.
[9] 郭默寧,陳樾鵬,劉婉如,等.北京市衛生統計信息平臺建設設想[J].中國數字醫學,2008,3(9):54-56.
[10] 于石成,肖革新,郭瑩.大數據視角下的衛生統計工作[J].醫學信息學雜志,2013,34(10):47-50.
[11] 張曙光.衛生統計工作中的思考和展望[J].中國衛生信息管理雜志,2012,9(4):18-20
[12] Davidson MW,Haim DA,Radin JM.Using Networks to combine“big data” and traditional surveillance to improve influenza predictions[J].Sci Rep-UK,2015,5:8154.
[13] Miguel Helft.大數據能治愈癌癥癥嗎?[EB/OL].[2014-10-29].http://drplusit.com/?p=353.
[14] 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.
[15] 中國大數據技術與產業發展白皮書(2014)[M].北京:中國計算機學會(CCF),2014.12.
[16] Zaharia M,Chowdhury M,Das T,et al.Resilient distributed datasets: A fault-tolerant abstraction for in-memory cluster computing[A].Proceedings of the 9thUSENIX Conference on Networked Systems Design and Implementation[C].California:USENIX Association,2012:2.
[17] Patterson D.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] Zaharia M,Bolosky WJ,Curtis K,et al.Faster and more accurate sequence alignment with SNAP [EB/OL].[2015-02-25].http://arxiv.org/abs/1111.5572.
[19] Massie M,Nothaft F,Hartl C,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] Talwalkar A,Liptrap J,Newcomb J,et al.SM a SH: a benchmarking toolkit for human genome variant calling[J].Bioinformatics,2014,30(19): 2787-2795.
Application of the Big Data Statistics Platform for Medical Services Based on Spark
FAN Weiwei, WANG Hong, WU Fei Department of Information, The 309thHospital of Chinese PLA, Beijing 100091, China
ObjectiveThe purposes of this article are to explore the application data processing method and technology in the field of medical services big data, and to improve the efficiency of interactive statistical computing, so as to provide first-hand practical information for the further excavation and utilization of medical service big data.MethodsThis paper analyzed the medical big data sources, characteristics and the development of processing technology, and put forward a set of parallel computing solutions based on the Spark according to the functional and performance requirements of data statistics, analysis and usage.ResultsThis paper completed the system architecture design of the big data interactive analysis platform of medical service, and carried out the realization, comparison and verification of the prototype of the statistical system based on the Spark computing platform.ConclusionSpark can satisfy the processing requirements of medical service big data, and also can meet the processing requirements of data mining which is represented by iterative calculation, graphical analysis data processing. It will have more extensive and in-depth applications in medical service big data processing.
Spark; interactive analysis platform; medical service; medical big data; statistical system prototype; data mining
TP311.1
C
10.3969/j.issn.1674-1633.2017.11.035
1674-1633(2017)011-0136-04
2017-03-13
2017-09-08
國家支撐計劃課題(2015BAI01B14)。
王虹,高級工程師,主要研究方向為醫療信息化集成。
通訊作者郵箱:wang_hong@yahoo.com
本文編輯 王婷