翟 永,劉 磊,顧學明,高景強,趙薇蔚
(1. 國家基礎地理信息中心,北京 100044; 2. 甲骨文(中國)軟件系統有限公司,北京 100020)
大規??臻g數據處理模式和系統集成
翟 永1,劉 磊1,顧學明2,高景強2,趙薇蔚2
(1. 國家基礎地理信息中心,北京 100044; 2. 甲骨文(中國)軟件系統有限公司,北京 100020)
隨著地理信息需求推動下的空間數據采集能力的發展,空間數據的生產規模和數據量呈爆發式增長,直接帶來了對大規??臻g數據處理的需求。本文基于IT并行計算和大數據技術的發展成果,探討了這些技術在大規??臻g數據處理上的應用及相應的IT系統集成思路,提出了基于數據庫的并行空間數據處理方法,并根據第一次全國地理國情普查項目需求作了深度驗證和分析。
大數據;并行處理;空間數據庫;庫內處理
隨著地理信息需求推動下的空間數據采集能力的發展,空間數據的生產規模和數據量呈爆發式增長,帶來了對大規??臻g數據處理的需求,采用傳統的C/S模式進行大規模的空間數據處理已經不能滿足要求。
21世紀初,出現了像素工廠的概念,提出了大規模遙感數據并行處理方法,出現了各種成熟商業化解決方案,但對于大規模GIS矢量數據的組織處理及大規模遙感影像管理和提取處理方法卻少有提及。目前,高性能并行計算在各個領域得到廣泛應用,在此基礎上云計算、大數據等商業化概念得到廣泛關注和推廣,這些都為大規模空間數據處理提供了理論和實踐的基礎。
大數據(big data)起源和最典型的應用是利用網絡特別是社交網絡的日志,對其進行處理和挖掘,洞察其中的規律,指導商業行為和決策。實際上大數據的概念應用和技術要比這廣義得多。綜合Wikipedia和百度百科大數據的定義和描述,大數據是指無法在可承受的時間范圍內,用常規軟件工具或傳統方法去完成捕捉、管理和處理的數據的集合。大數據需要特殊的技術來處理,包括大規模并行處理(MPP)數據庫、數據挖掘和算法、語義分析、機器學習及相應的IT構架技術和計算資源,如分布式的文件系統、數據庫和存儲。
本文主要探討的是利用大數據的思路和技術解決大規??臻g數據的處理和分析問題,并結合地理國情普查項目的實際情況對這些技術進行驗證。
大數據處理技術是由一系列技術組成的,具體如下。
并行計算(parallel computing)是指同時使用多種計算資源解決計算問題的過程,是提高計算機系統計算速度和處理能力的一種有效手段。它的基本思想是用多個處理器來協同求解同一問題,即將被求解的問題分解成若干個部分,各部分均由一個獨立的處理機來并行計算。并行計算系統既可以是專門設計的、含有多個處理器的超級計算機,也可以是以某種方式互連的若干臺獨立計算機構成的集群。通過并行計算集群完成數據的處理,再將處理結果返回給用戶。
(1) 并行計算方法
并行計算首先要把任務分割成若干能獨立處理的部分,任務的分割包括水平分割和縱向分割兩種方法。所謂的水平分割是指把一個大任務分割成同類的子任務,由不同的處理單元同時處理,最后再把所有結果合起來形成一個最終結果。 這種并行也稱為空間上的并行。而縱向分割是指把計算過程分解為一個個串行的步驟,由不同的計算資源來完成。雖然對單子任務是串行的,但在多個子任務同時執行的情況下,各個計算步驟間可以并行起來,這也稱為時間上的并行。
通過時間上和空間上的并行的結合,可以使復雜任務能夠在更大規模的計算資源上得以調度和執行。
(2) 并行計算構架
并行計算模型很多,常用的有SMP(symmetric multi processing)、MPP(massive parallel processing)和Cluster集群。
SMP是采用多個處理器共享一套總線、內存和存儲,即在一臺計算機內有多個CPU或核。其瓶頸是受到總線、內存特別是存儲的限制。
MPP是通過多套獨立資源或多臺計算機,來共同完成一個任務,各CPU間不共享或很少共享資源。
集群技術通過網絡把計算資源搭建成一個集群,每臺計算機使用獨立的CPU、總線和內存,通過網絡對內存進行同步,以共同完成一個任務。
在模式的選擇上要根據應用的特點。SMP在多處理器多核構架服務器上得到廣泛采用;MPP能夠搭建更均衡的計算和處理平臺,理論上能支持更大規模;Cluster 模式在各個節點間相對有更多的資源共享和同步,規模越大代價越大,因此相對MPP來說受到一定的規模限制,但其能適合更復雜的處理,并在實時性和高并發上有優勢。
在實際的并行計算的構架中,往往是采用多種構架組合:SMP用在多進程和多任務的處理上,MPP更多地用于解決簡單任務如文字處理,存儲訪問等。而更復雜的任務需要復雜的并行算法,更多的協調和同步,采用Cluster模式。
傳統的空間數據庫處理把數據庫僅僅作為一個空間數據的組織管理的容器,數據處理通過數據庫客戶端完成,即客戶端逐條取出記錄,對記錄進行空間運算,再寫入數據庫,這就需要在客戶端和數據庫之間發生大量網絡傳輸,而且在通常情況下,客戶端不具備并行能力,只能采用單線程處理方式。
空間數據的庫內處理模式是指在數據庫內部實行空間數據處理,客戶端只需發出請求,并獲得最終處理狀態或結果。這樣做的好處是數據不需要在數據庫和客戶端間來回傳輸,而且利用數據庫的并行能力,可實行并行處理,極大提高了系統的處理能力,實現了大規??臻g數據處理。
除空間數據處理能力和并行機制外,還需要搭建與其匹配的資源和環境。這個環境要滿足空間數據處理對不同資源的依賴,包括CPU、內存、網絡和存儲等資源。
圖1是幾個數據庫生產環境中運行性能報告,報告中分別列出了前5個最耗時間的數據庫內操作,其中絕大多數來自用戶I/O,其次也有個別來自集群的等待。因此,在大多數沒有經過優化的生產環境中,數據庫的瓶頸不是來自于CPU,而是主要來自I/O和集群間的同步。

