ขั้นตอนการติดตั้ง HBase บน Hadoop อย่างง่าย

HBase เป็น Database บน Hadoop [1] จากบทความ ขั้นตอนการติดตั้ง Hadoop Cluster อย่างง่าย จะได้ HDFS อยู่ที่ hdfs://192.168.1.101:9000 แล้ว ก็จะสามารถใช้ HBase บน Hadoop HDFS ได้ ขั้นตอนการติดตั้ง โคลนเครื่องต้นฉบับ แล้วตั้ง ip address ให้เรียบร้อย เช่น 192.168.1.121 ติดตั้ง HBase (mama shell) (mama shell) cd ~ wget http://www-us.apache.org/dist/hbase/stable/hbase-1.2.3-bin.tar.gz tar -zxvf hbase-1.2.3-bin.tar.gz sudo mv hbase-1.2.3 /usr/local/hbase sudo chown -R hduser.hadoop /usr/local/hbase sudo mkdir /usr/local/zookeeper sudo chown -R hduser.hadoop /usr/local/zookeeper แก้ไขไฟล์ /usr/local/hbase/conf/hbase-site.xml (hduser shell) <configuration> <property> <name>hbase.cluster.distributed</name> <value>true</value> </property> <property> <name>hbase.rootdir</name> <value>hdfs://192.168.1.101:9000/hbase</value> </property> <property> <name>hbase.zookeeper.property.dataDir</name> <value>/usr/local/zookeeper</value> </property> </configuration> ขั้นตอนการ Start HBase (hduser shell) /usr/local/hbase/bin/start-hbase.sh ดูผลการทำงาน จาก Hadoop HDFS ว่าสร้าง /hbase แล้ว http://192.168.1.101:50070/explorer.html#/hbase ใช้งานผ่าน Shell ได้จากคำสั่ง (hduser shell) /usr/local/hbase/bin/hbase shell ขั้นตอนการ Stop HBase (hduser shell) /usr/local/hbase/bin/stop-hbase.sh   References: [1] https://hbase.apache.org/

Read More »

ขั้นตอนการติดตั้ง Hadoop Cluster อย่างง่าย

Hadoop เป็น Framework สำหรับสร้างการประมวลผลแบบกระจาย (Distributed Processing) กับข้อมูลขนาดใหญ่ (Large Data Sets) สามารถเริ่มต้นจากทดสอบบนเครื่องคอมพิวเตอร์เครื่องเดียว ไปจนเป็นระบบ Cluster ได้[1] อธิบายง่ายๆได้ว่า Hadoop ประกอบด้วย ส่วนประมวลผลแบบกระจายเรียกว่า YARN (หรือ MapReduce) และ ส่วนเก็บข้อมูลแบบกระจายเรียกว่า HDFS (Hadoop Distributed File System) สำหรับการสร้าง Hadoop Cluster ในบทความนี้ใช้ Hadoop version 2.7.2 บน Ubuntu 16.04 โดย Cluster จะประกอบด้วย 1 Master และ N Slaves โดยจะใช้วิธีการสร้างเครื่องต้นฉบับ แล้ว Clone ไปเป็น Master/Slave ต่อไป 1.ขั้นตอนการสร้างตันฉบับสำหรับการ Clone 1.1. ติดตั้ง Ubuntu 16.04 ตามปรกติ สร้าง User คนแรกชื่อ mama 1.2. สร้างกลุ่มชื่อ hadoop sudo addgroup hadoop 1.3. สร้างผู้ใช้ชื่อ hduser อยู่ในกลุ่ม hadoop sudo adduser hduser –ingroup hadoop 1.4. ติดตั้ง Java sudo apt-get install default-jre openjdk-8-jdk-headless 1.5. ติดตั้ง hadoop wget http://www-us.apache.org/dist/hadoop/common/hadoop-2.7.2/hadoop-2.7.2.tar.gz tar -zxvf hadoop-2.7.2.tar.gz sudo mv hadoop-2.7.2 /usr/local/hadoop sudo mkdir /usr/local/hadoop/etc/hadoop/tmp sudo chown -R hduser.hadoop /usr/local/hadoop 1.6. เพิ่มตัวแปรใน /etc/environment HADOOP_HOME=/usr/local/hadoop HADOOP_PREFIX=/usr/local/hadoop JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64 1.7. แก้ไขค่าใน .bashrc su hduser; cd ~ แล้วแก้ไข .bashrc โดยเพิ่มบรรทัดต่อไปนี้ ท้ายไฟล์ export HADOOP_HOME=/usr/local/hadoop export HADOOP_PREFIX=/usr/local/hadoop export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64 export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin 2.ขั้นตอนการสร้าง Master (namenode) 2.1. Clone เครื่องต้นฉบับมา แล้วแก้ไข ip address, /etc/hosts, /etc/hostname ให้เหมาะสม โดยเครื่องนี้ต้อง Static IP เช่น 192.168.1.101 2.2. แก้ไข /usr/local/hadoop/etc/hadoop/core-site.xml ดังนี้ <configuration> <property> <name>hadoop.tmp.dir</name> <value>/usr/local/hadoop/tmp</value> </property> <property> <name>fs.defaultFS</name> <value>hdfs://192.168.107.116:9000</value> </property> </configuration> 2.3. แก้ไข /usr/local/hadoop/etc/hadoop/hdfs-site.xml <configuration> <property> <name>dfs.replication</name> <value>3</value> </property> <property> <name>dfs.namenode.datanode.registration.ip-hostname-check</name> <value>false</value> </property> </configuration> 2.4. แก้ไข /usr/local/hadoop/etc/hadoop/slaves โดยใส่ IP ของเครื่องที่จะเป็น Slave หรือ datanode ลงไป เช่น 192.168.1.102 ถึง 192.168.1.111 เป็นต้น 192.168.1.102 192.168.1.103 192.168.1.104 192.168.1.105 192.168.1.106 192.168.1.107 192.168.1.108 192.168.1.109 192.168.1.110 192.168.1.111  

