利用python訪問(wèn)Hbase(Thrift模塊安裝與測(cè)試)-創(chuàng)新互聯(lián)

hadoop環(huán)境介紹:

站在用戶的角度思考問(wèn)題,與客戶深入溝通,找到榆社網(wǎng)站設(shè)計(jì)與榆社網(wǎng)站推廣的解決方案,憑借多年的經(jīng)驗(yàn),讓設(shè)計(jì)與互聯(lián)網(wǎng)技術(shù)結(jié)合,創(chuàng)造個(gè)性化、用戶體驗(yàn)好的作品,建站類型包括:成都做網(wǎng)站、網(wǎng)站設(shè)計(jì)、企業(yè)官網(wǎng)、英文網(wǎng)站、手機(jī)端網(wǎng)站、網(wǎng)站推廣、域名注冊(cè)、虛擬空間、企業(yè)郵箱。業(yè)務(wù)覆蓋榆社地區(qū)。

master服務(wù):node1

slave服務(wù)器:node2,node3,node4

mysql服務(wù)器:node29

Thrift安裝在node1服務(wù)器上!

相關(guān)軟件版本:

hadoop版本:hadoop-0.20.2

sqoop版本:sqoop-1.2.0-CDH3B4

java版本:jdk1.7.0_67

mysql版本:5.1.65

Thrift版本:thrift-0.9.0

thrift安裝鏈接:http://thrift.apache.org/download/

python版本:2.7.3

ps:python2.5版本使用thrift有問(wèn)題

一:測(cè)試前的準(zhǔn)備工作

1)首先把mysql數(shù)據(jù)庫(kù)中數(shù)據(jù)加載到hbase中:

mysql數(shù)據(jù)如下:

利用python訪問(wèn)Hbase(Thrift模塊安裝與測(cè)試)

將mysql的數(shù)據(jù)導(dǎo)入hbase的命令格式為:

sqoop import --connect jdbc:mysql://mysqlserver_IP/databaseName --username --password password --table datatable --hbase-create-table --hbase-table hbase_tablename --column-family col_fam_name --hbase-row-key key_col_name

說(shuō)明:databaseName 和datatable 是mysql的數(shù)據(jù)庫(kù)和表名,hbase_tablename是要導(dǎo)成hbase的表名,key_col_name可以指定datatable中哪一列作 為hbase新表的rowkey,col_fam_name是除rowkey之外的所有列的列族名

2)在node1上加載mysql數(shù)據(jù)(node29)到hbase中:

sqoop import --connect jdbc:mysql://172.16.41.29/sqoop --username sqoop --password routon --table students --hbase-create-table --hbase-table students --column-family stuinfo --hbase-row-key id

在hbase中驗(yàn)證是否加載成功:

利用python訪問(wèn)Hbase(Thrift模塊安裝與測(cè)試)

二 Thrift軟件安裝

python版本:2.7.3

步驟為:

1) 安裝python2.7.3

說(shuō)明:python2.7.3與thrift結(jié)合沒問(wèn)題,python2.5版本好像不行!

生成的Hbase.py文件中的語(yǔ)法rhel5 自帶的python2.4 不支持

tar fvxj Python-2.7.3.tar.bz2

./configure --prefix=/usr/local/python2.7

make && make install

python2.7.3路徑為:

/usr/local/python2.7/bin/python

修改默認(rèn)的python版本為2.7

把python2.7設(shè)置為環(huán)境變量,系統(tǒng)默認(rèn)python版本為2.4

rm -rf /usr/bin/python

ln -s /usr/local/python2.7/bin/python /usr/bin/python

[root@node1 thrift-0.9.0]# python -V

Python 2.7.3

2)安裝thrift

tar fvxz thrift-0.9.0.tar.gz

cd thrift-0.9.0

./configure

make && make install

thrift 0.9.0

Building C++ Library ......... : no

Building C (GLib) Library .... : yes

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 ......... : no

Building Erlang Library ...... : no

Building Go Library .......... : no

Building D Library ........... : no

Python Library:

  Using Python .............. : /usr/bin/python

可以看到thrift支持很多語(yǔ)言,根據(jù)目前需求,支持python就可以了!

查看Thrift版本:

[root@node1 thrift-0.9.0]# thrift -version

Thrift version 0.9.0

