incubator-cassandra-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Sonny Heer <sonnyh...@gmail.com>
Subject Re: Dividing the client load between machines in Cassandra
Date Wed, 17 Mar 2010 21:18:11 GMT
Opps.  Yep, thanks!

On Wed, Mar 17, 2010 at 1:47 PM, Jonathan Ellis <jbellis@gmail.com> wrote:
> You didn't call tr.open() ?
>
> On Wed, Mar 17, 2010 at 3:45 PM, Sonny Heer <sonnyheer@gmail.com> wrote:
>> I'm getting:
>> org.apache.thrift.transport.TTransportException: Cannot write to null
>> outputStream
>>        at org.apache.thrift.transport.TIOStreamTransport.write(TIOStreamTransport.java:137)
>>        at org.apache.thrift.protocol.TBinaryProtocol.writeI32(TBinaryProtocol.java:152)
>>        at org.apache.thrift.protocol.TBinaryProtocol.writeMessageBegin(TBinaryProtocol.java:80)
>>        at org.apache.cassandra.service.Cassandra$Client.send_get_string_property(Cassandra.java:681)
>>        at org.apache.cassandra.service.Cassandra$Client.get_string_property(Cassandra.java:675)
>>        at com.atsid.cassandra.ngram.test.TestRingConnection.main(TestRingConnection.java:26)
>>
>>
>> when running:
>>
>>        TTransport tr = new TSocket("localhost", 9160);
>>        TProtocol proto = new TBinaryProtocol(tr);
>>        Cassandra.Client client = new Cassandra.Client(proto);
>>                try {
>>                        String jsonServerList = client.get_string_property("token
map");
>>
>>
>> What am I doing wrong here?
>>
>> On Wed, Mar 17, 2010 at 11:33 AM, Sonny Heer <sonnyheer@gmail.com> wrote:
>>> Cool thanks Todd.  I'd be interested at some point to see the updated
>>> .6 version as well.  Thanks again!
>>>
>>> On Wed, Mar 17, 2010 at 9:24 AM, B. Todd Burruss <bburruss@real.com> wrote:
>>>> below is the commented out code i once used.  i think it is from the 0.5
>>>> days, so it might not even work now.  not sure.  the bootstrapHostArr is
>>>> simply a list of host information used to bootstrap the process.
>>>>  connectToHost is a method used to generate a Cassandra.Client object.
>>>>  there is sample code on cassandra wiki for doing this.  good luck!
>>>>
>>>> // can't use this on cassandra because the tokens returned are for the
>>>> "internal cassandra server comm", not the thrift IPs
>>>> //        String    hostList = null;
>>>> //        for ( HostInfo hi : bootstrapHostArr ) {
>>>> //            Cassandra.Client    client = null;
>>>> //            try {
>>>> //                client = connectToHost( hi.getHostName(), hi.getPort()
);
>>>> //                hostList = client.get_string_property( "token map"
);
>>>> //                break;
>>>> //            }
>>>> //            catch ( TTransportException e ) {
>>>> //                logger.error( "cannot connect to bootstrap node
- will try
>>>> another if available : " + hi.getNameAndPort() );
>>>> //            }
>>>> //            catch ( TException e ) {
>>>> //                logger.error( "cannot retrieve host list from node
- will
>>>> try another if available : " + hi.getNameAndPort() );
>>>> //            }
>>>> //            finally {
>>>> //                if ( null != client ) {
>>>> //                    disconnectFromCluster( client );
>>>> //                }
>>>> //            }
>>>> //        }
>>>> //   //        if ( null != hostList ) {           //
>>>>  ArrayList<String>    newArr;
>>>> //            try {
>>>> //                JSONObject    jsonObj = new JSONObject( hostList
);
>>>> //                String[]    ringArr = JSONObject.getNames( jsonObj
);
>>>> //                newArr = new ArrayList<String>( ringArr.length
);
>>>> //               //                for ( int i=0;i < ringArr.length;i++
) {
>>>> //                    String    hostName = jsonObj.getString(
ringArr[i] );
>>>> //                    if ( !hostIgnoreSet.contains(hostName) )
{
>>>> //                        newArr.add( hostName );
>>>> //                    }
>>>> //                }
>>>> //            }
>>>> //            catch ( JSONException e ) {
>>>> //                throw new ClusterRuntimeException( "Could not parse
JSON
>>>> returned from Cassandra - don't know what to do?  ARRRRGGGG" );
>>>> //            }
>>>>
>>>>
>>>> Sonny Heer wrote:
>>>>>
>>>>> Is there some example code on how to do this?
>>>>>
>>>>> On Tue, Mar 16, 2010 at 3:07 PM, Jonathan Ellis <jbellis@gmail.com>
wrote:
>>>>>
>>>>>>
>>>>>> token map is an internal representation, so returning the internal
IPs
>>>>>> is correct, even though this makes it slightly more difficult to
use
>>>>>> for thrift clients.
>>>>>>
>>>>>> On Tue, Mar 16, 2010 at 4:55 PM, B. Todd Burruss <bburruss@real.com>
>>>>>> wrote:
>>>>>>
>>>>>>>
>>>>>>> if you choose #3 - get_string_property("token map") - keep in
mind that
>>>>>>> the
>>>>>>> IPs returned from this call are the IPs used for "ListenAddress"
param
>>>>>>> in
>>>>>>> storage-conf.xml.  In my case we have two NICs and I set this
to be an
>>>>>>> IP
>>>>>>> that is only for "node to node" communication.  The "ThriftAddress"
>>>>>>> param is
>>>>>>> the one i really want.  maybe this has been changed, "fixed"
;), haven't
>>>>>>> tested in a while.
>>>>>>>
>>>>>>> Jonathan Ellis wrote:
>>>>>>>
>>>>>>>>
>>>>>>>> http://wiki.apache.org/cassandra/FAQ#node_clients_connect_to
>>>>>>>>
>>>>>>>> On Tue, Mar 16, 2010 at 4:30 PM, Sonny Heer <sonnyheer@gmail.com>
>>>>>>>> wrote:
>>>>>>>>
>>>>>>>>
>>>>>>>>>
>>>>>>>>> How can I accomplish this?
>>>>>>>>>
>>>>>>>>> The way I'm doing it now it is creating a TSocket connection
using a
>>>>>>>>> static IP of one of the boxes on Cassandra:
>>>>>>>>>      TTransport tr = new TSocket(host, port.intValue());
>>>>>>>>>      TProtocol proto = new TBinaryProtocol(tr);
>>>>>>>>>      Cassandra.Client client = new Cassandra.Client(proto);
>>>>>>>>>      tr.open();
>>>>>>>>>
>>>>>>>>> With a larger cluster I would imagine there is another
preferred
>>>>>>>>> solution with no single point of failure (e.g. that one
box  goes
>>>>>>>>> down).
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>
>>>
>>
>

Mime
View raw message