zoukankan      html  css  js  c++  java
  • 【原创】大叔经验分享(3)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更简单;

  • 相关阅读:
    Overview | POCO C++ Libraries
    simple.c
    Classes for Writing HTTP Clients in C++ CodeProject
    APScheduler 2.0.3 : Python Package Index
    neon HTTP and WebDAV client library
    HTTP Client C API
    vi编辑器的学习使用(二十一)
    自由软件的定义
    vi编辑器的学习使用(二十三))
    vi编辑器的学习使用(二十二)
  • 原文地址:https://www.cnblogs.com/barneywill/p/10109258.html
Copyright © 2011-2022 走看看