HBase系列常见面试题汇总---HBase建表优化
BloomFilter
* 默认值为 NONE,布隆过滤器的作用是可以过滤掉大部分不存在目标查询值的 HFile(即略去不必要的磁盘扫描),可以有助于降低读取延迟。 配置方式: create 'table',{BLOOMFILTER =>'ROW |ROWCOL'} * ROW,表示对 Rowkey 进行布隆过滤,Rowkey 的哈希值在每次写入行时会被添加到布隆过滤器中,在读的时候就会通过布隆过滤器过滤掉大部分无效目标。 * ROWCOL 表示行键 + 列簇 + 列的哈希将在每次插入行时添加到布隆。
Versions
* 默认值为 1 ,我们知道 HBase 是一个多版本共存的数据库,多次写入相同的 rowkey + cf + col 则会产生多个版本的数据,在有些场景下多版本数据是有用的,需要把写入的数据做一个对比或者其他操作;但是如果我们不想保留那么多数据,只是想要覆盖原有值,那么将此参数设为 1 能节约 2/3 的空间。所以第一步搞清楚你的需求,是否需要多版本共存。 * 配置方式 create 'table',{VERSIONS=>'2'}
Compression
* 默认值为 NONE ,常用的压缩方式是 Snappy 和 LZO,它们的特点是用于热数据压缩,占用 CPU 少,解压/压缩速度较其他压缩方式快,但是压缩率较低。Snappy 与 LZO 相比,Snappy 整体性能优于 LZO,解压/压缩速度更快,但是压缩率稍低。各种压缩各有不同的特点,需要根据需求作出选择。 * create 'table',{NAME=>'info',COMPRESSION=>'snappy'}
HBase 预分区
默认情况下,在创建 HBase 表的时候会自动创建一个 Region 分区,当导入数据的时候, 所有的 HBase 客户端都向这一个 Region 写数据,直到这个 Region 足够大了才进行切分。这样的局限是很容易造成数据倾斜,影响读写效率。预分区是一种比较好的解决这些问题的方案,即预先创建一些空的 Regions,定义好每个 Region 存储的数据的范围,这样可以有效避免数据倾斜问题,多个 Region 同时工作,使得可以在集群内做数据的负载均衡。
* 指定 rowkey 分割的点 create 'table1','f1',SPLITS => ['\x10\x00', '\x20\x00', '\x30\x00', '\x40\x00'] * rowkey 前缀完全随机 create 'table2','f1', { NUMREGIONS => 8 , SPLITALGO => 'UniformSplit' } * rowkey 是十六进制的字符串作为前缀的 create 'table3','f1', { NUMREGIONS => 10, SPLITALGO => 'HexStringSplit' } 其中,NUMREGIONS 为 region 的个数,一般按每个 egion 10GB 左右来计算 Region 数量,集群规模大,Region 数量可以适当取大一些。
更多关于“大数据培训”的问题,欢迎咨询千锋教育在线名师。千锋教育多年办学,课程大纲紧跟企业需求,更科学更严谨,每年培养泛IT人才近2万人。不论你是零基础还是想提升,都可以找到适合的班型,千锋教育随时欢迎你来试听。