Я использую Node.js Thrift API для подключения к Hbase. Все работало замечательно, пока я не модернизировал CDH 4.6 до CDH 5. После обновления я возродил API бережливости для Node.js с этим сценарием:Hbase Thrift в CDH 5
thrift --gen js:node /opt/cloudera/parcels/CDH-5.0.0-1.cdh5.0.0.p0.47/lib/hbase/include/thrift/hbase2.thrift
После замены оригинального Node.js скрипта с вновь созданным сценарием, всеми перестал работать.
Вы можете просмотреть новый сценарий и основные методы в демо, что я пытаюсь запустить на https://github.com/lgrcyanny/Node-HBase-Thrift2
Когда я запускаю метод «получить», он возвращает «Внутренняя ошибка обработки GET».
Когда я запускаю метод «put», он возвращает «Недопустимое имя метода:« put ».
Кажется, что новый Thrift API полностью несовместим? Я что-то пропустил?
Выяснил это. По умолчанию Cloudera Manager 5 запускает бережливый сервер с 'org.apache.hadoop.hbase.thrift.ThriftServer start --port 9090 -threadpool --bind 0.0.0.0 --framed', который является пакетом бережливости 1. Я отключил автоматический перезапуск ThriftServer, затем вручную начал ThriftServer с Hbase thrift2 start -f. –
У меня была та же проблема, решение заключалось в том, чтобы начать thrift2 с -threadpool –