时空大数据实践之GeoWave安装部署实践
2019獨角獸企業重金招聘Python工程師標準>>>
時空大數據實踐之GeoWave安裝部署實踐
????GeoWave是由國家地理空間情報局(NGA)與RadiantBlue和Booz Allen Hamilton合作技術開發的。GeoWave是一套類庫,利用分布式鍵值存儲的可伸縮性,從而有效的存儲、檢索和分析大量的地理數據集。目前是通過提供插件連接GeoTools和PDAL Accumulo基礎數據存儲。GeoWave的主要目標是成為流行的地理空間項目之間的橋梁,領域的分布式鍵值存儲和分布式處理框架。地理空間操作往往是后期工作,或不能與許多這樣的存儲和計算能力融合。通過GeoWave讓他們可以支持大眾的應用提供一流的工具。
????GeoWave的地理空間支持是建立在GeoTools擴展模型之上的,所以插件本身支持GeoServer,uDig和任何其他GeoTools兼容的項目,以及可以攝取GeoTools兼容的數據源。GeoWave是基于Accumulo開發實現而產生的。
????本文將針對GeoWave的技術特點,并結合官方文檔,展示軟件在安裝部署中完整的實踐過程。由于GeoWave提供的官方文檔有限而且可讀性不強,所以希望本文可以為有興趣實踐的同學提供一些幫助。
技術特點
????GeoWave作為一個地理空間處理工具集以及一個分布式的鍵值存儲系統,具有以下幾個技術特點:
??l??加入了基于Apache Accumulo多空間尺度的索引能力
??l??加入了基于Apache Accumulo的地理對象和空間操作方法的支持
??l??包含了一個GeoServer插件允許在Accumulo中的空間數據通過OGC標準的服務被分享或者被可視化
??l??提供了Map-Reduce?的輸入和輸出格式用于分布式的處理和分析地理空間數據
????GeoWave傾向于為Accumulo做更多工作,就像PostGIS為PostgreSQL做的一樣。
架構
???GeoWave架構的核心概念就是數據輸入、輸出輸出或者稱作攝取和查詢。在系統中固有兩種類型的數據,分別是要素數據(Feature Data)和元數據(metadata)。要素數據是實際的屬性和地理幾何對象的集合,他們被存儲下來用于后期的檢索。元數據描述了數據是如何被持久化在數據庫中的。元數據設計的目的是為數據檢索和發現而存儲必要的信息-所以一個現存的數據存儲不會和在一個特定的外部服務器或者客戶端上的一點配置關系在一起,而取而代之的是“自描述”。
關鍵技術
??? GeoWave的三個關鍵技術,索引、適配器、鍵值存儲。
索引
??? 通過GeoWave實現快速檢索數據的核心引擎是基于SFC(space filling curve)的索引技術。這種索引可以配置不同的參數,包括等級數、空間維度數、空間維度類型(有界或無界)、任意空間尺度的值域等等。
適配器
????為了存儲幾何對象,屬性和其它信息需要一種可以序列化和反序列化的表述格式。一種提供出來處理要素序列化和反序列化的接口。GeoWave提供一種默認支持的功能,可以實現了對GeoTools簡單要素類型的支持。更多的特殊的功能實現會晚些以接口的形式被提供出來。在適配器固化的數據表中存儲了JAVA CLASS的指向路徑。當數據被查詢以及結果被轉換為本地數據類型的時候,這些JAVA類會被動態的讀取。
??? GeoWave允許用戶定義自己的適配器,來對應各種數據的存儲以及數據形式,可以是數據庫,也可以是流數據。
Accumulo鍵值架構
????圖中描述了Accumulo數據存儲的默認對象結構。索引ID直接來自于SFC實現的分層結構。我們不強制要求數據ID是全局唯一的,但他們應該對于適配器是唯一的。因此成對出現的適配器ID和數據ID成為了一個對于數據元素的唯一定義。Row ID的存儲長度是4byte的整型,這可以完整的讀取Row ID,因為這些ID長度可變。副本的數量也是存儲在Row ID中,也為了通知這個元素重復數據過濾器是否需要暫時存儲,確保不重復發送給調用者。Row ID內部的適配ID是獨特的行ID,它作為一個整體的行迭代器被用于聚合字段可分配的過濾器。適配ID也被用作列家族機制僅供特定的適配器查詢來獲取相應的列家族。
部署方法
環境準備
???GeoWave部署使用的環境包括:
??? ?操作系統:Redhat 6.5
??? ?Java版本:Jre 1.7
??? ?相關軟件:Accumulo、Hadoop 2.6.3、Zookeeper 3.4.8
??? 由于GeoWave提供的主要是rpm包,為了方便部署系統采用了Redhat。在安裝運行GeoWave之前要安裝部署完成Hadoop、Zookeeper、Accumulo,順序最好是先完成Hadoop和Zookeeper的部署,最后部署Accumulo。
Hadoop安裝部署
???之前博客已經分享過相關內容,網上材料也比較多,不做贅述。說明一點,就是GeoWave是在單臺機器上部署,所以并沒有部署Hadoop集群,只是單機運行。
Zookeeper安裝部署
???可以參考以下文章:http://coolxing.iteye.com/blog/1871009。本次測試GeoWave采用了單機模式。
Accumulo安裝部署
??? 安裝部署可以參考在線用戶手冊,地址:http://www.nosqldb.cn/1373093083484.html
??? 用戶手冊內容比較全,這里將安裝部署的部分和相關設置做一介紹。
??? 一、安裝
??? ? 下載地址:https://www.apache.org/dyn/closer.lua/accumulo/1.6.5/accumulo-1.6.5-bin.tar.gz
??? ? 下載后,選擇目錄安裝Accumulo。這個目錄將被引用環境變量$ ACCUMULO_HOME。運行以下命令:
??? ??$ tar xzf accumulo-1.6.5-bin.tar.gz??? # unpack to subdirectory
??? ??$ mv accumulo-1.6.5-bin $ACCUMULO_HOME # move to desired location
????二、依賴關系
? ??Accumulo需要HDFS,ZooKeeper的配置,運行開始之前需要配置好。至少Accumulo Master節點和TabletServer機之間密碼應配置SSH。在集群中運行網絡時間協議(NTP),以確保節點的時鐘,不要太脫節,這可能會導致自動時間戳數據的問題。
????三、配置
????Accumulo需要配置編輯幾個Shell文件和XML文件。這些文件保存在?$ ACCUMULO_HOME / conf目錄下。其結構類似于Hadoop的配置文件。從$ ACCUMULO_HOME / conf/templates目錄中,將master,slaves,accumulo-env.sh,accumulo-site.xml文件復制到$ ACCUMULO_HOME / conf?目錄下。
????四、編輯accumulo-env.sh
????Accumulo需要知道在哪里可以找到它依賴于軟件。編輯accumulo-env.sh指定以下內容:
??????1.輸入的安裝目錄Accumulo為$ACCUMULO_HOME的位置
??????2.輸入您系統的Java回家$ JAVA_HOME
??????3.Hadoop的輸入位置為$ HADOOP_HOME
??????4.選擇的位置Accumulo日志,并將其輸入$ ACCUMULO_LOG_DIR“
??????5.輸入的ZooKeeper為$ZOOKEEPER_HOME的位置
????五、Accumulo設置
????指定適當的值$ACCUMULO_HOME/conf目錄中accumulo-site.xml中的下列設置:
<property> ????<name>zookeeper</name> ????<value>localhost:2181</value> ????<description>list?of?zookeeper?servers</description> </property>
????這使找到的ZooKeeper Accumulo。Accumulo使用ZooKeeper的協調過程,并有助于敲定TabletServer失敗之間設置的。
<property> ????<name>walog</name> ????<value>walogs</value> ????<description>local?directory?for?write?ahead?logs</description> </property>
????Accumulo預寫日志記錄所有變更表,然后將它們提交到表。“walog設置指定預寫日志寫入到每臺機器上的本地目錄。這個目錄應該存在所有機器上作為TabletServers的。
<property> ????<name>instance.secret</name> ????<value>DEFAULT</value> </property>
????實例需要一個加密,使服務器之間的安全通信。配置你的密碼,并確保不向其他用戶可讀,accumulo-site.xml文件。
可以修改某些設置通過Accumulo shell,并立即生效,但一些設置需要一個重新啟動過程才能生效。
????六、初始化
????必須初始化Accumulo創建的結構,它在內部使用集群中配置的數據位置。HDFS是必須要配置的,運行之前Accumulo可以初始化。
????HDFS開始后,可以進行初始化通過執行?$ ACCUMULO_HOME /bin/ accumulo init。這個腳本會提示輸入Accumulo實例名稱。實例名稱是用來確定一套表和特定于實例的設置。然后,該腳本將一些信息寫入到HDFS,所以Accumulo可以正常啟動。
????初始化腳本會提示你設置root密碼。一旦Accumulo初始化后,就可以開始。
????八、運行
????確保配置好Hadoop集群中的所有機器,包括訪問共享HDFS實例。確保HDFS,ZooKeeper的運行。請確保ZooKeeper的配置和集群中的至少一臺計算機上運行。啟動Accumulo使用.bin/start-all.sh腳本。
????為了驗證,運行Accumulo,檢查“狀態”頁面監控下?。此外,shell可提供一些信息表通過讀取元數據表的狀態。
GeoWave安裝部署
????GeoWave提供了RPM Repo的軟件安裝包。可以通過yum –enablerepo=geowave的命令來查詢軟件包的更新以及下載安裝。具體的可參考命令如下。
??# In the examples below the rpm name geowave-$VERSION-VENDOR_VERSION would be adjusted as needed
??rpm -Uvh http://s3.amazonaws.com/geowave-rpms/release/noarch/geowave-repo-1.0-3.noarch.rpm
??yum enablerepo=geowave search geowave-0.8.7-cdh5
??# Install GeoWave Accumulo iterator on a host (probably a namenode)
??yum enablerepo=geowave install geowave-0.8.7-cdh5-accumulo
??# Update
??yum enablerepo=geowave install geowave-0.8.7-cdh5-*
?
????geowave-repo-1.0-3.noarch.rpm為主要的安裝包,通過yum安裝可以查看其依賴的相關軟件包。GeoWave的軟件包包括以下這些,可以根據需要選擇安裝。
?
系統配置
????在完成了之前關于Hadoop、Zookeeper、Accumulo的安裝過程后,可以對GeoWave進行配置。
????Accumulo?設置步驟:
????1.運行Accumulo shell
????這里前提需要將Accumulo的bin目錄設置到環境變量中。然后運行Accumulo shell –u root命令,并輸入密碼(密碼在之前Accumulo配置中在初始化中設置過了)
????2.創建用戶和表空間???
????createuser geowave
????createnamespace geowave
????3.分配用戶表空間的所屬關系
????grant NameSpace.CREATE_TABLE -ns geowave -u geowave
????4.創建數據路徑,設置HDFS的數據路徑。對于Cloudera是/accumulo目錄而Hortonworks是在/apps/accumulo目錄下。
????config -s
????general.vfs.context.classpath.geowave=hdfs://localhost:8020/ACCUMULO_ROOT/classpath/geowave/VERSION_AND_VENDOR_VERSION/[^.].*.jar
????5.配置所有表包含的命名空間以使用應用的classpath,連接命名空間和應用classpath,調整標簽可以適配不同用戶或不同的應用名稱。
????config -ns geowave -s table.classpath.context=geowave
????exit
測試功能
????測試GeoWave的數據攝取功能。首先下載測試數據,數據下載地址:
????http://naciscdn.org/naturalearth/50m/cultural/ne_50m_admin_0_countries.zip
????測試的命令和參數如下,略作調整,修改-z?為localhost:2181,用戶名為root,密碼為自己設置的Accumulo密碼。ingest目錄為Accumulo目錄下。
????命令執行成功后,數據會從shp數據中攝取到HDFS中,也可以在Zookeeper snapshot目錄下查看相關日志信息。
總結
????通過以上GeoWave的綜合介紹,我們需要了解到在GIS大數據發展進程中,各種開源框架都在從多角度對地理空間大數據提供工具型的研究成果,并逐步有了實質性的應用成果。但如何提供系統化的地理空間大數據的解決方案,需要綜合分析。我們需要從數據模型、數據存儲、數據攝取、數據分析處理、數據發布、數據可視化等多角度了解開源社區有關的技術框架,為我們提供幫助和借鑒。
????GeoWave提供了一套數據攝取的工具集、插件和存儲框架,支持多種數據源,包括shp,hdfs,以及和kafka結合的實時數據等等,最終將數據保存在HDFS中。而HDFS作為大數據通用的分布式數據文件系統,也就可以支持MapReduce、Spark等框架的并行數據處理分析,實現更深層的挖掘。
????因此,我們將繼續研究并驗證GeoWave以及其他各種GIS框架技術,為實現最終的GIS+大數據技術解決方案作出努力。
轉載于:https://my.oschina.net/u/2338162/blog/631903
總結
以上是生活随笔為你收集整理的时空大数据实践之GeoWave安装部署实践的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Struts2 ognl中的#、%和$符
- 下一篇: UVa 740 - Baudot Dat