环境配置
操作系统 centos 5.8 hadoop版本cloudera cdh3u3 hbase版本hbase-0.90.4-cdh3u3 php版本5.2
1. 下载并编译thrift
# wget http://ftp.tc.edu.tw/pub/Apache/thrift/0.8.0/thrift-0.8.0.tar.gz
安装所需的依赖包
# yum install automake libtool flex bison pkgconfig gcc-c++ boost-devel libevent-devel zlib-devel python-devel ruby-devel php php-devel
# tar zxvf thrift-0.8.0.tar.gz
# cd thrift-0.8.0
# ./configure --prefix=/home/thrift --with-php-config=/usr/bin/php-config
# make && make install
2 生成php和hbase的接口文件:
# cd /home/thrift/
# bin/thrift --gen php $HBASE_HOME/src/main/resources/org/apache/hadoop/hbase/thrift/Hbase.thrift
# cd gen-php/Hbase
# ls
Hbase.php Hbase_types.php
3. 把PHP客户端需要的包及刚才生成的接口文件复制出来供php程序调用:
# mkdir -p /var/www/html/hbasethrift/libs (/var/www/html为apache的web主目录)
# cp -a /home/soft/thrift-0.8.0/lib/php/src /var/www/html/hbasethrift/libs
# mkdir -p /var/www/html/hbasethrift/libs/packages
# cp -a /home/thrift/gen-php/Hbase /var/www/html/hbasethrift/libs/packages
4. 启动hbase thrift server,测试php连接hbase
# ./bin/hbase-daemon.sh start thrift
hbase thrift 默认监听端口为9090
测试php连接与操作hbase代码
# vi hbasethrift.php
<?php $GLOBALS['THRIFT_ROOT'] = '/home/www/html/hbasethrift/libs'; 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' ); require_once( $GLOBALS['THRIFT_ROOT'].'/packages/Hbase/Hbase.php' ); $socket = new TSocket( 'localhost', 9090 ); $socket->setSendTimeout( 10000 ); // Ten seconds (too long for production, but this is just a demo ;) $socket->setRecvTimeout( 20000 ); // Twenty seconds $transport = new TBufferedTransport( $socket ); $protocol = new TBinaryProtocol( $transport ); $client = new HbaseClient( $protocol ); $transport->open(); echo nl2br( "listing tables...\n" ); $tables = $client->getTableNames(); sort( $tables ); foreach ( $tables as $name ) { echo nl2br( " found: {$name}\n" ); } $columns = array( new ColumnDescriptor( array( 'name' => 'entry:', 'maxVersions' => 10 ) ), new ColumnDescriptor( array( 'name' => 'unused:' ) ) ); $t = "table1"; echo( "creating table: {$t}\n" ); try { $client->createTable( $t, $columns ); } catch ( AlreadyExists $ae ) { echo( "WARN: {$ae->message}\n" ); } $t = "test"; echo( "column families in {$t}:\n" ); $descriptors = $client->getColumnDescriptors( $t ); asort( $descriptors ); foreach ( $descriptors as $col ) { echo( " column: {$col->name}, maxVer: {$col->maxVersions}\n" ); } $t = "table1"; echo( "column families in {$t}:\n" ); $descriptors = $client->getColumnDescriptors( $t ); asort( $descriptors ); foreach ( $descriptors as $col ) { echo( " column: {$col->name}, maxVer: {$col->maxVersions}\n" ); } $t = "table1"; $row = "row_name"; $valid = "foobar-\xE7\x94\x9F\xE3\x83\x93"; $mutations = array( new Mutation( array( 'column' => 'entry:foo', 'value' => $valid ) ), ); $client->mutateRow( $t, $row, $mutations ); $table_name = "table1"; $row_name = 'row_name'; $fam_col_name = 'entry:foo'; $arr = $client->get($table_name, $row_name , $fam_col_name); // $arr = array foreach ( $arr as $k=>$v ) { // $k = TCell echo ("value = {$v->value} , <br> "); echo ("timestamp = {$v->timestamp} <br>"); } $table_name = "table1"; $row_name = "row_name"; $arr = $client->getRow($table_name, $row_name); // $client->getRow return a array foreach ( $arr as $k=>$TRowResult ) { // $k = 0 ; non-use // $TRowResult = TRowResult var_dump($TRowResult); } $transport->close(); ?>
通过浏览器访问http://localhost/hbasethrift/hbasethrift.php,如果显示hbase中的表名与新建表table1 ,说明连接成功。
hbase thrift api 参考http://hbase.apache.org/apidocs/org/apache/hadoop/hbase/thrift/doc-files/index.html
转载
相关推荐
本文将详细介绍如何在Laravel项目中集成Thrift与HBase,以实现对HBase数据库的操作。 首先,我们需要在Laravel项目中安装Thrift库。这通常通过Composer完成,Laravel的依赖管理工具。运行以下命令将Thrift添加到...
标题“php-hbase-thrift”指的是使用PHP语言通过Thrift框架来访问HBase数据库的实践。这个主题涉及三个主要技术:PHP、HBase和Thrift。 HBase是Apache Hadoop生态系统中的一个分布式、版本化的NoSQL数据库,它设计...
接着,可以使用该客户端执行各种HBase操作,例如创建表、插入数据、扫描表以及查询特定行或列。 4. **查询HBase**:在Python中,查询HBase通常涉及以下步骤: - **连接HBase**:使用Thrift客户端连接到运行Thrift...
用户可以通过PHP编写的应用程序来查询或操作存储在HBase中的大数据,或者通过Hive进行复杂的数据分析,然后在Web界面展示结果。Thrift在这里起到了桥梁的作用,使得原本不支持直接通信的PHP和Hadoop生态系统能够无缝...
标题中的“php通过thrift获取hadoop资源”指的是在PHP编程环境中,利用Thrift框架来访问和操作Hadoop分布式文件系统(HDFS)或者Hadoop的相关服务。Thrift是一种跨语言的服务开发工具,由Facebook开源,它允许用一种...
通过Thrift,开发者可以在Python、PHP、C++等语言中方便地操作HBase。 4. **Phoenix**:Phoenix是Apache的一个开源项目,它提供了一个SQL层,用于在HBase上执行SQL查询。Phoenix将SQL语句转换为HBase的Scan操作,...
- **Thrift Gateway**: 支持多种语言(如C++、PHP、Python等),便于异构系统的集成。 - **REST Gateway**: 支持HTTP RESTful API,允许任何支持HTTP协议的客户端访问HBase。 - **Pig和Hive**: 提供高级语言支持,...
Thrift提供了编译器,可以将这些.thrift文件转换为多种编程语言的源代码,如C++、Java、Python、PHP、Go等。生成的代码包括了客户端和服务器端的实现,使得开发者只需关注业务逻辑,而无需处理底层的网络通信细节。 ...
3. **Thrift Gateway**:通过Thrift序列化技术,支持多种语言如C++、PHP、Python等,适用于跨平台系统的实时数据访问。 4. **REST Gateway**:支持HTTP RESTful风格API访问HBase,方便不同语言环境下的集成。 5. **...
Thrift Gateway通过Thrift协议支持多种语言,如C++、PHP和Python,适用于异构系统。REST Gateway则提供了HTTP API,使得任何支持RESTful API的语言都能访问HBase。Pig和Hive则为数据分析提供了高级语言支持,Pig使用...
对于不同的操作系统,安装方法略有差异,例如在Ubuntu/Debian上可以通过`apt-get install`命令安装,在CentOS/Fedora上使用`yum install`或`dnf install`。 4. **配置和编译** 进入解压后的Thrift源代码目录,执行...
为了支持非Java语言的交互,HBase提供了Thrift接口,允许用C++、PHP、Python等语言操作HBase。然而,使用Thrift接口时,需要注意一些特定的问题和细节,以确保数据的正确性和系统的高效运行。 首先,字节的存放顺序...
7. **API支持**:HBase提供了Java API,以及通过Thrift和REST接口的多种语言支持,包括Python、Ruby、PHP等,方便不同平台的应用程序与HBase交互。 在解压“hbase-1.2.6-bin.tar.gz”后,你会得到HBase的二进制文件...
3. Thrift Gateway:利用Thrift序列化技术,支持C++、PHP、Python等多种语言,适合其他异构系统在线访问HBase表数据 4. REST Gateway:支持REST风格的Http API访问HBase,解除了语言限制 5. Pig:可以使用Pig Latin...
- **Thrift Gateway:**支持多种编程语言,如C++、PHP、Python等,增强了跨平台的兼容性。 - **REST Gateway:**通过HTTP协议提供RESTful API,实现无语言限制的远程访问。 - **Pig与Hive:**提供高级语言支持,简化...
* Thrift Gateway:利用 Thrift 序列化技术,支持 C++、PHP、Python 等多种语言,适合其他异构系统在线访问 HBase 表数据。 * REST Gateway:支持 REST 风格的 Http API 访问 HBase,解除了语言限制。 * Pig:可以...
3. **Thrift Gateway**:通过Thrift序列化技术,支持C++、PHP、Python等多种语言,便于异构系统在线访问HBase数据。 4. **REST Gateway**:支持RESTful HTTP API,解除语言限制,允许任何支持HTTP的客户端访问HBase...
Hbase通过thrift这个跨语言的RPC框架提供多语言的调用。 Hbase有两套thrift接口(thrift1和thrift2),但是它们并不兼容。根据官方文档,thrift1很可能被抛弃,本文以thrift2整合为例。 1、访问官网...
- Thrift Gateway允许非Java客户端通过Thrift协议与HBase交互。 - 支持多种语言,如Python、PHP等。 - **REST Gateway**: - REST Gateway为HBase提供了一个RESTful接口。 - 适合构建Web应用程序和服务。 ####...