热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Hbase的伪分布部署、shell基本操作及hbase相关理念

1,HBase的的的的伪分布式配置-对zookeeper的配置,这个前面配置过,修改zoo.cfg文件,指定zookeeper的主入口-配置的HBase的的:进入optmo

1,HBase的的的的伪分布式配置

- 对zookeeper的配置,这个前面配置过,修改zoo.cfg文件,指定zookeeper的主入口

- 配置的HBase的的:进入/opt/modules/hbase-0.98.6目录下

1.1,修改的CONF目录下的文件hbase-env.sh,指定自己的环境

#要使用的Java实现。需要的Java 1.6。 
导出 JAVA_HOME = /opt/module/apache/jdk1.8.0_151
#额外的Java类路径元素。可选的。export HBASE_CLASSPATH = / opt / module / apache / jHadoop的2.7.3 / etc / hadoop

不使用的HBase的的自带的ZK,选择自己安装ZK,所以设置为假

#告诉HBase它是否应该管理它自己的Zookeeper实例。 导出HBASE_MANAGES_ZK = false

1.2,修改的CONF目录下的HBase的-site.xml中中文件


//指定HBase的所有表数据存储的位置,也可以指定为本地,类似于蜂房的数据仓库的位置一样概念   <名称> hbase.rootdir  > HDFS:// [主机名称]:8020 / HBase的    //指定的HBase的模式,是否使用分布式集群模式,如果假的英文就是单机模式,无论是伪分布还是完全分布都是分布式    hbase.cluster.distributed < 值>真    //指定动物园管理员的实例化地址,ZK是HBase的访问入口,客户端访问时都要经过ZK  // UI访问都会经过ZK  <属性>  <名称> hbase.zookeeper.quorum   <值> [主机名]   

1.3,修改regionservers - >类似于hadoop的奴隶节点
        改为自己的主机名

1.4,替换jar:替换掉的hadoop和ZK的jar(如果使用CDH版本不需要这一步)

删除以前的:hadoop15个,ZK一个(是以hadoop-开头后包含具体的2.2.2的罐包)替换罐子:hadoop14个,ZK一个,HTRACE核一个(的的的hadoop的份额中去找)启动HBase的(ZK和hadoop的之上)注意:启动之前一定要先启动ZK和hadoop的        1,启动HBase的:         仓/ hbase-daemon.sh启动主(停止)斌/ hbase- daemon.sh start regionserver(stop)或者bin / start-hbase.sh bin / stop-hbase.sh  1.6,webUI界面主机       名+端口号60010这里可以查看我们的用户建立了那些namesapace,以及我们的相关节点信息

 

2,在成功配置了HBase的的的单节点(伪分布式)后,对命令进行熟悉的过程中,老是弹出如下警告

SLF4J:类路径包含多个SLF4J绑定.SLF4J  :在[jar:file:/opt/module/apache/hbase-0.98.6-hadoop2/lib/slf4j-log4j12-1.6.4.jar!/ org / slf4j /impl/StaticLoggerBinder.class]中找到绑定 SLF4J:在[JAR:文件:/opt/module/apache/hadoop-2.7.3/share/hadoop/common/lib/slf4j-log4j12-1.7.10.jar! / org / slf4j / impl / StaticLoggerBinder中找到绑定。类]  SLF4J:请参阅http://www.slf4j.org/codes.html#multiple_bindings以获取解释。


这表示我们的LIB目录下有两个罐子相互冲突了,删掉其中一个就OK,解决问题

==> rm /opt/module/apache/hbase-0.98.6-hadoop2/lib/slf4j-log4j12-1.6.4.jar

3,hbase shell的基本操作


基本操作 sshell命令
创建表 ccreate'table_name','column_family',' column_family1 ' ,' column_family2 '
删除列簇 ALTER  'TABLE_NAME',{NAME => ' column_family',METHOD => '删除' }
增加列簇 alter table_name',{NAME =>'column_family',VERSION => 5}(后面指定的为该列簇的版本数) 
添加记录
改变'TABLE_NAME','row_key','column_family:列名','值'
查看某个row_key的记录
得到'表名','row_key'   
删除一条记录 删除' table_name ','row_key','column_family:column_name'
删除表 第一步禁用'表名'第二步drop'table_name“
查看表的所有记录

扫描“表格名”后面也可以接具体的列和查看的版本数,不大于实际版本

扫描“table_name”,{COLUMN =>' column_family:column_name ',VERSIOnS=> 2}

查看某个表某列的所有值 扫描“表格名”,['column_family:列名:']
更新记录 就是添加数据,对之前的数据进行过覆盖,版本> 1时,就都保存,版本= 1,保存最新的
查看一个列的多个版本信息 get'table_name','row_key',{COLUMN =>' column_family:column_name ',VERSIOnS=> number}
删除某列的某个版本的值

ddelete  '表名', 'row_key', 'column_family:列名:',时间戳若最新这里删除的时间戳的数据,则扫描,得到出来就没有该列的值,删除之前的时间戳的值,还会查询出最新的时间戳的值

4,一些应该要注意的概念

          如图1所示,区域是分布式存储和负载均衡的最小单元(数据的移动只能在区域层面)

          2,hbase.meta记录了所有用户表的区域信息,元的区域信息保存在动物园管理员中,hbase.namespqce也一样

          3,物理结构的相关的详细理解:后面贴上来


5,预写日志WAL :(将客户端操作的命令都会记录到这个WAL)-用户每次写入memstore同时,也会写一份数据到Hlog文件中,写入hlog时间在memstore之前-写入成功后才会通知客户端该操作成功-每个regionserver只有一个Hlog文件- Hlog文件定期的刷新,删除旧的文件-避免内存中丢失数据,可以在日志文件中恢复
  
==>其实很多的依赖内存的高可用性框架,都会用到“预写日志”的理念,比如Spark Streaming Redis,因为内存中的数据是极易丢失,而且找不到来的,所以在速度与存储空间之间,很难达到一个平衡,这都是为了数据的安全性,以及框架的高可用

6,HBase的的存储内部机制 
       -客户端写入 - >存入MemStore,一直到MemStore满(Hlog) - > Flush成一个StoreFile存储在HDFS上-当每次冲洗会生成一个Hfile。
StoreFile,直到增长到一定阈值 - >触发Compact合并操作 - >多个StoreFile合并成一个StoreFile  - 当单个StoreFile大小超过一定阈值后,触发
顺序为{minor - major- compact完成},最开始对HFILE的minor ,再是对storefile的major,最后当storefile经过compact达到一定大小,则对region进行split

红色字体理解错误了,查了资料发现最开始的的理解才是对的, 留着提个醒,下面为正确的

我们先看看官网上说的


客户端写入    首先写入到Hlog(WAL),写入成功后,在写入到memstore中,   直到达到memstore的阈值,就flush到HDFS上,形成一个Hstorefile,这样会产生很多小的Hstorefile文件,当达到这个数量(3)会自动合并为一个,这就是是minor conpaction 就会对小的文件进行合并为一个大的storefile,这个过程不会删除带有删除标记的数据。


major compaction 一般会设置在集群空闲的时候执行,而在执行一个major之后,一个store只会有一个sotrefile,通常情况下这样可以提供性能。注意:major紧缩将会将store中的数据全部重写,在一个负载很大的系统中,这个操作是很伤的,因为会占用大量的内存来重写这些数据。这个操作会对有删除标记的数据进行删除

当某个Hstorefile的大小达到某个阈值时,这个时候回触发split操作,把当前region->split成2个region,HMASTER分配到相应的HRegionServer上
       
   


推荐阅读
author-avatar
琼frock_882
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有