環(huán)境配置
成都創(chuàng)新互聯(lián)是網(wǎng)站建設(shè)專家,致力于互聯(lián)網(wǎng)品牌建設(shè)與網(wǎng)絡(luò)營銷,專業(yè)領(lǐng)域包括成都網(wǎng)站建設(shè)、成都網(wǎng)站設(shè)計(jì)、電商網(wǎng)站制作開發(fā)、微信平臺小程序開發(fā)、微信營銷、系統(tǒng)平臺開發(fā),與其他網(wǎng)站設(shè)計(jì)及系統(tǒng)開發(fā)公司不同,我們的整合解決方案結(jié)合了恒基網(wǎng)絡(luò)品牌建設(shè)經(jīng)驗(yàn)和互聯(lián)網(wǎng)整合營銷的理念,并將策略和執(zhí)行緊密結(jié)合,且不斷評估并優(yōu)化我們的方案,為客戶提供全方位的互聯(lián)網(wǎng)品牌整合方案!操作系統(tǒng) centos 5.8 hadoop版本cloudera cdh4u3 hbase版本hbase-0.90.4-cdh4u3 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客戶端需要的包及剛才生成的接口文件復(fù)制出來供php程序調(diào)用:
# 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 默認(rèn)監(jiān)聽端口為9090
測試php連接與操作hbase代碼
# vi hbasethrift.php
- socketnew
- >
- >
- transportnew
- protocolnew
- clientnew
- >
- tables>
- columnsarray
- >
- >
- >
- t"table1"
- >
- >
- t"test"
- descriptors>
- >>
- t"table1"
- descriptors>
- >>
- t"table1"
- row"row_name"
- valid"foobar-\xE7\x94\x9F\xE3\x83\x93"
- mutationsarray
- >
- >
- // 多記錄批量提交(200提交一次時測試小記錄大概在5000/s左右): $rows = array('timestamp'=>$timestamp, 'columns'=>array('txt:col1'=>$col1, 'txt:col2'=>$col2, 'txt:col3'=>$col3)); $records = array(rowkey=>$rows,...); $batchrecord = array(); foreach ($records as $rowkey => $rows) { $timestamp = $rows['timestamp']; $columns = $rows['columns']; // 生成一條記錄 $record = array(); foreach($columns as $column => $value) { $col = new Mutation(array('column'=>$column, 'value'=>$value)); array_push($record, $col); } // 加入記錄數(shù)組 $batchTmp = new BatchMutation(array('row'=>$rowkey, 'mutations'=>$record)); array_push($batchrecord, $batchTmp); } $ret = $hbase->mutateRows('test', $batchrecord);
- >
- table_name"table1"
- row_name'row_name'
- fam_col_name'entry:foo'
- arr>
- arrarray
- k>
- kTCell
- value>
- timestamp>
- table_name"table1"
- row_name"row_name"
- arr>
- >
- k>
- k0
- TRowResultTRowResult
- table_name'zTest'
- startRow"9-9-20120627-"
- stopRow"9-9-20120627_"
- columnsArray
- result>
- record>
- record
- row>
- column>
- echo("$family_column={$Tcell->value}
");- echo("timestamp is $Tcell->timestamp");
- >
- ?>
通過瀏覽器訪問http://localhost/hbasethrift/hbasethrift.php,如果顯示hbase中的表名與新建表table1 ,說明連接成功。
hbase thrift api 參考http://hbase.apache.org/apidocs/org/apache/hadoop/hbase/thrift/doc-files/index.html
參考http://www.banping.com/2011/07/08/hbase-thrift-php/
另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價比高”等特點(diǎn)與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場景需求。