简介
什么是Hbase
HBASE是一个高可靠性、高性能、面向列、可伸缩的分布式存储系统,利用HBASE技术可在廉价PC Server上搭建起大规模结构化存储集群。
HBASE的目标是存储并处理大型的数据,更具体来说是仅需使用普通的硬件配置,就能够处理由成千上万的行和列所组成的大型数据。
HBASE是Google Bigtable的开源实现,但是也有很多不同之处。比如:Google Bigtable利用GFS作为其文件存储系统,HBASE利用Hadoop HDFS作为其文件存储系统;Google运行MAPREDUCE来处理Bigtable中的海量数据,HBASE同样利用Hadoop MapReduce来处理HBASE中的海量数据;Google Bigtable利用Chubby作为协同服务,HBASE利用Zookeeper作为对应。
与传统DB对比
传统数据库问题
- 大数据量无法存储
- 没有很好的备份机制
- 数据量达到一定程度时出现速度缓慢等现象
Hbase优势
- 线性拓展,可以通过节点拓展来增大数据存储
- 数据存储在HDFS上,备份机制完善
- 通过ZooKeeper协调查找数据,访问速度快
HBase集群角色机制
- 一个或者多个主节点 Hmaster
- 多个从节点 HregionServer
满足多对多的节点机制
安装
- 上传安装包
- 解压
su - hadoop
tar -zxvf ./hbase-0.99.6.tar.gz
- 重命名
mv hbase-0.99.6 hbase
- 修改环境变量
su – root
vi /etc/profile
添加
export HBASE_HOME=/home/hadoop/hbase
export PATH=$PATH:$HBASE_HOME/bin
使配置生效
source /etc/proflie
su - hadoop
修改配置文件
cd ./hbase/conf
修改 hbase-env.sh (4个地方需要改动)
vim ./hbase-env.sh
# 设置JDK 环境变量 # The java implementation to use. Java 1.6 required. export JAVA_HOME=/usr/jdk/ # 设置额外的Java环境变量,原生注释错误,修改为以下 # Extra Java CLASSPATH elements. Optional.这行代码是错的,需要可以修改为下面的形式 #export HBASE_CLASSPATH=/home/hadoop/hbase/conf export JAVA_CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar # 指定采用CMS并发GC # Extra Java runtime options. # Below are what we set by default. May only work with SUN JVM. # For more on why as well as other possible settings, # see http://wiki.apache.org/hadoop/PerformanceTuning export HBASE_OPTS="-XX:+UseConcMarkSweepGC" # FALSE:使用自定义配置ZooKeeper;TRUE:使用内部单机ZooKeeper # Tell HBase whether it should manage it's own instance of Zookeeper or not. export HBASE_MANAGES_ZK=false
修改 regionservers
vim ./regionservers
h2slave1 h2slave2 h2slave3
当然,前提是配置了IP:
vim /etc/hosts
192.168.1.200 h2slave1 192.168.1.201 h2slave2 192.168.1.202 h2slave3
修改核心配置文件 hbase-site.xml
主要表现为以下配置:
<configuration> <!-- master位置 --> <property> <name>hbase.master</name> <value>master1:60000</value> </property> <!-- 间隔时间:主备之间间隔时间 --> <property> <name>hbase.master.maxclockskew</name> <value>180000</value> </property> <!-- hdfs路径。在这里并没有指定一个固定的IP地址,防止对应的主机宕机事故 ,但是需要将Hadoop的hdfs-site.xml配置文件cp到该目录,这样hbase就能 从hdfs的配置文件找到hadoop-cluster1所对应的真正的IP地址 --> <property> <name>hbase.rootdir</name> <value>hdfs://hadoop-cluster1/hbase</value> </property> <!-- 设置是否是集群模式 --> <property> <name>hbase.cluster.distributed</name> <value>true</value> </property> <!-- 指定ZooKeeper集群 --> <property> <name>hbase.zookeeper.quorum</name> <value>master1ha,master2,master2ha</value> </property> <!-- 数据文件目录 --> <property> <name>hbase.zookeeper.property.dataDir</name> <value>/home/hadoop/hbase/tmp/zookeeper</value> </property> </configuration>
设置联邦:
vim ./core-site.xml
<?xml version="1.0" encoding="UTF-8"?> <?xml-stylesheet type="text/xsl" href="configuration.xsl"?> <configuration> <property> <name>fs.defaultFS</name> <value>viewfs:///</value> </property> <property> <name>fs.viewfs.mounttable.default.link./tmp</name> <value>hdfs://hadoop-cluster1/</value> </property> <property> <name>fs.viewfs.mounttable.default.link./tmp1</name> <value>hdfs://hadoop-cluster2/</value> </property> </configuration>
发送文件到其他服务器
scp -r hbase/ hadoop@h2slaver:/home/hadoop scp -r hbase/ hadoop@h3slaver:/home/hadoop
启动
start-hbase.sh
查看
访问管理界面
http://ip_addr:60010
进程jps
进入Hbase shell
hbase shell