欢迎投稿

今日深度:

hbase,

hbase,


物理数据模型其实就是将逻辑模型中的一个Row分割成为根据Column family存储的物理模型。对于BigTable的数据模型操作的时候,会锁定Row,并保证Row的原子操作。Hbase由行和列组成行按照((列族)) 划分每个列族在硬盘上都自己的HFile(二进制文件,不能直接读取)HFile:一个列族可以有多个HFile,但是一个HFile不能储存多个列族(Column),每个列族都有一个MemStore一行中的一个列族数据不一定存放在同一个HFile里,一行中的列族数据需要物理的存放在一起HBase表是横向划分为很多region的

region是存放在不同的region server上的。

一个region里能存放一个列族或多个列族,一个列族(如果大的话)可以存放在多个region中


hbase的rowkey是按顺序存储的



HMaster没有单点问题,HBase中可以启动多个HMaster,通过Zookeeper的Master Election机制保证总有一个Master运行,HMaster在功能上主要负责Table和Region的管理工作:

管理用户对Table的增、删、改、查操作管理HRegionServer的负载均衡,调整Region分布在Region Split后,负责新Region的分配在HRegionServer停机后,负责失效HRegionServer 上的Regions迁移

一个时间点只有一个HMaster在运行

HMaster是总的管理者,但一个HRegionServer挂了后,HMaster会把该HRegionServer下的Region挂在到其它HRegionServer下。

当一个Region不断的变大,该Region会分裂成多个Region,HMaster根据负载情况,将Region挂在到相应的HRegionServer下


安装hbase

1.去官网下载hbase

hbase.apache.org

2解压,将HBASE_HOME/bin设置到环境变量中

3修改HBASE_HOME/conf/hbase-env.sh


export JAVA_HOME=/home/hadoop/app/jdk1.7.0_65

hbase自己管理zookeeper,如果你另外搭建了zookeeper集群,请把这个选项设置为false

 export HBASE_MANAGES_ZK=true


4修改HBASE_HOME/conf/hbase-site.xml

在<configuration></configuration>中增加

<configuration>
<property>
  <name>hbase.rootdir</name>
  <value>hdfs://wuke01:9000/hbase</value>
  </property>
  <property>
    <name>hbase.cluster.distributed</name>
      <value>true</value>
      </property>
      <property>
        <name>hbase.zookeeper.quorum</name>
          <value>wuke01</value>
          </property>


</configuration>

注意:$HBASE_HOME/conf/hbase-site.xml的hbase.rootdir的主机和端口号与$HADOOP_HOME/conf/core-site.xml的fs.default.name的主机和端口号一致


如果hadop不认识hbase

