(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
SAP Crystal Reports 2008 INTL WIN NUL License
SAP Crystal Reports XI R2 Dev 2006 INTL WIN NUL License (Version 11)
IBM DOMINO COLLABORATION EXPRESS AUTHORIZED USER ANNUAL SW SUBSCRIPTION & SUPPORT RENEWAL
go1984 Enterprise
Panda Gold Protection - ESD версия - на 1 устройство - (лицензия на 1 год)
 
Другие предложения...
 
Курсы обучения   WWW.ITSHOP.RU
 
Другие предложения...
 
Магазин сертификационных экзаменов   WWW.ITSHOP.RU
 
Другие предложения...
 
3D Принтеры | 3D Печать   WWW.ITSHOP.RU
 
Другие предложения...
 
Новости по теме
 
Рассылки Subscribe.ru
Информационные технологии: CASE, RAD, ERP, OLAP
Программирование на Microsoft Access
CASE-технологии
OS Linux для начинающих. Новости + статьи + обзоры + ссылки
СУБД Oracle "с нуля"
eManual - электронные книги и техническая документация
Мир OLAP и Business Intelligence: новости, статьи, обзоры
 
Статьи по теме
 
Новинки каталога Download
 
Исходники
 
Документация
 
Обсуждения в форумах
Пишу программы на заказ для студентов (231)
Пишу для студентов на с, с++, паскаль в средах ms visual studio, qt, builder, borland c, delphi....
 
Пишу программы на заказ (4)
Пишу программы на заказ. Цена за программу от 400 до 1000 рублей
 
Пишу программы на заказ профессионально (3199)
Пишу программы на заказ на языках Pascal (численные методы, списки, деревья, прерывания) под...
 
Windows 10 загружен процессор (2)
Добрый день! На рабочем ПК Windows 10, компьютер тормозит, в диспетчере задач выдает что диск...
 
Ищу программиста для написания программы (50)
Ищу программиста ,владеющего Вижуал Бэйсик и программированием в Экселе, для написания...
 
 
 



    
rambler's top100 Rambler's Top100