GeoMesa的安裝與Quick Start【HBase】

GeoMesa是一個(gè)運(yùn)行在分布式計(jì)算系統(tǒng)上,支持大規(guī)模時(shí)空矢量數(shù)據(jù)查詢和分析的開(kāi)源工具。

本文介紹GeoMesa安裝,以及來(lái)自官方的Quick Start教程(基于HBase)。

第一部分 GeoMesa的安裝

1.下載

Github下載已經(jīng)編譯好的二進(jìn)制文件,解壓至目標(biāo)目錄

# download and unpackage the most recent distribution:
wget "https://github.com/locationtech/geomesa/releases/download/geomesa_2.11-$VERSION/geomesa-hbase-dist_2.11-$VERSION-bin.tar.gz"
tar xvf geomesa-hbase-dist_2.11-$VERSION-bin.tar.gz
cd geomesa-hbase-dist_2.11-$VERSION
ls
bin/  conf/  dist/  docs/  examples/  lib/  LICENSE.txt  logs/

或者下載源碼,使用Maven手動(dòng)編譯

2.配置classpath

GeoMesa for HBase需要使用Hadoop和HBase,讀取他們的配置文件,因此需要設(shè)置幾個(gè)環(huán)境變量。

export HADOOP_HOME=/path/to/hadoop
export HBASE_HOME=/path/to/hbase
export GEOMESA_HBASE_HOME=/opt/geomesa
export PATH="${PATH}:${GEOMESA_HOME}/bin"

GeoMesa 推薦在geomesa-hbase_2.11-$VERSION/conf/geomesa-env.sh文件中設(shè)置以上環(huán)境變量,也可以在.bashrc或/etc/profile中設(shè)置。

由于許可的原因,需要手動(dòng)執(zhí)行以下命令,安裝兩個(gè)插件:

bin/install-jai.sh
bin/install-jline.sh
3.部署jar包

GeoMesa for HBase需要使用本地過(guò)濾器來(lái)加速查詢,因此需要將GeoMesa的runtime JAR包,拷貝到HBase的庫(kù)目錄下。

官網(wǎng)給的默認(rèn)設(shè)置是拷貝至HDFS中,其中${hbase.dynamic.jars.dir}是${hbase.rootdir}/lib:

hadoop fs -put ${GEOMESA_HBASE_HOME}/dist/hbase/geomesa-hbase-distributed-runtime-$VERSION.jar ${hbase.dynamic.jars.dir}/

但我執(zhí)行了卻不起作用,而是要將這個(gè)jar包復(fù)制到HBase的安裝目錄的lib文件夾中。
注意:如果是分布式環(huán)境,需要將其復(fù)制到每一個(gè)節(jié)點(diǎn)。

4. 注冊(cè)協(xié)處理器(Coprocessors)

注冊(cè)的過(guò)程其實(shí)就是使HBase在運(yùn)行時(shí)能夠訪問(wèn)到geomesa-hbase-distributed-runtime的jar包。官網(wǎng)給出了幾種方法實(shí)現(xiàn)這一目標(biāo),最方便的是在HBase的配置文件hbase-site.xml添加如下內(nèi)容:

  <property>
    <name>hbase.coprocessor.user.region.classes</name>
    <value>org.locationtech.geomesa.hbase.coprocessor.GeoMesaCoprocessor</value>
  </property>

注意:如果是分布式環(huán)境,需要在每一個(gè)節(jié)點(diǎn)都添加相同的內(nèi)容。

5. 設(shè)置命令行工具

在完成以上設(shè)置后,GeoMesa的主要部分就安裝完成了??梢允褂?bin/geomesa-hbase 命令調(diào)用GeoMesa的命令行工具,執(zhí)行一系列的功能。

這里要額外設(shè)置的是使用如下命令,將HBase配置文件hbase-site.xml打包進(jìn)geomesa-hbase-datastore_2.11-$VERSION.jar中:

zip -r lib/geomesa-hbase-datastore_2.11-$VERSION.jar hbase-site.xml