修改增加:hadoop-env.shexport HADOOP_CLASSPATH=$HADOOP_CLASSPATH:/usr/local/hbase-0.98.8/lib/*


启动hbase

start-hbase.sh


启动hbase控制台

hbase shell


输入list查看所有表


搭建hbase集群模式


wuke01:namenode datanode HMaster HRegionServer

wuke02:datanode HRegionServer

wuke05:zookeeper 

wuke06:zookeeper 

wuke07:zookeeper 


1.去官网下载hbase

hbase.apache.org

2解压,将HBASE_HOME/bin设置到环境变量中

3修改HBASE_HOME/conf/hbase-env.sh


export JAVA_HOME=/home/hadoop/app/jdk1.7.0_65



4修改HBASE_HOME/conf/hbase-site.xml

在<configuration></configuration>中增加

<property>        <name>hbase.tmp.dir</name>        <value>/usr/local/hbase-0.98.8/tmp</value>    </property>    <property >        <name>hbase.rootdir</name>     <value>hdfs://wuke01:9000/hbase</value></property><property >        <name>hbase.cluster.distributed</name>        <value>true</value>    </property>    <property>        <name>hbase.zookeeper.quorum</name>        <value>wuke05,wuke06,wuke07</value>    </property>




修改regionservers

wuke01

wuke02



如果是hbase1.3

修改hbase-site.xml

<configuration>
<property>
        <name>hbase.tmp.dir</name>
                <value>/app/hbase-1.3.0/tmp</value>
                    </property>
                        <property >
                                <name>hbase.rootdir</name>
                                     <value>hdfs://cluster1/hbase</value>
                                     </property>
                           <property >
                             <name>hbase.cluster.distributed</name>
                             <value>true</value>
                           </property>


                                                             <property>
                                                                     <name>hbase.zookeeper.quorum</name>
                                                                             <value>bdpp01,bdpp02,bdpp03</value>
                                                                                 </property>


<property>
<name>hbase.master.info.port</name>
<value>60010</value>
</property>
</configuration>

<property>
 <name>hbase.client.scanner.timeout.period</name>
 <value>600000</value>
 <description>in case of timeout when scan data is large</description>
 </property>
 <property>
 <name>hbase.rpc.timeout</name>
 <value>600000</value>
 </property>

问题:hbase 不认识hadoop集群的nameservice

解决:将hadoop的core-site.xml  hdfs-site.xml拷贝到hbase的conf目录下


5.修改增加:hadoop-env.shexport HADOOP_CLASSPATH=$HADOOP_CLASSPATH:/usr/local/hbase-0.98.8/lib/*



Master http://192.168.1.176:60010/master-statusRegionServerhttp://192.168.1.176:60030/


hbase1.3启动验证

http://bdpp03:60010/procedures.jsp

常见错误

Hbase hbck 检查zookeeper连接错误:启动zkServer.shzookeeper会话过期:修改zoo.cfgmaxSessionTimeout=12000重启zookeeperor分配更大的守护内存,修改hbase-env.shexport HBASE_HEAPSEIZE=4000


XceiverCount 错误修改hdfs-site.xmldfs.datanamenode.max.xcievers=4096重启hadoop


hbase shell



查看所有表

list

查看表的结构

# 语法:describe <table># 例如:查看表t1的结构describe ‘t1’
注意:记得要加单引号



hbase客户端命令

名称命令表达式
创建表create '表名称', '列族名称1','列族名称2','列族名称N'
添加记录      put '表名称', '行名称', ''列族名称:列名称', '值'
查看记录get '表名称', '行名称'
查看表中的记录总数count  '表名称'
删除记录delete  '表名' ,'行名称' , '列名称'
删除一张表先要屏蔽该表,才能对该表进行删除,第一步 disable '表名称' 第二步  drop '表名称'
查看所有记录scan "表名称" 
查看某个表某个列中所有数据scan "表名称" , {COLUMNS=>'列族名称:列名称'}
更新记录 就是重写一遍进行覆盖

create "stu","cf1","cf2"

put "stu","rowkey1",,"cf1:name","zhangsan"


get "stu","rowkey1"



下面给出的语法来改变列家族单元的最大数目。

alter 'stu' ,NAME=>'cf1',VERSIONS=>5


put 'stu','xiaoming','cf1:age','23'

put 'stu','xiaoming','cf1:age','24'

put 'stu','xiaoming','cf1:age','25'

put 'stu','xiaoming','cf1:age','26'

查询

get 'stu','xiaoming','cf1:age'

只会出现最后一次插入的数据cf1:age =26

如果想要看到全部的版本(5个版本)

get 'stu','xiaoming',{COLUMN=>'cf1:age',VERSIONS=>5}

想查看某一个时间戳的信息

get 'stu','xiaoming',{COLUMN=>'cf1:age',TIMESTAMP=>XXX}

scan 'stu',{LIMIT=>10}

删除xiaoming值的'info:age'字段>delete 'users','xiaoming','info:age'>get 'users','xiaoming'§删除整行>deleteall 'users','xiaoming'§统计表的行数>count 'users'§清空表>truncate 'users'

Hbase shell是JRuby写的,JRuby运行在JVM虚拟机中,所以HBase shell 中可以执行java方法scan 'stu'import java.util.DateDate.new(1429496444488).toStringimport org.apache.hadoop.hbase.util.Bytesimport org.apache.hadoop.hbase.filter.PrefixFilterscan "stu",{FILTER =>PrefixFilter.new(Bytes.toBytes('r')),COLUMN => 'cf'}API参考:http://hbase.apache.org/apidocs/index.html

www.htsjk.Com true http://www.htsjk.com/hbase/36733.html NewsArticle hbase, 物理数据模型其实就是将逻辑模型中的一个Row分割成为根据Column family存储的物理模型。对于BigTable的数据模型操作的时候,会锁定Row,并保证Row的原子操作。Hbase由行和列组成行...
相关文章
    暂无相关文章
评论暂时关闭