gis|Geoserver+Geomesa+HBase时空大数据环境搭建

1. 技术栈介绍 随着互联网技术日益发展,庞大的数据量,传统关系型数据库已无法满足业务需求,需结合Nosql型数据库来应对时空海量数据和业务发展。针对日前互联网外出交通出行,位置点实时监控与轨迹播放等场景,提供一套有效的技术方案来满足需求。本文选型Geomesa+HBase技术栈,教大家搭建一套属于自己的单机版时空大数据环境,自下而上的技术组件介绍,希望能使大家清晰的掌握该组合技术栈。
1.1 Hadoop+HBase Hbase用于时空数据的存储,实时监控点的更新,以及海量轨迹路线的存储。(感兴趣的博友可以与此对比Orcale、Postgresql数据库)
Apache Hadoop
Apache HBase
1.2 Geomesa GeoMesa是一款开源的基于分布式计算系统的面向海量时空数据查询与分析的工具包,它支持多种可扩展的、基于云端的数据存储架构,包括Apache Accumulo, HBase,Cassandra,Google Bigtable,以及用于流计算的Apache Kafka 。同时GeoMesa还可以和Apache Storm一起处理流数据,并使用Spark进行空间分析。 同时,GeoMesa以GeoServer插件的形式为GeoServer提供了读取GeoMesa表的功能。在GeoServer中,GeoMesa表作为一种数据源存在,通过GeoServer,用户可以通过WMS/WFS的形式访问GeoMesa的数据。
Home · GeoMesa
1.3 Geoserver Geoserver是一款优秀的基于OGC(开放地理信息联盟)标准开发的数据渲染和电子地图生产服务引擎。
GeoServer
1.4 OpenLayers ol用于电子地图的浏览器端展示,也可选择leaflet、mapbox-gl-js等技术栈
OpenLayers - Welcome
2. 部署环境 2.1 环境依赖 gis|Geoserver+Geomesa+HBase时空大数据环境搭建
文章图片


  1. Ubuntu 16.04(操作系统)
  2. JDK8
  3. Maven (3.6.3)
  4. Tomcat(8.5.38)
  5. Hadoop(本文使用2.7.5)
  6. Zookeeper (3.4.9)
  7. HBase(2.1.0)
  8. Geomesa-hbase(2.11-3.2.0)
  9. Geoserver(2.17.2)
2.2 HAPOOP安装 2.2.1 SSH的安装、配置
sudo apt-get install sshssh-keygen -t rsacd ~/.ssh cat id_rsa.pub >> authorized_keys ssh localhost

2.2.2 下载hadoop压缩包
Index of /dist/hadoop/core/hadoop-2.7.5
2.2.3 命令行解压
tar zxvf hadoop-2.7.5.tar.gz

2.2.4 配置 a. 环境变量配置(可选择hadoop安装路径)
sudo vim /etc/profile

export HADOOP_HOME=/home/ubuntu/soft/hadoop-2.7.5export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin

# 更新环境变量 source /etc/profile

# 验证hadoop是否配置成功 ubuntu@ubuntu:~$ hadoop version Hadoop 2.7.5

b. hadoop-env.sh文件配置
新增java环境变量配置
export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64

c. hdfs(name和data节点)配置
cd hadoop-2.7.5

hdfs-site.xml配置
vim ./etc/hadoop/hdfs-site.xml

dfs.replication 1 dfs.namenode.name.dir file:/home/ubuntu/soft/hadoop-2.7.5/tmp/dfs/name dfs.datanode.data.dir file:/home/ubuntu/soft/hadoop-2.7.5/tmp/dfs/data dfs.http.address 0.0.0.0:50070 dfs.permissions false need not permissions

core-site.xml配置
vim ./etc/hadoop/core-site.xml

hadoop.tmp.dir file:/home/ubuntu/soft/hadoop-2.7.5/tmp Abase for other temporary directories. fs.defaultFShdfs://0.0.0.0:9000

namenode格式化,启动namenode和datanode
hdfs namenode -formatstart-dfs.sh


打开http://192.168.1.200:50070/查看 NameNode 和 Datanode 信息,还可以在线查看 HDFS 中的文件

gis|Geoserver+Geomesa+HBase时空大数据环境搭建
文章图片


2.3 Zookeeper安装 zk安装相对容易,这里不再赘述
2.4 HBase安装 本文HBase使用外部zookeeper
2.4.1 下载解压
https://mirrors.cnnic.cn/apache/hbase/2.1.0/
tar zxvf hbase-2.1.0

2.4.2 配置
a. 环境变量配置
export HBASE_HOME=/home/ubuntu/soft/hbase-2.1.0 export PATH=$HBASE_HOME/bin:$PATH

b. 编辑hbase-env.sh
# java配置 export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64 # 外部zk,如果使用hbase自带zk,修改为true export HBASE_MANAGES_ZK=flase

c. 编辑hbase-site.xml
hbase.rootdirhdfs://192.168.1.5:9000/hbase hbase.cluster.distributed true hbase.zookeeper.quorum192.168.1.5:2181 hbase.tmp.dir /home/ubuntu/soft/hbase-1.4.13/tmp hbase.zookeeper.property.dataDir /home/ubuntu/soft/zookeeper-3.4.14/data

d. 配置regionservers
可配置单节点zk,或者多节点zk
192.168.1.200

e. hbase安装验证与启动
# hbase安装验证 ubuntu@ubuntu:~$ hbase version HBase 2.1.0# hbase启动 start-hbase.sh

f. 验证是否使用外部zk,浏览器验证hbase界面化
ubuntu@ubuntu:~$ zkCli.sh

