打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
HBase


行式数据库
可以简单的理解为类似传统的rdbmspaint这些数据,存放的数据都是结构化的数据。
行式数据库,是有利于全表数据的扫描,不利于只查询个别字段
列式数据库
对行式数据库的一个改进,将部分列(或者说有关联的一些列)存放到单独的文件中,其他列存在其它多个文件中,
我们在进行查询的时候,只需要读取出这些常用列即可完成工作,这样,减少了文件IO的读写,提高读写的效率(
不用再想行式数据库进行全表扫描,然后过滤相关字段)
在行式数据库里面,大数据领域有一个非常著名的产品——HBase,其有别于传统的RDBMS,被称之为列式数据库,
或者是NoSQL(Not Only SQL,是一类数据库的统称,常见的有Hbase、Redis、mechache、mongodb。。。。)中的一块数据。
能够满足对hdfs上面海量数据的告诉数据读写。
---------------------------------------------------------------
HBase
是一个高可靠性、高性能、面向列、可伸缩的分布式存储系统,
利用HBase技术可在廉价PC Server上搭建起大规模结构化存储集群。
HBase利用Hadoop HDFS作为其文件存储系统,利用Hadoop MapReduce来处理HBase中的海量数据,
利用Zookeeper作为协调工具。
特点:
高可靠性
高性能
面向列
可伸缩
表的特点
纵向扩展
横向扩展
部署上来说:
分布式集群
HBase设计初衷,是为了企业中的大表,面向上百万列,上百亿条记录设计的数据库。
可以分布式存储海量的数据
具有容错能力强,数据高可靠的特点
HBase是一个列式NoSQL数据库
 数据存储的结构是按照列进行存储。按照列进行存储的数据库产品,一般都有行键的概念。
使用行键,可以标示一行数据。理解行键的时候,可以简单的认为是RDBMS中的PK。
 Hbase存储数据的物理结构是key-value形式。key就是行键。
 同时可以非常方便的进行横向扩展(scale out,纵向扩展scale up)。
---------------------------------------------------------------
安装
约定:
安装目录:/opt目录下
使用版本hbase-1.1.5.tar.gz
下载地址:http://archive.apache.org/dist/hbase
hadoop、zookeeper、java
单机版本:
解压   opt]# tar -zxf soft/hbase-1.1.5-bin.tar.gz 
重命名 opt]# mv hbase-1.1.5-bin hbase
添加至环境变量 export HBASE_HOME=/opt/hbase
配置 $HBASE_HOME/conf/hbase-env.sh、hbase-site.xml
$HBASE_HOME/conf/hbase-env.sh
export JAVA_HOME=/opt/jdk
export HBASE_MANAGES_ZK=false
$HBASE_HOME/conf/hbase-site.xml
<property>
<name>hbase.rootdir</name>
<value>hdfs://ns1/hbase</value>
</property>
<property>
<name>hbase.cluster.distributed</name>
<value>true</value>
</property>
<property>
<name>hbase.zookeeper.quorum</name>
<value>master,slave01,slave02</value>
</property>
启动
 sh $HBASE_HOME/bin/start-hbase.sh
 使用jps命令,当有HMaster、HQuorumPeer(使用hbase自带的zk)、HRegionServer三个进程启动的时候,说明hbase服务已经启动成功
停止
 sh $HBASE_HOME/bin/stop-hbase.sh
单进程启动
 HMaster hbase-daemon.sh start master
 HRegionserver hbase-daemon.sh start regionserver
访问:
web http://<ip>:16010
cli bin/hbase shell
分布式安装:
在上述的基础之上,只需要再配置一个conf/regionservers,添加两行内容:
slave01
slave02
注意:
如果已经配置过单机版,需要将hbase在hdfs上面的目录、以及hbase在zk中的目录清除,以免和集群版本操作冲突
zk
rmr /hbase
hdfs
hdfs dfs -rm -R /hbase
拷贝master上面的数据到slave01和slave02
scp -r /opt/hbase root@slave01:/opt
scp -r /opt/hbase root@slave02:/opt
同样在slave01和slave02上面添加相关环境变量
scp /etc/profile.d/hadoop-eco.sh root@slave01:/etc/profile.d/
scp /etc/profile.d/hadoop-eco.sh root@slave02:/etc/profile.d/
取出其中的MAVEN
source /etc/profile.d/hadoop-eco.sh
启动hbase集群
sh $HBASE_HOME/bin/start-hbase.sh
这个时候在master机器上面,有一个进程HMaster,在slave01和slave02上面分别有一个HRegionServer
-------------------------------------------------------------------------
HBase的体系结果
逻辑结构
表(table)
划分数据集合的概念,和传统的db中的表的概念是一样的。
行健(RowKey):
一行数据的唯一标示,要想操作(read/write)一条数据,必须通过行健,其在hbase底层都是使用字节数组进行存放,所以方便我们使用rk进行排序,
  行键是字节数组, 任何字符串都可以作为行键;表中的行根据行键进行排序,数据按照Row key的字节序(byte order)排序存储;所有对表的访问都要通过行键 (单个RowKey访问,或RowKey范围访问,或全表扫描)。
