Spark #01: Standalone Installation

Apache Spark : เป็นระบบ Data Processing ในระดับ Large-Scale ซึ่งทำงานได้เร็วกว่า Apache Hadoop MapReduce 100 เท่าบน Memory และ 10 เท่าบน Disk สามารถพัฒนาโปรแกรมเพื่อทำงานบน Spark ได้หลายภาษา ทั้ง Java, Scala, Python และ R อีกทั้งยังมี Library ทำงานกับ SQL, Machine Learning และ Graph Parallel Computation ในบทความนี้ จะกล่าวถึงเฉพาะวิธีการติดตั้ง Apache Spark เบื้องต้น บน Ubuntu 16.04 จำนวน 1 Machine ก่อน ไปที่ http://spark.apache.org/downloads.html เลือก Release, Package ที่ต้องการ แล้วเลือก Copy Link จาก Download Link มาได้เลย ที่ Ubuntu Server ใช้คำสั่งต่อไปนี้ ติดตั้ง Java และ Download Spark มาไว้บนเครื่อง sudo apt-get install default-jre openjdk-8-jdk-headless cat <<EOF >> .bashrc export SPARK_HOME=/home/mama/spark export PATH=\$PATH:\$SPARK_HOME/bin EOF wget http://d3kbcqa49mib13.cloudfront.net/spark-2.1.0-bin-hadoop2.7.tgz tar -zxvf spark-2.1.0-bin-hadoop2.7.tgz ; ln -s spark-2.1.0-bin-hadoop2.7 spark cd spark แล้วทำการ Start Spark Master Server ด้วยคำสั่ง sbin/start-master.sh จากนั้น สามารถเรียกดู Web UI ได้ที่ port 8080 (Default) และต่อไป เครื่อง Worker หรือ เครื่องที่จะมาเข้า Cluster จะติดต่อเครื่องนี้ผ่าน port 7077 (Default) สามารถใช้งาน Spark Shell ซึ่ง จะเป็นภาษา Scala แบบ Interactive ด้วยคำสั่ง bin/spark-shell สามารถดู Jobs ที่ทำงานได้ผ่านทาง Web UI ที่ port 4040 (Default) ประมาณนี้ก่อน ในบทความต่อไปจะเป็นการสร้าง Spark Cluster Reference: http://spark.apache.org/

Read More »

Cassandra #02 Scale-Out to Multi-nodes

ต่อจาก Cassandra #01 เริ่มต้นใช้งาน ความสามารถที่สำคัญของ Cassandra คือสามารถทำการ Scale Out หรือขยายความสามารถของระบบได้โดยการเพิ่มเครื่องคอมพิวเตอร์ในระดับ Commodity Hardware [1] เข้าไปใน Cluster ในบทความนี้ จะแสดงวิธีการสร้าง Cassandra Cluster ที่ประกอบไปด้วย 3 Node ชื่อ cassandra01, cassandra02 และ cassandra03 โดยมีชื่อ Cluster ว่า PSUCluster และกำหนดให้ cassandra01 เป็น Seed Node (ทำหน้าที่เป็นผู้ประสานงานสำหรับ Node ใหม่ๆเข้าร่วม Cluster) ขั้นตอนการขยายระบบแบบ Scale Out ไปยังหลายๆ Node แต่ละ Node ทำดังนี้ ติดตั้ง Cassandra ตามขั้นตอนใน Cassandra #01 เริ่มต้นใช้งาน แก้ไขไฟล์ /etc/cassandra/cassandra.yaml ดังนี้ # กำหนดชื่อ Cluster ที่ต้องการ cluster_name: ‘PSUCluster’ # กำหนด Seed Node ซึ่งมีไว้ให้ node ใหม่ประกาศตัวเองเพื่อเข้าร่วม Cluster # ควรมีไม่เกิน 3 Node ต่อ Data Center # ในที่นี้ กำหนดไว้เพียงตัวเดียว seed_provider: parameters: – seeds: “192.168.107.111” # กำหนด listen_address เป็นค่าว่าง listen_address: # กำหนด endpoint_snitch เป็น GossipingPropertyFileSnitch # เพื่อให้สามารถมี Cluster แบบข้าง Data Center ได้ endpoint_snitch: GossipingPropertyFileSnitch ในการเริ่มใช้งานครั้งแรก ให้ลบข้อมูลใน /var/lib/cassandra/data/system ออกก่อน sudo rm -rf /var/lib/cassandra/data/system/* ในการใช้ Endpoint Snitch แบบ GossipingPropertyFileSnitch ต้องลบไฟล์ cassandra-topology.properties ออกไปก่อน sudo rm /etc/cassandra/cassandra-topology.properties จากนั้นก็ Start Cassandra Service sudo service cassandra restart วิธีดูสถานะของระบบ sudo watch nodetool status ในตอนแรกจะเป็นแบบนี้ เมื่อ cassandra02 เข้ามา และเมื่อครบ 3 Node วิธี Debug ว่าเกิดอะไรขึ้น sudo tail -f /var/log/cassandra/debug.log   Reference [1] http://docs.datastax.com/en/landing_page/doc/landing_page/planning/planningHardware.html [2] http://docs.datastax.com/en/cassandra/3.0/cassandra/architecture/archIntro.html [3] https://docs.datastax.com/en/cassandra/3.0/cassandra/initialize/initSingleDS.html

