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