วันเสาร์ที่ 22 มีนาคม พ.ศ. 2557

การติดตั้ง Apache Hbase และ Apache Thrift

บทความนี้มุ่งเน้นไปที่การติดตั้ง Apache Hbase และ Apache Thrift นะครับ

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] เป็น py

thrift --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/


ไม่มีความคิดเห็น:

แสดงความคิดเห็น