圖1 典型生產環境中資源瓶頸
在空間數據的處理場景中,數據入庫、空間索引建立、影像鑲嵌提取對存儲性能提出了更高的要求。圖2是在Oracle ExaData X3-2 1/2 rack上對2 TB的地表覆蓋矢量數據建立空間索引時的資源占用情況。在CPU只占70%的情況下, I/O帶寬資源消耗達到了6.2 GB/s。折算下來每個CPU核的處理能力要和1.8 GB/s的I/O帶寬匹配。

圖2 建立矢量數據空間索引是的資源占用
在大規??臻g數據處理平臺上除了計算上采用集群方式,存儲上也需要采用分布式或并行集群提高I/O能力,存儲網絡和通信網絡也需要采用和普通應用網絡不一樣的高帶寬、低延遲設備和協議。
空間數據庫也是關系數據庫,而Oracle是典型的企業級關系數據庫,因此本文主要以Oracle為例來具體討論大規??臻g數據處理的方法。同時Oracle 數據庫專用存儲ExaData Storage Server也是提升大規??臻g數據并行處理能力的一個環節。
Oracle RAC是Oracle的數據庫集群技術,在RAC集群上,一個SQL任務可以分割成對稱的子任務,并分配到不同的集群節點上執行。
SQL并行執行基于一個協調器(query coordinator,QC)和多個并行執行器(PX)服務進程。QC是啟動SQL語句的會話,而PX服務進程是每個并行執行的會話。QC把工作分發給PX服務器并執行最小量的、不能在并行服務進程中執行的部分。如圖3所示。

