HBSE学习

HBase--Hadoop DataBase,是一种高可靠、高性能、面向列、可伸缩、的分布式存储系统。利用HBase可以在廉价的PC Server上搭建大规模的结构化存储集群
,它利用hadoop HDFS作为文件存储系统,利用hadoop的mapreduce来处理海量数据,利用ZooKeeper来作为协调工具

1、HBase的数据模型(NOSQL)
1.1、表(table) 存储和管理数据的
1.2、行健(row key)类似于mysql中的主键、行健是HBase天然自带的
1.3、列族(column),列的集合,HBase中的列族,需要在创建表的时候指,列是插入数据时候,动态增加的
    HBase中每一个列族为单独一个文件
1.4、时间戳(timestamp) 是列的一个属性,时间戳就可以默认是数据的版本号,默认查询的是最新的数据
1.5、存储的数据都是字节数组
1.6 表中的数据都是按照行健的顺序物理存储的

2、HBase的物理模型
2.1 HBase适合海量数据的秒级查询
2.2、HBase中的数据记录,按照行健进行拆分,拆分成一个个region。
许多个region存放在regionServer中,这样对表的操作就转换为对很多regionServer的 并行查询(并行查询,所有很快嘛,对不拉  )
3、HBase的体系结构
    HBase是主从式的体系结构:主节点HMaster,从节点HRegionServer  (单独的物理机器)
4、HBase的为分布式安装
4.1、解压缩、从命名、配置path
4.2修改$HBASE_HOME/conf/hbase-env.sh文件
设置java、设置hbase自己管理自己的zooKeeper,(分布式的话,就不能自己管理了
修改hbase-site.xml内容,修改内容如下
    <property>
   <name>hbase.rootdir</name>
   <value>hdfs://hadoop0:9000/hbase</value>
 </property>
 <property>
   <name>hbase.cluster.distributed</name>
   <value>true</value>
 </property>
 <property>
   <name>hbase.zookeeper.quorum</name>
   <value>hadoop0</value>
 </property>
 <property>
   <name>dfs.replication</name>
   <value>1</value>
 </property>

4.3修改regionServer中的内容,该文件中存放的是regionServer的主机名
4.4 启动hbase  start-hbase.sh
4.5、验证是否启动成功,通过jps查看,如果添加了如下几个进程,就代表启动成功了 Hmaster、hregionServer、hquorumpeer
也可以通过浏览器60010来查看


分布式搭建:
    
很多和为分布式一样
    主要不同在于,不要HBase自己管理zookeeper了
修改regionServer的主机

配置信息详解
hbase.rootdir设置hbase在hdfs上的目录,主机名为hdfs的namenode节点所在的主机 
hbase.cluster.distributed设置为true,表明是完全分布式的hbase集群 
hbase.master设置hbase的master主机名和端口 
hbase.zookeeper.quorum设置zookeeper的主机,建议使用单数 

修改conf/regionservers 
将所有的datanode添加到这个文件,类似与hadoop中slaves文件 

网上资料见: http://www.cnblogs.com/ggjucheng/archive/2012/05/04/2483474.html





自己搭建遇到的一些问题:
在本地不能以chaigy:60010访问,百度发现,原来是安全模式没有关闭  hadoop  dfsadmin -safemode leave就好了,另外百度还看到一些答案,copy在下面,以备不时之需

出现上面这个错误一般有哪几种情况呢?

       如果在hbase的配置文件中将rootdir属性设为hdfs,如果hbase与hadoop之前RPC协议不一致就会导致了这个问题的发生。

1.你可以检查hadoop的服务进程是否启动。

2.也可以查看他们两者间版本是否一致(如:查看hbase/lib下的hadoop-core文件的版本为hadoop-core-1.0.4.jar,而你的hadoop根目录下是hadoop-core-1.0.3.jar ,则不一致),如果不一致你可以将hadoop/hadoop-core-*.jar拷贝到hbase/lib/下。

3.另外可以查看是否是以安全模式启动的hadoop(命令:hadoop dfsadmin -safemode get查看安全模式状态),如果是开启的则关闭(命令:hadoop dfsadmin -safemode leave离开安全模式)。

4.当然,还有一种是两者间主机的系统时间不一致导致的(比如时区设定不一致,导致时间相差过大)。



启动hbase :start-hbase.sh 
关闭hbase:stop-hbase.sh


通过hbase shell来进入hbase的命令行
创建表 create  表名,列族名1  ,列族名2,列族名N  (表名和列族名都是要用''字符串形式)
查看所有表名  list
表的描述
describe 表名

删除表要先disable 表名,在drop 表名

插入表记录
    put 表名,行健,列名,值
比如要给列明的时候,是  列族:列明
查看表记录
scan 表名
查看某一行数据
    get 表名  行健,列名
统计数
count 表名
删除记录
delete 表名 行名,列名
查看某张表某个列的所有数据
scan 表名 {columns=>'列名'}
获取某个数据的版本列表
get 表名 列族名 {COLUMN=>'info:age',VERSIONS=>2}里面的两个参数一定是大写的
get 'users','xiaoming',{COLUMN=>'info:age',VERSIONS=>1}最后是个数字,不用带引号

HBase中有两张非常重要的表
-ROOT-记录了.META.的信息
.META.记录了用户的region信息,里面有多个regions
ZOOKEEPER记录了-ROOT-里的信息
Client访问用户数据之前需要首先访问zookeeper,然后访问-ROOT-表,接着访问.META.表,最后才能找到用户数据的位置去访问




HBASE的java操作
操作hbase的类主要与两个  第一个是HBaseAdmin主要是对表的增加删除的
另外一个是Htable主要是增删改查的

源代码见:  http://note.youdao.com/share/?id=c2f1a8feba6d11f2f7598be58c1d3c49&type=note



HBASE的集成安装:
 修改regionServers的配置,里面存放的是regionServer的主机名
修改hbase-env.sh  把自己管理zookeeper设置为false或者注释掉(默认是false)
还要设置zookeeper的主机,在hbase-site.xml里面设置
hbase.zookeeper.quorum设置zookeeper的主机,建议使用单数 

你可能感兴趣的:(hbase)