资讯详情

HBase权威指南

第一章 介绍 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<RowKey, List<SortedMap<Column, List<Value,Timestamp>>>>  自动分片,存储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.对每一行的更新操作都是原子的    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的元信息,格式如下:     <row-key>/<family>:<qualifier>/<version>/<type>/<value-length>  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<List<Put> 操作  标签: 0aa1压力变送器

锐单商城拥有海量元器件数据手册IC替代型号,打造 电子元器件IC百科大全!

锐单商城 - 一站式电子元器件采购平台