GeoMesa在CDH5.9的部署实践
GeoMesa是一套开放源码的工具,支持在分布式系统上进行大规模地理空间查询和分析。GeoMesa支持在accumulo、hbase、google bigtable和cassandra等用于大规模存储点、线和多边形数据的数据库上提供空间地理数据索引。geomesa还基于kafka通过分层空间语义提供近乎实时的流处理。通过GeoServer,GeoMesa促进了与各种现有的地图客户端工具(基于标准的OGC接口和协议,例如WFS和WMS协议)的集成。GeoMesa还支持使用Spark用于自定义的分布式地理空间分析。
安装HBase
参考官方安装文档:https://hbase.apache.org/book.html#quickstart
BUG1: 报以下错误
Java HotSpot(TM) 64-Bit Server VM warning: ignoring option PermSize=128m; support was removed in 8.0 Java HotSpot(TM) 64-Bit Server VM warning: ignoring option MaxPermSize=128m; support was removed in 8.0
解决方法:
vim /Users/liubo/opt/hbase-1.4.9/conf/hbase-env.sh
将以下内容注释:
Configure PermSize. Only needed in JDK7. You can safely remove it for JDK8+
export HBASE_MASTER_OPTS="$HBASE_MASTER_OPTS -XX:PermSize=128m -XX:MaxPermSize=128m -XX:ReservedCodeCacheSize=256m"
export HBASE_REGIONSERVER_OPTS="$HBASE_REGIONSERVER_OPTS -XX:PermSize=128m -XX:MaxPermSize=128m -XX:ReservedCodeCacheSize=256m"
BUG2: HBASE无故关闭进程。
原因:Hadoop数据块丢失。
解决方法,Hadoop数据块删除。安装GeoMesa
使用以下命令下载并解压缩安装文件。
$ VERSION=2.2.0
$ wget "https://github.com/locationtech/geomesa/releases/download/geomesa_2.11-$VERSION/geomesa-hbase_2.11-$VERSION-bin.tar.gz"
$ tar xvf geomesa-hbase_2.11-$VERSION-bin.tar.gz
$ cd geomesa-hbase_2.11-$VERSION
$ ls
bin/ conf/ dist/ docs/ examples/ lib/ LICENSE.txt logs/
安装GeoMesa Distributed Runtime JAR
设置GEOMESA环境变量:
$ vi /etc/profile
添加
export GEOMESA_HBASE_HOME=/opt/geomesa-hbase_2.11-2.2.0
引用
$ source /etc/profile
打开
$GEOMESA_HBASE_HOME/conf/geomesa-env.sh
修改以下内容
setvar HADOOP_HOME /opt/cloudera/parcels/CDH/lib/hadoop
setvar HADOOP_CONF_DIR /etc/hadoop/conf
hadoopCDH="1"
setvar HADOOP_COMMON_HOME /opt/cloudera/parcels/CDH/lib/hadoop
setvar HADOOP_HDFS_HOME /opt/cloudera/parcels/CDH/lib/hadoop-hdfs
setvar YARN_HOME /opt/cloudera/parcels/CDH/lib/hadoop-yarn
setvar HADOOP_MAPRED_HOME /opt/cloudera/parcels/CDH/lib/hadoop-mapreduce
setvar ZOOKEEPER_HOME /opt/cloudera/parcels/CDH/lib/zookeeper
将Jar包放在hbase根目录的lib文件夹下,`${hbase.dynamic.jars.dir}`是你的hbase根目录的lib文件夹地址。`$VERSION`是你的版本号。
hadoop fs -put ${GEOMESA_HBASE_HOME}/dist/hbase/geomesa-hbase-distributed-runtime-$VERSION.jar /hbase/lib
如果权限不够,可以使用有权限的用户例如:
sudo -u hdfs hadoop fs -put ${GEOMESA_HBASE_HOME}/dist/hbase/geomesa-hbase-distributed-runtime_2.11-2.2.0.jar /hbase/lib
查看是否传输成功:
hadoop fs -ls /hbase/lib
出现如下内容,说明成功。
修改geomesa配置
在`$GEOMESA_HBASE_HOME/conf`文件夹下创建`geomesa-site.xml`。
touch geomesa-site.xml
打开该文件
vi geomesa-site.xml
添加以下内容,注意,修改`[name_node]`为你自己的ip,并检查版本号`2.11-2.0.0.jar`
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
<property>
<name>geomesa.hbase.coprocessor.path</name>
<value>hdfs://[name_node]:8020/hbase/lib/geomesa-hbase-distributed-runtime_2.11-2.0.0.jar</value>
<description>HDFS or local path to GeoMesa-HBase Coprocessor JAR. If a local path is provided it must be
the same for all region servers. A path provided through the DataStore parameters will always
override this property.
</description>
<final>false</final>
</property>
</configuration>
下载、添加HBase的Jar包
运行以下,下载HBaseJar
$ sh $GEOMESA_HBASE_HOME/bin/install-hbase.sh
出现以下内容,选y,回车。
执行以下命令创建软连接
ln -s /opt/cloudera/parcels/CDH/lib/hbase/lib/metrics-core-2.2.0.jar $GEOMESA_HBASE_HOME/lib/metrics-core-2.2.0.jar;
ln -s /opt/cloudera/parcels/CDH/lib/hbase/lib/htrace-core-3.2.0-incubating.jar $GEOMESA_HBASE_HOME/lib/htrace-core-3.2.0-incubating.jar;
通过执行实例进行测试
执行以下:
$GEOMESA_HBASE_HOME/bin/geomesa-hbase ingest -c example-csv -s example-csv -C example-csv $GEOMESA_HBASE_HOME/examples/ingest/csv/example.csv
出现以下,说明运行成功!
打开hbase验证:
$ hbase shell
$ list
出现以下内容,说明GeoMesa成功运行了实例,并将数据保存在了hbase中。