美文网首页
【转载】GeoServer+GeoMesa+HBase 时空大数

【转载】GeoServer+GeoMesa+HBase 时空大数

作者: 阿群1986 | 来源:发表于2021-07-22 11:15 被阅读0次
    • 文章标签: 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 数据库)

    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 的数据。

    1.3 GeoServer

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

    1.4 OpenLayers/Leaflet/Mapbox-GL/Cesium

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

    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 压缩包

    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
      
      <configuration>
        <property>
          <name>dfs.replication</name>
          <value>1</value>
        </property>
        <property>
          <name>dfs.namenode.name.dir</name>
          <value>file:/home/ubuntu/soft/hadoop-2.8.5/tmp/dfs/name</value>
        </property>
        <property>
          <name>dfs.datanode.data.dir</name>
          <value>file:/home/ubuntu/soft/hadoop-2.8.5/tmp/dfs/data</value>
        </property>
        <property>
          <name>dfs.http.address</name>
          <value>0.0.0.0:50070</value>
        </property>
        <property>
          <name>dfs.permissions</name>
          <value>false</value>
          <description>need not permissions</description>
        </property>
      </configuration>
      

      core-site.xml 配置:

      vim ./etc/hadoop/core-site.xml
      
      <configuration>
        <property>
          <name>hadoop.tmp.dir</name>
          <value>file:/home/ubuntu/soft/hadoop-2.8.5/tmp</value>
          <description>Abase for other temporary directories.</description>
        </property>
        <property>
          <name>fs.defaultFS</name>
          <!--0.0.0.0 允许通过本机所有可用 IP 地址访问-->
          <value>hdfs://0.0.0.0:9000</value>
        </property>
      </configuration>
      

      namenode 格式化,启动 namenode 和 datanode

      hdfs namenode -format
      start-dfs.sh
      

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

    2.3 ZooKeeper 安装

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

    2.4 HBase 安装

    本文 HBase 使用外部 ZooKeeper

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

    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

      <configuration>
        <property>
          <!--hdfs地址-->
          <name>hbase.rootdir</name>
          <value>hdfs://192.168.1.5:9000/hbase</value>
        </property>
        <property>
          <name>hbase.cluster.distributed</name>
          <value>true</value>
        </property>   
        <property>
          <!--zk集群可以使用zk1:2181;zk2:2181方式配置-->
          <name>hbase.zookeeper.quorum</name>
          <value>192.168.1.5:2181</value>
        </property>
          <property>
          <name>hbase.tmp.dir</name>
          <value>/home/ubuntu/soft/hbase-1.4.13/tmp</value>
        </property>
        <property>
          <!--使用本地目录-->
          <name>hbase.zookeeper.property.dataDir</name>
          <value>/home/ubuntu/soft/zookeeper-3.4.14/data</value>
        </property>
      </configuration>
      
    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 源码安装,也可使用发行版本安装,本文选择发行版安装。

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

    发行版安装包下载路径:

    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 ,增加以下内容:

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

    2.5.4 初始化 GeoMesa-HBase

    bin/geomesa-hbase configure
    

    2.5.5 存储测试数据

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

    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 命令行参数说明

    2.6. GeoServer 部署

    GeoServer 可使用源码编译

    本文使用war包+tomcat运行

    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 时空大数

          本文链接:https://www.haomeiwen.com/subject/ypsemltx.html