本文通过MetaWeblog自动发布,原文及更新链接:https://extendswind.top/posts/technical/spatialhadoop_compile_and_run

SpatialHadoop相对HadoopGIS等库,在MapReduce时代的空间数据处理开源库算处理较好。SpatialHadoop在效率上相对一些新的基于Spark空间数据处理开源库明显偏低,加上本身的功能实现得差不多,最近提交的更新越来越少,感觉发展趋势不太好,主要用于学习相关的索引技术。

编译与运行

主页上有已经编译好的包,可以直接解压到Hadoop目录下运行,但官方的版本解压有错误,因此下载github上源码编译。

需要的环境:

  • jdk8
  • Hadoop 2.7.7
  • maven

源码编译

源码地址 https://github.com/aseldawy/spatialhadoop2,直接下载或者git clone到本地。

需要安装maven用于代码编译。

编译前将pom.xml文件中hadoop相关的版本改为需要的版本。

mvn compile 编译源码
mvn assembly:assembly 代码打包,会在target目录下生成jar和一个包含jar与相关依赖的tar.gz包

在2f1aefd32860d0279f2fc479a8bafb68d07e3761版本(Mar 13,2018)编译时会由于缺少一个测试文件测试失败,可以选择跳过测试,或者注释掉测试的代码(src/test/java/edu/umn/cs/spatialHadoop/indexing/RStarTreeTest.java中的某个函数)。

运行

首先需要有一个Hadoop集群,能够提交yarn任务。

将target目录下生成的tar.gz包(spatialhadoop-2.4.3-SNAPSHOT-bin.tar.gz)拷贝到Hadoop目录下并解压即可。

cp target/spatialhadoop-2.4.3-SNAPSHOT-bin.tar.gz $HADOOP_HOME/
cd $HADOOP_HOME
tar -zxvf spatialhadoop-2.4.3-SNAPSHOT-bin.tar.gz

Hadoop目录下运行下面的测试代码,会向HDFS中写入一个随机生成的矩形文件。

sbin/shadoop generate test.rects size:1.gb shape:rect mbr:0,0,1000000,1000000 -overwrite

SpatialHadoop运行机制

shadoop 脚本

SpatialHadoop 通过脚本shadoop运行命令,脚本就只有几行代码

bin=`dirname "$0"`
bin=`cd "$bin" > /dev/null; pwd` # Call Hadoop with the operations.Main as the main class
. "$bin"/hadoop edu.umn.cs.spatialHadoop.operations.Main $@

其实只是将spatialhadoop的jar包与相关依赖jar包放入Hadoop的包目录中,然后通过shadoop脚本调用Hadoop脚本调用包中的一个类,向YARN提交MapReduce任务。

spatialhadoop的相关文件

spatialhadoop-2.4.3-SNAPSHOT-bin.tar.gz 中有以下的文件。

.
├── bin
│   └── shadoop
├── etc
│   └── hadoop
│   ├── spatial-site.xml
│   └── spatial-site.xml.template
├── LICENSE.txt
├── README.md
└── share
└── hadoop
└── common
└── lib
├── esri-geometry-api-1.2.1.jar
├── javax.mail-1.5.5.jar
├── javax.mail-api-1.5.5.jar
├── jts-1.13.jar
└── spatialhadoop-2.4.3-SNAPSHOT.jar

配置文件貌似基本功能上用得不多,shadoop脚本也比较简单,除去使用的相关环境依赖jar包,spatialhadoop实质上只是执行spatialhadoop-2.4.3-SNAPSHOT.jar包中的函数而已。

SpatialHadoop 基本使用

构建索引文件与空间范围查询

shadoop index test.rects sindex:grid test.grid shape:rect
shadoop rangequery test.grid rect:10,10,2000,3000 rangequery.out shape:rect

主要的索引结构,文件存储形式等在官网有相关文档。

具体运行的参数和运行的命令很多没有介绍,输入bin/shadoop以及bin/shadoop 接命令能够看到命令的基本使用情况,更具体的估计要去找源码了。

主要参考链接

