李永毅
(長治學院計算機系,山西長治046011)
?
基于HBase的海量DICOM醫學影像存儲系統的設計與研究
李永毅
(長治學院計算機系,山西長治046011)
文章結合傳統醫學影像存儲的不足和云計算的特點,提出了基于HBase的醫學影像存儲方案,結果表明基于HBase的DICOM影像數據庫能有效解決傳統PB級醫學影像存儲及醫療信息資源共享問題。
HBase;Hadoop;數據庫;云計算;醫學影像
隨著醫療信息化的發展,各類醫院信息化程度有了一定的發展,但是由于我國醫療資源分布不平衡,一些相對落后區域的醫院信息化程度不高。如何使發達區域的醫療信息資源得到充分利用,滿足區域各級醫院的需求,對目前的醫療服務有重要的實踐意義。傳統醫學影像存儲于PACS服務器中,PACS服務器主要是以集中式存儲醫學影像。醫學影像數據的傳輸、存儲、查詢通常以單機運算為主,每個醫院每年產生的PB級海量醫學影像給該架構的服務器帶來了負載均衡、數據吞吐量、檢索速度、數據共享等問題。云計算融合了分布式并行計算、網絡存儲、負載均衡等多種傳統計算機和網絡技術,以其獨特的擴展性、廉價性及容錯性受到廣泛關注[2]。云計算的特點彌補了傳統醫學影像存儲的不足。結合目前成熟的云計算架構,采用基于Hadoop云架構下的HBase數據庫存儲醫學影像為醫療信息的共享提供了理論支持及解決方案。
2.1Hadoop概述
Hadoop是目前一個相對成熟的開源云計算平臺,包括并行計算系統MapReduce、分布式存儲系統HDFS,YARN集群資源管理與調度系統等[3]。Hadoop的集群系統可以實現幾臺甚至幾千臺的大規模分布式存儲與并行計算,為提高計算吞吐量、海量數據存儲、并行計算、負載均衡、海量數據資源共享等提供了成熟的解決方案。
2.2HBase概述
HBase是一個可靠性高、面向列式存儲、擴展性好的分布式存儲系統。Hadoop分布式架構平臺下的HBase可利用廉價PC Server搭建起大規模存儲集群,HBase適應半結構或無結構數據存儲[5]。HBase利用HDFS作為其文件存儲系統,利用Hadoop MapReduce來處理HBase中的海量數據,利用Zookeeper作為協調工具[6,7]。
2.2.1HBase的數據模型
HBase中的表由行和列族(row family)組成[8]。每行由RowKey關鍵字作為行的索引,列族又是由若干個列組成,由行和列族中的列確定了HBase中的Cell單元,每個Cell單元存儲多個版本的數據[9]。每個版本由時間截索引。圖3是一個HBase邏輯視圖示例。RowKey是行鍵,病人信息是列族,病人信息下的列族又包含病人姓名、性別等列。
2.2.2HBase的物理存儲

圖1 HBase的物理存儲
如圖1所示,HBase中的表按行分片,每到一定數量的行就分在一個Region中。每個Region由一個或多個Store組成,一個Store保存一個列族(ColumnFamily)數據。每個Store由0到多個StoreFile組成,Store是對HFile的簡單包裝,HFile是真實存儲在HDFS文件系統上的數據格式。HBase中的表按RowKey關鍵字排序,每個表隨著數據的增大又分為多個Region,每個Region存儲到一個Region Server上[10]。
2.2.3HBase的系統架構
HBase系統架構如圖2所示。

