hbase_1
常见的RDBMS:(数据库排行)
** mysql --开源[社区版] 、收费[企业版]
--市场占有率高、web领域被广泛使用
** 2008年被oracle收购
** mysql主从架构[集群的一种]
** 端口:3306
** oracle
** oracle集群性能比较强
** mysql集群性能相对比较差一下
** 端口:1521
** sqlserver
** 微软公司[windows 2008\2012\2012R2]
** windows项目、微软平台下面的项目用得比较多
** 端口:1433 数据量增加,RMDBS的应对:
1 读写分离,主数据库用于写,其他用于读
2 增加缓存
3 垂直扩容和横向扩展
4 采用逆范式化结构
5 停用存储过程和放弃辅助索引 非关系型数据库 NoSQL(Not Only SQL):
** HBase、mongoDB、redis
** 没有sql语句
** 性能和效率较高
** 尤其是当单表数据量过大,又必需进行全表扫描,且不能分库分表时,可以考虑使用非关系型数据库
** 注意:非关系型数据库并非万能的,需要根据业务来选择使用何种数据库 ====HBase部署================================= 1、安装Apache Hadoop,并启动 2、启动zookeeper(未安装的需要安装)
$ bin/zkServer.sh start
----------------依赖zookeeper的原因是存储元数据,通过他找到对应的regionserver 3、解压HBase 4、配置hbase-env.sh:
export JAVA_HOME=/opt/modules/jdk1.7.0_67 # 关闭掉HBase自带的zookeeper
export HBASE_MANAGES_ZK=false //不使用自带的zookeeper 5、配置hbase-site.xml:
<!--用来存放HBase数据-->
<property>
<name>hbase.rootdir</name>
<value>hdfs://blue01.mydomain:8020/hbase</value>
</property>
<!--启用集群模式,当前为伪分布式-->
<property>
<name>hbase.cluster.distributed</name>
<value>true</value>
</property>
<property>
<name>hbase.zookeeper.quorum</name>
<value>blue01.mydomain</value>
</property> 6、regionservers文件:(替换localhost)
blue01.mydomain 7、替换lib目录中低版本的hadoop和zookeeper的jar包
$ rm -rf lib/hadoop-*
$ rm -rf lib/zookeeper-3.4.6.jar
拷贝对应的jar包到lib目录 8、启动服务
$ bin/hbase-daemon.sh start master
$ bin/hbase-daemon.sh start regionserver
** $ bin/start-hbase.sh
** $ bin/stop-hbase.sh 访问:http://192.168.122.128:60010/ PS:
HBase默认配置文件hbase-default.xml 在 hbase-common-0.98.6-hadoop2.jar ================================================================= 结构化与非结构化数据: 结构化(表)
name cardid age sex addr job1 job2 job3 edu1 edu2
张三 1 23 男 上海 谷歌 电信 北大 同济
李四 2 女 北京 清华 非结构化
rowkey:身份证cardid(相当于primary key) cardid: 1
name:张三
age: 23
sex:男
addr: 上海
job1:谷歌
job2:电信
edu1:同济 cardid: 2
name:李四
sex:女
addr: 北京 使用"键值对"进行查询(key-value): rowkey + Column family + column + timestamp----> value
如:cardid(2)+CF+name: 李四
cardid(2)+CF+sex : 女 HBase数据类型
** HBase不区分数据类型
** 数据存储读取时:字节数组 HBase中数据存储的重要术语
** rowkey:行键
用来唯一标识每一行数据,类似RDBMS中的主键
** Column Family[CF] : 列族
用来组织列, 一个列族里包含多个列
在实际环境中,从性能上考虑,列族个数<=2,最好是一个
** Column : 列
字段名,列名
** timestamp:
数据插入到表中的时间
** Cell : 单元格
最小或最基本的存储单元,列的实际值存储
** 版本
HBase中每个列的值可以有多个版本[副本]
默认情况下,有3个版本,通常显示最新版本
** 基于Key-Value对形式存取数据
rowkey + CF + Column + timestamp : value ====================================================================== PS: hbase默认不支持退格键,解决方案:
a) 使用Ctrl+Backspace
b) Xshell:
文件--属性--终端--键盘--两个都选择ASCII 127
c) secureCRT:(百度)
选项--会话选项--仿真--终端--选择Linux
选项--会话选项--映射键--勾上:backspace发送delete和delete发送backspace ----shell命令------------------- $ bin/hbase shell
hbase(main):001:0> > help
> list --显示所有数据表
> create 'emp','info' --表名,列族
> desc 'emp' --查看表信息
> describe 'emp' --同上
> create 't1',{NAME => 'f1'},{NAME => 'f2'},{NAME => 'f3'} --多个列族 > put 'emp','','info:name','zhangsan' --插入
> put 'emp','','info:name','aaa' --更新
> put 'emp','','info:age',''
......
> scan 'emp' --查看数据
> get 'emp',''
> get 'emp','','info'
> get 'emp','','info:name'
> get 'emp','', {COLUMN => ['info:name']} --同上
> get 'emp','','info:name','info:age'
> get 'emp','', {COLUMN => ['info:name', 'info:age']}
> get 'emp','', 'info:name', 'info:age', 'info:sex' --有不存在的列
> get 'emp','', {COLUMN => ['info:name', 'info:age', 'info:sex']} --scan(范围)
> put 'emp','','info:name','wangwu'
> scan 'emp'
> scan 'emp',{COLUMNS=>'info:name'}
> scan 'emp',{COLUMNS=>['info:name','info:age']} --多列,结果和列序无关
> scan 'emp',{STARTROW => ''}
> scan 'emp',{STOPROW => ''}
> scan 'emp',{COLUMNS=>['info:name','info:age'],STARTROW => '',STOPROW => ''} --[1002,1003)
> scan 'emp',{LIMIT => 3} --rowkey的上限,而非记录条数的上限 --删除数据
> delete 'emp','','info:age' --至少3个参数
> deleteall 'emp','' --至少2个参数,可以删除整行
> deleteall 'emp','','info:age' --也可以用来删除列
> truncate 'emp' --清空表数据 --删除表
> disable 'emp' --禁用
> scan 'emp'
> enable 'emp' --启用
> scan 'emp'
> drop 'emp' --需要先禁用 统计一张表有多少行数据
> count 'emp' --rowkey数 =================================================== HBase的几个角色:
master:是HBase的主节点,用来调度管理客户端应用程序和RegionServer,
管理分配region给regionserver服务器。---负责region的存储regionserver位置,保证负载均衡
regionserver:
是从节点,管理当前自己这台服务器上的region。region是HBase表
的基础单元组件,它存储了分布式表。所以HBase表和HBase集群
利用Master和RegionServer来协同工作。
ZooKeeper:
监控master和regionserver的状态--------管理元数据
HBase有内置zookeeper,但实际环境中我们通常会使用其他ZK集群 通常情况下:
1、Master和Hadoop的NameNode进程运行在同一台主机上,与DataNode通信以读写HDFS的数据
2、RegionServer跟Hadoop的DataNode运行在同一台主机上 HBase特点:
** 存储数据和检索数据
** 非严格的列式存储数据库,但它利用了磁盘上的列存储格式
** 分布式、非关系型数据库
** HBase源自于bigtable
** HBase通常是和Hadoop结合使用-------------上层一来于hadoop,将数据存储在hadoop上面
** 适合于【非结构化数据】存储的数据库
** 非结构化的字段数量可以根据用户的需求而定
** 以key-value的形式来存储数据
** 高可靠性、高性能、面向列、可伸缩的分布式存储系统
** 利用HBase技术可以在商用机上搭建出大规模的数据库系统 HBase数据存储目录
** /hbase/data/default
存储默认命名空间表文件,如果创建表时不指定命令空间,就属于默认命名空间
** /hbase/data/hbase
存储HBase元数据
默认情况下,有这两个命名空间,命名空间可以理解为数据库
=================================================== 面试题:
***** 理解、记住 *****
Hive和HBase的区别?
Hive
** 是一个数据仓库,不是数据库
** 一般用来做业务分析,不会直接接入业务
** hive实际上是把hql语句转换成MapReduce运行在yarn平台上
HBase
** 是一个分布式面向列的非关系型数据库
** 核心功能是用来存储和检索数据、可以直接接入业务系统
** 不依赖yarn和MapReduce ***** 理解、记住 *****
RDBMS和HBase的区别:
** HBase是分布式架构,支持服务器节点在线添加和移除
** RDBMS可以使用sql语句,HBase通常使用API来访问
** RDBMS是基于行存储,HBase是基于列存储,能更好地支持存储和压缩
** RDBMS适合存储结构化的数据,HBase适合结构化和非结构化的数据存储
** RDBMS支持比较好的事务,HBase不支持事务
** RDBMS支持多表Join,HBase不支持Join
** 通常HBase表的应用场景比较简单,不适合业务逻辑很复杂的查询环境
** HBase索引简单,RDBMS的索引强大而且完善
** HBase通常应用于单表数据量巨大,用关系型数据库无法满足,不适合分库分表的场景
hbase_1的更多相关文章
- [HBase_1] HBase安装与配置
0. 说明 1. 简介 1.1 简介 基于 HDFS 的大表软件(实时数据库) 十亿行 x 百万列 x 上千个版本 版本是通过 mvcc 技术控制:multiple version concurren ...
- hbase 单机+伪分布环境搭建学习-1
1.单机模式: (1)编辑hbase-env.sh user@EBJ1023.local:/usr/local/flume_kafka_stom/hbase_1.1.2> vim conf/hb ...
随机推荐
- 一段充满bug的R程序,慎入 ...
twitter的AnomalyDetection 官网效果图如下: 尝试写了下面这个R程序: get_specify_df <- function(start_ts,stop_ts,categ ...
- 《Java》第九周学习总结
下载mysql 选择mysql的管理软件 idea可以直接连接 然后用库运行程序,但是没有截图,,因为想在navicat上试试,可惜速度太慢了 打开idea又很慢,所以明天再更新
- 一次对JDK进行"减肥"的记录
起因 最近做的一个小项目,因为要涉及到批量部署,每次在部署之前都需要在各个主机上先安装jdk环境(为了使用jdk自带的工具如jps等,所以没有单纯安装jre),但是因为jdk文件太大(以jdk-8u1 ...
- LabView ModBus安装
好久没写东西了(好菜哦...) 最近搞一个项目,开始入门LabVIEW,感觉类似于MATLAB里面的simulink 我使用LabVIEW是想用来和PLC通信的.因为PLC里面可以做ModBus,所以 ...
- (七)File 文件的操作
一.文件读写模式 1.文件的几种模式: 格式:f=open("文件名","模式",encode="utf-8") #文件的只读模式 f1=o ...
- Centos7添加新源
yum repolist # 查看yum源列表yum localinstall http://dl.fedoraproject.org/pub/epel/7/x86_64/Packages/e/epe ...
- win-DOS命令整理
1 md 建 文件夹2 cd 指向文件夹方向cd .. 进入上一级文件夹cd \ 回到根目录3 rd 删除文件夹4 dir 查看文件夹里的文件 dir /a 查看文件夹内全部文件含隐藏文件 5 ren ...
- linux 工具
zsh: ubuntu安装: sudo apt-get install zsh
- Ueditor增加文字竖排显示和从右向左输入(支持蒙古文和维吾尔文)
平时我们在ueditor中都是输入的中文,排版都是从左向右输入.但是当输入一些少数民民族言时,ueditor却不能正常显示. 例如蒙古文字,传统蒙文是竖排书写.如下图:传统蒙古文排文方式,<蒙古 ...
- shiro教程
ref https://www.jianshu.com/p/5a35d0100a71 https://www.jianshu.com/p/0366a1675bb6 https://blog.csdn. ...