随着互联网技术日益发展,庞大的数据量,传统关系型数据库已无法满足业务需求,需结合Nosql型数据库来应对时空海量数据和业务发展。针对日前互联网外出交通出行,位置点实时监控与轨迹播放等场景,提供一套有效的技术方案来满足需求。本文选型Geomesa+HBase技术栈,教大家搭建一套属于自己的单机版时空大数据环境,自下而上的技术组件介绍,希望能使大家清晰的掌握该组合技术栈。
Hbase用于时空数据的存储,实时监控点的更新,以及海量轨迹路线的存储。(感兴趣的博友可以与此对比Orcale、Postgresql数据库)
Apache Hadoop
Apache HBase
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
Geoserver是一款优秀的基于OGC(开放地理信息联盟)标准开发的数据渲染和电子地图生产服务引擎。
GeoServer
ol用于电子地图的浏览器端展示,也可选择leaflet、mapbox-gl-js等技术栈
OpenLayers - Welcome
sudo apt-get install ssh
ssh-keygen -t rsa
cd ~/.ssh
cat id_rsa.pub >> authorized_keys
ssh localhost
Index of /dist/hadoop/core/hadoop-2.7.5
tar zxvf hadoop-2.7.5.tar.gz
a. 环境变量配置(可选择hadoop安装路径)
sudo vim /etc/profile
export HADOOP_HOME=/home/ubuntu/soft/hadoop-2.7.5
export 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.defaultFS
hdfs://0.0.0.0:9000
namenode格式化,启动namenode和datanode
hdfs namenode -format
start-dfs.sh
打开http://192.168.1.200:50070/查看 NameNode 和 Datanode 信息,还可以在线查看 HDFS 中的文件
zk安装相对容易,这里不再赘述
本文HBase使用外部zookeeper
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.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
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
可以使用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
$ 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.txt logs/
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目录下
Geomesa使用HBase提供的coprocessor工具将处理过程移动到服务器端运行来提高查询效率,最简单的注册方式就是直接修改hbase-site.xml,增加以下内容:
hbase.coprocessor.user.region.classes
org.locationtech.geomesa.hbase.coprocessor.GeoMesaCoprocessor
bin/geomesa-hbase configure
a. 下载shp数据
Index of /asia
b. 如果已有geoserver
请用geoserver lib包jts-core-$version.jar替换geomesa-hbase的jts-core包,避免版本冲突导致数据导入hbase报错
c. 数据入hbase
geomesa-hbase ingest
--catalog qnl
--feature-name qnl
--input-format shp /export/soft/shp/qnl.shp
c. geomesa-hbase命令行参数说明
14.3. Using the HBase Data Store Programmatically — GeoMesa 3.3.0 Manuals
geoserver可使用源码编译
GitHub - geoserver/geoserver: Official GeoServer repository
本文使用war包+tomcat运行
GeoServer
参考2.5.5 b
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依赖包
浏览器地址访问:http://192.168.1.200:8090/
新增geomesa-hbase数据存储
Caused by: java.lang.NoSuchMethodError: org.locationtech.jts.geom.Polygon.getExteriorRing()Lorg/locationtech/jts/geom/LinearRing;
本文总结了完整的geomesa-hbase技术栈,由于技术有限,难免有错误之处,希望博友可以不辞指正,也可在下方评论区留言,博主会及时回复。希望能帮到各位博友