大数据系列6:HBase – 基于Hadoop的分布式数据库
wget http://mirrors.cnnic.cn/apache/zookeeper/zookeeper-3.4.5/zookeeper-3.4.5.tar.gz
tar -xzvf zookeeper-3.4.5.tar.gz
cd zookeeper-3.4.5
cp conf/zoo_sample.cfg conf/zoo.cfg
vi conf/zoo.cfg
修改:dataDir=/home/ysc/zookeeper
添加:
server.1=host001:2888:3888
maxClientCnxns=100
mkdir /home/ysc/zookeeper(注:dataDir是zookeeper的数据目录,需要手动创建)
echo 1 > /home/ysc/zookeeper/myid
启动服务:
bin/zkServer.sh start
连接服务:
bin/zkCli.sh -server host001:2181
查看服务状态:
bin/zkServer.sh status
hbase存在系统时间同步的问题,并且误差要再30s以内
sudo apt-get install ntp
sudo ntpdate -u 210.72.145.44
HBase是数据库,会在同一时间使用很多的文件句柄,大多数linux系统使用的默认值1024是不能满足的,还需要修改 hbase 用户的nproc,在压力很大的情况下,如果过低会造成 OutOfMemoryError异常
sudo vi /etc/security/limits.conf
添加:
ysc soft nproc 32000
ysc hard nproc 32000
ysc soft nofile 32768
ysc hard nofile 32768
sudo vi /etc/pam.d/common-session
添加:
session required pam_limits.so
wget http://mirrors.hust.edu.cn/apache/hbase/hbase-0.94.12/hbase-0.94.12.tar.gz
tar -xzvf hbase-0.94.12.tar.gz
cd hbase-0.94.12
vi conf/hbase-env.sh
追加:
export JAVA_HOME=/home/ysc/jdk1.7.0_40
export HBASE_MANAGES_ZK=false
export HBASE_HEAPSIZE=1000
vi conf/hbase-site.xml
加入:
<property>
<name>hbase.rootdir</name>
<value>hdfs://host001:9000/hbase</value>
</property>
<property>
<name>hbase.cluster.distributed</name>
<value>true</value>
</property>
<property>
<name>hbase.zookeeper.quorum</name>
<value>host001</value>
</property>
vi conf/regionservers
改localhost为host001
因为HBase建立在Hadoop之上,Hadoop使用的hadoop*.jar和HBase使用的必须一致。所以要将 HBase lib目录下的hadoop*.jar替换成Hadoop里面的那个,防止版本冲突。
cp /home/ysc/hadoop-1.2.1/hadoop-core-1.2.1.jar /home/ysc/hbase-0.94.12/lib
rm /home/ysc/hbase-0.94.12/lib/hadoop-core-1.0.4.jar
启动hadoop并创建目录
hadoop fs -mkdir /hbase
sudo vi /etc/profile
增加:
export PATH=$PATH:/home/ysc/hbase-0.94.12/bin
source /etc/profile
启动初始 HBase 集群:
start-hbase.sh
web界面
http://host001:60010
http://host001:60030
停止HBase 集群:
stop-hbase.sh
启动额外备份主服务器,可以启动到 9 个备份服务器(总数10 个):
local-master-backup.sh start 1
local-master-backup.sh start 2 3
启动更多regionservers, 支持到99 个额外regionservers(总100个):
local-regionservers.sh start 1
local-regionservers.sh start 2 3 4 5
停止备份主服务器:
cat /tmp/hbase-ysc-1-master.pid | xargs kill -9
停止单独regionserver:
local-regionservers.sh stop 1
使用HBase命令行模式:
hbaseshell
命令演示:
创建表Person,列族basic和detail
create 'Person', 'basic', 'detail'
看有哪些表:
list
看是否有person表:
list 'person'
增加数据,动态增加列:
数据1:
put 'Person','533001198510125838', 'basic:idcard', '533001198510125838'
put 'Person', '533001198510125838','basic:name', '章子怡'
put 'Person','533001198510125838', 'detail:age', '25'
数据2:
put 'Person', '533001198510125837','basic:idcard', '533001198510125837'
put 'Person','533001198510125837', 'basic:name', '杨尚川'
put 'Person','533001198510125837', 'detail:age', '22'
查询整条数据:
get 'Person','533001198510125838'
get 'Person','533001198510125837'
查询单列数据:
get 'Person', '533001198510125837','basic:idcard'
查询多列数据:
get 'Person', '533001198510125837','basic:idcard', 'detail:age'
查询全部数据:
scan 'Person'
删除表:
disable 'Person'
drop 'Person'