Read More »

กว่าจะมา… C# 7.0

สวัสดีครับ บทความนี้เขียนเพื่อนำเสนอ Features ใหม่ บนภาษา C# 7.0 พร้อมกับเปรียบเทียบกับเวอร์ชั่นก่อนหน้าครับ ซึ่งเพิ่งจะ Release ออกมาเมื่อวันอังคารที่ 7 มีนาคมที่ผ่านมานี่เอง และได้เป็นส่วนหนึ่งของ Visual Studio 2017 ไปเรียบร้อยแล้วครับ (มีให้ดาวน์โหลดใน Microsoft Imagine แล้วครับ ซึ่งขณะเขียนบทความนี้เป็นเวอร์ชั่น Release Candidate (RC)) ขั้นตอนการติดตั้ง ไม่ขอเอ่ยถึงนะครับ เชื่อว่าทุกคนติดตั้งเป็น ส่วนสำคัญจะเป็นการเลือก Component สำหรับติดตั้งครับ เลือกตามที่ต้องการ ซึ่งใน Microsoft Imagine จะเป็น Professional Edition ครับ เพียงพอสำหรับการใช้งาน   ตัวอย่าง Source Code สามารถ ดาวน์โหลดได้ที่นี่ ครับ   เริ่มกันเลยครับ Out Variable ก่อนหน้าตัวแปร out variable จะต้องทำการประกาศค่า (pre-declare) ก่อนที่จะนำไปใช้ แต่ด้วย C# 7.0 สามารถ declare ค่าพร้อมกับรับค่าจากส่วน out argument ได้ทันที ตัวอย่างการนำไปใช้งาน กับ Decision if…else… ซึ่งหากเราต้องการ discards ค่าตัวแปรที่รับมา ก็สามารถทำได้ ด้วยการใส่ “_” Pattern Matching เป็นการตรวจสอบว่า element ที่มีอยู่นั้นมีรูปร่าง (shape) หรือค่า (value) ตรงกับที่ต้องการหรือไม่ ดังตัวอย่าง Is expression ตัวอย่างการนำไปใช้งานร่วมกับการ decision if…else… ร่วมกับ method Try… Switch expression สามารถ switch โดยใช้ type ได้ (ไม่เฉพาะ primitive types) ซึ่งสามารถนำ patterns มาใช้ในส่วนของ case และสามารถเพิ่มเงื่อนไข (condition) ได้ ดังตัวอย่าง   Tuples คือการ return ค่าจาก method มากกว่า 1 ค่า (ในเวอร์ชั่นก่อนหน้าของ c# ก็สามารถทำได้ โดยใช้ out parameters หรือ System.Tuple<…> หรือสร้าง transport type ด้วยตัวเอง (custom-built) หรือให้ return ค่าเป็น anonymous type ผ่าน dynamic return type) ซึ่งในเวอร์ชั่นใหม่นี้ ไม่จำเป็นต้องทำเช่นนั้นอีกแล้ว ดังตัวอย่าง (กรณี target framework ต่ำกว่า 4.6.2 จะไม่สามารถใช้ได้ ให้เลือก target framework ของ project เป็น 4.6.2 หรือไม่ก็ค้นหา “System.ValueTuple” จาก Nuget Package ครับ การนำไปใช้งาน หรือเรียกจาก method อื่น สามารถรับค่า tuple ผ่านประเภทตัวแปร var โดยสามารถเข้าถึงแต่ละ element แบบ individually ได้เลย   ซึ่งถ้าสังเกตตอน coding พิมพ์ตัวแปร names จะขึ้น Intellisense Item… ให้เลือก หรือจะตั้งชื่อให้กับ tuple เพื่อความสะดวกในการเรียกใช้งาน ดังตัวอย่างนี้ครับ และแน่นอนว่า Intellisense ก็จะมีชื่อให้เลือก แทนที่จะเป็น Item1, Item2, Item3 ตามตัวอย่างก่อนหน้าครับ

