SpatialHadoop:有效的分析你的空間數據

1、簡介

SpatialHadoop是一個開源的MapReduce擴展,專門用於在ApacheHadoop集羣上處理空間數據。SpatialHadoop內置了空間高級語言,空間數據類型、空間索引和高效的空間操做。html

2、安裝和配置SpatialHadoop

一、配置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.gzjsp

b.在集羣中進行配置

將下載好的SpatialHadoop文件解壓到本地目錄。再在conf/hadoop-env.sh中加入本地的JAVA_HOME安裝路徑。分佈式

二、SpatialHadoop虛擬機

爲了方便你們,咱們能夠直接下載SpatialHadoop的虛擬機,在VirtueBox中導入下載好的虛擬機,虛擬機中已經爲咱們配置好了SpatialHadoop,咱們能夠直接使用。安裝虛擬機有以下幾個步驟:

a.點擊以下鏈接下載最新的VirtueBoxoop

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

b.點擊以下鏈接得到最新的SpatialHadoop虛擬機spa

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

c.安裝好VirtureBox,點擊左上角:管理->導入虛擬電腦,導入已經下載好的SpatialHadoop虛擬機。

d.啓動SpatialHadoop虛擬機,虛擬機的用戶名和密碼皆爲:shadoop

e.SpatialHadoop位於虛擬機的 ’~/spatialhadoop-*’目錄下。如今咱們能夠在僞分佈式模式下運行SpatialHadoop。

3、啓動SpatialHadoop並運行一個實例

一、更改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>


二、啓動SpatialHadoop集羣

進入~/shadoop目錄下,輸入以下命令:bin/start-all.sh啓動集羣。再輸入jps命令,查看五個守護進程是否啓動成功。


三、簡單示例

當 咱們的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

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

4、運行界面可視化示例

首先進入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

相關文章
相關標籤/搜索