(495) 925-0049, ITShop интернет-магазин 229-0436, Учебный Центр 925-0049
  Главная страница Карта сайта Контакты
Поиск
Вход
Регистрация
Рассылки сайта
 
 
 
 
 

PHP секреты

Источник: habrahabr

HBase + Thrift + PHP
 
Видимо так сложилось исторически, но на хабре не очень много статей о HBase, Thrift и тем более о том как их связать для работы с PHP клиентом. Давайте же ликвидируем этот пробел и пройдемся от инсталяции HBase до получения PHP клиентом примитивных данных из HBase.

Вступление

Для тех кто не в курсе что такое HBase и Thrift, то вот краткое описание:

Hbase - это open source, не реляционная, распределенная база данных созданая по аналогии с BigTable от Google и написаная на Java. Она разработана как часть проекта Hadoop (входящего в состав Apache Software Foundation) и запускается на кластере HDFS (Hadoop Distributed Filesystem), предоставляя схожие с BigTable возможности. То есть, она обеспечивает отказоустойчивый способ хранения больших объемов разреженных данных. Более подробная иформация о HBase в Википедии.

Thrift - это язык описания (декларирования) интерфейсов, которые используются для описания и создания сервисов на различных языках программирования. Он используется как RPC фреймворк и был разработан Facebook. Более подробная иформация о Thrift в Википедии.

Установка

Итак, давай те же все установим. Для начала поставим Thrift. Все устанавливать будем из исходников взятых с официального сайта. Итак Thrift:
$ wget apache.strygunov.com//thrift/0.6.1/thrift-0.6.1.tar.gz
$ tar xfz thrift-0.6.1.tar.gz
$ cd thrift-0.6.1/

$ ./configure
$ make
$ make install
$ cd ..

После выполнения конфигурации вы должны увидеть какие языки у вас будут поддерживаться Thrift-ом:
Building C++ Library ......... : no
Building C (GLib) Library .... : no
Building Java Library ........ : no
Building C# Library .......... : no
Building Python Library ...... : yes
Building Ruby Library ........ : no
Building Haskell Library ..... : no
Building Perl Library ........ : no
Building PHP Library ......... : yes
Building Erlang Library ...... : yes

После выполнения make и make install, Thrift будет установлен и готов к использованию. Переходим к HBase. Тут все гораздо проще, все что нам надо это скачать дистрибутив, разархивировать, подправить конфиг и HBase готов к тестовому запуску.
$ wget apache.infocom.ua//hbase/hbase-0.90.3/hbase-0.90.3.tar.gz
$ tar xfz hbase-0.90.3.tar.gz

Теперь надо отредактировать конфиг и добавить путь к папке в которой будет храниться база:
$ vim hbase-0.90.3/conf/hbase-site.xml

<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
<property>
<name>hbase.rootdir</name>
<value>file:///path/to/folder/for/hbase</value>
</property>
</configuration>

После этого можно запускать HBase:
$ ./hbase-0.90.3/bin/start-hbase.sh

Генерация Thrift для Hbase и тестирование

Генерация Thrift для Hbase очень проста, для этого достаточно выполнить следующую команду:
$ thrift --gen php hbase-0.90.3/src/main/resources/org/apache/hadoop/hbase/thrift/Hbase.thrift

После выполнения этой команды у вас появится папка gen-php в которой будут сгенерированные клиенты на PHP для HBase. Теперь эти скрипты надо перенести в папку с PHP библиотекой для работы с Thrift. После выполнения make install, библиотека должна была быть автоматически скопированна в папку с php, для примера будем считать что это папка /usr/lib/php и в ней необходимо создать папку packages и поместить туда содержимое папки gen-php. Как видите все просто. 

Теперь давайте внесем тестовые данные в HBase, для этого сначала запустим shell HBase-а:

$ ./hbase-0.90.3/bin/hbase shell
HBase Shell; enter 'help<RETURN>' for list of supported commands.
Type "exit<RETURN>" to leave the HBase Shell
Version: 0.90.0, r1001068, Fri Sep 24 13:55:42 PDT 2010

hbase(main):001:0> create 'blogposts', 'post', 'image'
0 row(s) in 1.2200 seconds