Read More »

การแต่งภาพให้มีมิติด้วย PowerPoint

วันนี้มานำเสนอการแต่งภาพง่าย ๆ โดยไม่ต้องใช้โปรแกรมตกแต่งภาพ แค่มีโปรแกรมนำเสนอผลงานอย่าง Power Point ก็สามารถทำได้ไม่ยากเลย โดยวันนี้ขอเสนอการแต่งภาพให้มีมิติ ไปดูกันเลยจร้า 1.เปิดโปรแกรม Power point จากนั้นไปที่เมนู Insert คลิก Pictures เลือกภาพที่ต้องการ 2.คลิกที่ภาพที่ Insert เข้ามา จากนั้นกด ctrl ค้างไว้ แล้วลากภาพออกมา จะได้เพิ่มขึ้นมาอีกภาพนึง 3.เอาภาพพื้นหลังออก คลิกที่ภาพที่ต้องการเอาพื้นหลังออก ไปที่เมนู Format คลิก Remove Background แล้วปรับขนาดให้ได้ตามต้องการ 4.จากนั้นที่เมนู Format คลิก Keep Changes ภาพพื้นหลังก็จะหายไป 5.ภาพตั้งต้นเราทำการใส่กรอบเข้าไป ไปที่เมนู Format คลิก Metal Frame แล้ว Crop ตัดเป็นรูปร่าง ที่เมนู Format คลิก Crop to Shape .ในส่วนของการทำรูป Pop out ขึ้นมาด้านบน เลือก Trapizoid จากนั้นคลิก Crop ลดขนาดของภาพลงมาเหลือสักครึ่งหนึ่ง ให้คาบเกี่ยวกับส่วนของดอกบัวที่จะแสดงออกมาสักครึ่งนึง จากนั้นกดปุ่ม Crop จากนั้นนำดอกบัวภาพที่นำพื้นหลังออกมาประกบลงในภาพที่1 ก็จะได้รูปดอกไม้ที่ลอยเด่นขึ้นมา 9.กรณีที่ 2 ให้รูปดอกบัวปรากฏเด่นมาด้านข้าง ที่เมนู Format คลิก Crop to Shape เลือก Flowchart Manual Input จากนั้นคลิก Crop 10.เลื่อนขนาด และเลื่อนด้านข้างเข้ามา เพื่อให้ดอกบัวปรากฏขึ้นมาทั้งด้านบนและด้านข้าง จากนั้นคลิก Crop 11.จากนั้นนำดอกบัวภาพที่นำพื้นหลังออกมาประกบลงในภาพที่1  

Read More »

NETPIE : เริ่มต้นใช้งาน