SpatialHadoop的编译与运行的更多相关文章

  1. notepad++编译并运行java (自定义包)

    最近用Notepad++写汇编,感觉用起来挺顺手,于是想能不能也在这个优秀的编辑器下编写java并编译运行呢,因为每次启动eclipse都要挺长时间,而且eclipse实在太占内存了... 于是各种百 ...

  2. 手动编译并运行Java项目的过程

    现在Java开发基本上就是IDE调试,如果跨平台打个jar包过去运行一般就可以了,但是有些情况比如需要引入外部依赖的时候,这个时候是不能直接运行的,还需要引入一些外部的参数,并不是简单的javac和j ...

  3. 如何使用命令行编译以及运行java文件

    要想编译和运行java文件,很简单,只需要两个命令: (1) javac:作用:编译java文件:使用方法: javac Hello.java ,如果不出错的话,在与Hello.java 同一目录下会 ...

  4. [JAVA] 一个可以编辑、编译、运行Java简单文件的记事本java实现

    本来是Java课做一个仿windows记事本的实验,后来突然脑子一热,结果就给它加了一个编译运行Java文件的功能. 本工程总共大约3000行代码,基本上把所学的java界面.文件.控件的功能都包含在 ...

  5. .NET程序的编译和运行

    程序的编译和运行,总得来说大体是:首先写好的程序是源代码,然后编译器编译为本地机器语言,最后在本地操作系统运行. 下图为传统代码编译运行过程: .NET的编译和运行过程与之类似,首先编写好的源代码,然 ...

  6. Java程序编译和运行的过程

    Java整个编译以及运行的过程相当繁琐,本文通过一个简单的程序来简单的说明整个流程. 如下图,Java程序从源文件创建到程序运行要经过两大步骤:1.源文件由编译器编译成字节码(ByteCode)  2 ...

  7. Java程序编译和运行的过程【转】

    转自:http://www.360doc.com/content/14/0218/23/9440338_353675002.shtml Java整个编译以及运行的过程相当繁琐,本文通过一个简单的程序来 ...

  8. .NET概念:.NET程序编译和运行

    .NET概念:.NET程序编译和运行 分类: c#程序设计 2012-02-29 15:46 3001人阅读 评论(2) 收藏 举报 .net编译器语言microsoftassemblyvb.net ...

  9. Xcode常见的编译、运行等错误的解决

    Xcode常见的编译.运行等错误的解决 项目没找到Info.plist的错误 The solution for this particular instance of the error was “I ...

随机推荐

  1. Linux 查询端口被占用命令

    1.lsof -i:端口号 用于查看某一端口的占用情况,比如查看8000端口使用情况,lsof -i:8000 lsof -i:8080:查看8080端口占用 lsof abc.txt:显示开启文件a ...

  2. 文件流FileStream的读写

    1.FileStream文件流的概念: FileStream 类对文件系统上的文件进行读取.写入.打开和关闭操作,并对其他与文件相关的操作系统句柄进行操作,如管道.标准输入和标准输出.读写操作可以指定 ...

  3. 【转载】Response对象的作用以及常用方法属性

    Response对象是Asp.Net应用程序中非常重要的一个内置对象,其作用为负责将服务器执行好的信息输出给客户端,即作用主要为响应客户端请求并将服务器的响应返回给用户,在页面的临时跳转中,也可使用R ...

  4. python路径相关处理

    一.绝对路径 import os path1=os.path.abspath('.') #表示当前所处的文件夹的绝对路径 print(path1) path2=os.path.abspath('..' ...

  5. dede织梦如何去除网站底部的版权信息

    dede织梦如何删除版权powered by?在织梦中,特别是在仿站之中,经常会在首页的底部出现powered by,这是dedecms织梦系统底部自带的官方链接power by等字样,很多新用户想去 ...

  6. MD 使用 i5ting_toc 转换成 HTML

    MD 使用 i5ting_toc 转换成 HTML 本文作者:天析 作者邮箱:2200475850@qq.com 发布时间: Wed, 10 Jul 2019 13:59:00 +0800 前言 md ...

  7. MySQL binlog反解析

    反解析delete语句 背景:delete table忘了加条件导致整张表被删除 恢复方式:直接从binlog里反解析delete语句为insert进行恢复 导出删指定表的DELETE语句: # my ...

  8. git使用——准备工作

    参考:如何在 Git 中重置.恢复,返回到以前的状态 初次运行 Git 前的配置 安装好Git后首先要做的便是配置Git环境.每台计算机上只需要配置一次,程序升级时会保留配置信息. 你可以在任何时候再 ...

  9. Dos命令获取当前时间

    = = 这个真的折腾死我了.... 参考:http://bbs.bathome.net/thread-3328-1-1.html 操作系统不同,日期格式也可能不同: 星期二 2008-07-29 20 ...

  10. MyCat(1.1)Mycat基本介绍

    [1]学习目的 (1)掌握在数据库负载增大时的处理方法 (2)理解mycat的基础概念 (3)掌握mycat基础配置和监控方法 [2]Mycat的前世今生 官网:http://mycat.io/ 下载 ...