這一步的目的是確保在MapReduce任務(wù)中,GeoMesa能夠順利訪問(wèn)到該文件。

6.在Geoserver中安裝GeoMesa插件(可選)

這一步是為了使用GeoMesa作為數(shù)據(jù)源,在geoserver中發(fā)布標(biāo)準(zhǔn)地圖服務(wù),進(jìn)行可視化的工作。如果沒(méi)有這個(gè)需求可以忽略。

  • 首先安裝Geoserver,這里省略,可以查看參考資料。

  • geoserver安裝成功后,將以下的jar包復(fù)制到geoserver/WEB-INF/lib目錄下。

hadoop-annotations-2.7.4.jar
hadoop-auth-2.7.4.jar
hadoop-common-2.7.4.jar
hadoop-mapreduce-client-core-2.7.4.jar
hadoop-yarn-api-2.7.4.jar
hadoop-yarn-common-2.7.4.jar
htrace-core-3.1.0-incubating.jar
commons-cli-1.2.jar
commons-io-2.5.jar // (you may need to remove an older version (2.1) from geoserver)
hbase-common-1.2.6.jar
hbase-client-1.2.6.jar
hbase-server-1.2.6.jar
hbase-protocol-1.2.6.jar
metrics-core-2.2.0.jar
netty-3.6.2.Final.jar
netty-all-4.0.41.Final.jar
zookeeper-3.4.10.jar
commons-configuration-1.6.jar
  • 再將$GEOMESA_HBASE_HOME/dist/gs-plugins/geomesa-hbase-gs-plugin_2.11-$VERSION-install.tar.gz文件解壓,把得到的jar包復(fù)制到geoserver/WEB-INF/lib目錄。
    注意:要移除geoserver/WEB-INF/lib目錄下的jackson-core-2.5.0.jar文件,使用更新的版本jackson-core-2.6.x.jar替換。

  • 最后,在geoserver/WEB-INF/classes目錄下,創(chuàng)建軟連接,使其能夠訪問(wèn)HBase配置文件hbase-site.xml:

ln -s /path/to/hbase-site.xml /path/to/geoserver/WEB-INF/classes/hbase-site.xml

啟動(dòng)Tomcat,訪問(wèn)Geoserver后臺(tái),在新建數(shù)據(jù)源的選項(xiàng)中可以看到HBase(GeoMesa)的選項(xiàng),說(shuō)明安裝成功了,如下圖所示。


geoserver新建圖層.jpg

不過(guò),目前HBase中還沒(méi)有數(shù)據(jù),不能發(fā)布地圖服務(wù)。在Quick Start中,我們會(huì)往HBase中寫入數(shù)據(jù),并使用Geoserver進(jìn)行可視化。

第二部分 Quick Start教程

1.下載并構(gòu)建教程

下載:

git clone https://github.com/geomesa/geomesa-tutorials.git
cd geomesa-tutorials

切換至你正在使用的GeoMesa版本:

git checkout tags/geomesa-tutorials-$TUTORIAL_VERSION

查看pom.xml文件,修改hadoop和hbase版本,要和你已安裝的版本保持一致。修改后,使用maven進(jìn)行構(gòu)建:

mvn clean install -pl geomesa-tutorials-hbase/geomesa-tutorials-hbase-quickstart -am

建議在構(gòu)建之前,將mvn的源設(shè)置為國(guó)內(nèi)的,可以大幅提高構(gòu)建速度。另外,如果在構(gòu)建中遇到了長(zhǎng)時(shí)間沒(méi)有響應(yīng)的情況,可以使用Ctrl+C停止,并再次運(yùn)行以上命令。

2. 運(yùn)行教程

構(gòu)建成功后,在命令行執(zhí)行以下命令:

java -cp geomesa-tutorials-hbase/geomesa-tutorials-hbase-quickstart/target/geomesa-tutorials-hbase-quickstart-$VERSION.jar \
    org.geomesa.example.hbase.HBaseQuickStart \
    --hbase.zookeepers <zookeepers>           \
    --hbase.catalog <table>

