SpatialHadoop:有效的分析你的空间数据

一、简介

SpatialHadoop是一个开源的MapReduce扩展,专门用于在ApacheHadoop集群上处理空间数据。SpatialHadoop内置了空间高级语言,空间数据类型、空间索引和高效的空间操作。

二、安装和配置SpatialHadoop

1、配置SpatialHadoop

SpatialHadoop设计了一个通用的运行方式,它可以在任何一个已配置好的Hadoop集群上运行。SpatialHadoop已经在Hadoop1.2.1上进行过测试,但是它也支持Hadoop其它发行版本。

首先,你需要一个已配置好的Hadoop集群。然后你可以将SpatialHadoop特有的类以及配置文件加入已配置好的Hadoop集群中,这样新的SpatialHadoop命令就可以使用了。以下步骤就是在如何在已配置好的Hadoop中安装SpatialHadoop。

a.下载SpatialHadoop

通过如下连接下载SpatialHadoop

http://spatialhadoop.cs.umn.edu/spatialhadoop-2.1-hadoop-1.2.1-bin.tar.gz

b.在集群中进行配置

将下载好的SpatialHadoop文件解压到本地目录。再在conf/hadoop-env.sh中加入本地的JAVA_HOME安装路径。

2、SpatialHadoop虚拟机

	为了方便大家,我们可以直接下载SpatialHadoop的虚拟机,在VirtueBox中导入下载好的虚拟机,虚拟机中已经为我们配置好了SpatialHadoop,我们可以直接使用。安装虚拟机有如下几个步骤:

a.点击如下连接下载最新的VirtueBox

https://www.virtualbox.org/wiki/Downloads

b.点击如下连接获得最新的SpatialHadoop虚拟机

http://spatialhadoop.cs.umn.edu/SpatialHadoop-vm-2.1.ova

c.安装好VirtureBox,点击左上角:管理->导入虚拟电脑,导入已经下载好的SpatialHadoop虚拟机。

d.启动SpatialHadoop虚拟机,虚拟机的用户名和密码皆为:shadoop

e.SpatialHadoop位于虚拟机的 ’~/spatialhadoop-*’目录下。现在我们可以在伪分布式模式下运行SpatialHadoop。

三、启动SpatialHadoop并运行一个实例

1、更改SpatialHadoop的默认目录名

在Ubuntu中,输入终端命令进入SpatialHadoop目录下,启动SpatialHadoop集群:

为了方便起见,我们用如下命令将SpatialHadoop默认的目录改名:


注意:更改了SpatialHadoop目录名为shadoop后,我们需要配置shadoop/conf文件夹下的hdfs-site.xml和mapred-site.xml文件。

进入~/shadoop/conf目录下,我们用如下命令:sudogedit hdfs-site.xml

<configuration>

  <property>

    <name>dfs.data.dir</name>

    <value>/home/shadoop/shadoop/hdfs/data</value>

  </property>

 

  <property>

    <name>dfs.name.dir</name>

    <value>/home/shadoop/shadoop/hdfs/name</value>

  </property>

</configuration>

 

进入~/shadoop/conf目录下,我们用如下命令:sudogedit mapred-site.xml

<configuration>

  <property>

    <name>mapred.job.tracker</name>

    <value>hdfs://localhost:9001</value>

  </property>

  <property>

    <name>mapred.local.dir</name>

    <value>/home/shadoop/ shadoop /hdfs/mapred</value>

  </property>

</configuration>


2、启动SpatialHadoop集群

进入~/shadoop目录下,输入如下命令:bin/start-all.sh启动集群。再输入jps命令,查看五个守护进程是否启动成功。


3、简单示例

当我们的SpatialHadoop配置好之后,我们需要运行一些例子来让我们了解SpatialHadoop的特性。下面我们将生成一个随机文件,并用网格索引这个文件,然后对这个已经建立索引的文件进行一些空间查询。这个示例所需的类都包含在spatialhadoop *.jar中,你可以输入“bin / shadoop”命令来使用这些类。

a.生成一个随机的文件其中包含随机生成的矩形,输入下面的命令:

bin/shadoop generate test mbr:0,0,1000000,1000000size:1.gb shape:rect

这个命令生成了一个名为”test”的1G文件,文件中所有的矩形都包含在角为(0,0),长宽分别为1000000,1000000的矩形内。

b.用网格索引来索引这个文件,输入如下命令:

bin/shadoop index test test.grid mbr:0,0,1000000,1000000sindex:grid shape:rect

c.查看网格索引是如何划分这个文件

bin/shadoop readfile test.grid

执行该命令,我们可以看到文件被化成多少部分,已经各部分的的边界。

d.对文件进行一个rangequery操作

bin/shadoop rangequery test.grid rq_resultsrect:500,500,1000,1000

上面的命令是执行一个range query操作,查询的范围设置为边角为(500,500),长宽为1000,1000,运行的结果保存在HDFS上的rq_results文件夹中。

e.对文件进行一个knn操作

bin/shadoop knn test.grid knn_results point:1000,1000k:1000

这个knn查询的查询点为(1000,1000),k=1000,运行的结果存放在HDFS的knn_results文件夹中。

f.对文件进行一个spatial join操作

首先先生成另外一个文件,该文件已进行了网格索引。

bin/shadoop generate test2.grid mbr:0,0,1000000,1000000size:100.mb sindex:grid

现在,连接两个文件通过分布式连接算法使用如下命令:

bin/shadoop dj test.grid test2.grid sj_results

四、运行界面可视化示例

首先进入SpatialHadoop的目录并用“bin/start-all.sh”启动集群,最后使用”jps”查看五个守护进程是否启动成功。如图所示:


要在Hadoop集群上进行操作,需要关闭Hadoop的安全模式,用”bin/hadoop dfsadmin –safemode leave”命令来关闭Hadoop的安全模式。如图所示:


我们把需要处理的数据集,放在主文件夹下的Downloads目录下。如图所示:


我们在HDFS的根目录下建立文件夹,存放我们需要处理的数据集,利用”bin/hadoop fs –mkdir /parks”命令来建立’parks’文件夹,利用”bin/hadoopfs –ls /”来查看文件夹是否被创建。如图所示:

接着我们把Downloads目录下的’parks.tsv.bz2’数据集上传至HDFS根目录下的‘parks’文件夹中,将使用到”bin/hadoopfs –put ~/Downloads/parks.tsv.bz2 /parks”,接着可以利用”bin/hadoop fs–ls /parks”查看数据集是否上传成功。如图所示:



我们也可以利用“localhost:50070”查看HDFS的基本状况,如下图所示:


我们也可以点击”Browse thefilesystem”查看HDFS所存储的文件。

接着我们在浏览器中输入’ localhost:50070/visualizer.jsp’,进入数据处理的可视化界面,如图所示:


点击左侧的‘parks’文件夹,再点击‘preprocess’按钮,开始处理文件。处理数据集分为两个步骤,一是对数据集进行FileMBR操作,另一个是对数据集进行Plot操作。我们可以进入‘localhost:50030’页面对两个任务进行跟踪。当出现如下界面是则表示两个任务均执行完成。


接着我们进入‘localhost:50070/visualizer.jsp’界面,点击’parks’文件夹则可以看到,数据集被可视化了,如图所示:


想了解更多可以登录:

http://spatialhadoop.cs.umn.edu/index.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值