3)讓thrift支持hbase

執(zhí)行以下命令:

thrift --gen py /usr/local/hbase-0.90.5/src/main/resources/org/apache/hadoop/hbase/thrift/Hbase.thrift

會(huì)在當(dāng)前目前下創(chuàng)建一個(gè)目錄,目錄名稱為:

[hadoop@node1 ~]$ ll

total 7056

-rw-rw-r-- 1 hadoop hadoop   3045 Oct 14 13:55 access_log2.txt

-rw-r--r-- 1 hadoop hadoop 7118627 Feb  1  2012 access_log.txt

-rw-rw-r-- 1 hadoop hadoop   3500 Oct 22 10:17 derby.log

drwxrwxr-x 3 hadoop hadoop   4096 Oct 24 15:28 gen-py

-rw-rw-r-- 1 hadoop hadoop   3551 Oct 13 11:21 pig_1413170429087.log

gen-py目錄結(jié)構(gòu)如下:

[hadoop@node1 ~]$ tree gen-py/

gen-py/

|-- __init__.py

`-- hbase

  |-- Hbase-remote

  |-- Hbase.py

  |-- __init__.py

  |-- constants.py

  `-- ttypes.py

1 directory, 6 files

4)把gen-py目錄復(fù)制到python相關(guān)目錄中:

cp -r gen-py/hbase/ /usr/local/python2.7/lib/python2.7/site-packages/.

5)讓python可以import thrift模塊:

 [root@node1 ~]# ln -s /usr/lib/python2.7/site-packages/thrift* /usr/local/python2.7/lib/python2.7/site-packages/.

[root@node1 ~]# ls -l /usr/local/python2.7/lib/python2.7/site-packages/

total 12

drwxr-xr-x 2 root root 4096 Oct 24 15:32 hbase

-rw-r--r-- 1 root root  119 Oct 24 11:30 README

lrwxrwxrwx 1 root root  39 Oct 24 15:50 thrift -> /usr/lib/python2.7/site-packages/thrift

lrwxrwxrwx 1 root root  60 Oct 24 15:50 thrift-0.9.0-py2.7.egg-info -> /usr/lib/python2.7/site-packages/thrift-0.9.0-py2.7.egg-info

6)啟動(dòng)thrift服務(wù):

hbase thrift -p 9090 start

7)在node1上編寫python腳本,查看hbase中有哪些表:

#! /usr/bin/env python #coding=utf-8 import sys #Hbase.thrift生成的py文件放在這里 sys.path.append('/usr/local/lib/python2.7/site-packages/hbase') from thrift import Thrift from thrift.transport import TSocket from thrift.transport import TTransport from thrift.protocol import TBinaryProtocol from hbase import Hbase #如ColumnDescriptor 等在hbase.ttypes中定義 from hbase.ttypes import * # Make socket #此處可以修改地址和端口 transport = TSocket.TSocket('172.16.41.26', 9090) # Buffering is critical. Raw sockets are very slow # 還可以用TFramedTransport,也是高效傳輸方式 transport = TTransport.TBufferedTransport(transport) # Wrap in a protocol #傳輸協(xié)議和傳輸過(guò)程是分離的,可以支持多協(xié)議 protocol = TBinaryProtocol.TBinaryProtocol(transport) #客戶端代表一個(gè)用戶 client = Hbase.Client(protocol) #打開連接 transport.open() #打印表名 print(client.getTableNames())

執(zhí)行腳本:

利用python訪問(wèn)Hbase(Thrift模塊安裝與測(cè)試)

到此,通過(guò)thrift插件,python就可以和hbase進(jìn)行通信!

另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)cdcxhl.cn,海內(nèi)外云服務(wù)器15元起步,三天無(wú)理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國(guó)服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡(jiǎn)單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢(shì),專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場(chǎng)景需求。

網(wǎng)站題目:利用python訪問(wèn)Hbase(Thrift模塊安裝與測(cè)試)-創(chuàng)新互聯(lián)
網(wǎng)站路徑:http://muchs.cn/article46/dphoeg.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供做網(wǎng)站手機(jī)網(wǎng)站建設(shè)、品牌網(wǎng)站設(shè)計(jì)、定制網(wǎng)站、Google網(wǎng)站策劃

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

成都app開發(fā)公司