--hbase.zookeepers填zookeeper的位置,在單機(jī)模式下,這個(gè)值為localhost。對(duì)于已經(jīng)將hbase-site.xml設(shè)為GeoMesa能夠訪問(wèn)的情況(按照第一部分完成安裝),則這一項(xiàng)可以不填。
--hbase.catalog 填HBase表的名稱,用于存放測(cè)試數(shù)據(jù)。所填的表要么為空,要么不存在,否則會(huì)出錯(cuò)。

正常情況下,你應(yīng)該得到如下的結(jié)果:

Loading datastore

Creating schema: GLOBALEVENTID:String,Actor1Name:String,Actor1CountryCode:String,Actor2Name:String,Actor2CountryCode:String,EventCode:String,NumMentions:Integer,NumSources:Integer,NumArticles:Integer,ActionGeo_Type:Integer,ActionGeo_FullName:String,ActionGeo_CountryCode:String,dtg:Date,geom:Point:srid=4326

Generating test data

Writing test data
Wrote 2356 features

Running test queries
Running query BBOX(geom, -120.0,30.0,-75.0,55.0) AND dtg DURING 2017-12-31T00:00:00+00:00/2018-01-02T00:00:00+00:00
01 719027236=719027236|UNITED STATES|USA|INDUSTRY||012|1|1|1|3|Central Valley, California, United States|US|2018-01-01T00:00:00.000Z|POINT (-119.682 34.0186)
02 719027005=719027005|UNITED STATES|USA|||172|2|2|2|3|Long Beach, California, United States|US|2018-01-01T00:00:00.000Z|POINT (-118.189 33.767)
03 719026204=719026204|JUDGE||||0214|6|1|6|3|Los Angeles, California, United States|US|2018-01-01T00:00:00.000Z|POINT (-118.244 34.0522)
04 719025745=719025745|KING||||051|4|2|4|2|California, United States|US|2018-01-01T00:00:00.000Z|POINT (-119.746 36.17)
05 719026858=719026858|UNITED STATES|USA|||010|20|2|20|2|California, United States|US|2018-01-01T00:00:00.000Z|POINT (-119.746 36.17)
06 719026964=719026964|UNITED STATES|USA|||081|2|2|2|2|California, United States|US|2018-01-01T00:00:00.000Z|POINT (-119.746 36.17)
07 719026965=719026965|CALIFORNIA|USA|||081|8|1|8|2|California, United States|US|2018-01-01T00:00:00.000Z|POINT (-119.746 36.17)
08 719025635=719025635|PARIS|FRA|||010|2|1|2|3|Las Vegas, Nevada, United States|US|2018-01-01T00:00:00.000Z|POINT (-115.137 36.175)
09 719026918=719026918|UNITED STATES|USA|||042|20|5|20|3|Las Vegas, Nevada, United States|US|2018-01-01T00:00:00.000Z|POINT (-115.137 36.175)
10 719027141=719027141|ALABAMA|USA|JUDGE||172|8|1|8|2|Nevada, United States|US|2018-01-01T00:00:00.000Z|POINT (-117.122 38.4199)

Returned 669 total features

Running query BBOX(geom, -120.0,30.0,-75.0,55.0) AND dtg DURING 2017-12-31T00:00:00+00:00/2018-01-02T00:00:00+00:00
Returning attributes [GLOBALEVENTID, dtg, geom]
01 719027208=719027208|2018-01-01T00:00:00.000Z|POINT (-89.6812 32.7673)
02 719026313=719026313|2018-01-01T00:00:00.000Z|POINT (-84.388 33.749)
03 719026419=719026419|2018-01-01T00:00:00.000Z|POINT (-84.388 33.749)
04 719026316=719026316|2018-01-01T00:00:00.000Z|POINT (-83.6487 32.9866)
05 719027132=719027132|2018-01-01T00:00:00.000Z|POINT (-81.2793 33.4968)
06 719026819=719026819|2018-01-01T00:00:00.000Z|POINT (-81.9296 33.7896)
07 719026952=719026952|2018-01-01T00:00:00.000Z|POINT (-81.9296 33.7896)
08 719026881=719026881|2018-01-01T00:00:00.000Z|POINT (-82.0193 34.146)
09 719026909=719026909|2018-01-01T00:00:00.000Z|POINT (-82.0193 34.146)
10 719026951=719026951|2018-01-01T00:00:00.000Z|POINT (-82.0193 34.146)

