• 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 接命令能够看到命令的基本使用情况,更具体的估计要去找源码了。

    主要参考链接

  • 相关阅读:
    如果男人是计算机,女人是软件(在开发过程中的偶然随想)
    C/C++ 可变参数函数的原理和应用
    Python学习记录Hello Word
    Unity 把数字,英文图片变成字体
    unity+Android+PC加载本地图片
    Python学习记录安装
    Android学习 问题与答案
    Android 第三方 APK 包的静默安装
    Android学习 问题与答案 (2)
    JNI 之 HelloWorld
  • 原文地址:https://www.cnblogs.com/fly2wind/p/9993926.html
Copyright © 2020-2023  润新知