圖2 HBase的系統架構
HDFS是Hadoop Distributed File System的縮寫形式,是一種分布式文件系統,具有存儲量大、容錯性好等特點,該系統部署在低廉硬件上的架構模式[11]。HDFS是Hadoop項目存儲框架的核心組成部分,為分布式云計算提供了存儲支撐。HBase中的數據最終以文件形式存儲在HDFS系統中。
ZooKeeper是一個高吞吐的分布式協調系統,提供的分布式集群管理機制可以設計出多種多樣的分布式數據管理模型。在HBase中用于HMaster服務器集群中活動服務器的選舉,通過原子廣播機制保證了各個Server之間的同步。
HBase由Master和RegionServer兩部分組成,其中Master負責啟動多個HMaster,通過ZooKeeper管理,某一時刻只有一個活躍的HMaster。Master負責監控Region Server的上線和下線及RegionServer的負載均衡狀況,并通過心跳機制匯報給ZooKeeper。
RegionServer維護Master分配的Region,當Region信息逐漸變大并超過某個閾值時,進行Region分割。RegionServer負責數據的讀寫,最終將數據寫入HDFS系統或者從HDFS系統讀取需要的數據。
首先客戶端向ZooKeeper發出讀寫請求,ZooKeeper接收到客戶端請求后,通過查詢ZooKeeper保存的HBase中Region的尋址入口信息,定位請求數據的Region Server位置,RegionServer通過心跳機制匯報RegionServer運行資源等信息給ZooKeeper,Client然后與RegionServer進行信息交互,RegionServer負責將數據存入Hadoop的HDFS文件系統中。
ZooKeeper是通過如下方式定位到需要讀寫的RegionServer服務器。首先從Zookeeper找到ROOT表所在位置,通過HBase中ROOT表找到META表所在位置,然后再從META表定位到要讀寫數據Region所在的RegionServer。
由上所述,在HBase中對數據進行讀寫的過程中并不需要Master的直接參與,客戶端讀寫數據時,連接的服務器是ZooKeeper服務器,ZooKeeper服務器通過上述尋址方式定位RegionServer服務器。
2.3DICOM文件
醫學影像文件是遵循DICOM標準的圖像文件,與普通文件不同,DICOM醫學影像文件除了影像信息,還包含其它豐富的信息,比如病人姓名、性別、檢查部位、影像模態、檢查時間等信息[12],DICOM文件是嵌套式數據結構,在PACS系統中通常以文件形式存儲。通常一個病人有多個檢查項目,每個檢查有多個研究方面,每個研究又包含多種模態醫學圖像,如CT機器產生的CT模態圖像通常是一個序列圖像。通常一個三甲醫院一天產生幾十G醫學圖像,這就要求PACS服務器必須存儲海量復雜結構的醫學影像。
文章使用偽分布模式搭建Hadoop、Zookeeper、HBase服務器。采用Eclipse進行項目源代碼開發,使用dcm4che2-Java Library for DICOM工具包對DICOM影像文件進行傳輸與解析,將DICOM文件解析的常用信息及DICOM文件本身存入HBase數據庫[13]。DICOM文件的基本信息為HBase文件多條件查詢提供了基礎。
3.1DICOM醫學影像數據庫表的設計

圖3 DICOM醫學影像數據庫表
如圖3所示,將解析后的DICOM文件常用基本信息存入HBase數據庫,RowKey通過病人姓名和病人身份證號字符串生成,其病人信息、圖像信息是列族,病人姓名、病人性別、病人年齡等信息為列信息,在檢索數據時可以通過多條件查詢定位需要的基本信息或圖像,從而為以后圖像的查閱提高了檢索速度。
3.2基于HBase的DICOM醫學影像數據庫的實現

圖4 數據庫的創建
3.2.1數據庫的創建
如圖4所示,通過調用Configuration實例對象連接ZooKeeper服務器,然后傳遞Configuration參數給HbaseAdmin實例對象,然后建立HtableDescriptor實例對象,并通過該實例對象的addFamily方法添加列族,最后通過HbaseAdmin實例對象的createTable方法創建數據庫表。

圖5 數據庫中數據的寫入