Returned 669 total features

Running query EventCode = '051'
01 719024909=719024909|||MELBOURNE|AUS|051|10|1|10|4|Melbourne, Victoria, Australia|AS|2018-01-01T00:00:00.000Z|POINT (144.967 -37.8167)
02 719025178=719025178|AUSTRALIA|AUS|COMMUNITY||051|20|2|20|4|Sydney, New South Wales, Australia|AS|2018-01-01T00:00:00.000Z|POINT (151.217 -33.8833)
03 719025965=719025965|MIDWIFE||||051|10|1|10|4|Sydney, New South Wales, Australia|AS|2018-01-01T00:00:00.000Z|POINT (151.217 -33.8833)
04 719025509=719025509|COMMUNITY||AUSTRALIA|AUS|051|2|1|2|1|Australia|AS|2018-01-01T00:00:00.000Z|POINT (135 -25)
05 719025742=719025742|KING||||051|22|3|22|3|San Diego, California, United States|US|2018-01-01T00:00:00.000Z|POINT (-117.157 32.7153)
06 719025745=719025745|KING||||051|4|2|4|2|California, United States|US|2018-01-01T00:00:00.000Z|POINT (-119.746 36.17)
07 719025743=719025743|AUTHORITIES||||051|60|12|60|3|Wichita, Kansas, United States|US|2018-01-01T00:00:00.000Z|POINT (-97.3375 37.6922)
08 719027205=719027205|UNITED STATES|USA|SIOUX||051|4|1|4|3|Sioux City, Iowa, United States|US|2018-01-01T00:00:00.000Z|POINT (-96.4003 42.5)
09 719025111=719025111|||UNITED STATES|USA|051|2|1|2|3|Pickens County, South Carolina, United States|US|2018-01-01T00:00:00.000Z|POINT (-82.7165 34.9168)
10 719026938=719026938|PITTSBURGH|USA|||051|5|1|5|3|York County, Pennsylvania, United States|US|2018-01-01T00:00:00.000Z|POINT (-77 40.1254)

Returned 138 total features

Running query EventCode = '051' AND dtg DURING 2017-12-31T00:00:00+00:00/2018-01-02T00:00:00+00:00
Returning attributes [GLOBALEVENTID, dtg, geom]
01 719024909=719024909|2018-01-01T00:00:00.000Z|POINT (144.967 -37.8167)
02 719025178=719025178|2018-01-01T00:00:00.000Z|POINT (151.217 -33.8833)
03 719025965=719025965|2018-01-01T00:00:00.000Z|POINT (151.217 -33.8833)
04 719025509=719025509|2018-01-01T00:00:00.000Z|POINT (135 -25)
05 719025742=719025742|2018-01-01T00:00:00.000Z|POINT (-117.157 32.7153)
06 719025745=719025745|2018-01-01T00:00:00.000Z|POINT (-119.746 36.17)
07 719025743=719025743|2018-01-01T00:00:00.000Z|POINT (-97.3375 37.6922)
08 719027205=719027205|2018-01-01T00:00:00.000Z|POINT (-96.4003 42.5)
09 719025111=719025111|2018-01-01T00:00:00.000Z|POINT (-82.7165 34.9168)
10 719026938=719026938|2018-01-01T00:00:00.000Z|POINT (-77 40.1254)

Returned 138 total features

Cleaning up test data
Done

如果出錯(cuò),說(shuō)明GeoMesa沒(méi)有安裝成功,或者是底層的HDFS、HBase出了問(wèn)題,要根據(jù)錯(cuò)誤提示具體分析。

