影像大資料:ArcGIS Image Server
AI(人工智慧)大概是當前技術圈最火的風向,地理大資料和AI碰撞產生了一個新的概念GeoAI。GeoAI時代,ArcGIS為使用者和開發者提供了三個框架:
(1)地理處理框架(GP)
(2)空間大資料計算
(3)機器學習(ArcGIS Pro中自帶機器學習工具,10.6版本中集成了微軟 CNTK、谷歌TensorFlow等深度學習框架)
每一個框架都是很複雜的,這裡不詳細討論每一個框架,重點討論ArcGIS的空間大資料計算框架中的RA工具。
1.大資料
大資料的定義很多,通常認為大資料符合5個V特徵:Volume(大量)、Velocity(高速)、Variety(多樣)、Value(低價值密度)、Varacity(真實性)。大資料技術基本就是為了處理傳統的單機尺度無法處理的資料而誕生的。
(1)HDFS(Hadoop Distributed FileSystem)
HDFS(Hadoop分散式檔案系統)解決的是大資料的儲存問題。傳統的檔案系統部署在單機上,不能跨機器,HDFS的檔案被劃分為多個獨立儲存的資料塊,通過HDFS,可以將大量的資料集(典型的HDFS檔案大小是GB到TB的級別)部署在叢集中。
(2)MapReduce/Spark
通過HDFS解決了大資料的儲存問題,接下來就是解決資料的處理問題。MapReduce和Spark都是為大規模資料處理而設計的快速通用的計算引擎。
MapReduce共分為兩個計算過程:MapTask+ReduceTask。以一個我在CSDN看到的例子說明【參考1】:要求是數出一堆牌中有多少張黑桃,假使使用MapReduce方法,步驟則為:
- 給所有人分配這堆牌
- 讓每個人數自己的牌中有多少黑桃,然後返回給你數量
- 你把每個玩家返回的數量相加,得到最後的結論。
當然MapReduce過程遠比這個複雜,但是原理是類似的,核心思想是大事化小處理,後合併結果,先拆分再合併。
Spark,擁有Hadoop MapReduce所具有的優點;但不同於MapReduce的是——Job中間輸出結果可以儲存在記憶體中,從而不再需要讀寫HDFS,可以理解為使得MapTask和ReduceTask之間的界限變模糊,資料交換過程更加靈活,因此Spark能更好地適用於資料探勘與機器學習等需要迭代的MapReduce的演算法。
(3)Hive
Hive簡直就是非程式設計師福音,MapReduce程式很複雜,而Hive的任務就是用類似SQL的語言快速實現MapReduce過程(SQL大法好)。
(4)Yarn
上述的(1)(2)(3)大致組成了一個數據倉庫的框架,此外還有一些特製的系統元件,如ZooKeeper、獨立的KV Store等等,因此需要一個運算資源排程系統(Yarn)去管理這些工具。HDFS、MapReduce以及Yarn則構成了Hadoop的核心元件【參考2】:
2. ArcGIS Image Server
2.1 架構
ArcGIS Image Server是ArcGIS平臺實現大規模影像管理、共享與應用的伺服器產品,支援基於ArcGIS鑲嵌資料集的影像釋出能力,支援基於Web端的實時動態處理與分散式的柵格大資料分析,即主要提供動態影像服務和分散式的柵格大資料分析(RasterAnalytics)兩大核心能力。
下圖是Image Server的系統架構【參考3】:
(1)資料層:儲存在檔案、GDB中的資料都可以通過ArcGIS Image Server釋出為動態影像服務;這些資料和服務可以作為RasterAnalytics(RA)分析的資料來源,同時還需要分散式的柵格儲存儲存分散式計算結果;
(2)伺服器層:動態影像服務釋出和RA分散式計算
(3)客戶端:多端呼叫,目前整合柵格大資料分析工具的客戶端包括ArcGIS Pro、Portal for ArcGIS(Map Viewer)、ArcGIS Rest API、ArcGIS Python API。
2.2 配置
具體的配置步驟可以參考我的部落格,裡面對GA的配置過程比較詳細,RA不是很詳細:https://blog.csdn.net/u012599377/article/details/81096627。
配置RA柵格分析,依賴3個主要部分:Base ArcGIS Enterprise、ArcGIS Image Server的柵格分析、ArcGIS Image Server的影像託管伺服器(其中包含柵格儲存,用於儲存分散式計算結果)。
1.Base ArcGIS Enterprise:
包含4個核心元件:ArcGIS Server、Portal、Data Store以及Web Adaptor,具體安裝可參考部落格Enterprise部分:
2.最小柵格分析系統
官方指導文件上註明了需要3個元件,其中包含Image Server柵格分析伺服器以及Image Server影像託管伺服器,但是我在嘗試安裝的時候,發現Image Server柵格分析伺服器和影像託管伺服器可以使用同一個,因此就構成了一個最小的柵格分析系統:
3.官方指導文件上的柵格分析系統配置:
示例:以我自己的安裝為例(Vmware Workstation 14):
(1)安裝前設定
①安裝4個Windows Server 2016 DataCenter,需要保證配置完全一致(win server2012 R2,安裝的時候需要打補丁,會稍微麻煩些)
②設定靜態IP,新增hosts映像
③設定共享資料夾(後面會用到UNC路徑)
(2)安裝過程:
①主機1(server0.esrichina.com):
- 配置Base Enterprise
- Data Store選擇關係型和切片快取
②主機2(server1.esrichina.com):
- 安裝Image Server,作為柵格分析伺服器
- 配置Web Adaptor,和主機1的Portal進行託管
- Server Manager介面,註冊柵格儲存(必須註冊,否則無法新增柵格分析伺服器)
③主機3(server2.esrichina.com):
- 安裝Image Server,作為影像託管伺服器
- 配置Web Adaptor,和主機1的Portal進行託管
④主機4(server3.esrichina.com):
- 安裝Data Store,註冊到主機3的Server中,型別選為關係型和切片快取(關係型必選)
(3)Portal設定
- 設定server1作為Hosting Server
- 設定server2作為柵格分析伺服器
- 設定server3作為影像託管伺服器
以上是執行柵格分析的總體配置過程,期間會遇到各種問題,只能見招拆招,大致方向對了問題就不大。
2.3 使用RA
分散式柵格計算工具RA支援多端呼叫,Portal、ArcGIS Pro、Rest api等,也可以作為一個安裝是否成功的驗證。
1. ArcGIS Pro呼叫RA
【分析】->【柵格分析工具】或者右邊欄地理處理中的【門戶】->【柵格分析工具】
2. Portal呼叫RA
【主頁】->【我的地圖】->【分析】->【柵格分析】
(3)Rest api
地址:https://localhost/arcgis/rest/services/System/RasterAnalysisTools/GPServer
(4)ArcGIS api for Python
ArcGIS api for Python不同於ArcMap中的Arcpy,他的定位更傾向於Web端,但是目前我瞭解還不夠深,相對應用也比較少,目前還沒有什麼心得,等後期學習了單寫一篇pyhton api。
2.4 安裝過程中遇到的坑
ArcGIS Image Server作為ArcGIS新推出的大資料產品,相關文件非常非常非常非常少,安裝過程中遇到各種各樣的問題,大概記錄了一些我還記得的問題,希望能有所幫助。
1.Windows Server 2016 Data Center安裝Web Adaptor,Web Adaptor安裝完會自動彈出設定視窗,但是返回404
解決:預設開啟的網址是:https://localhost/arcgis/webadaptor,將localhost修改為主機名,比如將localhost替換成server1.esrichina.com即可解決。
2.推薦使用Chrome,有時候IE會打不開頁面
3.Data Store儲存型別選錯,重新配置Data Store時,需要先解綁Server和Data Store
解決:登入https://自己的登入名/arcgis/admin/login,解綁Data Store
4.Portal新增Server時,報錯不通過 Web Adaptor 訪問門戶時,將禁用聯合伺服器
解決:去掉網址中的埠,例如server0.esrichina.com:7443改成server0.esrichina.com,重新登入即可。
5.Portal繫結server錯誤,重新繫結報錯
解決:需要先解綁,再重新繫結,解綁地址:
https://自己的登入地址/arcgis/portaladmin/federation/servers
……還有一些問題,等整理好了再補充。
2.5 結尾
大資料、雲端計算、AI、區塊鏈……技術在不停的發展,傳統的地理學和資訊科技碰撞迸發出大量的火花,新技術正在給地理學帶來變革,不時刻保持學習,早晚會被淘汰。
路漫漫其修遠兮,吾將上下而求索。
歡迎關注我的微信公眾號,基本不更新:gis小僧