วิธีการติดตั้ง Apache Spark ด้วย Docker


ในบทความนี้จะกล่างถึงใช้การสร้าง environment สำหรับทดสอบโปรแกรม Spark บน Hadoop โดยใช้ Docker

ก่อนจะเริ่มมาทำความรู้จักกับสิ่งที่ใช้ในบทความนี้ก่อนดีกว่า

Apache Spark

คือ Framework ในการเขียนโปรแกรมเพื่อประมวลผลแบบ MapReduced โดยเราเคยกล่าวถึงในบล็อค How to Installation Apache Spark with Cloudera VM ด้วย

Hadoop

คือ ซอฟท์แวร์ประเภท open source ที่จัดทำขึ้นเพื่อเป็นแพลตฟอร์มในการจัดเก็บข้อมูล ซึ่งมีกรอบการทำงานเพื่อใช้ในการจัดเก็บข้อมูลและประมวลผลข้อมูลที่มีขนาดใหญ่มากๆ ที่เราเรียกกันว่า Big Data

Docker

คือ engine ตัวหนึ่งที่มีการทำงานในลักษณะจำลองสภาพแวดล้อมขึ้นมาบนเครื่อง server เพื่อใช้ในการ run service ที่ต้องการ มีการทำงานคล้ายคลึงกับ Virtual Machine

ซึ่งตัว Docker Image ที่ใช้จะเป็น bananacoding/spark_hadoop

มาดูกันก่อนว่าภายใน Image ประกอบไปด้วยอะไรบ้าง

  • Java 1.7.0
  • Hadoop 2.7
  • Apache Spark v2.1.0
  • Scala v2.12.2

และสามารถดึง Image ได้จากคำสั่ง docker pull bananacoding/spark_hadoop

หรือจะสั่งรันเลยก็ได้ ถ้าเครื่องเราไม่มี Image มันก็จะไปดึงมาให้ และรัน Docker Image  นั้นต่อเองเลย จากคำสั่งข้างล่าง

$ docker run -it -p 8088:8088 -p 8042:8042 -p 4040:4040 -h localhost bananacoding/spark_hadoop bash

เมื่อสั่งเสร็จแล้วใน terminal จะขึ้นประมาณนี้นะ  แปลว่าพร้อมใช้งานแล้ว

bash-4.1#

และนี่คือ bash ของ Apache Spark นั่นเอง และสามาถใช้คำสั่งของ Spark ได้

ในบทความนี้จะมาลองใช้ซัก 2 คำสั่งคือ

  • spark-shell
  • spark-submit

โดย spark-shell จะรันได้จากคำสั่งนี้เลย

$ spark-shell

แล้วลองรันคำสั่ง sc.parallelize(1 to 1000).count() เพื่อให้แน่ใจว่า spark-shell  ของเราทำงานได้แล้ว

เมื่อรันเสร็จจะได้ผลลัพท์มาเป็น 1000 ตามข้างล่างนี้

$ scala> sc.parallelize(1 to 1000).count()
$ res0: Long = 1000

 

ต่อมาก็มาลอง spark-submit  โดยจะมีไฟล์  .jar ตัวอย่างมาให้ลองอยู่แล้วซึ่งชื่อคลาสจะเป็น   org.apache.spark.examples.SparkPi

และสามารถลองรันคำสั่ง spark-submit ข้างล่างนี้ได้เลย

spark-submit

$ spark-submit \
--class org.apache.spark.examples.SparkPi \
--master yarn \
--deploy-mode cluster \
--driver-memory 1g \
--executor-memory 1g \
--executor-cores 1 \
$SPARK_HOME/examples/jars/spark-examples*.jar

เมื่อรันเสร็จแล้วสามารถมาดูผลลัพท์จากการ submit ได้ที่ http://localhost:8088 เลยนะครับ  ซึ่งก็คือเจ้าตัว Hadoop นั่นเอง

 

เพิ่มเติม: ใน  Docker Image นี้ก็สามารใช้คำสั่ง ของ hadoop และ hdfs ได้เช่นกัน

 

REFERENCES:

Docker คือ? – https://www.hostpacific.com/using-docker-on-centos7/

Hadoop คือ? – http://bigdataexperience.org/what-to-know-about-hadoop/

Docker Image – https://github.com/sequenceiq/docker-spark

Docker Image – https://github.com/pondpaun7z/spark_hadoop

 

. . . . . . . . . . .

หากว่าคุณกำลังสนใจการสร้างโมเดลพยากรณ์ หรือทำงานอื่นๆ ที่เกี่ยวกับ Big Data, ทีม บานาน่าโคดดิ้ง ของเรา มีทีมงานผู้เชี่ยวชาญที่จะช่วยให้งานของคุณสำเร็จได้อย่างสมบูรณ์ สามารถดูรายอะเอียดได้ที่ BananaCoding.com/big-data