ในบทความนี้จะกล่างถึงใช้การสร้าง 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