圖6 數據庫中數據的查詢
3.2.2數據庫的數據寫入
數據庫的數據寫入如圖5所示,第一種方案是寫入少量數據,通過dcm4che2-Java Library for DICOM工具中的傳輸解析模塊接收客戶端傳來的DICOM文件,并解析DICOM文件中的常用信息,然后傳遞行健參數構造Put對象,通過給Put對象的add方法傳遞要插入的列族,限定符,時間戳等參數構建相應的行健、列族、列等相關信息,使用HTable實例對象定位要插入數據的表,使用HTable的put方法寫入數據庫。第二種方案是結合MapReduce寫入批量數據到HBase數據庫,通過并行性寫入數據提高了醫學影像的寫入速度,提高了聯機在線存儲的速度。
3.2.3數據庫的數據查詢。
數據庫的數據查詢如圖6所示,通過HBase提供的get和scan兩種方法進行查詢,通過構建行鍵、鍵值、列值等多種類型過濾器,運用HBase提供的get和scan兩種方法進行客戶需要的各種查詢請求,為提高HBase的檢索速度與檢索的并行性,結合MapReduce進行數據查詢,從而滿足了醫療信息共享需求的并行性醫學圖像的獲取,提高了聯機在線檢索的速度。
海量醫學影像數據存儲是現代醫療資源整合的基礎及關鍵部分。遵循DICOM標準的醫學影像是嵌套式文件結構,不便于在傳統關系型數據庫系統中存儲,通常以文件格式存儲在PACS服務器。由于文件存儲的上述特點,使DICOM文件的歸檔管理產生數據量大、查詢緩慢的缺點,不利于醫療信息化發展。而HBase是一種非關系型的數據庫結構。結合DICOM文件與HBase數據庫兩者的特點,利用HBase存儲DICOM影像文件為醫療信息共享的并行性提供了可行性方案。利用HBase進行聯機實時查詢,為遠程醫療及海量數據挖掘提供支撐。
[1]翟紅英.基于OpenGL的DICOM醫學圖像讀取和顯示王旭[J].計算機應用2009,29(z2):126-127.
[2]魏寒冰,葉少珍.基于云計算的醫學影像存儲與傳輸系統的設計[J].電子技術應用,2013,39(12): 145-148.
[3]王海飛.基于Hadoop云的數據庫營銷海量數據處理與挖掘的研究[D].浙江:浙江理工大學, 2013.
[4]張洪磊.基于Hadoop的醫院數據中心系統設計與實現[D].浙江:浙江大學,2014.
[5]劉桂蘭,王書海.云數據庫體系架構研究分析[J].河北省科學院學報,2013,30(2):75-80.
[6]王賓.Hadoop集群的部署與管理系統的設計與實現[D].南京:南京大學,2013.
[7]何芳.云計算平臺下海量圖像索引系統的研究與實現[D].西安:西安電子科技大學,2012.
[8]況亞萍.云計算技術在協同過濾推薦中的應用研究[D].北京:中國科學技術大學,2014.
[9]葛秀豪.基于SaaS模式的流程引擎和規則引擎服務模型研究[D].南京:南京郵電大學,2011.
[10]張萌.基于hadoop的網絡安全日志審計系統關鍵技術研究[D].哈爾濱:哈爾濱工程大學,2013.
[11]崔力升.G/S模式下分布式文件系統中數據調度的應用研究[D].成都:成都理工大學,2011.
[12]王昊.基于GPU的肝臟三維可視化系統的設計與實現[D].沈陽:東北大學,2010.
[13]陸楊.基于多級檢索的單模態醫學影像檢索系統研究[D].西安:第四軍醫大學,2009.

(責任編輯張劍妹)
Li Yong-yi
(The Computer Department of Changzhi University,Changzhi Shanxi 046011)
TP392
A
1673-2014(2016)02-0036-04
2015—10—26
李永毅(1979—)男,山西長治人,碩士,主要從事數字圖像處理、云計算、軟件架構等方向研究。