天天看點

GIS+=地理資訊+行業+大資料——GeoWave安裝部署實踐 技術特點 關鍵技術 部署方法 總結

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做的一樣。

架構

GIS+=地理資訊+行業+大資料——GeoWave安裝部署實踐 技術特點 關鍵技術 部署方法 總結

   GeoWave架構的核心概念就是資料輸入、輸出輸出或者稱作攝取和查詢。在系統中固有兩種類型的資料,分别是要素資料(Feature Data)和中繼資料(metadata)。要素資料是實際的屬性和地理幾何對象的集合,他們被存儲下來用于後期的檢索。中繼資料描述了資料是如何被持久化在資料庫中的。中繼資料設計的目的是為資料檢索和發現而存儲必要的資訊-是以一個現存的資料存儲不會和在一個特定的外部伺服器或者用戶端上的一點配置關系在一起,而取而代之的是“自描述”。

關鍵技術

    GeoWave的三個關鍵技術,索引、擴充卡、鍵值存儲。

索引

    通過GeoWave實作快速檢索資料的核心引擎是基于SFC(space filling curve)的索引技術。這種索引可以配置不同的參數,包括等級數、空間次元數、空間次元類型(有界或無界)、任意空間尺度的值域等等。

GIS+=地理資訊+行業+大資料——GeoWave安裝部署實踐 技術特點 關鍵技術 部署方法 總結

擴充卡

    為了存儲幾何對象,屬性和其它資訊需要一種可以序列化和反序列化的表述格式。一種提供出來處理要素序列化和反序列化的接口。GeoWave提供一種預設支援的功能,可以實作了對GeoTools簡單要素類型的支援。更多的特殊的功能實作會晚些以接口的形式被提供出來。在擴充卡固化的資料表中存儲了JAVA CLASS的指向路徑。當資料被查詢以及結果被轉換為本地資料類型的時候,這些JAVA類會被動态的讀取。

GIS+=地理資訊+行業+大資料——GeoWave安裝部署實踐 技術特點 關鍵技術 部署方法 總結

    GeoWave允許使用者定義自己的擴充卡,來對應各種資料的存儲以及資料形式,可以是資料庫,也可以是流資料。

Accumulo鍵值架構

    圖中描述了Accumulo資料存儲的預設對象結構。索引ID直接來自于SFC實作的分層結構。我們不強制要求資料ID是全局唯一的,但他們應該對于擴充卡是唯一的。是以成對出現的擴充卡ID和資料ID成為了一個對于資料元素的唯一定義。Row ID的存儲長度是4byte的整型,這可以完整的讀取Row ID,因為這些ID長度可變。副本的數量也是存儲在Row ID中,也為了通知這個元素重複資料過濾器是否需要暫時存儲,確定不重複發送給調用者。Row ID内部的适配ID是獨特的行ID,它作為一個整體的行疊代器被用于聚合字段可配置設定的過濾器。适配ID也被用作列家族機制僅供特定的擴充卡查詢來擷取相應的列家族。

GIS+=地理資訊+行業+大資料——GeoWave安裝部署實踐 技術特點 關鍵技術 部署方法 總結

部署方法

環境準備

   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可提供一些資訊表通過讀取中繼資料表的狀态。

GIS+=地理資訊+行業+大資料——GeoWave安裝部署實踐 技術特點 關鍵技術 部署方法 總結

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的軟體包包括以下這些,可以根據需要選擇安裝。

GIS+=地理資訊+行業+大資料——GeoWave安裝部署實踐 技術特點 關鍵技術 部署方法 總結

系統配置

    在完成了之前關于Hadoop、Zookeeper、Accumulo的安裝過程後,可以對GeoWave進行配置。

    Accumulo 設定步驟:

    1.運作Accumulo shell

    這裡前提需要将Accumulo的bin目錄設定到環境變量中。然後運作Accumulo shell –u root指令,并輸入密碼(密碼在之前Accumulo配置中在初始化中設定過了)

GIS+=地理資訊+行業+大資料——GeoWave安裝部署實踐 技術特點 關鍵技術 部署方法 總結

    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目錄下。

GIS+=地理資訊+行業+大資料——GeoWave安裝部署實踐 技術特點 關鍵技術 部署方法 總結

    指令執行成功後,資料會從shp資料中攝取到HDFS中,也可以在Zookeeper snapshot目錄下檢視相關日志資訊。

總結

    通過以上GeoWave的綜合介紹,我們需要了解到在GIS大資料發展程序中,各種開源架構都在從多角度對地理空間大資料提供工具型的研究成果,并逐漸有了實質性的應用成果。但如何提供系統化的地理空間大資料的解決方案,需要綜合分析。我們需要從資料模型、資料存儲、資料攝取、資料分析處理、資料釋出、資料可視化等多角度了解開源社群有關的技術架構,為我們提供幫助和借鑒。

    GeoWave提供了一套資料攝取的工具集、插件和存儲架構,支援多種資料源,包括shp,hdfs,以及和kafka結合的實時資料等等,最終将資料儲存在HDFS中。而HDFS作為大資料通用的分布式資料檔案系統,也就可以支援MapReduce、Spark等架構的并行資料處理分析,實作更深層的挖掘。

    是以,我們将繼續研究并驗證GeoWave以及其他各種GIS架構技術,為實作最終的GIS+大資料技術解決方案作出努力。