zk连接服务会有hbase服务
浏览器验证http://192.168.1.200:16010/master-status
gis|Geoserver+Geomesa+HBase时空大数据环境搭建
文章图片

2.5 Geomesa+HBase部署 可以使用geomesa+hbase源码安装,也可使用发行版本安装,本文选择发行版安装。
如果使用源码安装请参照阿里云潇博士安装文章:
GeoMesa-HBase部署实践_xiaof22a的博客-CSDN博客_geomesa-hbase
发行版安装包下载路径
https://github.com/locationtech/geomesa/releases/download/geomesa_2.11-3.2.0/geomesa-hbase_2.11-3.2.0-bin.tar.gz
2.5.1 下载解压
$ tar xvf geomesa-hbase_2.11-3.2.0-bin.tar.gz $ cd geomesa-hbase_2.11-3.2.0 $ ls bin/conf/dist/docs/examples/lib/LICENSE.txtlogs/

2.5.2 环境变量配置
vim ~/.bashrc

# 配置GEOMESA_HBASE_HOME export GEOMESA_HBASE_HOME="/home/ubuntu/soft/geomesa-hbase_2.11-3.2.0" export GEOMESA_LIB="/home/ubuntu/soft/geomesa-hbase_2.11-3.2.0/lib" export GEOMESA_LOG_DIR="/home/ubuntu/soft/geomesa-hbase_2.11-3.2.0/logs" export PATH=${GEOMESA_HBASE_HOME}/bin:$PATH

Hbase2请使用geomesa-hbase-distributed-runtime-hbase2_2.11-3.2.0.jar
Hbase1请使用geomesa-hbase-distributed-runtime-hbase1_2.11-3.2.0.jar
${GEOMESA_HBASE_HOME}/dist/hbase/geomesa-hbase-distributed-runtime-hbase1_2.11-3.2.0.jar拷贝到${HBase_HOME}/lib目录下
2.5.3 注册coprocessor
Geomesa使用HBase提供的coprocessor工具将处理过程移动到服务器端运行来提高查询效率,最简单的注册方式就是直接修改hbase-site.xml,增加以下内容:
hbase.coprocessor.user.region.classes org.locationtech.geomesa.hbase.coprocessor.GeoMesaCoprocessor

2.5.4 初始化geomesa-hbase
bin/geomesa-hbase configure

2.5.5 存储测试数据
a. 下载shp数据
Index of /asia
b. 如果已有geoserver
请用geoserver lib包jts-core-$version.jar替换geomesa-hbase的jts-core包,避免版本冲突导致数据导入hbase报错
c. 数据入hbase
gis|Geoserver+Geomesa+HBase时空大数据环境搭建
文章图片

geomesa-hbase ingest --catalog qnl --feature-name qnl --input-format shp /export/soft/shp/qnl.shp

gis|Geoserver+Geomesa+HBase时空大数据环境搭建
文章图片

c. geomesa-hbase命令行参数说明
14.3. Using the HBase Data Store Programmatically — GeoMesa 3.3.0 Manuals
2.6. Geoserver部署 geoserver可使用源码编译
GitHub - geoserver/geoserver: Official GeoServer repository
本文使用war包+tomcat运行
GeoServer
2.6.1 tomcat运行geoserver war包
2.6.2 替换geomesa-hbase jts-core包
参考2.5.5 b
2.6.3 整合geomesa-hbase
a. 将 $GEOMESA_HBASE_HOME/dist/gs-plugins/geomesa-hbase-gs-plugin_2.11-$VERSION-install.tar.gz解压到WBE-INF/lib路径下;
b. 由于geomesa-hbase-gs-plugin并不包含有Hadoop、HBase有关的依赖jar文件,所以需要手动将以下jar文件复制到WBE-INF/lib路径下(仔细观察geoserver相关包是否已存在,小心jar冲突)
hbase1依赖包
gis|Geoserver+Geomesa+HBase时空大数据环境搭建
文章图片

2.6.4 启动tomcat
浏览器地址访问:http://192.168.1.200:8090/
gis|Geoserver+Geomesa+HBase时空大数据环境搭建
文章图片




新增geomesa-hbase数据存储
gis|Geoserver+Geomesa+HBase时空大数据环境搭建
文章图片

gis|Geoserver+Geomesa+HBase时空大数据环境搭建
文章图片


2.6.5 openlayers浏览器效果预览
gis|Geoserver+Geomesa+HBase时空大数据环境搭建
文章图片

3 geomesa+hbase探索(希望一起讨论,给出解决办法) 3.1 如何实现类似postgresql + postgis数据库功能,可以在同一datastore中多表访问,而不是每个表对应一个datastore 3.2 geoserver在放大的过程中会出现如下错误,但是继续放大后消失 gis|Geoserver+Geomesa+HBase时空大数据环境搭建
文章图片


Caused by: java.lang.NoSuchMethodError: org.locationtech.jts.geom.Polygon.getExteriorRing()Lorg/locationtech/jts/geom/LinearRing;

3.3 导入base中的数据,利用geoserver发布,计算边框始终不对,导致加载的层级有问题。 gis|Geoserver+Geomesa+HBase时空大数据环境搭建
文章图片

3.4 导入hbase的shp文件不能含有ID字段,否则报错这是保留字段 3.5 导入hbase中的数据存在乱码情况 gis|Geoserver+Geomesa+HBase时空大数据环境搭建
文章图片

4.结尾总结 【gis|Geoserver+Geomesa+HBase时空大数据环境搭建】本文总结了完整的geomesa-hbase技术栈,由于技术有限,难免有错误之处,希望博友可以不辞指正,也可在下方评论区留言,博主会及时回复。希望能帮到各位博友

    推荐阅读