基于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
  • 3
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值