海量空间数据存储要求服务器水平扩展性强,基于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
单机模式:默认情况下运行为一个单独机器上的独立java进程,主要用于调试环境
伪分布模式:在单个机器上模拟成分布式多节点环境,每一个Hadoop守护进程都作为一个独立的java进程运行。
完全分布模式:真是的生产环境,搭建在完全分布式的集群环境
由于此次实验主要是为了实现如何在HBase中,设计空间检索方法,对空间数据进行空间查询。所以采用了伪分布模式,不但可以在一台机器上运行。还可以模拟多节点的环境。
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.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.1、修改core-site.xml
sudo gvim /usr/local/hadoop/etc/hadoop/core-site.xml
<configuration>
<property>
<name>fs.default.namename>
<value>hdfs://localhost:9000value>
property>
<property>
<name>hadoop.tmp.dirname>
<value>/home/hadoop/tmpvalue>
property>
configuration>
4.2修改hdfs-site.xml
sudo gvim /usr/local/hadoop/etc/hadoop/hdfs-site.xml
<configuration>
<property>
<name>dfs.replicationname>
<value>1value>
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
<configuration>
<property>
<name>mapreduce.framework.namename>
<value>yarnvalue>
property>
configuration>
4.4修改yarn-site.xml
<configuration>
<property>
<name>yarn.nodemanager.aux-servicesname>
<value>mapreduce_shufflevalue>
property>
<property>
<name>yarn.nodemanager.aux-services.mapreduce.shuffle.classname>
<value>org.apache.hadoop.mapred.ShuffleHandlervalue>
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
在使用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
************************************************************/
启动hdfs守护进程,分别启动NameNode和DataNode和yarn
start-all.sh
输入:http://localhost:8088进入ResourceManager 管理页面
输入:http://localhost:50070 进入HDFS页面
stop-all.sh