2013-05-24 28 views
10

Wiem, że istnieje kilka post na StackOverflow o REST i Thrift dla HBase, ale chciałbym skupić się nieco na kwestii wydajności.HBase: Thrift vs Reszta wydajności

Gram z następujących bibliotek node.js, aby połączyć się z wystąpieniem HBase:

Po pewnym kłopot z ustaleniem, dlaczego nie otrzymam odpowiedzi z bramki Thrift, w końcu otrzymałem oba skrypty z następującymi rezultatami (każdy wynik równa się 1000 ops zakończeniu):

┌─[[email protected]]─[~/Sources/node-hbase] 
└──╼ node hbase.js 
hbase-write: 99ms 
hbase-write: 3412ms 
hbase-write: 3854ms 
hbase-write: 3924ms 
hbase-write: 3808ms 
hbase-write: 9035ms 
hbase-read: 216ms 
hbase-read: 4676ms 
hbase-read: 3908ms 
hbase-read: 3498ms 
hbase-read: 4139ms 
hbase-read: 3781ms 
completed 
┌─[[email protected]]─[~/Sources/node-hbase] 
└──╼ node thrift.js 
hbase-write: 4ms 
hbase-write: 931ms 
hbase-write: 1061ms 
hbase-write: 988ms 
hbase-write: 839ms 
hbase-write: 807ms 
hbase-read: 2ms 
hbase-read: 435ms 
hbase-read: 562ms 
hbase-read: 414ms 
hbase-read: 427ms 
hbase-read: 423ms 
completed 
┌─[[email protected]]─[~/Sources/node-hbase] 
└──╼ 

skrypty używane można znaleźć tutaj: https://github.com/stelcheck/node-hbase-vs-thrift

Moje pytanie brzmi, czy ktoś zauważył, jak wielki różnicy między odpoczynek i Thrift dla HBase (lub nawet w ogóle do wszelkich aplikacji/języków)?

+0

Według testów porównawczych pod adresem http://stackoverflow.com/questions/11025901/is-there-any-performance-benchmark-for-thrift-on-hbase, Thrift jest rzeczywiście bardzo szybki ... ale co z REST ? Wydaje mi się, że nie powinno być tak wielkiej różnicy ... –

Odpowiedz

5

REST dostarcza jako XML lub JSON, dzięki czemu schemat jest obecny w samych danych. Oszczędzanie nie robi tego: jest to tylko ładunek bajtów, który następnie może zostać przekształcony w postaci szeregowej względem wygenerowanej jednostki (w oparciu o definicję dysfunkcji IDL).

Tak więc bez względu na sposób kompresji danych, oszczędzanie staje się szybsze, ponieważ nie wiąże się z nim żaden schemat, przy "koszcie" polegania na innych obiektach interpretujących dane binarne.

+0

To musi wyjaśnić jakąś różnicę, ale na pewno nie wszystko? Poza tym, jeśli zmniejszę częstotliwość rejestrowania z 1000 zapytań do 100, to wyraźnie widzę, że szybko idzie przez chwilę, a potem czeka ... zasadniczo, to przyspiesza każde 200-300 żądań. –

2

Możesz spróbować tego: https://github.com/alibaba/node-hbase-client

To łączy się bezpośrednio z serwerami rejon & Heca.

+0

Wygląda całkiem nieźle! W rzeczywistości wolałbym nie używać w końcu Thrift lub REST. –

+0

Dnode? https://github.com/substack/dnode – xrDDDD