NETPIE เป็น Paas (Platform as a Service) ทำหน้าที่เป็นสื่อกลาง ที่ทำให้สิ่งต่างๆเชื่อมโยงกันได้ผ่านอินเตอร์เน็ต (IoT) พัฒนาภายใต้การสนับสนุนของ Nectec ใช้งานได้ 100 Credit ฟรี (ประมาณว่า สร้างได้ 100 ช่องทาง) สำหรับแต่ละ Account เอาเป็นว่า “ฟรี” อธิบายแบบเร็วๆ คร่าวๆ อย่างไม่เป็นทางการคือ ถ้าที่บ้านเรามีพวก Censor ซึ่งวัดค่าต่างๆ เช่น อุณหภูมิ แล้วมีความสามารถในการเกาะ WiFi ได้ โดยที่บ้านใช้อินเตอร์เน็ตแบบ ADSL ปัญหาคือ เราจะเข้าไปเอาข้อมูลเจ้า Censor นี้ได้อย่างไร ? ในเมื่อ ADSL ก็ไม่ได้ Fix IP หรือ จะใช้ Dynamic DNS (DDNS) ก็มีค่าใช้จ่าย เป็นต้น หรือ บางคนก็อาจจะคิดถึงวิธีไป Host เครื่องคอมพิวเตอร์ไว้บน Internet หรือจะไปสร้างบน Cloud แล้วอาจจะสร้าง Web Application เพื่อให้ Censor ไปเรียกแล้วบันทึกค่าลงในฐานข้อมูล อะไรทำนองนั้น ที่กล่าวมา ก็ต้องมีค่าใช้จ่าย หรือ ต้องลงแรงในการสร้างตัวกลางเหล่านั้น NETPIE ก็ทำหน้าที่ เป็น Broker หรือตัวกลาง โดย Censor ทำหน้าที่ติดต่อผ่าน Internet มาแปะค่าเอาไว้ใน NETPIE แล้วจึงค่อยนำไปใช้งานต่อได้ เพียงแค่ สมัครใช้งาน แล้วก็ไปสร้างช่องทางให้ Censor มา Update ข้อมูล ดังสโลแกนของ NETPIE ว่า NETPIE … where things chat. เริ่มกันเลย วิธีการสมัคร ไปที่ https://netpie.io/sign_up แล้วก็กรอกข้อมูล หลังจากนั้น NETPIE ก็จะส่ง SMS แจ้ง One Time Password มาให้ เมื่อ Login ครั้งแรก NETPIE จะให้ทำการตั้งรหัสผ่านใหม่ ต่อไป สร้าง Application ไปที่เมนู Resources > Applications ต่อไปเป็นสร้าง Application (ในที่นี้คือ kx01web) คลิกปุ่ม + ตั้งชื่อ แล้วกดปุ่ม Create ใน Application ที่สร้าง คลิกเครื่องหมาย + ใส่ชื่ออุปกรณ์ (ในที่นี้คือ web01) เลือกชนิดเป็น Session Key แล้วคลิก Create ต่อไปเป็นการเอา REST API Auth ไปใช้งาน (ในที่นี้คือ 6JhowZyvcRsyHUg:EclJZt2C0lKXXXXXXXXX) โดยคลิกที่ Application KEY ที่สร้างขึ้น แล้วคลิกรูป ลูกตา หลังบรรทัด REST API Auth แล้ว Copy ค่าไปใช้งาน (ซึ่งจะเป็นคู่ของ Key:Secret) ในที่นี้ จะลองให้ เครื่องคอมพิวเตอร์ซึ่งเป็น Ubuntu เก็บข้อมูล memory แล้วส่งไปเก็บไว้บน NETPIE ผ่าน cURL รูปแบบประมาณนี้ curl -X PUT “https://api.netpie.io/topic/kx01web/web01” -d “123456” -u 6JhowZyvcRsyHUg:EclJZt2C0lKXXXXXXXXX โดยในตัวอย่างนี้ Application ID คือ kx0web Censor คือ web01 ค่าที่จะส่งไปคือ 123456 และ REST API Auth คือ 6JhowZyvcRsyHUg:EclJZt2C0lKXXXXXXXXX หากผลการทำงานออกมาเป็น

Read More »