hbase-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Alexey Kovyrin <ale...@kovyrin.net>
Subject Re: thrift for hbase in CDH3 broken ?
Date Fri, 03 Sep 2010 03:15:27 GMT
We use it in Scribd.com. All clients are ruby web apps.

On Thu, Sep 2, 2010 at 10:49 PM, Todd Lipcon <todd@cloudera.com> wrote:
> On Thu, Sep 2, 2010 at 5:35 PM, Jinsong Hu <jinsong_hu@hotmail.com> wrote:
>
>> Yes, I confirmed that it is indeed thrift server.
>>
>> and the fact that the API
>>
>>           List<byte[]> tableNamesList=client.getTableNames();
>>>>          for (byte [] name : tableNamesList)
>>>>          {
>>>>              System.out.println(new String(name));
>>>>          }
>>>>
>>>
>> successfully printed all table names shows that it is indeed thrift server.
>>
>> if it is hue, it won't print the table names.
>>
>> Ah, sorry, I missed that in your original message. Not sure what's up, then
> - we don't have any changes in CDH that would affect this. Anyone here used
> thrift on 0.89.20100621?
>
> -Todd
>
>
>
>> Jimmy.
>>
>> --------------------------------------------------
>> From: "Todd Lipcon" <todd@cloudera.com>
>> Sent: Thursday, September 02, 2010 5:18 PM
>>
>> To: <user@hbase.apache.org>
>> Subject: Re: thrift for hbase in CDH3 broken ?
>>
>>
>>  Hi Jinsong,
>>>
>>> Are you sure that the port you're connecting to is indeed the thrift
>>> server?
>>>
>>> Unfortunately both the HBase thrift server and the Hue namenode plugin
>>> listen on port 9090, so you might be having an issue where your HBase
>>> client
>>> is trying to connect to the Namenode server instead of HBase.
>>>
>>> You can verify the ports using a command like "/sbin/fuser -n tcp 9090" to
>>> see which pid has it open, then cross reference against sudo jps.
>>>
>>> Thanks
>>> -Todd
>>>
>>> On Thu, Sep 2, 2010 at 4:40 PM, Jinsong Hu <jinsong_hu@hotmail.com>
>>> wrote:
>>>
>>>  Hi, There,
>>>>  I am trying to test and see if thrift for hbase works. I followed the
>>>> example from
>>>>
>>>> http://www.workhabit.com/labs/centos-55-and-thriftscribe
>>>> http://incubator.apache.org/thrift/
>>>> http://wiki.apache.org/hadoop/Hbase/ThriftApi
>>>>
>>>> and wrote test code: I found that client.getTableNames();
>>>> returns all table names successfully, but the scanner never returned
>>>> any record. and it even throws exception:
>>>>
>>>> org.apache.thrift.TApplicationException: get failed: unknown result
>>>>       at
>>>>
>>>> org.apache.hadoop.hbase.thrift.generated.Hbase$Client.recv_get(Hbase.java:785)
>>>>       at
>>>> org.apache.hadoop.hbase.thrift.generated.Hbase$Client.get(Hbase.java:750)
>>>>       at
>>>>
>>>> org.apache.hadoop.hbase.thrift.HbaseThriftTest.testThriftAPI(HbaseThriftTest.java:73)
>>>>       at
>>>>
>>>> org.apache.hadoop.hbase.thrift.HbaseThriftTest.main(HbaseThriftTest.java:128)
>>>>
>>>> I checked the syntax and the table and confirmed that the table does have
>>>> record and it should
>>>> return result, but it doesn't. Can anybody tell me what is wrong ?
>>>>
>>>> At this time, I am suspecting the thrift server shipped with CDH3 may
>>>> have
>>>> problem. if there anyway
>>>> I can get this test code working ?
>>>>
>>>> I have to use thrift-0.2.0-incubating.tar.gz , as I found that the code
>>>> generated from hbase-thrift project
>>>> doesn't even compile with 0.3.0 and 0.4.0 thrift.
>>>>
>>>>
>>>> Jimmy.
>>>>
>>>>
>>>>
>>>>
>>>>
>>>>
>>>>  public void testThriftAPI()
>>>>  {
>>>>      // Make socket
>>>>      TSocket transport = new TSocket("10.20.12.13", 9090);
>>>>
>>>>
>>>>
>>>>      // Wrap in a protocol
>>>>      TBinaryProtocol protocol = new  TBinaryProtocol(transport);
>>>>
>>>>      Hbase.Client client = new Hbase.Client(protocol);
>>>>
>>>>      try {
>>>>          transport.open();
>>>>          List<byte[]> tableNamesList=client.getTableNames();
>>>>          for (byte [] name : tableNamesList)
>>>>          {
>>>>              System.out.println(new String(name));
>>>>          }
>>>>
>>>>          String tableName="HEARTBEAT_CLUSTER";
>>>>          String startRow="";
>>>>          List<byte[]> columns= new ArrayList<byte[]>();
>>>>          columns.add("fields:time_format".getBytes());
>>>>          columns.add("fields:customer_id".getBytes());
>>>>
>>>>          int aScannerId=0;
>>>>          try {
>>>>
>>>>              TCell cell=client.get(tableName.getBytes(),
>>>> "2010-08\tproduction-2".getBytes(), "fields:customer_id".getBytes());
>>>>              if (cell != null)
>>>>              {
>>>>                 String value= new String( cell.value);
>>>>                 System.out.println(value);
>>>>              }
>>>>              aScannerId=client.scannerOpen(tableName.getBytes(),
>>>> startRow.getBytes(), columns);
>>>>              TRowResult result=null;
>>>>              for (int i=0; i< 10; i++)
>>>>              {
>>>>                  try {
>>>>                  result=client.scannerGet(aScannerId);
>>>>                  } catch (Exception ex1)
>>>>                  {
>>>>
>>>>                  }
>>>>                  if (result ==null) break;
>>>>
>>>>                  String timeFormat=result.getFieldValue(0).toString();
>>>>                  String customerId=result.getFieldValue(1).toString();
>>>>                  System.out.println(timeFormat + "\t" + customerId);
>>>>              }
>>>>          } catch (Exception ex)
>>>>          {
>>>>              ex.printStackTrace();
>>>>          }
>>>>          finally {
>>>>              if (aScannerId >0 ) client.scannerClose(aScannerId);
>>>>          }
>>>>      } catch (Exception exp)
>>>>      {
>>>>          exp.printStackTrace();
>>>>      }
>>>>      finally{
>>>>          transport.close();
>>>>      }
>>>>
>>>>  }
>>>>
>>>>
>>>
>>>
>>> --
>>> Todd Lipcon
>>> Software Engineer, Cloudera
>>>
>>>
>
>
> --
> Todd Lipcon
> Software Engineer, Cloudera
>



-- 
Alexey Kovyrin
http://kovyrin.net/

Mime
View raw message