基於NoSQL數據庫的空間數據存儲(一)---Hadoop的構建

一、問題描述

海量空間數據存儲要求服務器水平擴展性強,基於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/35

五、Hadoop的構建

1、Hadoop啓動模式

單機模式:默認情況下運行爲一個單獨機器上的獨立java進程,主要用於調試環境
僞分佈模式:在單個機器上模擬成分佈式多節點環境,每一個Hadoop守護進程都作爲一個獨立的java進程運行。
完全分佈模式:真是的生產環境,搭建在完全分佈式的集羣環境
由於此次實驗主要是爲了實現如何在HBase中,設計空間檢索方法,對空間數據進行空間查詢。所以採用了僞分佈模式,不但可以在一臺機器上運行。還可以模擬多節點的環境。

2、環境配置

2.1添加用戶

sudo adduser hadoop

2.2將hadoop用戶加入sudo用戶組

sudo usermod -G sudo hadoop

2.3安裝openssh-server、java、rsync等

sudo apt-get update
sudo apt-get install openssh-server rsync
sudo service ssh restart
sudo apt-get install openjdk-7-jdk

2.4配置ssh免密碼登錄
切換到hadoop用戶,需要輸入添加hadoop用戶時配置的密碼。後續步驟都將在hadoop用戶的環境中執行。

su -l hadoop
ssh-keygen -t rsa -P ""

2.5在/home/Hadoop/.ssh目錄下生成了id_rsa(私鑰)和id_rsa.pub(公鑰)兩個文件,將公鑰追加到authorized_keys中,該文件保存所有允許以當前用戶身份登錄到ssh客戶端用戶的公鑰內容。

cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys

2.6驗證登錄本機是否還需要密碼,配置正確的話是可以不需密碼登錄的。

ssh localhost

3、下載並安裝Hadoop

3.1下載hadoop2.6.0

wget http://labfile.oss.aliyuncs.com/hadoop-2.6.0.tar.gz

3.2配置hadoop

在/home/Hadoop/.bashrc文件末尾添加如下內容

vim /home/hadoop/.bashrc

#HADOOP START
export JAVA_HOME=/usr/lib/jvm/java-7-openjdk-amd64
export HADOOP_INSTALL=/usr/local/hadoop
export PATH=$PATH:$HADOOP_INSTALL/bin
export PATH=$PATH:$HADOOP_INSTALL/sbin
export HADOOP_MAPRED_HOME=$HADOOP_INSTALL
export HADOOP_COMMON_HOME=$HADOOP_INSTALL
export HADOOP_HDFS_HOME=$HADOOP_INSTALL
export YARN_HOME=$HADOOP_INSTALL
export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_INSTALL/lib/native
export HADOOP_OPTS="-Djava.library.path=$HADOOP_INSTALL/lib"
#HADOOP END

3.3保存退出後,激活新加的環境變量

source ~/.bashrc

如果只想裝單機模式,到此爲止。

4、相關配置文件修改

4.1、修改core-site.xml

sudo gvim /usr/local/hadoop/etc/hadoop/core-site.xml

<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>

<!-- Put site-specific property overrides in this file. -->

<configuration>
    <property>
        <name>fs.default.name</name>
        <value>hdfs://localhost:9000</value>
    </property>
    <property>
        <name>hadoop.tmp.dir</name>
        <value>/home/hadoop/tmp</value>
   </property>
</configuration>

4.2修改hdfs-site.xml

sudo gvim /usr/local/hadoop/etc/hadoop/hdfs-site.xml

<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>

<!-- Put site-specific property overrides in this file. -->

<configuration>
    <property>
        <name>dfs.replication</name>
        <value>1</value>
    </property>
</configuration>

4.3修改mapred-site.xml

sudo cp /usr/local/hadoop/etc/hadoop/mapred-site.xml.template /usr/local/hadoop/etc/hadoop/mapred-site.xml

sudo gvim /usr/local/hadoop/etc/hadoop/mapred-site.xml


<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>

<!-- Put site-specific property overrides in this file. -->

<configuration>
    <property>
        <name>mapreduce.framework.name</name>
        <value>yarn</value>
    </property>
</configuration>

4.4修改yarn-site.xml

<configuration>
    <property>
        <name>yarn.nodemanager.aux-services</name>
        <value>mapreduce_shuffle</value>
    </property>
    <property>
        <name>yarn.nodemanager.aux-services.mapreduce.shuffle.class</name>
        <value>org.apache.hadoop.mapred.ShuffleHandler</value>
    </property>
</configuration>

4.5修改 hadoop-env.sh

sudo vim /usr/local/hadoop/etc/hadoop/hadoop-env.sh
修改 JAVA_HOME
#The java implementation to use
export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64

5、格式化HDFS文件系統

在使用hadoop前,必須格式化一個全新的HDFS安裝,通過創建存儲目錄和NameNode持久化數據結構的初始版本,格式化過程創建了一個空的文件系統。由於NameNode管理文件系統的元數據,而DataNode可以動態的加入或離開集羣,因此這個格式化過程並不涉及DataNode。同理,用戶也無需關注文件系統的規模。集羣中DataNode的數量決定着文件系統的規模。DataNode可以在文件系統格式化之後的很長一段時間內按需增加。

su hadoop
hadoop namenode -format

會輸出如下信息,則表格式化HDFS成功

DEPRECATED: Use of this script to execute hdfs command is deprecated.
Instead use the hdfs command for it.

INFO namenode.NameNode: STARTUP_MSG:
/************************************************************
STARTUP_MSG: Starting NameNode
STARTUP_MSG:   host = [你的主機名]/127.0.0.1
STARTUP_MSG:   args = [-format]
STARTUP_MSG:   version = 2.4.1
...
...
INFO util.ExitUtil: Exiting with status 0
INFO namenode.NameNode: SHUTDOWN_MSG:
/************************************************************
SHUTDOWN_MSG: Shutting down NameNode at [你的主機名]/127.0.0.1
************************************************************/

6、Hadoop集羣啓動

啓動hdfs守護進程,分別啓動NameNode和DataNode和yarn

start-all.sh

7、檢查是否運行成功

輸入:http://localhost:8088進入ResourceManager 管理頁面
輸入:http://localhost:50070 進入HDFS頁面

8、關閉服務

stop-all.sh
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章