GeoMesa Lambda快速入门¶
本教程可以帮助您开始使用GeoMesa Lambda数据存储。请注意,Lambda数据存储适用于高级用例-请参阅 Lambda数据存储概述 有关何时使用Lambda商店的详细信息。
关于本教程¶
本着简单的精神,本教程中的代码只做了几件小事:
建立新的(静态)SimpleFeatureType
准备Acumulo表和Kafka主题以写入此类型的数据
创建数千个SimpleFeature示例
通过Kafka反复更新Lambda商店中的这些SimpleFeature
在Geoserver中可视化更改的数据
将最终的SimpleFeature保持为Acumulo
使用Geoserver可视化数据(可选)
背景¶
Apache Kafka 是“将发布-订阅消息传递重新考虑为分布式提交日志”。
在GeoMesa的背景下,Kafka是处理地理空间数据流的有用工具。Lambda数据存储利用了由Kafka提供支持的最新更新的临时内存缓存,并结合了对Acumulo的长期持久性。这允许快速数据更新,从而减轻了Acumulo因不断删除和写入而产生的负担。
先决条件¶
在开始之前,您必须安装并配置以下软件:
Java JDK 1.8
Apache Maven 3.6 or later
GitHub客户端
卡夫卡 2.0 or later 聚类
一场积雨 2.0 or 2.1 实例
同时具有CREATE-TABLE和WRITE权限的Acumulo用户
为您的实例安装的GeoMesa分布式运行时(见下文)
确保您的Kafka和ZooKeeper实例正在运行。你可以用卡夫卡的 quickstart 快速启动和运行Kafka/ZooKeeper实例。
安装GeoMesa分布式运行时¶
按照下面的说明进行操作 安装Acumulo分布式运行时库 在您的Acumulo实例中安装GeoMesa。
配置地理服务器(可选)¶
您可以使用Geoserver访问和可视化存储在GeoMesa中的数据。要使用Geoserver,请下载并安装版本 2.22.2 。然后按照中的说明操作 在Geoserver中安装GeoMesa Lambda 以启用GeoMesa。
下载并构建教程¶
在您的计算机上选择一个合理的目录,然后运行:
$ git clone https://github.com/geomesa/geomesa-tutorials.git
$ cd geomesa-tutorials
警告
确保下载或检出与您的GeoMesa版本对应的教程项目版本。看见 关于教程版本 了解更多详细信息。
若要确保快速入门适用于您的环境,请修改 pom.xml
为Acumulo、Hadoop、Kafka、ZooKeeper等设置合适的版本。
为了便于使用,该项目构建了一个捆绑的构件,该构件在单个JAR中包含所有必需的依赖项。要构建,请运行:
$ mvn clean install -pl geomesa-tutorials-accumulo/geomesa-tutorials-accumulo-lambda-quickstart -am
关于本教程¶
快速入门通过编写数千个功能更新来运行。每次更新都使用相同的功能标识,因此在任何时候都只有一个“活动”功能。大约30秒后,更新停止,该功能将保留到Acumulo。
使用的数据来自伊利诺伊大学发布的纽约市出租车活动数据。有关数据集的更多信息可用 here 。
在此演示中,只有一辆出租车被跟踪。
运行教程¶
在命令行上,运行:
$ java -cp geomesa-tutorials-accumulo/geomesa-tutorials-accumulo-lambda-quickstart/target/geomesa-tutorials-accumulo-lambda-quickstart-${geomesa.version}.jar \
com.example.geomesa.lambda.LambdaQuickStart \
--lambda.accumulo.instance.name <instance> \
--lambda.accumulo.zookeepers <accumulo.zookeepers> \
--lambda.accumulo.user <user> \
--lambda.accumulo.password <password> \
--lambda.accumulo.catalog <table> \
--lambda.kafka.brokers <brokers> \
--lambda.kafka.zookeepers <kafka.zookeepers> \
--lambda.expiry 2s
其中,您可以提供以下参数:
<instance>
您的Acumulo实例的名称<accumulo.zookeepers>
您的Acumulo ZooKeeper节点,用逗号分隔<user>
有权创建、读取和写入表的Acumulo用户的名称<password>
前面提到的Acumulo用户的密码<table>
将接受这些测试记录的目标表的名称。此表不应存在或应为空<brokers>
your Kafka broker instances, comma separated. For a local install, this would belocalhost:9092
<kafka.zookeepers>
your Kafka Zookeeper nodes, comma separated. For a local install, this would belocalhost:2181
警告
如果已将GeoMesa Acumulo分布式运行时设置为在命名空间内隔离(请参见 命名空间安装 )的价值 <table>
应包括命名空间(例如 myNamespace.geomesa
)。
或者,您也可以指定快速入门在完成时删除其数据。使用 --cleanup
标志,当您运行以启用此行为时。
一旦运行,快速入门将创建卡夫卡主题,然后暂停并提示您在Geoserver中注册该层。如果您不想使用Geoserver,则可以跳过此步骤。否则,请在返回此处之前按照下一节中的说明进行操作。
继续后,教程应该运行大约30秒。您应该会看到以下输出:
Loading datastore
Creating schema: taxiId:String,dtg:Date,geom:Point
Feature type created - register the layer 'tdrive-quickstart' in geoserver then hit <enter> to continue
Generating test data
Writing features to Kafka... refresh GeoServer layer preview to see changes
Wrote 2202 features
Waiting for expiry and persistence...
Total features: 1, features persisted to Accumulo: 0
Total features: 0, features persisted to Accumulo: 0
Total features: 1, features persisted to Accumulo: 1
Done
使用Geoserver可视化数据(可选)¶
您可以使用Geoserver访问和可视化存储在GeoMesa中的数据。要使用Geoserver,请下载并安装版本 2.22.2 。然后按照中的说明操作 在Geoserver中安装GeoMesa Lambda 以启用GeoMesa。
向Geoserver注册GeoMesa商店¶
使用您的用户和密码凭据登录到Geoserver。点击“商店”和“添加新商店”。选择 Kafka/Accumulo Lambda (GeoMesa)
矢量数据源,并填写所需参数。
基本店铺信息:
workspace
这取决于您的Geoserver安装data source name
pick a sensible name, such asgeomesa_quick_start
description
this is strictly decorative;GeoMesa quick start
连接参数:
这些参数值与您在运行本教程时在命令行上提供的参数值相同;它们描述了如何连接到数据所在的Kafka和Acumulo实例
点击“保存”,Geoserver将在ZooKeeper中搜索任何GeoMesa管理的要素类型。
发布该层¶
如果您已经运行了该命令来启动教程,那么Geoserver应该会识别 tdrive-quickstart
要素类型,并应将其显示为可发布的图层。点击“发布”链接。如果不是,则按照上文中所述运行教程 Running the Tutorial 。当教程暂停时,转到“层”和“添加新层”。选择您刚刚创建的GeoMesa Lambda商店,然后在 tdrive-quickstart
一层。
您将被带到编辑层屏幕。您需要为数据边框输入值。对于本演示,请使用值Minx:116.22366、Miny:39.72925、Maxx:116.58804、Maxy:40.09298。
完成后,请单击“保存”按钮。
瞧一瞧¶
点击左手边沟中的“层预览”链接。如果在结果的第一页上看不到快速启动图层,请在搜索框中输入刚创建的图层的名称,然后按 <Enter>
。
起初,不会显示任何数据。达到此点后,返回快速入门控制台,然后按“<Enter>”继续本教程。随着数据在Kafka中的更新,您可以刷新图层预览页面以查看要素的移动。
暂时性特征与永久性特征¶
层预览将合并来自Kafka的要素和来自Acumulo的要素的结果。您可以使用以下方法禁用其中一个源的结果 viewparams
参数:
...&viewparams=LAMBDA_QUERY_TRANSIENT:false
...&viewparams=LAMBDA_QUERY_PERSISTENT:false
在运行快速入门时,所有功能都应该从临时存储(Kafka)中返回。快速入门结束后,所有功能都应该从持久性存储(Acumulo)中返回。你可以玩这个游戏 viewparams
来看看不同之处。
看《守则》¶
源代码对于本教程来说是可以访问的。该逻辑包含在泛型 org.geomesa.example.quickstart.GeoMesaQuickStart
在 geomesa-tutorials-common
模块和特定于Kafka/Acumulo的 org.geomesa.example.lambda.LambdaQuickStart
在 geomesa-tutorials-accumulo-lambda-quickstart
模块。一些相关的方法包括:
createDataStore
从输入配置中获取数据存储实例createSchema
在数据存储中创建架构,作为写入数据的前提条件writeFeatures
中被重写KafkaQuickStart
同时写入和读取卡夫卡的特写queryFeatures
在本教程中未使用cleanup
删除示例数据并处置数据存储实例
查看源代码,您可以看到普通的GeoTools FeatureWriters
;功能持久性是为您透明管理的。
QuickStart使用出租车数据的一小部分。将数据解析为GeoTools SimpleFeature的代码包含在 org.geomesa.example.data.TDriveData
:
getSimpleFeatureType
创建SimpleFeatureType
表示数据getTestData
解析嵌入的CSV文件以创建SimpleFeature
对象getTestQueries
在本教程中未使用
重新运行快速入门¶
快速启动依赖于在运行时没有任何现有状态。这可能会导致旧版本的Kafka出现问题,默认情况下,Kafka在请求时不会删除主题。要重新运行快速入门,请首先确保您的Kafka实例将通过设置配置删除主题 delete.topic.enable=true
在您的服务器属性中。然后使用Lamdba命令行工具(请参见 设置Lambda命令行工具 要删除快速入门架构,请执行以下操作:
$ geomesa-lambda remove-schema -f tdrive-quickstart ...