圖3 Oracle SQL并行處理
Oracle支持Select語句的查詢及其中的DDL和DML部分。Oracle并行處理可以限于同一臺服務器上,還可以跨不同的RAC結點,具有很好的橫向擴展能力。特別要指出的是,開啟并行處理功能既可以通過Hint,也可以通過全局的開關參數實現,不需要改變應用端應用,對應用透明。
Oracle的集群模式設計綜合了OLTP和OLAP需求,與純粹的MPP模式比起來其規模受到集群之間的通信瓶頸限制,需要通過更合理的并行算法克服這種不足。
Oracle Spatial是Oracle數據庫上的空間數據組織、管理和處理功能的擴展,除了支持OGC SQL MM /Spatial標準能力外, 還提供了GeoRaster柵格影像數據模型,可以實現正射糾正、柵格正射、物理鑲嵌、虛擬鑲嵌等地理影像處理能力,并被商業化GIS平臺(如ArcGIS)廣泛支持。Oracle Spatial的所有函數或過程不僅可以在并行環境下執行,而且大部分函數的內部也利用了并行特性。
存儲服務器(Oracle Storage Server)集群是Oracle為數據庫應用專門設計的分布式一體化可線性擴展的存儲系統,其結構如圖 4所示。

圖4 Oracle Storage Server智能存儲
(1) 計算能力縱向擴展
作為普通的SAN存儲,不管傳輸介質是什么,其上層協議都是SCSI,只能支持磁盤塊的讀寫。而存儲服務器則是專門為數據庫I/O設計,數據庫服務器以InfiniBand上的iDB協議與存儲服務器打交道, 存儲服務器可以感知數據庫在磁盤上的存儲內容,可以幫助數據庫服務器解析SQL條件、過濾并只傳輸符合條件的內容,在讀寫時對數據進行壓縮和解壓,以及對數據庫存儲塊建立存儲索引,提高記錄讀取有效性等。即原來只能通過計算節點做的事情,可以通過計算節點和存儲節點配合完成,實現了任務的縱向擴展,提高了整個集群的并行能力,在有效地減輕了計算節點壓力的同時減少了計算節點和存儲節點的數據傳輸。
(2) 存儲能力線性擴展
Oracle ExaData存儲服務器集群是區別于傳統SAN存儲的分布式存儲系統。每臺存儲節點都有單獨的CPU、網絡、磁盤和閃存加速卡。通過存儲服務器集群線性擴展,可以理論上無限擴展存儲的帶寬和IOPS(單位秒內的I/O次數)。
這種擴展能力得益于Oracle Automatic Storage Management (ASM),通過ASM,Oracle可以把多個存儲節點上的硬盤邏輯地組織成一個邏輯卷,這樣數據庫應用的I/O壓力就可以分布到不同的存儲節點上,從而大大提高了整體的I/O能力。除此之外存儲節點上的PCIe閃存,對I/O本身的優化也不容忽視。
總體來說Oracle ExaData上的Oracle Spatial空間數據庫集群綜合了SMP、MPP、Cluster技術的優勢,是一個軟硬件一體化的混合構架。在提供空間數據的高性能并行處理的同時,還可以提供良好的空間數據的OLTP能力,如空間數據查詢、編輯、可視化等。
Hadoop是Apache基金會所開發的分布式系統基礎架構。其主要實現了分布式文件系統HDFS(Hadoop distributed file system)和分布式并行計算框架MapReduce,另外在HDFS基礎上實現了一個叫HBASE的NoSQL類型數據庫, 可以把文本等半結構化數據映射成可以進行SQL操作的表的HIVE數據倉庫系統。
1) HDFS采用分布式及流的形式訪問,HDFS可以采用廉價的硬件進行線性擴展。
2) Hadoop提供了MapReduce的開源實現。通過MapReduce開發人員可以在集群上把一個大任務分割和映射(map),并發送到集群上的各個節點執行,然后把執行的結果收集起來合成一個(reduce)。并且Map和 Reduce可以遞歸執行。
3) HBASE是HDFS之上NoSQL數據庫,而Hive是在HDFS上的文件數據庫。NoSQL可以通過Key建立索引,Hive是沒有任何索引的。Hive支持用戶定義的格式,只要在原數據中描述即可。而HBASE需要特定的數據文件存儲,而且數據需要轉換到數據庫中。
Hadoop本身沒有特定的針對空間數據處理方式和算法,作為商業化的解決方案Oracle在Hadoop上提供了一個Big Data Spatial 產品。
第一次全國地理國情普查(簡稱地理國情普查)是國務院下達的全國性、全覆蓋的普查項目。國情普查數據庫的規??梢哉f是空前的,而需求上除了對數據的檢查校驗和入庫外,還需要在空間數據庫上實現統計和分析。
在確定數據庫建設和系統開發方案前對空間數據庫處理能力的測試和驗證是必不可少的。
首先需要明確思路,如若采用傳統的C/S模式來完成這個工作,則需要大量的客戶端資源和人力資源,而且受到網絡帶寬的限制。因此筆者確定采用服務器端的處理方式:數據文件集中存放在服務器高速存儲上,通過服務器程序進行批量入口,桌面安裝數據庫客戶端,用作管理、調度和監控,調優終端。其次采用并行SQL對空間數據庫操作,建立矢量數據索引、影像鑲嵌和金字塔建立、多邊形疊加分析、球面積計算等典型空間數據分析場景。最后,要確保服務器端處理模式和庫內處理結果能與GIS客戶端兼容,數據能被GIS識別和處理,處理功能能集成到GIS客戶端應用框架中。
表1為性能測試結果。

