HBase + рдереНрд░рд┐рдлреНрдЯ + PHP

рдЬрд╛рд╣рд┐рд░рд╛ рддреМрд░ рдкрд░ рдпрд╣ рдРрддрд┐рд╣рд╛рд╕рд┐рдХ рд░реВрдк рд╕реЗ рд╣реБрдЖ, рд▓реЗрдХрд┐рди HBase, рдереНрд░рд┐рдлреНрдЯ рдФрд░ рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдФрд░ рднреА рдЕрдзрд┐рдХ рд▓реЗрдЦ рд╣реИрдВ рдХрд┐ PHP рдХреНрд▓рд╛рдЗрдВрдЯ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдиреНрд╣реЗрдВ рдХреИрд╕реЗ рдЬреЛрдбрд╝рд╛ рдЬрд╛рдПред рдЖрдЗрдП рдЗрд╕ рдЕрдВрддрд░ рдХреЛ рдмрдВрдж рдХрд░реЗрдВ рдФрд░ HBase рдХреЛ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рд╕реЗ рд▓реЗрдХрд░ HBase рд╕реЗ PHP рдХреНрд▓рд╛рдЗрдВрдЯ рдкреНрд░рд╛рдЗрдорд┐рдЯрд┐рд╡ рдбреЗрдЯрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВред

рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐

рдЙрди рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдЬреЛ рдирд╣реАрдВ рдЬрд╛рдирддреЗ рдХрд┐ HBase рдФрд░ Thrift рдХреНрдпрд╛ рд╣реИрдВ, рдпрд╣рд╛рдБ рдПрдХ рд╕рдВрдХреНрд╖рд┐рдкреНрдд рд╡рд┐рд╡рд░рдг рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ:

Hbase рдПрдХ рдЦреБрд▓рд╛ рд╕реНрд░реЛрдд, рдЧреИрд░-рд╕рдВрдмрдВрдзрдкрд░рдХ, рд╡рд┐рддрд░рд┐рдд рдбреЗрдЯрд╛рдмреЗрд╕ рд╣реИ рдЬреЛ Google рдХреЗ BigTable рдХреЗ рд╕рдорд╛рди рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ рдФрд░ рдЬрд╛рд╡рд╛ рдореЗрдВ рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рд╣реИред рдЗрд╕реЗ Hadoop рдкреНрд░реЛрдЬреЗрдХреНрдЯ (Apache Software Foundation рдХрд╛ рд╣рд┐рд╕реНрд╕рд╛) рдХреЗ рд░реВрдк рдореЗрдВ рд╡рд┐рдХрд╕рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ рдФрд░ рдпрд╣ HDFS (Hadoop Distributed Filesystem) рдХреНрд▓рд╕реНрдЯрд░ рдкрд░ рдЪрд▓рддрд╛ рд╣реИ, рдЬреЛ BigTable рдХреЗ рд╕рдорд╛рди рд╕реБрд╡рд┐рдзрд╛рдПрдБ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред рдпрд╣реА рд╣реИ, рдпрд╣ рдмрдбрд╝реА рдорд╛рддреНрд░рд╛ рдореЗрдВ рд╡рд┐рд░рд▓ рдбреЗрдЯрд╛ рдХреЛ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рджреЛрд╖-рд╕рд╣рд┐рд╖реНрдгреБ рддрд░реАрдХрд╛ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред рд╡рд┐рдХрд┐рдкреАрдбрд┐рдпрд╛ рдкрд░ HBase рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрдзрд┐рдХ рдЬрд╛рдирдХрд╛рд░реАред

рдереНрд░рд┐рдлреНрдЯ рд╡рд┐рднрд┐рдиреНрди рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рднрд╛рд╖рд╛рдУрдВ рдореЗрдВ рд╕реЗрд╡рд╛рдУрдВ рдХрд╛ рд╡рд░реНрдгрди рдХрд░рдиреЗ рдФрд░ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рдЗрдВрдЯрд░рдлреЗрд╕ рдХрд╛ рд╡рд░реНрдгрди (рдШреЛрд╖рд┐рдд) рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рднрд╛рд╖рд╛ рд╣реИред рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ RPC рдврд╛рдВрдЪреЗ рдХреЗ рд░реВрдк рдореЗрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдЗрд╕реЗ рдлреЗрд╕рдмреБрдХ рджреНрд╡рд╛рд░рд╛ рд╡рд┐рдХрд╕рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рд╡рд┐рдХрд┐рдкреАрдбрд┐рдпрд╛ рдкрд░ рдереНрд░рд┐рдлреНрдЯ рдкрд░ рдЕрдзрд┐рдХ рдЬрд╛рдирдХрд╛рд░реАред

рд╕реНрдерд╛рдкрдирд╛

рддреЛ, рдЪрд▓реЛ рдПрдХ рд╣реА рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдВред рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдереНрд░рд┐рдлреНрдЯ рдбрд╛рд▓реЗрдВред рд╣рдо рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рд╕рд╛рдЗрдЯ рд╕реЗ рд▓рд┐рдП рдЧрдП рд╕реНрд░реЛрддреЛрдВ рд╕реЗ рд╕рдм рдХреБрдЫ рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдВрдЧреЗред рддреЛ рдереНрд░рд┐рдлреНрдЯ:
$ 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 ..

рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдкреВрд░рд╛ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдЖрдкрдХреЛ рдпрд╣ рджреЗрдЦрдирд╛ рдЪрд╛рд╣рд┐рдП рдХрд┐ рдЖрдкрдХрд╛ рдереНрд░рд┐рдлреНрдЯ рдХрд┐рди рднрд╛рд╖рд╛рдУрдВ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░реЗрдЧрд╛:
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

