GeoMesa-Accumulo详细配置及实例运行
近在搭建GeoMesa环境并运行一个Accumulo实例,在这个过程中遇到了很多问题,也感谢网上许多作者的文章,在此分享自己的学习经验,一是为了让初学者少走弯路,而是记录自己的学习,因为这种东西一段时间不搞就会忘得差不多。
GeoMesa是开源的一套地理大数据处理套件,GeoMesa支持将海量的时空数据存储到Accumulo,HBase,Google Bigtable和Cassandra数据库中,并提供高效的索引来读取、查询这些数据。具体的软件和工具介绍可以百度,好好理解,我对具体原理也不清楚,后续会写文章记录学习进度。
在运行实例之前,我们需要安装一些必需软件。如果对linux系统不熟的,可以先在主文件夹下新建GeoMesa文件夹,然后先将需要的压缩包下载到给文件夹下。
操作系统Ubuntu14.04 LTS
1.下载Accumulo,http://accumulo.apache.org/,有源码和二进制文件,这里直接下载编译之后的二进制包就行。
2.Accumulo依赖Hadoop和ZooKeeper,http://hadoop.apache.org/,https://zookeeper.apache.org/,下载同上,每个软件在下载界面都有详细的用户文档说明和安装使用步骤,稍微有点基础的都可以按照步骤执行。
3.需要用到Maven,http://maven.apache.org/,同上。
4.JDK必不可少,可以在甲骨文网站Oracle下载,http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html,选择下载。下图是我的安装包和解压后的文件。
下载完这些软件包并解压后,接下来进行环境配置。可以参考accumulo-1.8.1文件夹下的INSTALL.md文件,有相应的步骤。这里我结合自己的经验总结配置的步骤:
1.配置Java环境变量。Linux(Ubuntu)中配置文件有多个,关于不同配置文件说明可以参考以下文章:http://blog.csdn.net/l554644284/article/details/48398085。我这里采用全局配置:
lw@lw-virtual-machine:~$ gedit ~/.bashrc
打开bashrc配置文件后,在末尾添加
export PATH=$JAVA_HOME/bin:$PATH
1
接着,使配置文件立即生效,命令如下:
source ~/.bashrc
验证:
java -version
2.配置hadoop。网上有很多相关教程,hadoop官网也有很详细的介绍,推荐去官网参考学习,我的配置步骤如下:
(1)安装ssh和pdsh
$ sudo apt-get install ssh
$ sudo apt-get install pdsh
ssh免密码登陆配置:
ssh-keygen -t rsa -P ” -f ~/.ssh/id_rsa
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
chmod 0600 ~/.ssh/authorized_keys
ssh localhost
(2)解压hadoop压缩包后,在~/GeoMesa/hadoop/目录下,建立tmp、hdfs/name、hdfs/data目录,执行如下命令:
mkdir ~GeoMesa//hadoop/tmp
mkdir ~GeoMesa/hadoop/hdfs
mkdir ~GeoMesa/hadoop/hdfs/data
mkdir ~GeoMesa/hadoop/hdfs/name
说明:我把hadoop2.7.4解压到~GeoMesa/hadoop文件夹下
(3)设置环境变量
gedit ~/.bashrc
在配置文件末尾加入:
export HADOOP_HOME=~/GeoMesa/hadoop/hadoop-2.7.4
export PATH=$PATH:$HADOOP_HOME/bin
使配置文件生效:
source ~/.bashrc
(4)hadoop配置
配置文件
hadoop-2.7.4/etc/hadoop/hadoop-env.sh
hadoop-2.7.4/etc/hadoop/yarn-env.sh
hadoop-2.7.4/etc/hadoop/core-site.xml
hadoop-2.7.4/etc/hadoop/hdfs-site.xml
hadoop-2.7.4/etc/hadoop/mapred-site.xml
hadoop-2.7.4/etc/hadoop/yarn-site.xml
①配置hadoop-env.sh
#export JAVA_HOME=${JAVA_HOME}
export JAVA_HOME=~/GeoMesa/jdk1.8.0_144
②配置yarn-env.sh
# export JAVA_HOME=/home/y/libexec/jdk1.6.0/
export JAVA_HOME=~/GeoMesa/jdk1.8.0_144
③配置core-site.xml
<property>
<name>fs.default.name</name>
<value>hdfs://localhost:9000</value>
<description>HDFS的URI,文件系统://namenode标识:端口号</description>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>~/GeoMesa/hadoop/tmp</value>
<description>namenode上本地的hadoop临时文件夹</description>
</property>
④配置hdfs-site.xml
<property>
<name>dfs.name.dir</name>
<value>~/GeoMesa/hadoop/hdfs/name</value>
<description>namenode上存储hdfs名字空间元数据 </description>
</property>
<property>
<name>dfs.data.dir</name>
<value>~/GeoMesa/hadoop/hdfs/data</value>
<description>datanode上数据块的物理存储位置</description>
</property>
<property>
<name>dfs.replication</name>
<value>1</value>
<description>副本个数,配置默认是3,应小于datanode机器数量</description>
</property>
⑤配置mapred-site.xml
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
⑥配置yarn-site.xml
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<property>
<name>yarn.nodemanager.env-whitelist</name>
<value>JAVA_HOME,HADOOP_COMMON_HOME,HADOOP_HDFS_HOME,HADOOP_CONF_DIR,CLASSPATH_PREPEND_DISTCACHE,HADOOP_YARN_HOME,HADOOP_MAPRED_HOME</value>
</property>
(5)启动验证hadoop
1)格式化namenode
bin/hdfs namenode –format
2)启动NameNode 和 DataNode 守护进程
sbin/start-dfs.sh
3)启动ResourceManager 和 NodeManager 守护进程
sbin/start-yarn.sh
4)执行jps命令,看hadoop是否启动正常
jps
3.配置zookeeper
在配置文件conf/zoo.cfg添加:
tickTime=2000
dataDir=/var/lib/zookeeper
clientPort=2181
启动命令:
bin/zkServer.sh start
连接zookeeper:
bin/zkCli.sh -server 127.0.0.1:2181
这里我们只要启动zookeeper就行,相应的shell编程推荐参考官网。
4.配置Maven
(1)设置环境变量
gedit ~/.bashrc
在配置文件末尾加入:
export PATH=~/GeoMesa/apache-maven-3.5.0/bin:$PATH
使配置文件生效:
source ~/.bashrc
(2)运行
mvn -v
5.配置Accumulo
建议:仔细阅读Accumulo文件夹下的INSTALL.md说明文件
(1)选择本地库
./bin/build_native_library.sh
这里可以执行,可以不执行,如果执行这一步下一步的第二个选项选Native,如果不执行选Java选项,推荐不执行。
(2)运行配置文件
./bin/bootstrap_config.sh
注意:hadoop版本选项选个
(3)配置conf/accumulo-site.xml
<property>
<name>instance.volumes</name>
<value>hdfs://localhost:9000/accumulo</value>
<description>comma separated list of URIs for volumes. example: hdfs://localhost:9000/accumulo</description>
</property>
<property>
<name>instance.zookeeper.host</name>
<value>localhost:2181</value>
<description>comma separated list of zookeeper servers</description>
</property>
注意:阅读INSTALL.md,因为每个人遇到的错误可能不一样。
(4)初始化
./bin/accumulo init
出现上图所示实例名称和密码,说明Accumulo配置成功。我根据上述步骤成功得到上述结果,后来我因为hadoop版本重新配置整个环境出现了问题,猜测可能是版本原因,目前还没有解决该问题。如果你参照我的博客配置出现问题,欢迎联系我。
(5)启动Accumulo
./bin/start-all.sh
其他相关命令如下:
./bin/accumulo shell -u root
./bin/stop-all.sh
可在浏览器输入localhost:9995进行查看,如下图
6.安装Geomesa-accumulo分布式运行库
(1)这里有编译好的,下载一个1.3.0的就可以了
https://repo.locationtech.org/content/repositories/geomesa-releases/org/locationtech/geomesa/geomesa-accumulo-dist_2.11/
将geomesa-accumulo_2.11-1.3.0-m2/dist/accumulo/geomesa-accumulo-distributed-runtime_2.11-1.3.0-m2.jar 复制到ACCUMULO_HOME/lib/ext 下,如果有两个复制一个即可。
(2)设置accumulo命令行工具
在geomesa-accumulo_2.11-1.3.0-m2/conf下的geomesa-env.sh中加入hadoop和accumulo根目录
export HADOOP_HOME=~/GeoMesa/hadoop/hadoop-2.6.5
export ACCUMULO_HOME=~/GeoMesa/accumulo-1.8.1
(3)运行配置文件
bin/geomesa configure
一直选择yes
(4)配置环境变量
gedit ~/.bashrc
在配置文件末尾加入:
export GEOMESA_ACCUMULO_HOME=/home/lw/GeoMesa/geomesa-accumulo_2.11-1.3.0-m2
export PATH=${GEOMESA_ACCUMULO_HOME}/bin:$PATH
使配置文件生效:
source ~/.bashrc
7.安装namespace
用geomesa-accumulo_2.11-1.3.0-m2/bin下的setup-namespace.sh脚本设置用户名密码和namespace
./setup-namespace.sh -u root -p 123 -n myNamespace
8.运行示例程序
选择目录
$git clone https://github.com/geomesa/geomesa-tutorials.git
下载完成后
$cd geomesa-tutorials
$ mvn clean install -pl geomesa-quickstart-accumulo
后,运行
java -cp target/geomesa-quickstart-accumulo-1.3.3.1-SNAPSHOT.jar
com.example.geomesa.accumulo.AccumuloQuickStart -instanceId "123"
-zookeepers localhost -user root -password "123" -tableName testgeomesa
到此,整个环境搭建成功并成功运行案例。在学习的过程之中,会遇到各种各样的bug,有些bug不知怎么地就解决了,主要是自己对底层软件的设计原理以及LInux的内核等不是很熟悉。在后续的学习中,我还会和大家共享GeoMesa的学习心得,比如结合GeoServer可视化数据等等。在配置GeoMesa的过程中,我碰到了许多问题,也学习了一些其他的知识,限于这篇文章的篇幅,这里就不说明了,欢迎大家的讨论。
相关文章