DunDDD NoSQL and Big Data
Hi All, I'm organising the NoSQL and Big Data track at Developer Day Dundee: http://dun.dddscotland.co.uk/ This is free mini conference at Dundee University, Dundee Scotland. For the past 2 years we've had a track on NoSQL and had some great speakers. However I don't believe we've had anyone from the Cassandra community join us and give a talk.If your interested, drop me a line and let me know what your proposing. I should point out, as this is a free conference, we can't pay speakers and unless we get a big sponsor, it's doubtful we can manage much in the way of expenses ! Andy Cobley Program director, MSc Business Intelligence and Data Science School of Computing University of Dundee http://www.computing.dundee.ac.uk/ The University of Dundee is a Scottish Registered Charity, No. SC015096.
Cassandra vs Couchbase benchmarks
There are some interesting results in the benchmarks below: http://www.slideshare.net/renatko/couchbase-performance-benchmarking Without starting a flame war etc, I'm interested if these results should be considered "Fair and Balanced" or if the methodology is flawed in some way ? (for instance is the use of Amazon EC2 sensible for Cassandra deployment) ? Andy The University of Dundee is a Scottish Registered Charity, No. SC015096.
JDBC, Pools and clusters ?
I'm starting to move to JBC for Cassandra (away from Hector).In his strange loop 2012 anti-pattern presentation, Mathew Dennis writes: "Sometimes people try to restrict clients to a single node. This actually takes work, and causes problems. Don’t do it." Now, I note that the JDBC pooled connection class takes a single node as an argument creating a pool of connections to that node. So, Whats the best way of handling this in a (web) application ? Should I create multiple pools to each of the nodes in the cluster or is there a better best practice. BTW Is there an equivalent to Hector's getKnownPoolHosts for JDBC ? Many Thanks Andy C The University of Dundee is a Scottish Registered Charity, No. SC015096.
CQL3 jdbc and Tomcat resource
I tried to add a CQL3 jdbc resource to tomcat 7 in a context.xml file (in a Eclipse project) as follows: JDBC driver is cassandra-jdbc-1.1.2. When Tomcat (7.035) restarts it throws a series of errors. Is this known, or expected ? Removing the resource from contact.xml allows the server to start correctly. Andy Errors are: Jan 28, 2013 11:26:27 AM org.apache.catalina.core.AprLifecycleListener init INFO: The APR based Apache Tomcat Native library which allows optimal performance in production environments was not found on the java.library.path: .:/Library/Java/Extensions:/System/Library/Java/Extensions:/usr/lib/java Jan 28, 2013 11:26:27 AM org.apache.tomcat.util.digester.SetPropertiesRule begin WARNING: [SetPropertiesRule]{Server/Service/Engine/Host/Context} Setting property 'source' to 'org.eclipse.jst.jee.server:Count' did not find a matching property. Jan 28, 2013 11:26:27 AM org.apache.tomcat.util.digester.SetPropertiesRule begin WARNING: [SetPropertiesRule]{Server/Service/Engine/Host/Context} Setting property 'source' to 'org.eclipse.jst.jee.server:mysqlexample' did not find a matching property. Jan 28, 2013 11:26:27 AM org.apache.tomcat.util.digester.SetPropertiesRule begin WARNING: [SetPropertiesRule]{Server/Service/Engine/Host/Context} Setting property 'source' to 'org.eclipse.jst.jee.server:testwebservlet' did not find a matching property. Jan 28, 2013 11:26:27 AM org.apache.tomcat.util.digester.SetPropertiesRule begin WARNING: [SetPropertiesRule]{Server/Service/Engine/Host/Context} Setting property 'source' to 'org.eclipse.jst.jee.server:Convert' did not find a matching property. Jan 28, 2013 11:26:27 AM org.apache.tomcat.util.digester.SetPropertiesRule begin WARNING: [SetPropertiesRule]{Server/Service/Engine/Host/Context} Setting property 'source' to 'org.eclipse.jst.jee.server:Math' did not find a matching property. Jan 28, 2013 11:26:27 AM org.apache.coyote.AbstractProtocol init INFO: Initializing ProtocolHandler ["http-bio-8080"] Jan 28, 2013 11:26:27 AM org.apache.coyote.AbstractProtocol init INFO: Initializing ProtocolHandler ["ajp-bio-8009"] Jan 28, 2013 11:26:27 AM org.apache.catalina.startup.Catalina load INFO: Initialization processed in 897 ms Jan 28, 2013 11:26:27 AM org.apache.catalina.core.StandardService startInternal INFO: Starting service Catalina Jan 28, 2013 11:26:27 AM org.apache.catalina.core.StandardEngine startInternal INFO: Starting Servlet Engine: Apache Tomcat/7.0.35 Jan 28, 2013 11:26:28 AM org.apache.catalina.core.ContainerBase startInternal SEVERE: A child container failed during start java.util.concurrent.ExecutionException: org.apache.catalina.LifecycleException: Failed to start component [StandardEngine[Catalina].StandardHost[localhost].StandardContext[/mysqlexample]] at java.util.concurrent.FutureTask$Sync.innerGet(FutureTask.java:222) at java.util.concurrent.FutureTask.get(FutureTask.java:83) at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:1123) at org.apache.catalina.core.StandardHost.startInternal(StandardHost.java:800) at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150) at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1559) at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1549) at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303) at java.util.concurrent.FutureTask.run(FutureTask.java:138) at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908) at java.lang.Thread.run(Thread.java:680) Caused by: org.apache.catalina.LifecycleException: Failed to start component [StandardEngine[Catalina].StandardHost[localhost].StandardContext[/mysqlexample]] at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:154) ... 7 more Caused by: java.lang.NoClassDefFoundError: org/slf4j/LoggerFactory at org.apache.cassandra.cql.jdbc.CassandraDriver.(CassandraDriver.java:52) at java.lang.Class.forName0(Native Method) at java.lang.Class.forName(Class.java:247) at org.apache.tomcat.jdbc.pool.PooledConnection.connectUsingDriver(PooledConnection.java:246) at org.apache.tomcat.jdbc.pool.PooledConnection.connect(PooledConnection.java:182) at org.apache.tomcat.jdbc.pool.ConnectionPool.createConnection(ConnectionPool.java:702) at org.apache.tomcat.jdbc.pool.ConnectionPool.borrowConnection(ConnectionPool.java:634) at org.apache.tomcat.jdbc.pool.ConnectionPool.init(ConnectionPool.java:488) at org.apache.tomcat.jdbc.pool.ConnectionPool.(ConnectionPool.java:144) at org.apache.tomcat.jdbc.pool.DataSourceProxy.pCreatePool(DataSourceProxy.java:116) at org.apache.tomcat.jdbc.pool.DataSourceProxy.createPool(DataSourceProxy.j
Re: CQL3 jdbc and Tomcat resource
Apologies, I was missing a few cassandra jar libs in the tomcat library. Andy On 28 Jan 2013, at 11:31, Andy Cobley wrote: > I tried to add a CQL3 jdbc resource to tomcat 7 in a context.xml file (in a > Eclipse project) as follows: > > name="jdbc/CF1" > factory="org.apache.tomcat.jdbc.pool.DataSourceFactory" > driverClassName="org.apache.cassandra.cql.jdbc.CassandraDriver" > url="jdbc:cassandra://localhost:9170/Keyspace2" > > /> > > JDBC driver is cassandra-jdbc-1.1.2. When Tomcat (7.035) restarts it throws > a series of errors. Is this known, or expected ? Removing the resource from > contact.xml allows the server to start correctly. > > Andy > > Errors are: > > Jan 28, 2013 11:26:27 AM org.apache.catalina.core.AprLifecycleListener init > INFO: The APR based Apache Tomcat Native library which allows optimal > performance in production environments was not found on the > java.library.path: > .:/Library/Java/Extensions:/System/Library/Java/Extensions:/usr/lib/java > Jan 28, 2013 11:26:27 AM org.apache.tomcat.util.digester.SetPropertiesRule > begin > WARNING: [SetPropertiesRule]{Server/Service/Engine/Host/Context} Setting > property 'source' to 'org.eclipse.jst.jee.server:Count' did not find a > matching property. > Jan 28, 2013 11:26:27 AM org.apache.tomcat.util.digester.SetPropertiesRule > begin > WARNING: [SetPropertiesRule]{Server/Service/Engine/Host/Context} Setting > property 'source' to 'org.eclipse.jst.jee.server:mysqlexample' did not find a > matching property. > Jan 28, 2013 11:26:27 AM org.apache.tomcat.util.digester.SetPropertiesRule > begin > WARNING: [SetPropertiesRule]{Server/Service/Engine/Host/Context} Setting > property 'source' to 'org.eclipse.jst.jee.server:testwebservlet' did not find > a matching property. > Jan 28, 2013 11:26:27 AM org.apache.tomcat.util.digester.SetPropertiesRule > begin > WARNING: [SetPropertiesRule]{Server/Service/Engine/Host/Context} Setting > property 'source' to 'org.eclipse.jst.jee.server:Convert' did not find a > matching property. > Jan 28, 2013 11:26:27 AM org.apache.tomcat.util.digester.SetPropertiesRule > begin > WARNING: [SetPropertiesRule]{Server/Service/Engine/Host/Context} Setting > property 'source' to 'org.eclipse.jst.jee.server:Math' did not find a > matching property. > Jan 28, 2013 11:26:27 AM org.apache.coyote.AbstractProtocol init > INFO: Initializing ProtocolHandler ["http-bio-8080"] > Jan 28, 2013 11:26:27 AM org.apache.coyote.AbstractProtocol init > INFO: Initializing ProtocolHandler ["ajp-bio-8009"] > Jan 28, 2013 11:26:27 AM org.apache.catalina.startup.Catalina load > INFO: Initialization processed in 897 ms > Jan 28, 2013 11:26:27 AM org.apache.catalina.core.StandardService > startInternal > INFO: Starting service Catalina > Jan 28, 2013 11:26:27 AM org.apache.catalina.core.StandardEngine startInternal > INFO: Starting Servlet Engine: Apache Tomcat/7.0.35 > Jan 28, 2013 11:26:28 AM org.apache.catalina.core.ContainerBase startInternal > SEVERE: A child container failed during start > java.util.concurrent.ExecutionException: > org.apache.catalina.LifecycleException: Failed to start component > [StandardEngine[Catalina].StandardHost[localhost].StandardContext[/mysqlexample]] > at java.util.concurrent.FutureTask$Sync.innerGet(FutureTask.java:222) > at java.util.concurrent.FutureTask.get(FutureTask.java:83) > at > org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:1123) > at > org.apache.catalina.core.StandardHost.startInternal(StandardHost.java:800) > at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150) > at > org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1559) > at > org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1549) > at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303) > at java.util.concurrent.FutureTask.run(FutureTask.java:138) > at > java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886) > at > java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908) > at java.lang.Thread.run(Thread.java:680) > Caused by: org.apache.catalina.LifecycleException: Failed to start component > [StandardEngine[Catalina].StandardHost[localhost].StandardContext[/mysqlexample]] > at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:154) > ... 7 more > Caused by: java.lang.NoClass
JDBC, Select * Cql2 vs Cql3 problem ?
I have the following code in my app using the JDBC (cassandra-jdbc-1.1.2.jar) drivers to CQL: try { rs= stmt.executeQuery("SELECT * FROM users"); }catch(Exception et){ System.out.println("Can not execute statement "+et); } When connecting to a CQL2 server (cassandra 1.1.5) the code works as expected returning a result set . When connecting to CQL3 (Cassandra 1.2) I catch the following exception: Can not execute statement java.lang.NullPointerException The Select statement (Select * from users) does work from CQLSH as expected. Is there a problem with my code or something else ? Andy C School of Computing University of Dundee. The University of Dundee is a Scottish Registered Charity, No. SC015096.
Re: JDBC, Select * Cql2 vs Cql3 problem ?
When connecting to Cassandra 1.2.0 from CQLSH the table was created with: CREATE KEYSPACE test WITH replication = {'class': 'SimpleStrategy', 'replication_factor' : 1}; cqlsh> use test; cqlsh:test> create columnfamily users (KEY varchar Primary key, password varchar, gender varchar) ; cqlsh:test> INSERT INTO users (KEY, password) VALUES ('jsmith', 'ch@ngem3a'); cqlsh:test> INSERT INTO users (KEY, gender) VALUES ('jbrown', 'male'); stack trace (generated et.printStackTrace()) is: Can not execute statement java.lang.NullPointerException at org.apache.cassandra.cql.jdbc.TypedColumn.(TypedColumn.java:45) at org.apache.cassandra.cql.jdbc.CassandraResultSet.createColumn(CassandraResultSet.java:972) at org.apache.cassandra.cql.jdbc.CassandraResultSet.populateColumns(CassandraResultSet.java:156) at org.apache.cassandra.cql.jdbc.CassandraResultSet.(CassandraResultSet.java:130) at org.apache.cassandra.cql.jdbc.CassandraStatement.doExecute(CassandraStatement.java:167) at org.apache.cassandra.cql.jdbc.CassandraStatement.executeQuery(CassandraStatement.java:227) at uk.ac.dundee.computing.aec.test.test.doGet(test.java:51) at javax.servlet.http.HttpServlet.service(HttpServlet.java:621) at javax.servlet.http.HttpServlet.service(HttpServlet.java:728) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:222) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123) at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:171) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:99) at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:936) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407) at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1004) at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:589) at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:310) at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908) at java.lang.Thread.run(Thread.java:680) Hope that helps ! Andy On 29 Jan 2013, at 07:17, aaron morton wrote: > What is your table spec ? > Do you have the full stack trace from the exception ? > > Cheers > > - > Aaron Morton > Freelance Cassandra Developer > New Zealand > > @aaronmorton > http://www.thelastpickle.com > > On 29/01/2013, at 8:15 AM, Andy Cobley wrote: > >> I have the following code in my app using the JDBC >> (cassandra-jdbc-1.1.2.jar) drivers to CQL: >> >> try { >> rs= stmt.executeQuery("SELECT * FROM users"); >> }catch(Exception et){ >> System.out.println("Can not execute statement "+et); >> } >> >> When connecting to a CQL2 server (cassandra 1.1.5) the code works as >> expected returning a result set . When connecting to CQL3 (Cassandra 1.2) I >> catch the following exception: >> >> Can not execute statement java.lang.NullPointerException >> >> The Select statement (Select * from users) does work from CQLSH as expected. >> Is there a problem with my code or something else ? >> >> Andy C >> School of Computing >> University of Dundee. >> >> >> >> The University of Dundee is a Scottish Registered Charity, No. SC015096. > The University of Dundee is a Scottish Registered Charity, No. SC015096.
Re: JDBC, Select * Cql2 vs Cql3 problem ?
Well this is getting stranger, for me with this simple table definition, select key,gender from users is also failing with a null pointer exception Andy On 29 Jan 2013, at 13:50, Andy Cobley wrote: > When connecting to Cassandra 1.2.0 from CQLSH the table was created with: > > CREATE KEYSPACE test WITH replication = {'class': 'SimpleStrategy', > 'replication_factor' : 1}; > cqlsh> use test; > cqlsh:test> create columnfamily users (KEY varchar Primary key, password > varchar, gender varchar) ; > cqlsh:test> INSERT INTO users (KEY, password) VALUES ('jsmith', 'ch@ngem3a'); > cqlsh:test> INSERT INTO users (KEY, gender) VALUES ('jbrown', 'male'); > > stack trace (generated et.printStackTrace()) is: > > Can not execute statement java.lang.NullPointerException > at org.apache.cassandra.cql.jdbc.TypedColumn.(TypedColumn.java:45) > at > org.apache.cassandra.cql.jdbc.CassandraResultSet.createColumn(CassandraResultSet.java:972) > at > org.apache.cassandra.cql.jdbc.CassandraResultSet.populateColumns(CassandraResultSet.java:156) > at > org.apache.cassandra.cql.jdbc.CassandraResultSet.(CassandraResultSet.java:130) > at > org.apache.cassandra.cql.jdbc.CassandraStatement.doExecute(CassandraStatement.java:167) > at > org.apache.cassandra.cql.jdbc.CassandraStatement.executeQuery(CassandraStatement.java:227) > at uk.ac.dundee.computing.aec.test.test.doGet(test.java:51) > at javax.servlet.http.HttpServlet.service(HttpServlet.java:621) > at javax.servlet.http.HttpServlet.service(HttpServlet.java:728) > at > org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305) > at > org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) > at > org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:222) > at > org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123) > at > org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472) > at > org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:171) > at > org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:99) > at > org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:936) > at > org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118) > at > org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407) > at > org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1004) > at > org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:589) > at > org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:310) > at > java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886) > at > java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908) > at java.lang.Thread.run(Thread.java:680) > > Hope that helps ! > > Andy > > > On 29 Jan 2013, at 07:17, aaron morton wrote: > >> What is your table spec ? >> Do you have the full stack trace from the exception ? >> >> Cheers >> >> - >> Aaron Morton >> Freelance Cassandra Developer >> New Zealand >> >> @aaronmorton >> http://www.thelastpickle.com >> >> On 29/01/2013, at 8:15 AM, Andy Cobley >> wrote: >> >>> I have the following code in my app using the JDBC >>> (cassandra-jdbc-1.1.2.jar) drivers to CQL: >>> >>> try { >>> rs= stmt.executeQuery("SELECT * FROM users"); >>> }catch(Exception et){ >>> System.out.println("Can not execute statement "+et); >>> } >>> >>> When connecting to a CQL2 server (cassandra 1.1.5) the code works as >>> expected returning a result set . When connecting to CQL3 (Cassandra 1.2) >>> I catch the following exception: >>> >>> Can not execute statement java.lang.NullPointerException >>> >>> The Select statement (Select * from users) does work from CQLSH as >>> expected. Is there a problem with my code or something else ? >>> >>> Andy C >>> School of Computing >>> University of Dundee. >>> >>> >>> >>> The University of Dundee is a Scottish Registered Charity, No. SC015096. >> > > The University of Dundee is a Scottish Registered Charity, No. SC015096. The University of Dundee is a Scottish Registered Charity, No. SC015096.
Re: JDBC, Select * Cql2 vs Cql3 problem ?
Hi Edward, I've used Hector for years now myself and know how good it is. I think I've tracked this to a problem in the JDBC driver, I'll post a message and raise a ticket over there. (there is still a possibility that Cassandra 1.2 is sending an incorrect CQLresult set) Andy On 30 Jan 2013, at 14:26, Edward Capriolo wrote: > Darn auto correct cql2 , is only good for compact tables. Make sure you are > setting you cql version. Or frankly just switch to Hector / thrift and use > things that are know to work for years now. > > On Wednesday, January 30, 2013, Edward Capriolo wrote: > > You really can't mix cql2 and cql3. Cql2 does not understand cql3s sparse > > tables. Technically it ,barfs all over the place. Cql2 is only good for > > contact tables. > > > > On Wednesday, January 30, 2013, Andy Cobley > > wrote: > >> Well this is getting stranger, for me with this simple table > >> definition, > >> select key,gender from users > >> is also failing with a null pointer exception > >> Andy > >> On 29 Jan 2013, at 13:50, Andy Cobley > >> wrote: The University of Dundee is a Scottish Registered Charity, No. SC015096.
JDBC : CreateresultSet fails with null column in CqlResultSet
As you may be aware I've been trying to track down a problem using JDBC 1.1.2 with Cassandra 1.2.0 I was getting a null pointer exception in the result set. I've done some digging into the JDBC driver and found the following. In CassandraResultSet.java the new result set is Instantiated in CassandraResultSet(Statement statement, CqlResult resultSet, String keyspace) I decided to trace the result set with the following code: rowsIterator = resultSet.getRowsIterator(); System.out.println("---"); while(rowsIterator.hasNext()){ CqlRow row = rowsIterator.next(); curRowKey = row.getKey(); System.out.println("Row Key "+curRowKey); List cols = row.getColumns(); Iterator iterator; iterator = cols.iterator(); while (iterator.hasNext()){ Column col=(Column)iterator.next(); String Name= new String(col.getName()); String Value = new String(col.getValue()); System.out.println("Col "+Name+ " : "+Value); } } This produced the following output: --- Row Key [B@617e53c9 Col key : jsmith Col : Col password : ch@ngem3a Row Key [B@2caee320 Col key : jbrown Col : Col gender : male --- As you can see there is a black column at position 2 in each of the rows. As this resultset has come from the Cassandra thrift client ( I believe) the problem amy lay there. There is no blank column defined by my SQL create statements I believe. If I'm correct here, should I raise a ticket with JDBC or Cassandra ? (for now I've patched my local JDBC driver so it doesn't create a TypedColumn if the result set produces a null column) Andy The University of Dundee is a Scottish Registered Charity, No. SC015096.
Re: JDBC : CreateresultSet fails with null column in CqlResultSet
Aaron, Ticket is at http://code.google.com/a/apache-extras.org/p/cassandra-jdbc/issues/detail?id=61 Andy On 1 Feb 2013, at 18:01, aaron morton wrote: > I think > http://code.google.com/a/apache-extras.org/p/cassandra-jdbc/issues/list is > the place to raise the issue. > > Can you update the mail thread with the ticket as well? > > Thanks > > - > Aaron Morton > Freelance Cassandra Developer > New Zealand > > @aaronmorton > http://www.thelastpickle.com > The University of Dundee is a Scottish Registered Charity, No. SC015096.
Re: BulkLoading SSTables and compression
My (limited) experience of moving form 0.8 to 1.0 is that you do have to use rebuildsstables. I'm guessing BlukLoading is bypassing the compression ? Andy On 28 Jun 2012, at 10:53, jmodha wrote: > Hi, > > We are migrating our Cassandra cluster from v1.0.3 to v1.1.1, the data is > migrated using SSTableLoader to an empty Cassandra cluster. > > The data in the source cluster (v1.0.3) is uncompressed and the target > cluster (1.1.1) has the column family created with compression turned on. > > What we are seeing is that once the data has been loaded into the target > cluster, the size is similar to the data in the source cluster. Our > expectation is that since we have turned on compression in the target > cluster, the amount of data would be reduced. > > We have tried running the "rebuildsstables" nodetool command on a node after > data has been loaded and we do indeed see a huge reduction in size e.g. from > 30GB to 10GB for a given column family. We were hoping to see this at the > point of loading the data in via the SSTableLoader. > > Is this behaviour expected? > > Do we need to run the rebuildsstables command on all nodes to actually > compress the data after it has been streamed in? > > Thanks. > > -- > View this message in context: > http://cassandra-user-incubator-apache-org.3065146.n2.nabble.com/BulkLoading-SSTables-and-compression-tp7580849.html > Sent from the cassandra-u...@incubator.apache.org mailing list archive at > Nabble.com. The University of Dundee is a Scottish Registered Charity, No. SC015096.
SnappyCompressor and Cassandra 1.1.1
I'm running Cassandra on Raspberry Pi (for educational reason) and have been successfully running 1.1.0 for some time. However there is no native build of SnappyCompressor for the platform (I'm currently working n rectifying that if I can) so that compression is unavailable. When I try and start 1.1.1 on the platform I'm getting the following error which looks to me like 1.1.1 is trying to load snappy compressor at startup and falls over when to can't find it. Thats not been the case with 1.1.0: INFO 14:22:07,600 Global memtable threshold is enabled at 35MB java.lang.reflect.InvocationTargetException at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:616) at org.xerial.snappy.SnappyLoader.loadNativeLibrary(SnappyLoader.java:317) at org.xerial.snappy.SnappyLoader.load(SnappyLoader.java:219) at org.xerial.snappy.Snappy.(Snappy.java:44) at org.apache.cassandra.io.compress.SnappyCompressor.create(SnappyCompressor.java:45) at org.apache.cassandra.io.compress.SnappyCompressor.isAvailable(SnappyCompressor.java:55) at org.apache.cassandra.io.compress.SnappyCompressor.(SnappyCompressor.java:37) at org.apache.cassandra.config.CFMetaData.(CFMetaData.java:76) at org.apache.cassandra.config.KSMetaData.systemKeyspace(KSMetaData.java:79) at org.apache.cassandra.config.DatabaseDescriptor.loadYaml(DatabaseDescriptor.java:439) at org.apache.cassandra.config.DatabaseDescriptor.(DatabaseDescriptor.java:118) at org.apache.cassandra.service.AbstractCassandraDaemon.setup(AbstractCassandraDaemon.java:126) at org.apache.cassandra.service.AbstractCassandraDaemon.activate(AbstractCassandraDaemon.java:353) at org.apache.cassandra.thrift.CassandraDaemon.main(CassandraDaemon.java:106) Caused by: java.lang.UnsatisfiedLinkError: no snappyjava in java.library.path at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1681) at java.lang.Runtime.loadLibrary0(Runtime.java:840) at java.lang.System.loadLibrary(System.java:1047) at org.xerial.snappy.SnappyNativeLoader.loadLibrary(SnappyNativeLoader.java:52) ... 17 more ERROR 14:22:09,934 Exception encountered during startup org.xerial.snappy.SnappyError: [FAILED_TO_LOAD_NATIVE_LIBRARY] null at org.xerial.snappy.SnappyLoader.load(SnappyLoader.java:229) at org.xerial.snappy.Snappy.(Snappy.java:44) at org.apache.cassandra.io.compress.SnappyCompressor.create(SnappyCompressor.java:45) at org.apache.cassandra.io.compress.SnappyCompressor.isAvailable(SnappyCompressor.java:55) at org.apache.cassandra.io.compress.SnappyCompressor.(SnappyCompressor.java:37) at org.apache.cassandra.config.CFMetaData.(CFMetaData.java:76) at org.apache.cassandra.config.KSMetaData.systemKeyspace(KSMetaData.java:79) at org.apache.cassandra.config.DatabaseDescriptor.loadYaml(DatabaseDescriptor.java:439) at org.apache.cassandra.config.DatabaseDescriptor.(DatabaseDescriptor.java:118) at org.apache.cassandra.service.AbstractCassandraDaemon.setup(AbstractCassandraDaemon.java:126) at org.apache.cassandra.service.AbstractCassandraDaemon.activate(AbstractCassandraDaemon.java:353) at org.apache.cassandra.thrift.CassandraDaemon.main(CassandraDaemon.java:106) org.xerial.snappy.SnappyError: [FAILED_TO_LOAD_NATIVE_LIBRARY] null at org.xerial.snappy.SnappyLoader.load(SnappyLoader.java:229) at org.xerial.snappy.Snappy.(Snappy.java:44) at org.apache.cassandra.io.compress.SnappyCompressor.create(SnappyCompressor.java:45) at org.apache.cassandra.io.compress.SnappyCompressor.isAvailable(SnappyCompressor.java:55) at org.apache.cassandra.io.compress.SnappyCompressor.(SnappyCompressor.java:37) at org.apache.cassandra.config.CFMetaData.(CFMetaData.java:76) at org.apache.cassandra.config.KSMetaData.systemKeyspace(KSMetaData.java:79) at org.apache.cassandra.config.DatabaseDescriptor.loadYaml(DatabaseDescriptor.java:439) at org.apache.cassandra.config.DatabaseDescriptor.(DatabaseDescriptor.java:118) at org.apache.cassandra.service.AbstractCassandraDaemon.setup(AbstractCassandraDaemon.java:126) at org.apache.cassandra.service.AbstractCassandraDaemon.activate(AbstractCassandraDaemon.java:353) at org.apache.cassandra.thrift.CassandraDaemon.main(CassandraDaemon.java:106) Exception encountered during startup: [FAILED_TO_LOAD_NATIVE_LIBRARY] null Andy The University of Dundee is a Scottish Registered Charity, No. SC015096.
Re: SnappyCompressor and Cassandra 1.1.1
Thanks , Will give it a go now. Andy On 02/07/2012 08:13, "Sylvain Lebresne" wrote: >Yeah, we tried to catch when Snappy couldn't load (and deactivate it >when that happens) but apparently we've missed a few of the exceptions >that can be thrown in that case. I've created >https://issues.apache.org/jira/browse/CASSANDRA-4400 to fix that. If >you could try the patch on that issue and check it works for you that >would be awesome since I don't have a Raspberry Pi myself to test. > >-- >Sylvain > >On Sun, Jul 1, 2012 at 3:26 PM, Andy Cobley > wrote: >> I'm running Cassandra on Raspberry Pi (for educational reason) and have >>been successfully running 1.1.0 for some time. However there is no >>native build of SnappyCompressor for the platform (I'm currently working >>n rectifying that if I can) so that compression is unavailable. When I >>try and start 1.1.1 on the platform I'm getting the following error >>which looks to me like 1.1.1 is trying to load snappy compressor at >>startup and falls over when to can't find it. Thats not been the case >>with 1.1.0: >> >> INFO 14:22:07,600 Global memtable threshold is enabled at 35MB >> java.lang.reflect.InvocationTargetException >> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) >> at >>sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java >>:57) >> at >>sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorI >>mpl.java:43) >> at java.lang.reflect.Method.invoke(Method.java:616) >> at >>org.xerial.snappy.SnappyLoader.loadNativeLibrary(SnappyLoader.java:317) >> at org.xerial.snappy.SnappyLoader.load(SnappyLoader.java:219) >> at org.xerial.snappy.Snappy.(Snappy.java:44) >> at >>org.apache.cassandra.io.compress.SnappyCompressor.create(SnappyCompressor >>.java:45) >> at >>org.apache.cassandra.io.compress.SnappyCompressor.isAvailable(SnappyCompr >>essor.java:55) >> at >>org.apache.cassandra.io.compress.SnappyCompressor.(SnappyCompress >>or.java:37) >> at >>org.apache.cassandra.config.CFMetaData.(CFMetaData.java:76) >> at >>org.apache.cassandra.config.KSMetaData.systemKeyspace(KSMetaData.java:79) >> at >>org.apache.cassandra.config.DatabaseDescriptor.loadYaml(DatabaseDescripto >>r.java:439) >> at >>org.apache.cassandra.config.DatabaseDescriptor.(DatabaseDescripto >>r.java:118) >> at >>org.apache.cassandra.service.AbstractCassandraDaemon.setup(AbstractCassan >>draDaemon.java:126) >> at >>org.apache.cassandra.service.AbstractCassandraDaemon.activate(AbstractCas >>sandraDaemon.java:353) >> at >>org.apache.cassandra.thrift.CassandraDaemon.main(CassandraDaemon.java:106 >>) >> Caused by: java.lang.UnsatisfiedLinkError: no snappyjava in >>java.library.path >> at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1681) >> at java.lang.Runtime.loadLibrary0(Runtime.java:840) >> at java.lang.System.loadLibrary(System.java:1047) >> at >>org.xerial.snappy.SnappyNativeLoader.loadLibrary(SnappyNativeLoader.java: >>52) >> ... 17 more >> ERROR 14:22:09,934 Exception encountered during startup >> org.xerial.snappy.SnappyError: [FAILED_TO_LOAD_NATIVE_LIBRARY] null >> at org.xerial.snappy.SnappyLoader.load(SnappyLoader.java:229) >> at org.xerial.snappy.Snappy.(Snappy.java:44) >> at >>org.apache.cassandra.io.compress.SnappyCompressor.create(SnappyCompressor >>.java:45) >> at >>org.apache.cassandra.io.compress.SnappyCompressor.isAvailable(SnappyCompr >>essor.java:55) >> at >>org.apache.cassandra.io.compress.SnappyCompressor.(SnappyCompress >>or.java:37) >> at >>org.apache.cassandra.config.CFMetaData.(CFMetaData.java:76) >> at >>org.apache.cassandra.config.KSMetaData.systemKeyspace(KSMetaData.java:79) >> at >>org.apache.cassandra.config.DatabaseDescriptor.loadYaml(DatabaseDescripto >>r.java:439) >> at >>org.apache.cassandra.config.DatabaseDescriptor.(DatabaseDescripto >>r.java:118) >> at >>org.apache.cassandra.service.AbstractCassandraDaemon.setup(AbstractCassan >>draDaemon.java:126) >> at >>org.apache.cassandra.service.AbstractCassandraDaemon.activate(AbstractCas >>sandraDaemon.java:353) >> at >>org.apache.cassandra.thrift.C
Re: SnappyCompressor and Cassandra 1.1.1
I've tested this and added a not to issue 4400. Hopefully that¹s the correct thing to do. Andy On 02/07/2012 08:13, "Sylvain Lebresne" wrote: >Yeah, we tried to catch when Snappy couldn't load (and deactivate it >when that happens) but apparently we've missed a few of the exceptions >that can be thrown in that case. I've created >https://issues.apache.org/jira/browse/CASSANDRA-4400 to fix that. If >you could try the patch on that issue and check it works for you that >would be awesome since I don't have a Raspberry Pi myself to test. > >-- >Sylvain > >On Sun, Jul 1, 2012 at 3:26 PM, Andy Cobley > wrote: >> I'm running Cassandra on Raspberry Pi (for educational reason) and have >>been successfully running 1.1.0 for some time. However there is no >>native build of SnappyCompressor for the platform (I'm currently working >>n rectifying that if I can) so that compression is unavailable. When I >>try and start 1.1.1 on the platform I'm getting the following error >>which looks to me like 1.1.1 is trying to load snappy compressor at >>startup and falls over when to can't find it. Thats not been the case >>with 1.1.0: >> >> INFO 14:22:07,600 Global memtable threshold is enabled at 35MB >> java.lang.reflect.InvocationTargetException >> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) >> at >>sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java >>:57) >> at >>sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorI >>mpl.java:43) >> at java.lang.reflect.Method.invoke(Method.java:616) >> at >>org.xerial.snappy.SnappyLoader.loadNativeLibrary(SnappyLoader.java:317) >> at org.xerial.snappy.SnappyLoader.load(SnappyLoader.java:219) >> at org.xerial.snappy.Snappy.(Snappy.java:44) >> at >>org.apache.cassandra.io.compress.SnappyCompressor.create(SnappyCompressor >>.java:45) >> at >>org.apache.cassandra.io.compress.SnappyCompressor.isAvailable(SnappyCompr >>essor.java:55) >> at >>org.apache.cassandra.io.compress.SnappyCompressor.(SnappyCompress >>or.java:37) >> at >>org.apache.cassandra.config.CFMetaData.(CFMetaData.java:76) >> at >>org.apache.cassandra.config.KSMetaData.systemKeyspace(KSMetaData.java:79) >> at >>org.apache.cassandra.config.DatabaseDescriptor.loadYaml(DatabaseDescripto >>r.java:439) >> at >>org.apache.cassandra.config.DatabaseDescriptor.(DatabaseDescripto >>r.java:118) >> at >>org.apache.cassandra.service.AbstractCassandraDaemon.setup(AbstractCassan >>draDaemon.java:126) >> at >>org.apache.cassandra.service.AbstractCassandraDaemon.activate(AbstractCas >>sandraDaemon.java:353) >> at >>org.apache.cassandra.thrift.CassandraDaemon.main(CassandraDaemon.java:106 >>) >> Caused by: java.lang.UnsatisfiedLinkError: no snappyjava in >>java.library.path >> at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1681) >> at java.lang.Runtime.loadLibrary0(Runtime.java:840) >> at java.lang.System.loadLibrary(System.java:1047) >> at >>org.xerial.snappy.SnappyNativeLoader.loadLibrary(SnappyNativeLoader.java: >>52) >> ... 17 more >> ERROR 14:22:09,934 Exception encountered during startup >> org.xerial.snappy.SnappyError: [FAILED_TO_LOAD_NATIVE_LIBRARY] null >> at org.xerial.snappy.SnappyLoader.load(SnappyLoader.java:229) >> at org.xerial.snappy.Snappy.(Snappy.java:44) >> at >>org.apache.cassandra.io.compress.SnappyCompressor.create(SnappyCompressor >>.java:45) >> at >>org.apache.cassandra.io.compress.SnappyCompressor.isAvailable(SnappyCompr >>essor.java:55) >> at >>org.apache.cassandra.io.compress.SnappyCompressor.(SnappyCompress >>or.java:37) >> at >>org.apache.cassandra.config.CFMetaData.(CFMetaData.java:76) >> at >>org.apache.cassandra.config.KSMetaData.systemKeyspace(KSMetaData.java:79) >> at >>org.apache.cassandra.config.DatabaseDescriptor.loadYaml(DatabaseDescripto >>r.java:439) >> at >>org.apache.cassandra.config.DatabaseDescriptor.(DatabaseDescripto >>r.java:118) >> at >>org.apache.cassandra.service.AbstractCassandraDaemon.setup(AbstractCassan >>draDaemon.java:126) >> at >>org.apache.cassandra.service.AbstractCassandraDaemon.activate(AbstractCas >>sandraDaemon.j
Re: SnappyCompressor and Cassandra 1.1.1
Yes, I've a number of (badly written I admit) blog posts at: http://ac31004.blogspot.co.uk/ Andy From: aaron morton Reply-To: Date: Wednesday, 4 July 2012 10:03 To: Subject: Re: SnappyCompressor and Cassandra 1.1.1 Andy, >>> I'm running Cassandra on Raspberry Pi (for educational reason) and have Have you written about your experiences anywhere ? Cheers - Aaron Morton Freelance Developer @aaronmorton http://www.thelastpickle.com On 3/07/2012, at 3:02 AM, Andy Cobley wrote: > I've tested this and added a not to issue 4400. Hopefully that¹s the > correct thing to do. > > Andy > > On 02/07/2012 08:13, "Sylvain Lebresne" wrote: > >> Yeah, we tried to catch when Snappy couldn't load (and deactivate it >> when that happens) but apparently we've missed a few of the exceptions >> that can be thrown in that case. I've created >> https://issues.apache.org/jira/browse/CASSANDRA-4400 to fix that. If >> you could try the patch on that issue and check it works for you that >> would be awesome since I don't have a Raspberry Pi myself to test. >> >> -- >> Sylvain >> >> On Sun, Jul 1, 2012 at 3:26 PM, Andy Cobley >> wrote: >>> I'm running Cassandra on Raspberry Pi (for educational reason) and have >>> been successfully running 1.1.0 for some time. However there is no >>> native build of SnappyCompressor for the platform (I'm currently working >>> n rectifying that if I can) so that compression is unavailable. When I >>> try and start 1.1.1 on the platform I'm getting the following error >>> which looks to me like 1.1.1 is trying to load snappy compressor at >>> startup and falls over when to can't find it. Thats not been the case >>> with 1.1.0: >>> >>> INFO 14:22:07,600 Global memtable threshold is enabled at 35MB >>> java.lang.reflect.InvocationTargetException >>> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) >>> at >>> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java >>> :57) >>> at >>> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorI >>> mpl.java:43) >>> at java.lang.reflect.Method.invoke(Method.java:616) >>> at >>> org.xerial.snappy.SnappyLoader.loadNativeLibrary(SnappyLoader.java:317) >>> at org.xerial.snappy.SnappyLoader.load(SnappyLoader.java:219) >>> at org.xerial.snappy.Snappy.(Snappy.java:44) >>> at >>> org.apache.cassandra.io.compress.SnappyCompressor.create(SnappyCompressor >>> .java:45) >>> at >>> org.apache.cassandra.io.compress.SnappyCompressor.isAvailable(SnappyCompr >>> essor.java:55) >>> at >>> org.apache.cassandra.io.compress.SnappyCompressor.(SnappyCompress >>> or.java:37) >>> at >>> org.apache.cassandra.config.CFMetaData.(CFMetaData.java:76) >>> at >>> org.apache.cassandra.config.KSMetaData.systemKeyspace(KSMetaData.java:79) >>> at >>> org.apache.cassandra.config.DatabaseDescriptor.loadYaml(DatabaseDescripto >>> r.java:439) >>> at >>> org.apache.cassandra.config.DatabaseDescriptor.(DatabaseDescripto >>> r.java:118) >>> at >>> org.apache.cassandra.service.AbstractCassandraDaemon.setup(AbstractCassan >>> draDaemon.java:126) >>> at >>> org.apache.cassandra.service.AbstractCassandraDaemon.activate(AbstractCas >>> sandraDaemon.java:353) >>> at >>> org.apache.cassandra.thrift.CassandraDaemon.main(CassandraDaemon.java:106 >>> ) >>> Caused by: java.lang.UnsatisfiedLinkError: no snappyjava in >>> java.library.path >>> at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1681) >>> at java.lang.Runtime.loadLibrary0(Runtime.java:840) >>> at java.lang.System.loadLibrary(System.java:1047) >>> at >>> org.xerial.snappy.SnappyNativeLoader.loadLibrary(SnappyNativeLoader.java: >>> 52) >>> ... 17 more >>> ERROR 14:22:09,934 Exception encountered during startup >>> org.xerial.snappy.SnappyError: [FAILED_TO_LOAD_NATIVE_LIBRARY] null >>> at org.xerial.snappy.SnappyLoader.load(SnappyLoader.java:229) >>> at org.xerial.snappy.Snappy.(Snappy.java:44) >>> at >>> org.apache.cassandra.io.compress.SnappyCompressor.create(Sna