SpatialHadoop的编译与运行
本文通过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的编译与运行的更多相关文章
- notepad++编译并运行java (自定义包)
最近用Notepad++写汇编,感觉用起来挺顺手,于是想能不能也在这个优秀的编辑器下编写java并编译运行呢,因为每次启动eclipse都要挺长时间,而且eclipse实在太占内存了... 于是各种百 ...
- 手动编译并运行Java项目的过程
现在Java开发基本上就是IDE调试,如果跨平台打个jar包过去运行一般就可以了,但是有些情况比如需要引入外部依赖的时候,这个时候是不能直接运行的,还需要引入一些外部的参数,并不是简单的javac和j ...
- 如何使用命令行编译以及运行java文件
要想编译和运行java文件,很简单,只需要两个命令: (1) javac:作用:编译java文件:使用方法: javac Hello.java ,如果不出错的话,在与Hello.java 同一目录下会 ...
- [JAVA] 一个可以编辑、编译、运行Java简单文件的记事本java实现
本来是Java课做一个仿windows记事本的实验,后来突然脑子一热,结果就给它加了一个编译运行Java文件的功能. 本工程总共大约3000行代码,基本上把所学的java界面.文件.控件的功能都包含在 ...
- .NET程序的编译和运行
程序的编译和运行,总得来说大体是:首先写好的程序是源代码,然后编译器编译为本地机器语言,最后在本地操作系统运行. 下图为传统代码编译运行过程: .NET的编译和运行过程与之类似,首先编写好的源代码,然 ...
- Java程序编译和运行的过程
Java整个编译以及运行的过程相当繁琐,本文通过一个简单的程序来简单的说明整个流程. 如下图,Java程序从源文件创建到程序运行要经过两大步骤:1.源文件由编译器编译成字节码(ByteCode) 2 ...
- Java程序编译和运行的过程【转】
转自:http://www.360doc.com/content/14/0218/23/9440338_353675002.shtml Java整个编译以及运行的过程相当繁琐,本文通过一个简单的程序来 ...
- .NET概念:.NET程序编译和运行
.NET概念:.NET程序编译和运行 分类: c#程序设计 2012-02-29 15:46 3001人阅读 评论(2) 收藏 举报 .net编译器语言microsoftassemblyvb.net ...
- Xcode常见的编译、运行等错误的解决
Xcode常见的编译.运行等错误的解决 项目没找到Info.plist的错误 The solution for this particular instance of the error was “I ...
随机推荐
- idea下spring boot jpa写原生sql的时候,报Cannot resolve table错误
错误如图 打开View→Tool Windows→Persistence选项 在弹出的Persistence窗口的项目上右键,选择Generate Persistence Mapping→By Dat ...
- redis主从中断异常处理
线上预警主从中断: 查看线上复制信息: # Replication role:slave master_host:master_host master_port:6379 master_link_st ...
- hdu 5432
Problem Description As we know, Rikka is poor at math. Yuta is worrying about this situation, so he ...
- GoLand中同一个目录下的package无法调用
代码结构: 三个代码的package 都是 pipefilter,执行split_filter_test.go 就会提示 undefined:xxxxxxx Golang实际都可以自己补全另一个文 ...
- 使用Harbor搭建Docker私有镜像仓库
Harbor介绍:https://goharbor.io/ 前置条件 需要安装了docker和docker-compose 下载Harbor 在harbor下载页(https://github.com ...
- ios数组倒序
比如有一个数组: NSArray *arr = @["]; 倒过来排序: arr = [[arr reverseObjectEnumerator] allObjects]; NSMutabl ...
- 我是怎么和SAP结缘的 - Jerry的SAP校园招聘之路
2006年9月,结束了一年的北京中科院实习后,我回到了电子科技大学,此时已经是研三上学期了.有着"金九银十"之称的秋季校园招聘正式开始了. 准备好了简历后,Jerry也加入了浩浩荡 ...
- 使用pandoc制作幻灯片
示例Md % Habits % John Doe % March 22, 2005 # In the morning ## Getting up - Turn off alarm - Get out ...
- Vue路由嵌套和命名视图
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- dubbo spring 的使用
1:项目的架构,本项目使用的maven,分为三个模块. api 为接口 , server 为服务端 consumer 为调用端 2:api的模块结构 该模块主要是定义接口和实体.没什么具体介绍的. ...