рдмрдирд╛рдиреЗ рдФрд░ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдереНрд░рд┐рдлреНрдЯ рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ рдФрд░ рдЙрдкрдпреЛрдЧ рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░ рд╣реЛрдЧрд╛ред рд╣рдо 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


Hbase рдФрд░ рдкрд░реАрдХреНрд╖рдг рдХреЗ рд▓рд┐рдП рдереНрд░рд┐рдлреНрдЯ рдЬрдирд░реЗрд╢рди

Hbase рдХреЗ рд▓рд┐рдП рдереНрд░рд┐рдлреНрдЯ рдкреАрдврд╝реА рдмрд╣реБрдд рд╕рд░рд▓ рд╣реИ, рдмрд╕ рдЗрд╕реЗ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдирд┐рдореНрди рдХрдорд╛рдВрдб рдЪрд▓рд╛рдПрдБ:
$ thrift --gen php hbase-0.90.3/src/main/resources/org/apache/hadoop/hbase/thrift/Hbase.thrift

рдЗрд╕ рдХрдорд╛рдВрдб рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдЖрдк рдЬреАрди-php рдлрд╝реЛрд▓реНрдбрд░ рджреЗрдЦреЗрдВрдЧреЗ рдЬрд┐рд╕рдореЗрдВ HBase рдХреЗ рд▓рд┐рдП рдЙрддреНрдкрдиреНрди PHP рдХреНрд▓рд╛рдЗрдВрдЯ рдЙрддреНрдкрдиреНрди рд╣реЛрдВрдЧреЗред рдереНрд░рд┐рдлреНрдЯ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдм рдЗрди рд▓рд┐рдкрд┐рдпреЛрдВ рдХреЛ рдкреАрдПрдЪрдкреА рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреЗ рд╕рд╛рде рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рд▓реЗ рдЬрд╛рдирд╛ рд╣реЛрдЧрд╛ред рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреЛ php рдХреЗ рд╕рд╛рде рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдХреЙрдкреА рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╣рдо рдорд╛рдирддреЗ рд╣реИрдВ рдХрд┐ рдпрд╣ / usr / lib / php рдлрд╝реЛрд▓реНрдбрд░ рд╣реИ рдФрд░ рд╣рдореЗрдВ рдЗрд╕рдореЗрдВ рдкреИрдХреЗрдЬ рдлрд╝реЛрд▓реНрдбрд░ рдмрдирд╛рдиреЗ рдФрд░ рдЬреАрди-рдкреАрдПрдЪрдкреА рдлрд╝реЛрд▓реНрдбрд░ рдХреА рд╕рд╛рдордЧреНрд░реА рдХреЛ рд╡рд╣рд╛рдВ рд░рдЦрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рд╕рдм рдХреБрдЫ рд╕рд░рд▓ рд╣реИред

рдЕрдм рдкрд░реАрдХреНрд╖рдг рдбреЗрдЯрд╛ рдХреЛ HBase рдореЗрдВ рдЬреЛрдбрд╝рддреЗ рд╣реИрдВ, рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдкрд╣рд▓реЗ 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' рдиреЗ рдкреЛрд╕реНрдЯ рдФрд░ рдЗрдореЗрдЬ рдХреЙрд▓рдо рдХреЗ рджреЛ рдкрд░рд┐рд╡рд╛рд░реЛрдВ рдХреЗ рд╕рд╛рде рдПрдХ рдмреНрд▓реЙрдЧрдкреЛрд╕реНрдЯ рдЯреЗрдмрд▓ рдмрдирд╛рдпрд╛ред рдЗрд╕рдХреЗ рдмрд╛рдж, put 'blogposts', 'post1', 'post:title', '...' рдбрд╛рд▓реЗрдВ, рд╣рдордиреЗ рдорд╛рдиреЛрдВ рдХреЗ рдПрдХ рд╕реЗрдЯ рдХреЗ рд╕рд╛рде рдПрдХ рдкрдВрдХреНрддрд┐ рдмрдирд╛рдИ, рдФрд░ рдЕрдВрдд рдореЗрдВ рд╣рдордиреЗ рддрд╛рд▓рд┐рдХрд╛ рдореЗрдВ рдбреЗрдЯрд╛ рдХреА рдЙрдкрд▓рдмреНрдзрддрд╛ рдХреА рдЬрд╛рдВрдЪ рдХреА рдФрд░ рд╢реЗрд▓ рдХреЛ рдЫреЛрдбрд╝ рджрд┐рдпрд╛ред

рддреЛ, рд╕рдм рдХреБрдЫ рддреИрдпрд╛рд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░ рд╣реИ рд╕рд░реНрд╡рд░ рдФрд░ PHP рдореЗрдВ рдПрдХ рдбреЗрдореЛ рдХреНрд▓рд╛рдЗрдВрдЯ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдПред рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рд╣рдо рдереНрд░рд┐рдлреНрдЯ рд╕рд░реНрд╡рд░ рд▓реЙрдиреНрдЪ рдХрд░рддреЗ рд╣реИрдВ, рдЬрд┐рд╕рдХреЗ рдмрд┐рдирд╛ рд╣рдо рдХрд╛рдо рдирд╣реАрдВ рдХрд░ рдкрд╛рдПрдВрдЧреЗ:
$ ./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 рдХреЗ рд╕рд╛рде рд╢реБрд░реВ рдХрд░рдиреЗ рдХреА рдЬрд░реВрд░рдд рд╣реИред

рдкреНрд░рдпреБрдХреНрдд рд╕рд╛рд╣рд┐рддреНрдп рдХреА рд╕реВрдЪреА:

Source: https://habr.com/ru/post/In123560/


All Articles