锐单电子商城 , 一站式电子元器件采购平台!
  • 电话:400-990-0325

HBase权威指南

时间:2023-07-07 14:07:00 0aa1压力变送器

第一章 介绍
HBase历史及使用场景
关系数据库问题
1.如果访问量过大,必须主从分离
2.主写从读,写作压力还是很大的,前端只能加缓存
3.水平分区

一致性模型
1.强一致性 所有的变化都会立即生效原子性
2.顺序一致性 每个客户端都会看到统一数据的顺序,但不一定是实时的
3.因果关系的一致性 存在因果关系的操作将看到相同的顺序,无因果关系将并行进行
4.最终一致性 当没有数据更新时,通过网络传播复制所有数据最终达成一致
5.弱一致性 不包括数据更新和传播,使客户端看到的数据不一致

Nosql的维度
1.数据模型 
2.存储模型 
3.一致模型 
4.物理模型 
5.读写性能 
6.二级索引 
7.失败处理 
8.压缩 
9.负载均衡 
10.原子的读修改写 
11.等待和死锁 

构建块 
table,rows,columns,cell,类似这种结构: 
  SortedMap>>> 
自动分片,存储API 

HBase:Hadoop数据库 
hbase和bigtable对比 
HBase              Bigtable 
region             tablet 
regionserver       tablet server 
flush              minor compaction 
minor compaction   merging compaction 
major compaction   major compaction 
write-ahead log    commit log 
HDFS               GFS 
mapreduce          mapreduce 
memstore           memtable 
HFile              SSTable 
zookeeper          chubby 









第二章 安装  
需求  
  最好是商用pc,而不是桌面pc,内存要大,因为region节点需要大量内存,cpu最好4核以上 
  master和slave机器可以配置相同也可以不同,master要有更高的可靠性 
CPU 
  master 2.5G(4核) 
  slave  2.5G(4核) 
内存 
  namenode            8G 
  secondary namenode  8G 
  job tracker         2G 
  hbase master        4G 
  datanode            1G 
  task tracker        1G 
  region server       12G 
  zookeeper           1G 
  主从机器物理内存最好超过24G 
磁盘 
  master   4 * 1TB STAT,raid0+1 
  slave    6 * 1TB STAT,jbod 
  从IOPS考虑,可以将4*1TB换成8*500G,这样可以提高一倍的IOPS 
机架 
  master 1000M带宽,双PSU,1U或2U 
  slave  1000M带宽,单PSU,1U或2U 

操作系统 
  建议选择CentOS或Red hat 
文件系统 
  有ext3,ext4,XFS,ZFS,建议选择更高的ext4或XFS 

SSH可以不用安装 
域名服务器 ping -c 
时钟同步服务器NTP 
文件句柄上线 
  lsof -p region_server_pid 
datanode处理线程 
  dfs.datanode.max.xcievers   调整到4096 
调整交换分区 
  挂起进程可能会导致zookeeper超时,设置/etc/sysctl.conf 
  vm.swappiness=5 
  cat /proc/sys/vm/swappiness 

HBase的文件系统  
  本地文件系统 
  HDFS 
  S3 
  其他,如CloudStore,KFS 

安装选择  
  源码安装 
  mvn assembly:assembly 
  mvn -DskipTests assembly:assembly 

运行模式  
  独立模式 
  伪分布式 
  完全分布式 
  name:  hbase.rootdir    value:  hdfs://namenodeip:9000/hbase 
  name:  hbase.cluster.distributed   value:  true 

配置  
hbase-site.xml 
  优先hbase-site.xml 
  其次hbase-default.xml 
  再是hadoop相关xml 
hbase-env.sh 
regionservers 
log4j.properties 

部署  
  脚本部署 
  apache whirr 
  puppet和chef 










第三章 客户端API的基本操作  
这一章将要讨论的是HBase提供的客户端API。按照之前的介绍,HBase是用java语言编写的。但是这并不意味着必须用java客户端去访问HBase。事实上,在第六章我们将介绍如何用其他语言访问HBase。 

通用性介绍  
操作HBase的主要接口在org.apache.hadoop.hbase.client中,使用HTable类 
1.在一个客户端的生命周期中使用一个HTalbe使用,因为创建HTable花销比较大,会先扫描.META.表 
2.如果要在多线程中使用HTable,推荐使用HTablePool 
3.对每一行的更新操作都是原子的 

CURD操作  
1.Put  
用Put这个类做更新操作 
有一个工具累Bytes,可以将各种类型的值转换为byte[] 
Put#add(byte[] famliy,byte[] qualifier,long ts,byte[] value) 
  基本的add()操作 
  另外add()支持放入KeyValue这个对象 
KeyValue是HBase API中最低级别的类,这个类的数据格式,就是HBase中存储的字节格式,所以 
  如果对性能要求很高的话,可以直接对这个类进行操作 
has(byte[] family,byte[] qualifier) 
  这个类似迭代中的检查,检查某一个指定的cell是否存在 
Put的父类中,有一些API 
  getRow() 
  getRowLock() 
  getLockId() 
  getTimeStamp() 
  heapSize() 

通过Configuration创建一个默认配置实例,它会从classpath查找hbase-default.xml和 
   hbase-site.xml,使用Configuration.create(config)指定一个配置,这样优先级更高 
   HBaseConfiguration继承并兼容Configuration 
   可以手动指定一些属性,这样优先级最高,会覆盖配置文件中的属性 

KeyValue 
   字节级别的操作,比对象级别的操作更有效,这是HBase提供的可以访问数据格式内部的类 
   从构造函数就可以看出,是对底层KeyValue结构的一个封装,可以直接访问byte[] 
   提供了一些比较类(实现了Comparator接口) 
   toString()返回当前的KeyVlaue的元信息,格式如下: 
   /:/// 

Hbase有一个版本的概念,所有的版本都是按时间降序排列的,所以拿到的就是最新版本 
如有一个test表 
create 'test','name' 
put 'test','row1','name','value1' 
put 'test','row1','name','value2' 
scan 'test' 执行之后会发现只有一条数据,即第二个put将第一put的值覆盖了 
如果执行scan 'test',{VERSIONS=>3} 
就看以检索出两个数据,将'value1'和'value2'都检索出来 

客户端缓存 
HTable#setAutoFlush()可以设置缓存 
可以强制刷新缓存flushCommits() 
HBase客户端会将缓存的内容排序后,put到相应的region server上 
可以设置缓存大小: setWriteBufferSize() 
计算服务端的内存使用: 
    hbase.client.write.buffer * hbase.regionserver.handler.count * region server数量 
在没有刷新缓存之前,Htable#put()的内容都在内存中,此时如果去查找,则获取不到值 

Put多个值 
  put 操作 
元器件数据手册、IC替代型号,打造电子元器件IC百科大全!

相关文章