Запустите его
Вам не нужно запускать Thrift-сервер на своем локальном компьютере, он может работать где угодно, но обычно лучше использовать RegionServers*. Затем в коде вы подключаетесь к этому серверу.
Пример Python:
transport = TSocket.TSocket("random-regionserver", 9090)
Где вы, очевидно, замените random-regionserver
одним из серверов, на которых вы используете сервер Thrift.
Этот сервер получает свою конфигурацию из обычных мест. Если вы используете CDH, вы найдете конфигурацию в /etc/hbase/conf/hbase-site.xml
, и вам нужно будет добавить свойство hbase.zookeeper.quorum
:
<property>
<name>hbase.zookeeper.quorum</name>
<value>list of your zookeeper servers</value>
</property>
Когда вы запускаете Thrift-сервер из загруженного дистрибутива Apache, все происходит аналогично, за исключением того, что hbase-site.xml
, вероятно, будет находиться в другом каталоге.
Масштабирование
Один из простых способов масштабирования прямо сейчас — сохранить список всех региональных серверов в вашем клиенте Thrift и выбрать один из них случайным образом при подключении. Или вы создаете несколько подключений и каждый раз используете случайное. Некоторые языковые привязки (например, PHP) имеют TSocketPool
, где вы можете передать все свои серверы. В противном случае вам придется выполнить некоторую ручную работу.
При использовании этого метода все операции чтения и записи должны быть более или менее распределены между серверами Thrift в вашем кластере. Каждая операция чтения или записи, поступающая на сервер Thrift, будет по-прежнему преобразовываться в вызов API на основе Java с сервера Thrift, который затем открывает сетевое соединение с соответствующими серверами регионов для выполнения запрошенного действия.
Это означает, что вы не получите такой же высокой производительности, как при использовании Java API. Может помочь, если вы сами кешируете местоположения регионов и обращаетесь к соответствующему серверу Thrift, но даже в этом случае будет сделан дополнительный вызов Java API, даже если он окажется на локальном сервере. HBASE-4460 поможет в этом сценарии, но нет em> включены в CDH3u4 или CDH4.
* Существует проблема HBASE-4460, в которую фактически встроен сервер Thrift. на региональном сервере.
person
Lars Francke
schedule
06.06.2012