Read More »

การแปลงข้อมูลในรูปแบบ JSON เป็นคลาส JAVA

ในการแลกเปลี่ยนข้อมูลระหว่าง application กับ service ที่ติดต่อกับฐานข้อมูลบน server โดยส่วนใหญ่ก็จะแลกเปลี่ยนข้อมูลโดยใช้รูปแบบ JSON ซึ่งในส่วนของแอพพลิเคชัน ต้องทำคลาสในการรับข้อมูลพื่อให้สามารถรับข้อมูลและนำไปใช้ได้สะดวกขึ้น ตัวอย่างข้อมูล JSON เช่น [                    {                              “point”: “40.266044,-74.718479”,                              “homeTeam”:”Lawrence Library”,                              “awayTeam”:”LUGip”,                              “markerImage”:”images/red.png”,                              “information”: “Linux users group meets second Wednesday of each month.”,                              “fixture”:”Wednesday 7pm”,                              “capacity”:””,                              “previousScore”:””                    },                    {                              “point”:”40.211600,-74.695702″,                              “homeTeam”:”Hamilton Library”,                              “awayTeam”:”LUGip HW SIG”,                              “markerImage”:”images/white.png”,                              “information”: “Linux users can meet the first Tuesday of the month to work out harward and configuration issues.”,                              “fixture”:”Tuesday 7pm”,                              “capacity”:””,                              “tv”:””                    },                    {                              “point”:”40.294535,-74.682012″,                              “homeTeam”:”Applebees”,                              “awayTeam”:”After LUPip Mtg Spot”,                              “markerImage”:”images/newcastle.png”,                              “information”: “Some of us go there after the main LUGip meeting, drink brews, and talk.”,                              “fixture”:”Wednesday whenever”,                              “capacity”:”2 to 4 pints”,                              “tv”:””                    } ] และตัวอย่างคลาส JAVA ที่เราต้องการสร้างเอาไว้รับข้อมูล ดังนี้ค่ะ ———————————-com.example.Example.java———————————– package com.example; import javax.annotation.Generated; @Generated(“org.jsonschema2pojo”) public class Example { private String point; private String homeTeam; private String awayTeam; private String markerImage; private String information; private String fixture; private String capacity; private String previousScore; private String tv;   public String getPoint() { return point; } public void setPoint(String point) { this.point = point; } public String getHomeTeam() { return homeTeam; }   public void setHomeTeam(String homeTeam) {

Read More »

การพัฒนา API อย่างมืออาชีพ และทำไมต้อง RESTful Service

API คืออะไร? API ย่อมาจาก Application Programming Interface คือการพัฒนาโปรแกรมสำหรับเป็นส่วนติดต่อเซอร์วิสของแอพพลิเคชั่น หรือโมดูลต่างๆ เพื่อให้คนภายนอกมาเรียกใช้งาน หรือกล่าวอย่างง่ายๆ ก็คือการเขียนโปรแกรมเพื่อให้บริการสำหรับให้คนอื่นมาเรียกใช้งาน ซึ่งแนวคิดเรื่องการสร้าง API เพื่อการใช้งานก็มีมาอย่างยาวนานแล้ว ยกตัวอย่างเช่นตั้งแต่ที่มีการสร้างระบบปฎิบัติการ (OS) ก็จะมีการติดต่อ API ของไดร์เวอร์อุปกรณ์ฮาร์แวร์ต่างๆ ของเครื่องคอมพิวเตอร์เพื่อเรียกใช้งานอุปกรณ์นั้นๆ ตามคำสั่งของนักพัฒนา

Read More »

แก้ไข wordpress post แล้ว update ไม่ได้ แอดมินต้องแก้ไขอย่างไร

หลังจากย้าย WordPress site ไปลง ubuntu 16.04.1 ก็ได้เตรียมติดตั้งโปรแกรมต่าง ๆ แต่แล้วเมื่อลองจะแก้ไขบล็อก กลับทำไม่ได้ ขึ้นข้อความว่า “The sysadmin.psu.ac.th page isn’t working sysadmin.psu.ac.th is currently unable to handle this request. HTTP ERROR 500” เกิดอะไรขึ้นหล่ะ แล้วเราจะต้องทำอย่างไร ค้นหาเจอเว็บนี้ ที่บอกเราว่า ให้ลองเปิด DEBUG https://wordpress.org/support/topic/http-error-500-internal-server-error-whole-blog-is-down “So to understand where the reason of 500 error is I suggest go to wp-config.php in the root of your website and add there two lines: define(‘WP_DEBUG’, true); @ini_set(‘display_errors’, 1); After that you can see exactly place which linked with 500 error. After fixing I suggest return it how it was by default (only one line) define(‘WP_DEBUG’, false);” เมื่อใช้คำสั่งตรวจสอบ error.log ครั้งแรก ไม่เห็นอะไรเพิ่มเติม แต่พบ error 404 ของ plugin ที่ชื่อ WP Like Button ก็ลองปิด plugin นี้ดูเราจึงจะพบ error ก็เห็น error ต่าง ๆ ได้จากคำสั่งข้างล่างนี้ tail -f /var/log/apache2/error.log Fatal error: Uncaught Error: Class ‘DomDocument’ not found in /var/www/wordpress/wp-content/plugins/google-sitemap-plugin/google-sitemap-plugin.php:144 ค้นหาต่อว่าทำไมจึงขาด DomDocument ก็เจอเว็บนี้ https://blog.namran.net/2009/03/10/php-fatal-error-class-domdocument-not-found-in-blabla/ แนะนำว่า “the solution turn out to be yum install php-xml” ตรวจสอบดู เออนะ ไม่มี php-xml จริง ๆ ด้วย ด้วยคำสั่งนี้ dpkg -l | grep php-xml dpkg -l | grep php7.0-xml   ทีนี้เราก็ติดตั้ง php-xml ด้วยคำสั่ง sudo apt install php-xml จะได้ libxslt1.1 php-xml php7.0-xml ทำให้สามารถใช้งานได้ปรกติแล้ว ซึ่งในกระบวนการ post และ ppdate post นั้น ได้แก้ไข post ให้แล้ว เพียงแต่ว่ามันไปทำต่อที่ google-sitemap-plugin ไม่สำเร็จจึงแสดงเป็น error ออกมา ขอบคุณเพื่อน ๆ ที่ช่วยกันแก้ไขเรื่องนี้ด้วยกันด้วยครับ

Read More »