创建HBASE数据库时候不得不注意的几处设置

系统相关属性设置:

HTableDescriptortableDesc=newHTableDescriptor("test");

//日志flush的时候是同步写,还是异步写

tableDesc.setDurability(Durability.SYNC_WAL);

//MemStore大小tableDesc.setMemStoreFlushSize(256*1024*1024);

HColumnDescriptorcolDesc=newHColumnDescriptor("f");

//块缓存,保存着每个HFile数据块的startKeycolDesc.setBlockCacheEnabled(true);

//块的大小,默认值是65536//加载到内存当中的数据块越小,随机查找性能更好,越大,连续读性能更好

colDesc.setBlocksize(64*1024);

//bloom过滤器,有ROW和ROWCOL,ROWCOL除了过滤ROW还要过滤列族colDesc.setBloomFilterType(BloomType.ROW);

//写的时候缓存bloom

colDesc.setCacheBloomsOnWrite(true);

//写的时候缓存索引

colDesc.setCacheIndexesOnWrite(true);     

//存储的时候使用压缩算法   

colDesc.setCompressionType(Algorithm.SNAPPY);

//进行compaction的时候使用压缩算法colDesc.setCompactionCompressionType(Algorithm.SNAPPY);

//压缩内存和存储的数据,区别于SnappycolDesc.setDataBlockEncoding(DataBlockEncoding.PREFIX);

//写入硬盘的时候是否进行编码

colDesc.setEncodeOnDisk(true);

//关闭的时候,是否剔除缓存的块

colDesc.setEvictBlocksOnClose(true);

//是否保存那些已经删除掉的

kvcolDesc.setKeepDeletedCells(false);

//让数据块缓存在LRU缓存里面有更高的优先级

colDesc.setInMemory(true);

//最大最小版本colDesc.setMaxVersions(3);

colDesc.setMinVersions(1);

//集群间复制的时候,如果被设置成REPLICATION_SCOPE_LOCAL就不能被复制了colDesc.setScope(HConstants.REPLICATION_SCOPE_GLOBAL);

//生存时间colDesc.setTimeToLive(18000);

tableDesc.addFamily(colDesc);