hbase(main):002:0> put 'blogposts', 'post1', 'post:title', 'Hello World'
hbase(main):003:0> put 'blogposts', 'post1', 'post:author', 'The Author'
hbase(main):004:0> put 'blogposts', 'post1', 'post:body', 'This is a blog post'
hbase(main):005:0> put 'blogposts', 'post1', 'image:header', 'image1.jpg'
hbase(main):006:0> put 'blogposts', 'post1', 'image:bodyimage', 'image2.jpg'

hbase(main):007:0> get 'blogposts', 'post1'

COLUMN CELL
image:bodyimage timestamp=1229953133260, value=image2.jpg
image:header timestamp=1229953110419, value=image1.jpg
post:author timestamp=1229953071910, value=The Author
post:body timestamp=1229953072029, value=This is a blog post
post:title timestamp=1229953071791, value=Hello World

hbase(main):008:0> exit

Итак что же мы только что сделали? Во первых create 'blogposts', 'post', 'image'создали таблицу blogposts с двумя семействами колонок post и image. Далее put 'blogposts', 'post1', 'post:title', '...' мы создали одну строку с набором значений, и в конце проверили наличие данных в таблице и вышли из shell-а.

Итак все готово для запуска thrift сервера и создания демо клиента на PHP. Первым делом запускаем thrift сервер, без которого мы не сможем работать:
$ ./hbase-0.90.3/bin/hbase thrift start

Отлично, теперь осталось создать маленький тестовый клиент на PHP:
<?php

// указываем путь к каталогу с Thrift библиотекой
$GLOBALS['THRIFT_ROOT'] = '/usr/lib/php';

require_once( $GLOBALS['THRIFT_ROOT'].'/Thrift.php' );

require_once( $GLOBALS['THRIFT_ROOT'].'/transport/TSocket.php' );
require_once( $GLOBALS['THRIFT_ROOT'].'/transport/TBufferedTransport.php' );
require_once( $GLOBALS['THRIFT_ROOT'].'/protocol/TBinaryProtocol.php' );

// HBase клиент
require_once( $GLOBALS['THRIFT_ROOT'].'/packages/Hbase/Hbase.php' );

// подключаемся к thrift серверу
$socket = new TSocket( 'localhost', 9090 );
$socket->setSendTimeout( 10000 );
$socket->setRecvTimeout( 20000 );
$transport = new TBufferedTransport( $socket );
$protocol = new TBinaryProtocol( $transport );
$client = new HbaseClient( $protocol );

$transport->open();

// и получаем данные из HBase
print_r($client->getTableNames());

print_r($client->getColumnDescriptors( 'blogposts' ));

print_r($client->getRow( 'blogposts', 'post1' ));

$transport->close();

?>

Вот и все что нужно для начала работы с PHP и HBase.

Список используемой литературы:

Ссылки по теме


 Распечатать »
 Правила публикации »
  Написать редактору 
 Рекомендовать » Дата публикации: 12.07.2011 
 

Магазин программного обеспечения   WWW.ITSHOP.RU
DevExpress / ASP.NET Subscription
Oracle Database Standard Edition 2 Named User Plus License
JIRA Software Commercial (Cloud) Standard 10 Users
IBM Domino Enterprise Server Processor Value Unit (PVU) License + SW Subscription & Support 12 Months
Quest Software. Toad for Oracle Development Suite
 
Другие предложения...
 
Курсы обучения   WWW.ITSHOP.RU
 
Другие предложения...
 
Магазин сертификационных экзаменов   WWW.ITSHOP.RU
 
Другие предложения...
 
3D Принтеры | 3D Печать   WWW.ITSHOP.RU
 
Другие предложения...
 
Новости по теме
 
Рассылки Subscribe.ru
Информационные технологии: CASE, RAD, ERP, OLAP
Программирование на Microsoft Access
CASE-технологии
OS Linux для начинающих. Новости + статьи + обзоры + ссылки
Реестр Windows. Секреты работы на компьютере
СУБД Oracle "с нуля"
Вопросы и ответы по MS SQL Server
 
Статьи по теме
 
Новинки каталога Download
 
Исходники
 
Документация
 
 



    
rambler's top100 Rambler's Top100