经验分享hbase client 如何选择
Posted barneywill
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了经验分享hbase client 如何选择相关的知识,希望对你有一定的参考价值。
java中访问hbase有两种方式,一种是hbase自带的client,一种是通过hbase thrift
1 hbase client示例
Configuration conf = HBaseConfiguration.create(); conf.set(HConstants.ZOOKEEPER_CLIENT_PORT, "2181"); conf.set(HConstants.ZOOKEEPER_QUORUM, "zk_host"); Connection connection = ConnectionFactory.createConnection(conf); Table profileTable = connection.getTable(TableName.valueOf("test_table")); Result result = profileTable.get(new Get(Bytes.toBytes("test_rowkey"))); System.out.println(new String(result.getValue(Bytes.toBytes("test_cf"), Bytes.toBytes("test_column"))));
这里只需要配置zookeeper,访问的过程是先通过zookeeper找hmaster,然后通过hmaster定位到一个region server,然后访问region server,所以需要客户端到hbase所有节点(包括zookeeper、hmaster、region server)可达,即host能ping通;
2 hbase thrift示例
TTransport transport = null; try { transport = new TSocket(host, port, timeout); transport.open(); TProtocol protocol = new TBinaryProtocol(transport); THBaseService.Iface client = new THBaseService.Client(protocol); ByteBuffer table = ByteBuffer.wrap(tableName.getBytes()); TGet get = new TGet(ByteBuffer.wrap(rowKey.getBytes())); try { TResult result = client.get(table, get); return result; } catch (Exception e) { throw new RuntimeException(e); } } catch (Exception e) { throw new RuntimeException(e); } finally { transport.close(); }
这里只需要配置hbase thrift server的ip和端口,没有任何其他依赖;单点问题可以通过加load balancer来解决;
综上,如果不需要配host,两种都可以,如果需要配host,使用thrift更简单;
以上是关于经验分享hbase client 如何选择的主要内容,如果未能解决你的问题,请参考以下文章