表1 空間數據處理和分析性能測試結果
高性能并行計算雖然理論很成熟,但在大規??臻g數據處理上的應用前景仍然方興未艾。
對大規??臻g數據的處理,首先要采用并行處理的模式,采用何種并行計算模型要與應用場景的需求一致。其次從具體的商業實現模式上看,很難用統一的標準去劃分模式,往往是各種模式的混合。
就國情地理普查的項目需求來看,采用Oracle Exadata和Oracle Spatial進行并行空間數據處理和分析顯然大大優于傳統處理方式。更重要的是采用Oracle Spatial可很好地與商業GIS系統兼容,并與現有數據生產流程過渡。
[1] 祝若鑫,劉陽,程見橋,等.基于云計算的空間矢量數據并行處理[J]. 測繪通報, 2015(3): 44-48.
[2] 李維良,王紅平,范鵬.基于并行預分割的高分辨率遙感影像多尺度分割[J]. 測繪通報, 2013(11): 29-32.
[3] 王凱, 曹建成, 王乃生, 等. Hadoop支持下的地理信息大數據處理技術初探[J]. 測繪通報 2015(10): 114-117.
[4] 翟永, 劉津, 劉磊,等. 國家基礎地理信息中心計算機和網絡系統建設[J]. 測繪通報, 2015(8): 20-23.
[5] ADVE S V,HART J C. Parallel Computing Research at Illinois: the UCPCRC Agenda[C]∥University of Illinois at Urbana-Champaign. [S.l.]:[s.n.],2008.
[6] 張林波. 并行計算導論[M].北京:清華大學出版社,2006.
[7] BUYYA R, BARKER M. Cluster Computing at a Glance [EB/OL].[2015-8-4]. http:∥academic.csuohio.edu/yuc/hpc00/lect/chapter-B1.pdf.
[8] LINSTEDT D E. Clustering, SMP and MPP in Very Large Data Warehouses (VLDWs)[EB/OL]. (2015-2-8). http:∥searchbusinessanalytics.techtarget.com/news/2240111416/Clustering-SMP-and-MPP-in-Very-Large-Data-Warehouses-VLDWs.
[9] Wekipedia. Big Data[EB/OL]. (2016-01-18)[2016-01-18]. https:∥en.wikipedia.org/wiki/Big_data.
[10] 百度百科. 大數據[EB/OL]. (2015-01-20)[2016-01-18]. http:∥baike.baidu.com/subview/6954399/13647476.htm.
[11] 百度百科. 并行計算[EB/OL].(2015-04-01)[2016-01-18]. http:∥baike.baidu.com/view/1666.htm.
LargeScaleSpatialDataProcessingMethodandSystemIntegration
ZHAI Yong,LIU Lei,GU Xueming,GAO Jingqiang,ZHAO Weiwei
翟永,劉磊,顧學明,等.大規??臻g數據處理模式和系統集成[J].測繪通報,2016(9):99-102.
10.13474/j.cnki.11-2246.2016.0304.
P208
B
0494-0911(2016)09-0099-04
2015-09-14;
2016-01-20
翟 永(1969—),男,教授級高級工程師,主要研究方向為計算機網絡系統集成開發與運行維護。E-mail:zhaiyong@ngcc.cn