Apache Hbase คืออะไร ? Hbase คือ ฐานข้อมูลแบบ Non-relational database ตัวหนึ่งครับ เก็บข้อมูลในลักษณะของ Column family ซึ่งโดยปรกติแล้ว หากเราติดตั่้ง Hbase ได้เสร็จสิ้นแล้ว เราจะสามารถเข้าถึง Hbase่ได้โดยผ่าน Hbase Shell แต่...
หากจะเราใช้โปรแกรมในภาษาอื่นเข้ามาติดต่อ ในที่นี้ผมเลือกใช้ Happybase ซึ่งเป็น lib ของ python ซึ่งใช้ในการติดต่อไปยัง Apache Hbase โดยการติดต่อนั้น เราจะไม่สามารถติดต่อ Hbase ได้โดยตรง แต่เราจะต้องทำการติดต่อผ่านทาง Apache Thrift ซึ่งเป็น Service ตัวหนึ่งที่ิอนุญาติให้โปรแกรมที่ถูกเขียนโดยภาษาอื่นๆ สามารถติดต่อมายังตัว Apache Hbase ได้ครับ
แล้ว บทความนี้ทำอะไรบ้าง
- ติดตั้ง Apache Hbase ให้พร้อมสำหรับการใช้งาน
- ตั้งค่า Apache Hbase ให้สามารถทำงานในโหมด Presudod istributed Mode
- ติดตั้ง Apache Thrift โดยการ Complie from source
- ทดสอบ Happybase ให้ connect ไปยัง Hbase ผ่านทาง Apache Thrift
มาเริ่มกันเลยนะครับ
1. การติดตั้ง Apache Hbase
เริ่มแรก ให้เราเข้าไป Download Hbase มาจาก Mirror ก่อนกันเลย เมื่อ Download เสร็จแล้วก็ให้แตกไฟล์ไว้ที่ /usr/local/
>> % tar xzf hbase-x.y.z.tar.gz
* หมายเหตุ Hbase ต้องการ Java อย่างน้อย v1.6 ด้วย เราต้องทำการเซต JAVA_HOME ก่อน
** ผมใช้ OpenJDK1.7
export JAVA_HOME=/usr/lib/jvm/default-java export HBASE_REGIONSERVERS=/home/hduser/hbase/conf/regionservers export HBASE_MANAGES_ZK=true
สำหรับ Hbase version ต่ำกว่า 0.94 ให้แก้ไขไฟล์ /etc/hosts ด้วยครับ จากเดิม 127.0.1.1 เป็น 127.0.0.1
(ขั้นตอนนี้ ไม่มีในหนังสือที่สอน Hbase ทำเอาผมรัน Hbase ไม่ได้อยู่พักนึง)เช่น
127.0.0.1 localhost
127.0.0.1 ubuntu.ubuntu-domain ubuntu
** ถ้าหากใช้ Hbase ที่ใหม่กว่านี้ไม่ต้องแก้ครับและเพื่อความสะดวกในการทำงาน เราสามารถเพิ่ม PATH ไปได้ เพื่อให้เรียกใช้งานได้อย่างสะดวก โดยทำการแก้ไข
$vim ~/.bashrc
แล้วเพิ่มข้อความนี้ลงไป
% export HBASE_HOME=/home/hduser/hbase export PATH=$PATH:$HBASE_HOME/bin
เสร็จแล้ว เราก็มาเริ่มรัน Hbase กันเลย ซึ่งในหมวดการรันนี้ เราจะเรียกว่า standalone mode จะใช้ file local system ในการทำงาน ยังจะไม่ได้ใช้ HDFS ของ Hadoop ในการทำงาน ข้อมูลไฟล์จะถูกเก็บอยู่ใน /tmp/hbase-${USERID} การรันทำได้โดยใช้คำสั่ง
% start-hbase.sh
หากเราต้องการให้ Hbase ทำงานใน Pseudo- Distributed Mode (โหมดใช้ HDFS แต่ยังไม่กระจายไปเครื่องอื่นๆ) เราจะสามารถเข้าไปแก้ไขไฟล์
$ vim $HBASE_HOME/conf/hbase-site.xml
เราสามารถแก้ไข ให้ Hbase เก็บข้อมูลที่อื่นแทน /tmp ได้ โดยใส่ที่อยู่อื่นๆ แทน DIRECTORY ด้านล่าง
<?xml version="1.0"?> <?xml-stylesheet type="text/xsl" href="configuration.xsl"?> <configuration> <property> <name>hbase.rootdir</name> <value>hdfs://localhost:9000/hbase</value> </property> <property> <name>hbase.cluster.distributed</name> <value>true</value> </property> <property> <name>hbase.zookeeper.quorum</name> <value>localhost</value> </property> <property> <name>dfs.replication</name> <value>1</value> </property> <property> <name>hbase.zookeeper.property.clientPort</name> <value>2181</value> </property> <property> <name>hbase.zookeeper.property.dataDir</name> <value>/home/hduser/hbase/zookeeper</value> </property> </configuration>
เมื่อทำการ Config เสร็จก็จะสามารถ Run ได้ โดยใช้คำสั่ง
$ start-hbase.sh
เมื่อรันแล้วก็ลองเข้าไปดูใน log ดูว่าทำงานถูกต้องหรือไม่ด้วย และเมื่อทำงานแล้ว
เราจะสามารถตรวจสอบ Process โดยใช้ คำสั่ง jps ได้ ซึ่งหน้าตาโปรเซสจะอยู่ประมาณนี้
**
Hadoop 2.5.1
Hbase 0.98.6.1--hadoop2
**
4334 HQuorumPeer 2882 SecondaryNameNode 4867 Jps 3207 TaskTracker 2460 NameNode 4671 HRegionServer 4411 HMaster 2977 JobTracker 2668 DataNode
สำหรับเว็บ interface
http://localhost:60010 for master
http://localhost:60030 for region server
Ref: http://archanaschangale.wordpress.com/2013/08/31/installing-pseudo-distributed-hbase-on-ubuntu/
=========================================================
2. การลง Apache Thrift
ก่อนจะติดตั้ง เราก็ต้องเตรียม lib ให้พร้อมก่อนครับ เนื่องจาก Apache Thirft จะให้เรา compile ใหม่เลย เราสามารถติดตั้ง lib เพิ่มเติมได้จากข้างล่างเลยครับ
sudo apt-get install libboost-dev libboost-test-dev libboost-program-options-dev libevent-dev automake libtool flex bison pkg-config g++ libssl-dev
หากในการติดตั้งเจอ ปัญหา dependency ของ package เต็มไปหมดเหมือนที่ผมเจอ ให้ลองอัพเดทระบบดูครับ แล้วจะหายเลยทำได้โดย
$ aptitude update
$ aptitude upgrade
หลังจากนั้นก็ Download ลงมาก่อนเลยครับ แยกไฟล์ให้เรียบร้อย และเริ่มทำการติดตั้งด้วย
./configure
make
make install
เมื่อทำการติดตั้งเสร็จสิ้นแล้ว เราก็ต้องบอก thrift ว่าเราจะใช้ภาษาอะไร ถ้าใช้ python ให้เปลี่ยนที่ [lang] เป็น pythrift --gen [lang] [hbase-root]/src/main/resources/org/apache/hadoop/hbase/thrift/Hbase.thrift
หลังจากนั้น เราก็จะสามารถรัน Thrift service ได้เลย โดยใช้คำสั่ง
[hbase-root]/bin/hbase thrift start
หลังจากนั้น ผมได้ทดลองใช้่ Happybase ติดต่อไปยัง Hbase ปรากฏว่าไม่มี Error เกิดขึ้นครับ
** ในที่นี้ติดต่อโดยใช้ภาษา python นะคับ
import happybase connection = happybase.Connection('127.0.0.1')
NO ERROR เย้ๆ
ดูข้อมูลเพิ่มเติม
https://hbase.apache.org/book/quickstart.html
http://answers.oreilly.com/topic/2183-how-to-install-hadoop-hbase/
http://thrift.apache.org/docs/BuildingFromSource/
ไม่มีความคิดเห็น:
แสดงความคิดเห็น