Hướng dẫn cài Apache Spark trên Ubuntu

1. Cài java

Apache Spark yêu cầu Java 8. Vì vậy bạn cần cài đúng Java 8. Java mới hơn sẽ không chạy. Có thể kiểm tra phiên bản Java bằng cách sau. 

$ java -version
openjdk version "1.8.0_181"
OpenJDK Runtime Environment (Zulu 8.31.0.1-linux64) (build 1.8.0_181-b02)
OpenJDK 64-Bit Server VM (Zulu 8.31.0.1-linux64) (build 25.181-b02, mixed mode)

Bạn Zulu 8.31.0.1 là phiên bản đang cài, có số 8 là được. Nếu bạn không có Java hoặc không phải Java 8, bạn cần cài Java 8. 

Hãy dùng SDKMAN! để cài Java cho dễ.  Hãy chạy các dòng lệnh sau 

$ curl -s "https://get.sdkman.io" | bash 

Sau đó, tắt Terminal, mở lại,  rồi kiểm tra SDKMAN! đã cài thành công chưa. 

$ sdk version
SDKMAN 5.7.3+337

Giờ ta cần biết các phiên bản mà SDKMAN hỗ trợ

$ sdk list java

================================================================================
Available Java Versions
================================================================================
     12.ea.20-open                                                              
   * 11.0.1-zulu                                                                
   * 11.0.1-open                                                                
     10.0.2-zulu                                                                
     10.0.2-open                                                                
     9.0.7-zulu                                                                 
     9.0.4-open                                                                 
     8.0.192-zulu                                                               
     8.0.191-oracle                                                             
 > + 8.0.181-zulu                                                               
     7.0.201-zulu                                                               
     6.0.119-zulu                                                               
     1.0.0-rc9-graal                                                            
     1.0.0-rc8-graal                                                            
     1.0.0-rc7-graal                                                            

================================================================================
+ - local version
* - installed
> - currently in use
================================================================================

Hãy nhìn vào danh sách và chọn phiên bản Java 8 (bắt đầu bằng số 8). VD bạn muốn cài 8.0.192-zulu, gõ dòng lệnh sau 

$ sdk install java 8.0.192-zulu


Downloading: java 8.0.192-zulu

In progress...

######################################################################### 100,0%

Repackaging Java 8.0.192-zulu...

Done repackaging...

Installing: java 8.0.192-zulu
Done installing!

Do you want java 8.0.192-zulu to be set as default? (Y/n): Y

Setting java 8.0.192-zulu as default.

Sau khi cài xong, tắt Terminal, mở lại Terminal mới và kiểm tra phiên bản Java 

$ java -version

2. Cài Apache Spark 

Bạn tải Apache Spark về tại trang chính thức https://spark.apache.org/downloads.html

Chọn phiên bản mới nhất (2.4.0 tại thời điểm viết bài) và Pre-built for Apache Hadoop 2.7 and later. 

Tập tin tải về có tên là spark-2.4.0-bin-hadoop2.7.tgz 

Sau khi tải về, bạn bỏ vào chỗ nào thuận tiện trên máy và giải nén bằng câu lệnh sau, trong đó, spark-2.4.0-bin-hadoop2.7.tgz  là tên tập tin 

$ tar -xvzf spark-2.4.0-bin-hadoop2.7.tgz 

Bây giờ, bạn cần cài biến môi trường SPARK_HOME.  Bạn cần sửa tập tin ~/.bashrc (mặc định) hoặc ~/.zshrc (nếu bạn dùng zsh chứ không dùng bash) và thêm vào dòng sau.

export SPARK_HOME="/home/tt/Software/spark-2.3.2-bin-hadoop2.7"

Trong đó, /home/tt/Software/spark-2.4.0-bin-hadoop2.7 là đường dẫn tới chỗ thư mục mà bạn vừa giải nén. Sau đó, tắt terminal và chạy lại.

3. Chạy thử Apache Spark 

$ cd $SPARK_HOME
$ bin/spark-shell
2018-11-25 12:08:18 WARN  Utils:66 - Your hostname, tt-desktop resolves to a loopback address: 127.0.1.1; using 192.168.0.108 instead (on interface eno1)
2018-11-25 12:08:18 WARN  Utils:66 - Set SPARK_LOCAL_IP if you need to bind to another address
2018-11-25 12:08:19 WARN  NativeCodeLoader:62 - Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
Setting default log level to "WARN".
To adjust logging level use sc.setLogLevel(newLevel). For SparkR, use setLogLevel(newLevel).
Spark context Web UI available at http://192.168.0.108:4040
Spark context available as 'sc' (master = local[*], app id = local-1543122507936).
Spark session available as 'spark'.
Welcome to
      ____              __
     / __/__  ___ _____/ /__
    _\ \/ _ \/ _ `/ __/  '_/
   /___/ .__/\_,_/_/ /_/\_\   version 2.4.0
      /_/
         
Using Scala version 2.11.12 (OpenJDK 64-Bit Server VM, Java 1.8.0_192)
Type in expressions to have them evaluated.
Type :help for more information.

scala> 

Bạn nên thấy màn hình Terminal hiển thị như trên. 

Bạn hãy vào https://spark.apache.org/docs/latest/quick-start.html và chạy thử một vài lệnh trên đó.

scala> val textFile = spark.read.textFile("README.md")
textFile: org.apache.spark.sql.Dataset[String] = [value: string]

scala> textFile.first()
res0: String = # Apache Spark

scala> textFile.collect()
res1: Array[String] = Array(# Apache Spark, "", Spark is a fast and general cluster computing system for Big Data. It provides, high-level APIs in Scala, Java, Python, and R, and an optimized engine that, supports general computation graphs for data analysis. It also supports a, rich set of higher-level tools including Spark SQL for SQL and DataFrames,, MLlib for machine learning, GraphX for graph processing,, and Spark Streaming for stream processing., "", <http://spark.apache.org/>, "", "", ## Online Documentation, "", You can find the latest Spark documentation, including a programming, guide, on the [project web page](http://spark.apache.org/documentation.html)., This README file only contains basic setup instructions., "", ## Building Spark, "", Spark is built using [Apache Maven](...
scala> 

Leave a Reply

Your email address will not be published. Required fields are marked *