【转载】GeoServer+GeoMesa+HBase 时空大数据环境搭建

  • 文章标签: java nosql hadoop gis
  • 版权:CC 4.0 BY-SA

版权声明:本文为CSDN博主「yangdengxian」的原创文章,
遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。

文章版权分类.png

原文链接:https://blog.csdn.net/yangdengxian/article/details/113727936

GeoServer+GeoMesa+HBase 时空大数据环境搭建

1. 技术栈介绍

随着互联网技术日益发展,庞大的数据量,传统关系型数据库已无法满足业务需求,需结合 NoSQL 型数据库来应对时空海量数据和业务发展。针对日前互联网外出交通出行,位置点实时监控与轨迹播放等场景,提供一套有效的技术方案来满足需求。本文选型 Geomesa + HBase 技术栈,教大家搭建一套属于自己的单机版时空大数据环境,自下而上的技术组件介绍,希望能使大家清晰的掌握该组合技术栈。

1.1 Hadoop+HBase

HBase 用于时空数据的存储,实时监控点的更新,以及海量轨迹路线的存储。(感兴趣的博友可以与此对比 Orcale、PostgreSQL 数据库)

  • http://hadoop.apache.org/
  • https://blogs.apache.org/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 的数据。

  • https://www.geomesa.org/

1.3 GeoServer

GeoServer 是一款优秀的基于 OGC(开放地理信息联盟)标准开发的数据渲染和电子地图生产服务引擎。

  • http://geoserver.org/

1.4 OpenLayers/Leaflet/Mapbox-GL/Cesium

本文使用 OpenLayers 完成电子地图的浏览器端展示,根据客户需求也可选择 Leaflet、Mapbox-GL、Cesium 等技术栈

  • https://www.openlayers.org/
  • https://www.leafletjs.com/
  • https://www.mapbox.com/
  • https://www.cesium.com/

2. 部署环境

2.1 环境依赖

  • Ubuntu 16.04(操作系统)
  • JDK8 (使用企业免费版Oracle JDK 8u201,或开源社区版OpenJDK 8u292)
  • Maven (3.6.3)
  • Tomcat(8.5.5)
  • Hadoop(本文使用2.8.5)
  • Zookeeper (3.4.14)
  • HBase(1.4.13)
  • Geomesa-hbase(2.11-3.1.0)
  • Geoserver(2.17.x)

2.2 Hadoop 安装

2.2.1 SSH的安装、配置

sudo apt-get install ssh
ssh-keygen -t ed25519
cat ~/.ssh/id_ed25519.pub >> ~/.ssh/authorized_keys
ssh localhost

2.2.2 下载 Hadoop 压缩包

  • http://archive.apache.org/dist/hadoop/core/hadoop-2.8.5/hadoop-2.8.5.tar.gz

2.2.3 命令行解压

tar xvf hadoop-2.8.5.tar.gz

2.2.4 配置

  1. 环境变量配置(可选择 Hadoop 安装路径)

    sudo vim /etc/profile
     
    export HADOOP_HOME=/home/ubuntu/soft/hadoop-2.8.5
     
    export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
    # 更新环境变量
    source /etc/profile
    # 验证 Hadoop 是否配置成功
    ubuntu@ubuntu:~$ hadoop version
    Hadoop 2.8.5
    
  2. hadoop-env.sh 文件配置

    新增 Java 环境变量配置

    export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64
    
  3. hdfs(name 和 data 节点)配置

    cd hadoop-2.8.5
    

    hdfs-site.xml 配置:

    vim ./etc/hadoop/hdfs-site.xml
    
    
      
        dfs.replication
        1
      
      
        dfs.namenode.name.dir
        file:/home/ubuntu/soft/hadoop-2.8.5/tmp/dfs/name
      
      
        dfs.datanode.data.dir
        file:/home/ubuntu/soft/hadoop-2.8.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.8.5/tmp
        Abase for other temporary directories.
      
      
        fs.defaultFS
        
        hdfs://0.0.0.0:9000
      
    
    

    namenode 格式化,启动 namenode 和 datanode

    hdfs namenode -format
    start-dfs.sh
    

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

2.3 ZooKeeper 安装

zk 安装相对容易,这里不再赘述,附上其他博友安装链接供大家参考

  • https://www.cnblogs.com/kingsonfu/p/10631332.html

2.4 HBase 安装

本文 HBase 使用外部 ZooKeeper

2.4.1 从国内镜像站点下载 HBase 并解压

  • https://mirrors.cnnic.cn/apache/hbase/1.4.13/hbase-1.4.13-bin.tar.gz
tar xvf hbase-1.4.13.tar.gz

2.4.2 配置

  1. 环境变量配置

    export HBASE_HOME=/home/ubuntu/soft/hbase-1.4.13
    export PATH=$HBASE_HOME/bin:$PATH
    
  2. 编辑 hbase-env.sh

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

    
      
        
        hbase.rootdir
        hdfs://192.168.1.5:9000/hbase
      
      
        hbase.cluster.distributed
        true
         
      
        
        hbase.zookeeper.quorum
        192.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
      
    
    
  4. 配置 region servers

    可配置单节点 zk 或者多节点 zk

    192.168.1.5

  5. HBase 安装验证与启动

    # HBase 安装验证
    ubuntu@ubuntu:~$ hbase version
    HBase 1.4.13
     
    # HBase 启动
    start-hbase.sh
    
  6. 验证是否使用外部 zk,浏览器验证 HBase 界面化

    ubuntu@ubuntu:~$ zkCli.sh
    

    zk 连接服务会有 HBase 服务

