一、問題描述
海量空間數據存儲要求服務器水平擴展性強,基於Hadoop的NoSQL數據庫具有水平擴展性強的特點,其高效的並行存儲機制也爲空間檢索提供快速響應的能力。
二、方案選擇
由於將數據存入Hbase中需要考慮如何存儲,空間數據處理的基本單位是二維或三維座標,HBase只支持一維行鍵檢索。行鍵的設置是HBase存儲和處理空間數據首要解決的問題。不同於Hilbert、Geohash等降維方法,此次使用了行鍵設計方法,將座標數據轉化爲一維字符串。並且提出了對於表的設計。
並且本文提供了空間數據區域查詢算法-窗口區域查詢。
三、開發平臺
虛擬機:Oracle VM VirtualBox
Linux系統: Ubuntu
Hadoop版本: Hadoop-2.6.0
HBase版本:hbase-0.98.11-hadoop2-bin.tar.gz
四、參考網站及文獻
https://www.shiyanlou.com/courses/37
五、HBase的構建
1、檢查必要條件
1.1在終端輸入 java -version 來查看你機子上的 Java 版本
java -version
1.2、hadoop和ssh
需要注意的是僞分佈模式下,HBase 的版本需要和 Hadoop版本 匹配 ,不然很可能容易出錯。你可以在HBase的lib目錄下看到對應的Hadoop的Jar文件版本。
在這裏,我們使用了Hadoop V2.4.1版本以及HBase V0.98.11版本。
Hadoop的安裝和ssh的配置在上一節有講,如沒有配置,可轉到http://blog.csdn.net/jamexfx/article/details/53192740
2、hbase的安裝
su hadoop
wget http://labfile.oss.aliyuncs.com/hbase-0.98.11-hadoop2-bin.tar.gz
tar zxvf hbase-0.98.11-hadoop2-bin.tar.gz
mv hbase-0.98.11-hadoop2 hbase
3、配置相關文件
3.1配置 hbase-site.xml 文件
<configuration>
<property>
<name>hbase.rootdir</name>
<value>hdfs://localhost:9000/hbase</value>
</property>
<property>
<name>hbase.cluster.distributed</name>
<value>true</value>
</property>
</configuration>
3.2設置環境變量
另外,我們需要設置一些環境變量。修改HBase下的conf目錄中的hbase-env.sh文件(你的jdk路徑可能不一樣)
export JAVA_HOME=/usr/local/jdk1.7.0_67
export HBASE_MANAGES_ZK=true
3.3修改添加PATH
sudo vim /etc/profile
export PATH=$PATH:/usr/local/hadoop/hbase/bin
4、啓動HBase—僞分佈模式運行
4.1僞分佈模式下,必須先確保 HDFS 已經啓動。因此,我們先啓動 HDFS,輸入命令: ./start-all.sh
4.2使用 jps
查看目前 Hadoop 的進程
NameNode
NodeManager
DataNode
ResourceManager
SeconderNameNode
4.3HDFS 成功啓動之後,我們再啓動 HBase,這裏和單機模式下啓動 HBase 的方法一樣,輸入命令: ./start-hbase.sh
4.4此時再使用 jps查看,可以看到多了HBase的相關進程
NameNode
HRegionServer---
NodeManager
DataNode
HQuorumPeer
ResourceManager
HMaster---
SeconderNameNode
4.5進入 HBase Shell
通過HBase Shell用戶可以方便地創建、刪除以及修改表,還可以向表中添加數據、列出表中的相關相信等。
4.6停止 HBase
根據依賴關係,我們需要先關閉HBase, ./stop-hbase.sh
再關閉HDFS, ./stop-all.sh