• Ambari #08 ปรับแต่ง pyspark ให้สามารถใช้งาน spark.ml ได้ ด้วย conda package management


    เราสามารถใช้งาน Spark ในด้าน Machine Learning ด้วย pyspark แต่ปัญหาอยู่ที่ว่า python ที่ติดตั้งบน Ubuntu 14.04 นั้น ไม่มี package ที่จำเป็นต้องใช้ ได้แก่ numpy, scipy, scikit-learn, matplotlib ซึ่งขั้นตอนการติดตั้ง ก็จะยุ่งยาก เพราะต้อง compile code เองด้วย แต่ปัจจุบัน มีเครื่องมือที่เรียกว่า “conda” ทำหน้าที่ติดตั้ง package ที่ต้องการได้สะดวก ในที่นี้ จะเลือกใช้ python 2.7 และ จะติดตั้งลงไปใน /opt/conda ขั้นตอนการติดตั้ง conda ไปเลือก setup script จาก https://conda.io/miniconda.html ในการนี้ ขอให้ทำในสิทธิ์ของ root sudo su cd Download script…

    >> Read More <<

  • Ambari #07 เปรียบเทียบความเร็วของการ Query ระหว่าง MySQL กับ Hive


    จากบทความก่อนหน้า Ambari #05 การดึงข้อมูลเข้าจาก MySQL เข้าสู่ Hive ด้วย Sqoop ได้นำเข้าข้อมูล Mail Log จาก MySQL ซึ่งมีขนาด 27 GB มีข้อมูลประมาณ 12 ล้าน Record ต่อไปจะเปรียบเทียบ การ Query ข้อมูลจาก  Hive ซึ่งทำงานอยู่บน Hadoop Cluster กับ MySQL Server Spec MySQL Server: 1 Node x CPU 40 Core x RAM 8 GB Hive: 7 Data Node x CPU 4 Core x RAM 4…

    >> Read More <<

  • Ambari #06 การใช้งาน Zeppelin เพื่อเรียกข้อมูลจาก MySQL


    ขั้นตอนการปรับแต่งให้ Zeppelin เชื่อมต่อกับ  MySQL ในที่นี้ จะเชื่อมต่อไปยัง MySQL Server: ที่ your.mysql.server โดยมี Username/Password เป็น root/123456 และจะใช้ Database ชื่อ employees Download https://dev.mysql.com/downloads/connector/j/ จากนั้นให้ Unzip จะได้ไฟล์ mysql-connector-java-5.1.44-bin.jar (Version อาจจะแตกต่างกัน) แล้วนำไปไว้ใน /usr/hdp/current/spark2-client/jars *** ของทุก Nodes *** จาก Ambari Web UI เลือก Zeppelin Notebook > Quick Links > Zeppelin UI ที่ Zeppelin UI ให้ Login ด้วย admin/admin แล้วคลิก Admin >…

    >> Read More <<

  • Ambari #05 การดึงข้อมูลเข้าจาก MySQL เข้าสู่ Hive ด้วย Sqoop


    Apache Hive เป็นระบบ Data Warehouse ซึ่งสร้างอยู่บน Hadoop ใช้สำหรับการวิเคราะห์ข้อมูล โดยจุดเด่นคือการใช้คำสั่งภาษา SQL ในการเรียกข้อมูล ทั้งที่อยู่ในรูปแบบของ Database และไฟล์บน Hadoop ได้ เหมาะสำหรับการเก็บข้อมูลขนาดใหญ่มากๆ เช่น การเก็บข้อมูลที่ Rotate ออกจากฐานข้อมูลหลักอย่าง MySQL ก็นำมาเก็บไว้ใน MySQL เพื่อใช้วิเคราะห์ต่อไป ในการดึงข้อมูลจาก MySQL จะแบ่งเป็น 2 ส่วน คือ Full Backup คือการนำข้อมูลทั้งหมดจาก MySQL มาเก็บไว้ใน Apache Hive Incremental Backup คือการดึงเฉพาะข้อมูลที่เพิ่มขึ้นมาเก็บไว้ใน Apache Hive แต่ในบทความนี้ จะแนะนำการทำแบบ Incremental Backup ซึ่งในครั้งแรกจะทำ Full Backup และครั้งต่อๆไป จะทำ Incremental Backup เลย…

    >> Read More <<

  • การลบเมลล์ใน PSU Webmail


    เคยเจอปัญหาว่า… มีคนทั้งนอกและในมอ. ส่งเมลล์เช้า @psu.ac.th แต่ไม่ได้รับเมลล์ (ปกติเช็คเมลล์ผ่าน google) เลยลองเข้า https://webmail.psu.ac.th ดูเพื่อที่จะเข้าไปลบเมลล์ เพราะระบบแจ้งว่าพื้นที่เมลล์เต็มแล้ว ก็ทำการลบ(ตามรูป) แต่ก็ไม่เป็นผล เหมือนว่าเมลล์ยังไม่ได้ถูกลบ และพื้นที่เมลล์ก็ยังคงเต็มอยู่เหมือนเดิม มาดูวิธีการลบเมลล์ในกล่อง Inbox กันครับ 1. select all 2. click ปุ่ม Delete 3. แล้วคลิกปุ่ม Expunge อีกครั้ง เมลล์จะถูกลบเป็นหน้าๆ ไป ก็ทำอย่างนั้นไปเรื่อยๆ จนกว่าจะหมด 4. Sign Out แล้วทำการ Sign in ใหม่อีกครั้ง 5. พื้นที่เก็บเมลล์ (Quota Usage) เหลือเยอะขึ้น   หวังว่าจะเป็นประโยชน์กับใครหลายๆคนหรือผู้ที่ประสบปัญหาเดียวกันนะครับ ^^ *** อย่าลืมหมั่นตรวจสอบ และลบเมลล์ออกบ้างนะครับเพื่อเคลียร์พื้นที่ในการจัดเก็บเมลล์

    >> Read More <<

  • Ambari #04 การสร้าง Hadoop ด้วย Ambari บน AWS


    การจัดการข้อมูลขนาดใหญ่ (Big Data) มีเครื่องมือที่ได้รับความนิยมหลายตัว หนึ่งในนั้นคือ Apache Hadoop ซึ่งสามารถติดตั้งได้โดยตรง ตาม บทความที่เล่าให้ฟังก่อนหน้านี้ ขั้นตอนการติดตั้ง Hadoop Cluster อย่างง่าย แต่ Hadoop เอง ไม่ได้มีแค่ HDFS และ MapReduce เท่านั้น ยังประกอบด้วย Modules ต่างๆ รวมกันเป็น Ecosystem ซึ่งจะต้องติดตั้งไปทีละตัวๆ และก็ไม่ง่ายนัก จึงมีโปรเจคชื่อ Apache Ambari ทำหน้าที่ Deploy Hadoop และส่วนประกอบต่างๆได้ง่ายขึ้น ดังที่เคยเล่าให้ฟังมาแล้วใน (ใช้ Ambari ที่อยู่ในบริการของ Hortonwors) Ambari #01: ติดตั้ง Ambari Server Ambari #02 ติดตั้ง Ambari Agent คราวนี้ ถ้าจะลองทำกับระบบขนาดใหญ่ขึ้น ทางเลือกหนึ่ง ที่ประหยัด…

    >> Read More <<

  • วิธีทำ Password-less SSH บน Ubuntu


    ในการทำงานกับ Server Cluster ขนาดใหญ่ ซึ่งประกอบด้วย Ubuntu Server จำนวนมาก หากต้องแก้ไขระบบทั้งหมด โดยการ Secure Shell หรือ SSH เข้าไปทีละเครื่อง “โดยต้องเป็น root ด้วย” จะเป็นงานที่ใช้เวลาอย่างมาก เค้าจึงมีระบบที่เรียกว่า Password-less SSH โดยการแลกเปลี่ยน Public Key แทนที่จะต้อง Login ด้วย Username/Password และเนื่องจาก Ubuntu โดย Default ไม่มีการสร้าง root password (มี root แต่ไม่มี password –> ก็เลย Login ไม่ได้ด้วย Password) ซึ่งก็ดีในเรื่องของ Security แต่ทำให้การทำงานยุ่งยากนิดหน่อย บทความนี้จะกล่าวถึงวิธีการทำ Password-less SSH รวมไปถึง การที่ไม่ต้องถาม Known Host…

    >> Read More <<

  • Spark #04 – Pyspark connect to MySQL


    ในบทความนี้ จะกล่าวถึง การดึงข้อมูลจาก MySQL ผ่าน JDBC เพื่อนำมาใช้งานใน Spark ด้วยภาษา Python ซึ่งจะใช้ Library Pyspark ในขั้นตอนนี้ขอกล่าวเฉพาะวิธีการก่อน (รายละเอียดจะตามมาทีหลัง) สร้าง SparkSession ตั้งชื่อว่า myspark from pyspark.sql import SparkSession myspark = SparkSession \ .builder \ .appName(“Python Spark SQL basic example”) \ .config(“spark.some.config.option”, “some-value”) \ .getOrCreate() ติดต่อ MySQL และสร้าง View ชื่อ myuser myuser=myspark.read.jdbc(url=”jdbc:mysql://mysql/mysql”,table=”user”, properties={ ‘user’: ‘user1’, ‘password’: ‘123456’} ) myuser.createOrReplaceTempView(name=”myuser”) จากนั้นก็จะสามารถ Query…

    >> Read More <<

  • เตาะแตะไปกับ Docker ตอนที่ 12 Clone Docker Files From GitHub


    จากบล็อกเรื่อง “เตาะแตะไปกับ Docker” ในตอนที่แล้ว เราได้เรียนรู้ขั้นตอนในการสร้างและรัน LDAP services อย่างละเอียด ก่อนที่ผมจะเขียนบทความในตอนนี้ผมได้นำไฟล์ทุกไฟล์นั้นขึ้นไปไว้บน GitHub เพื่อให้พวกเราไม่ต้องสร้างไฟล์เหล่านั้นเอง แต่จะทำด้วยคำสั่ง git clone ครับ เรายังคงทดสอบด้วย VM โดยตั้งค่า network เป็น NAT network เพราะว่า เราใช้ domain สมมติ คือ ldap.example.com และทดสอบในสภาพแวดล้อมที่เป็นเครือข่ายภายใน ขั้นตอนดังนี้ 1. ติดตั้ง Ubuntu 16.04 64 bit แล้วติดตั้ง docker 17.06.2-ce แล้วต้องเปลี่ยนชื่อ hostname เป็น ldap.example.com จากนั้นรีบูตเครื่อง 2. ติดตั้ง docker-compose 1.8.0-2 (ถ้ายังไม่ได้ทำ) ด้วยคำสั่งดังนี้ sudo apt install docker-compose 3.…

    >> Read More <<