浏览器验证 http://192.168.1.5:16010/master-status

2.5 Geomesa+HBase 部署

可以使用 Geomesa+HBase 源码安装,也可使用发行版本安装,本文选择发行版安装。

如果使用源码安装请参照阿里云潇博士安装文章:

  • https://blog.csdn.net/xiaof22a/article/details/80215787

发行版安装包下载路径:

  • https://github.com/locationtech/geomesa/releases/download/geomesa_2.11-3.1.0/geomesa-hbase_2.11-3.1.0-bin.tar.gz

2.5.1 下载解压

$ tar xvf geomesa-hbase_2.11-3.1.0-bin.tar.gz
$ cd geomesa-hbase_2.11-3.1.0
$ ls
bin/  conf/  dist/  docs/  examples/  lib/  LICENSE.txt  logs/

2.5.2 环境变量配置

vim ~/.bashrc
# 配置 GEOMESA_HBASE_HOME
export GEOMESA_HBASE_HOME="/home/ubuntu/soft/geomesa-hbase_2.11-3.1.0"
export GEOMESA_LIB="/home/ubuntu/soft/geomesa-hbase_2.11-3.1.0/lib"
export GEOMESA_LOG_DIR="/home/ubuntu/soft/geomesa-hbase_2.11-3.1.0/logs"
export PATH=${GEOMESA_HBASE_HOME}/bin:$PATH
  • Hbase2 请使用 geomesa-hbase-distributed-runtime-hbase2_2.11-3.1.0.jar
  • Hbase1 请使用 geomesa-hbase-distributed-runtime-hbase1_2.11-3.1.0.jar

${GEOMESA_HBASE_HOME}/dist/hbase/geomesa-hbase-distributed-runtime-hbase1_2.11-3.1.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 存储测试数据

  1. 下载 shp 矢量数据(包括点、线、面)

    • http://download.geofabrik.de/asia/
  2. 如果已有 GeoServer
    请用 geoserver lib 包 jts-core-$version.jar 替换 geomesa-hbase 的 jts-core 包,避免版本冲突导致数据导入 HBase 报错

  3. 数据入 HBase

    geomesa-hbase ingest 
        --catalog gis_osm_pois_free_1 
        --feature-name gis_osm_pois_free_1 
        --input-format shp /home/ubuntu/data/china-latest-free.shp/gis_osm_pois_free_1.shp
    
  4. geomesa-hbase 命令行参数说明

    • https://www.geomesa.org/documentation/stable/user/hbase/usage.html

2.6. GeoServer 部署

GeoServer 可使用源码编译

  • https://github.com/geoserver/geoserver/tree/2.17.5
  • https://github.com/liuqun/geoserver/tree/liuqun-v2.19.1

本文使用war包+tomcat运行

  • http://geoserver.org/release/2.17.5/

2.6.1 tomcat运行geoserver war包

2.6.2 替换geomesa-hbase jts-core包

参考 2.5.5.2 小节

2.6.3 整合 GeoMesa+HBase

  1. $GEOMESA_HBASE_HOME/dist/gs-plugins/geomesa-hbase-gs-plugin_2.11-$VERSION-install.tar.gz解压到WBE-INF/lib路径下;

  2. 由于 geomesa-hbase-gs-plugin 并不包含有 Hadoop、HBase 有关的依赖 jar 文件,所以需要手动将以下 jar 文件复制到 WBE-INF/lib路径下(仔细观察 GeoServer 相关包是否已存在,小心 jar 冲突)

HBase-1.x 依赖包:

commons-cli-1.2.jar
commons-configuration-1.6.jar
commons-io-2.5.jar
commons-logging-1.1.3.jar
hadoop-auth-2.8.5.jar
hadoop-client-2.8.5.jar
hadoop-common-2.8.5.jar
hadoop-hdfs-2.8.5.jar
hadoop-hdfs-client-2.8.5.jar
hadoop-mapreduce-client-core-2.8.5.jar
hbase-client-1.4.13.jar
hbase-common-1.4.13.jar
hbase-hadoop-compat-1.4.13.jar
hbase-protocol-1.4.13.jar
htrace-core-3.1.0-incubating.jar
htrace-core4-4.1.0-incubating.jar
metrics-core-2.2.0.jar
netty-3.6.2.Final.jar
netty-all-4.1.48.Final.jar
protobuf-java-2.5.0.jar
zookeeper-3.4.14.jar

2.6.4 启动 Tomcat

浏览器地址访问:http://192.168.1.5:8080/

新增 geomesa-hbase 数据存储


HBase 数据存储

HBase 数据存储

2.6.5 OpenLayers 浏览器效果预览

预览图

3 GeoMesa+HBase 探索

3.1 如何实现类似 PostgreSQL + PostGIS 数据库功能,可以在同一 datastore 中多表访问,而不是每个表对应一个 datastore

3.2 面数据 GeoMesa-HBase 导入错误解决

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

4.结尾总结

本文总结了完整的 GeoMesa+HBase 技术栈,由于技术有限,难免有错误之处,希望博友可以不辞指正,也可在下方评论区留言,博主会及时回复。希望能帮到各位博友

————————————————
版权声明:本文为CSDN博主「yangdengxian」的原创文章,
         遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/yangdengxian/article/details/113727936

你可能感兴趣的:(【转载】GeoServer+GeoMesa+HBase 时空大数据环境搭建)