從輸出結(jié)果可以看出,這一實(shí)例程序完成了創(chuàng)建schema、寫入features、空間查詢、屬性查詢等操作。具體實(shí)現(xiàn)可以查看教程中的源代碼文件。

3. 使用Geoserver進(jìn)行可視化
  • 首先需要按照第一部分的內(nèi)容,在geoserver中安裝GeoMesa的插件。
    然后,進(jìn)入geoserver后臺(tái),依次點(diǎn)擊:
    數(shù)據(jù)存儲(chǔ) =》 添加新的數(shù)據(jù)存儲(chǔ) =》HBase (GeoMesa)

  • 進(jìn)入“新建矢量數(shù)據(jù)源”頁(yè)面,填寫以下項(xiàng)目的內(nèi)容:
    數(shù)據(jù)源名稱 —— 隨意填寫一個(gè)有意義的名稱,如“geomesa_quick_start”
    hbase.catalog—— 存放測(cè)試數(shù)據(jù)的HBase表名稱,根據(jù)前一步運(yùn)行的命令填寫
    hbase.zookeepers —— 可不填,情況和前一步運(yùn)行的命令時(shí)相同,不再贅述

  • 最后,點(diǎn)擊“保存”,再點(diǎn)擊“發(fā)布”,即可完成地圖服務(wù)的發(fā)布。

效果展示:

geoserver效果展示.jpg

可點(diǎn)擊地圖查看數(shù)據(jù)點(diǎn)的詳細(xì)信息,也可配置SLD文件,展示更豐富的數(shù)據(jù)樣式,如熱力圖等。

注意事項(xiàng)

  • 在分布式環(huán)境下,一定要確保runtime JAR包被復(fù)制到了每一個(gè)節(jié)點(diǎn),并且每一個(gè)節(jié)點(diǎn)的hbase-site.xml文件都添加了注冊(cè)協(xié)處理器的配置項(xiàng)。
  • 教程中的Geoserver版本是12.x,我試過(guò)使用更高的版本并修改pom.xml進(jìn)行重新構(gòu)建,結(jié)果在發(fā)布圖層時(shí)出錯(cuò)。因此不建議使用12.x以外的其他版本的Geoserver。
  • 若在運(yùn)行教程的程序出現(xiàn)錯(cuò)誤時(shí),請(qǐng)先確定HBase的安裝是否正確,增刪改查功能是否能正常運(yùn)行。

參考資料

官方文檔——安裝GeoMesa HBase
官方文檔——GeoMesa HBase Quick Start

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 入門指南 1. 簡(jiǎn)介 Quickstart會(huì)讓你啟動(dòng)和運(yùn)行一個(gè)單節(jié)點(diǎn)單機(jī)HBase。 2. 快速啟動(dòng) – 單點(diǎn)HB...
    和心數(shù)據(jù)閱讀 4,999評(píng)論 1 41
  • 關(guān)于Mongodb的全面總結(jié) MongoDB的內(nèi)部構(gòu)造《MongoDB The Definitive Guide》...
    中v中閱讀 32,302評(píng)論 2 89
  • 轉(zhuǎn)自 沈釗偉 HBase 在大數(shù)據(jù)生態(tài)圈中的位置 提到大數(shù)據(jù)的存儲(chǔ),大多數(shù)人首先聯(lián)想到的是 Hadoop 和 Ha...
    wangxiaoda閱讀 1,305評(píng)論 0 19
  • 簡(jiǎn)介 HBase是高可靠性,高性能,面向列,可伸縮的分布式存儲(chǔ)系統(tǒng),利用HBase技術(shù)可在廉價(jià)PC Serve...
    九世的貓閱讀 2,375評(píng)論 1 6
  • 單位改革,將原先的兩個(gè)大團(tuán)隊(duì)打散成四個(gè)小組,兩個(gè)團(tuán)隊(duì)主管淪為小組長(zhǎng),原先管著十幾號(hào)人的主管一下子手下只有三個(gè)人,倆...
    晴悅姑娘閱讀 630評(píng)論 0 0

友情鏈接更多精彩內(nèi)容