列族(columnFamily)
  简单的认为是一系列“列”的集合。列族是以单独的文件进行存储。
列限定符(column Qualifier)
  或者叫列。列里面的数据定位通过列限定符 每个CF可以有一个或多个列成员(ColumnQualifier),
  列成员不需要在表定义时给出,新的列族成员可以随后按需、动态加入。时间戳(version)
  在单元格中可以存放多个版本的数据。
单元格(cell)
  Cell 由行键,列族:限定符,时间戳唯一决定,Cell中的数据是没有类型的,全部以字节码形式存贮,主要用来存储数据。
物理结构
HMaster ----->NameNode
管理节点
HRegionServer----->DataNode
存放Region的服务器
HRegion
存放hbase中数据的一个概念,可以简单的理解为表,存放一张表中的一部分数据,当该region中的数据超过一定量的时候,会自动进行分裂,
分裂成两个region(一份为二),从这个角度上而言,Region是对hbase中表的一个横向的划分。
HFile
在hdfs上存放数据之前的一个物理结构,用于接收从客户端提交过来的数据。
-------------------------------------------------------------------------
HBase的操作:
CLI(Command Line interface):
使用bin/hbase shell来进入命令终端
命令:
list查看当前命名空间下的所有的表,也可以查看特定命名空间下的表
list 'ns:abc.*' --->查看命名空间ns下面的所有的以表名以abc开头的表的列表
创建一张表
create 't1', 'cf1' --->在默认的命名空间下创建一张表名为t1,只有一个列族,列族名为cf1
查看一张表的所有内容:scan
scan 't1'或者scan 'ns1:t1'
往表中增加一条记录:put
put 't1', '1'(rowkey), 'cf1:name', 'zhangsan'
查看其中一个具体的值
get 't1', '1', 'cf1:name'
查看表的属性信息:
describe/desc 't1'
删除记录:delete
delete 't1', '1', 'cf1:age' -->删除某一个rowkey对应的cf1:age对应的单元格
deleteall 't1', '2' -->删除rowkey=2对应的所有的单元格
删除一张表:
注意:删除表之前,需要先确认表状态是否为disable,如果不是,需要disable '表名'
disable 't1'
drop 't1'
练习:
rk column column cf
name grad course
math art |column
1 Tom 5 97 87
2 Jim 4 89 80
创建表
create 'stu','name', 'grad','course' --->创建了表stu,有三个列族,name、grad、course
增加数据:
put 'stu', '1', ':name', 'Tom'
put 'stu', '1', ':grad', '5'
put 'stu', '1', 'course:art', '97'
put 'stu', '1', 'course:math', '88'
删除name="Jim"的art成绩
delete 'stu', '2', 'name', 'Jim', "course:art" --->错误的
delete 'stu', '2',"course:art" 因为每次操作,只能操作的是单一单元格,hbase的原子性操作是基于单元格的
而一个单元格的确定是由rk、cf、col、ts
删除name="JIM"所在的行的而所有单元格
deleteall 'stu', '2'
查看当前表有多少条记录:select count(1) from t;
count 
JAVA API:
WebGUI

===============================================================
在安装Hive程序HWI的时候的异常(2.1.0)
在启动hwi的过程中,出现的问题:
ar:file:/opt/hive/lib/ant-1.9.1.jar!/org/apache/tools/ant/antlib.xml:37: Could not create task or type of type: componentdef.
原因是引用hive新版本2.1.0依赖的ant jar包没有相关的资源,需要使用最新的ant jar包
解决方式:
下载ant资源:ant-1.10.1.zip 安装包
下载好之后上传到hive终端所在的服务器里面
解压之后需要配置ANT_HOME
将$ANT_HOME/lib/ant.jar 拷贝到$HIVE_HOME/lib/ant-1.10.1.jar
需要提高$HIVE_HOME/lib/ant-1.10.1.jar的权限
简单点设置最高权限:chmod 777 $HIVE_HOME/lib/ant-1.10.1.jar
第二个可能会遇到的问题:
之后重启hwi服务,
需要大家将$JAVA_HOME/lib/tools.jar拷贝$HIVE_HOME/lib/目录下面才可以
在执行JDBC的时候,访问不了远程的Hive的ThriftServer服务
报的错误:root不能伪装为root
是因为版本在进行升级的时候考虑到的安全策略,需要我们手动对root进行配置,需要将
hadoop中的root用户和hive中的root用户进行打通,配置在$HADOOP_HOME/etc/hadoop/core-site.xml
中进行配置:添加一下配置项
<property>
<name>hadoop.proxyuser.root.hosts</name>
<value>*</value>
<description>这是root用户访问的本机地址</description>
</property>
<property>
<name>hadoop.proxyuser.root.groups</name>
<value>root</value>
<description>代理root设置的组用户</description>
</property>
配置成功之后,需要同步到集群中的各个节点,
要想让集群重新加载配置信息,至少hdfs需要重启
















本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
HDFS+MapReduce+Hive+HBase十分钟快速入门(转)
建哥手把手系列之大数据环境搭建
Sqoop学习之路 (一)
HBase ZooKeeper Hadoop2.6.0的ResourceManager HA集群高可...
sqoop 安装及测试
Hbase与Hive的区别与联系
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服