HBase无法创建带有snappy压缩属性的表

newBloggzh 2017-04-12

一、要求

在Hbase 数据库中创建带有snappy压缩属性的表。

二、登陆到hbase 数据库执行建表操作

hbase(main):016:0> create 'dcs:t_dev_history',{NAME => 'f', DATA_BLOCK_ENCODING => 'PREFIX_TREE', BLOOMFILTER => 'ROW', REPLICATION_SCOPE => '0', VERSIONS => '1', COMPRESSION => 'SNAPPY', MIN_VERSIONS => '0', TTL => '2678400', KEEP_DELETED_CELLS => 'FALSE', BLOCKSIZE => '65536', IN_MEMORY => 'false', BLOCKCACHE => 'true'}

channel 6: open failed: administratively prohibited: open failed

之前创建的表都没有使用snappy压缩,怀疑是snappy没有安装

三、检查所有hbase节点

Master1节点snappy安装正确

[Hadoop@hadoop-test-Master1 lib]$ cd $HBASE_HOME/lib/native/Linux-amd64-64/

[hadoop@hadoop-test-Master1 Linux-amd64-64]$ ls

libhadoop.a         libhadoopsnappy.so.0      libhadoop.so.1.0.0  libhdfs.so        libpython2.7.so      libsnappy.so.1

libhadooppipes.a    libhadoopsnappy.so.0.0.1  libhadooputils.a    libhdfs.so.0.0.0  libpython2.7.so.1.0  libsnappy.so.1.2.0

libhadoopsnappy.so  libhadoop.so              libhdfs.a           libjvm.so         libsnappy.so

Master2节点snappy安装错误,猜测当时安装的时候scp的路径错误

[hadoop@hadoop-test-Master2 ~]$ cd /var/lib/hbase/lib/native/ --发现没有Linux-amd64-64 目录

[hadoop@hadoop-test-Master2 native]$ ls

libhadoop.a         libhadoopsnappy.so.0      libhadoop.so.1.0.0  libhdfs.so        libpython2.7.so      libsnappy.so.1

libhadooppipes.a    libhadoopsnappy.so.0.0.1  libhadooputils.a    libhdfs.so.0.0.0  libpython2.7.so.1.0  libsnappy.so.1.2.0

libhadoopsnappy.so  libhadoop.so              libhdfs.a           libjvm.so  

       libsnappy.so        

四、处理过程

1.把文件传输到指定节点

 scp -rp Linux-amd64-64 hadoop-test-Master2:/var/lib/hbase/lib/native/

 scp -rp Linux-amd64-64 hadoop-test-Node1:/var/lib/hbase/lib/native/

2.然后重启hbase集群

./stop-hbase.sh 

./start-hbase.sh 

3.重新创建表成功。

五、小结

  1. 作为一名dba,做完相关的操作一定要验证,一定要验证,要有严谨的态度。
  2. 遇到很多问题根本不是技术问题,而是有些人从来都不用心,得过且过。
  3. 压缩在hadoop和hbase中是一个很好的节约空间的方式,值得提倡,尤其是在经费紧张的情况下。
  4. snappy需要单独安装,并不是安装hadoop自带的,需要注意。

HBase 的详细介绍:请点这里
HBase 的下载地址:请点这里

相关推荐