Hbase
先部署一个zookeeper集群和hadoop集群
安装目录 /var/local/
hbase 部署为三台机 hdp-node-01 02 03
1、上传hbase安装包
hbase-1.2.1-bin.tar.gz
2、解压
3、配置hbase集群,要修改3个文件
注意:要把hadoop的hdfs-site.xml、core-site.xml 放到hbase/conf下
/home/hadoop/apps/hadoop/etc/hadoop
3.1 修改hbase-env.sh
//java_home
export JAVA_HOME=/home/hadoop/apps/jdk1.7.0_79
//告诉hbase使用外部的zk
export HBASE_MANAGES_ZK=false
3.2 修改 hbase-site.xml
<configuration>
<!-- 指定hbase在HDFS上存储的路径 -->
<property>
<name>hbase.rootdir</name>
<value>hdfs://hdp-node-01:9000/hbase</value>
</property>
<!-- 指定hbase是分布式的 -->
<property>
<name>hbase.cluster.distributed</name>
<value>true</value>
</property>
<!-- 指定zk的地址,多个用“,”分割 -->
<property>
<name>hbase.zookeeper.quorum</name>
<value>hdp-node-01:2181,hdp-node-02:2181,hdp-node-03:2181</value>
</property>
</configuration>
3.3 修改 regionservers
hdp-node-01
hdp-node-02
hdp-node-03
3.4 修改 backup-masters来指定备用的主节点
[root@mini1 conf]# vi backup-masters
hdp-node-02
4 将配置好的HBase拷贝到每一个节点并同步时间。
scp -r hbase-1.2.1 hadoop@hdp-node-03:$PWD
5 启动所有的hbase进程
首先启动zk集群
./zkServer.sh start
启动hdfs集群
start-dfs.sh
启动hbase,在主节点上运行:
start-hbase.sh
6 通过浏览器访问hbase管理页面
http://192.168.19.101:16010/
http://hdp-node-01:16010/
7 为保证集群的可靠性,要启动多个HMaster
hbase-daemon.sh start master
8 hbase学习笔记
1、建立在hdfs之上,提供高可靠性,高性能,列存储,可伸缩,实时读写的nosql的数据库系统。
2、Hbase会对表中的数据按照rowkey排序(字典顺序),根据这个特性可以按照需求设计rowkey,行键
3、列不会出现在表的描述信息中,表名和列族才会。
4、不同的列族数据存储在不同的文件中,如果设置太多列族会导致查询的时候到不同的文件中去检索,查询效率会降低。
9、shell命令行
1)创建表user
create 'user','info1','data1';
create 'user',{NAME => 'info', VERSIONS => '3'}
2)删除表
disable 'user'
drop 'user'
3) create 'user','info','data'
4)插入数据到表中
put 'user','rk0001','info:name','zhangsan'
put 'user','rk0001','info:gender','female'
put 'user','rk0001','info:age',20
put 'user','rk0001','data:pic','picture'
get 'user','rk0001
get 'user','rk0001','info'
get 'user','rk0001','info:age','info:name'
get 'user', 'rk0001', 'info', 'data'
put 'user', 'rk0002', 'info:name', 'fanbingbing'
put 'user', 'rk0002', 'info:gender', 'female'
put 'user', 'rk0002', 'info:nationality', '中国'
5)create 't_user_info', {NAME => 'base_info'}, {NAME => 'extra_info'}
6) get 'user', 'rk0002', {FILTER => "ValueFilter(=, 'binary:中国')"}
scan 'user'
7)查询user表中列族为info的信息
scan 'user', {COLUMNS => 'info'}
scan 'user', {COLUMNS => 'info', RAW => true, VERSIONS => 5}
scan 'persion', {COLUMNS => 'info', RAW => true, VERSIONS => 3}
8)查询user表中列族为info和data的信息
scan 'user', {COLUMNS => ['info', 'data']}
scan 'user', {COLUMNS => ['info:name', 'data:pic']}
9)删除user表row key为rk0001,列标示符为info:name的数据
delete 'user', 'rk0001', 'info:name'
10)删除user表row key为rk0001,列标示符为info:name,timestamp为1392383705316的数据
delete 'user', 'rk0001', 'info:name', 1392383705316