Cách cài đặt Apache Spark trên Ubuntu 22.04

theanh

Administrator
Nhân viên
Apache Spark là một công cụ xử lý dữ liệu miễn phí, mã nguồn mở và đa năng được các nhà khoa học dữ liệu sử dụng để thực hiện các truy vấn dữ liệu cực nhanh trên một lượng lớn dữ liệu. Công cụ này sử dụng kho dữ liệu trong bộ nhớ để lưu trữ các truy vấn và dữ liệu trực tiếp trong bộ nhớ chính của các nút cụm. Công cụ này cung cấp các API cấp cao bằng các ngôn ngữ Java, Scala, Python và R. Công cụ này cũng hỗ trợ một bộ công cụ cấp cao phong phú như Spark SQL, MLlib, GraphX và Spark Streaming.

Bài đăng này sẽ chỉ cho bạn cách cài đặt công cụ xử lý dữ liệu Apache Spark trên Ubuntu 22.04.

Điều kiện tiên quyết​

  • Máy chủ chạy Ubuntu 22.04.
  • Mật khẩu gốc được cấu hình trên máy chủ.

Cài đặt Java​

Apache Spark dựa trên Java. Vì vậy, Java phải được cài đặt trên máy chủ của bạn. Nếu chưa cài đặt, bạn có thể cài đặt bằng cách chạy lệnh sau:
Mã:
apt-get install default-jdk curl -y
Sau khi Java được cài đặt, hãy xác minh cài đặt Java bằng lệnh sau lệnh:
Mã:
java -version
Bạn sẽ nhận được kết quả đầu ra sau:
Mã:
openjdk version "11.0.15" 2022-04-19
OpenJDK Runtime Environment (build 11.0.15+10-Ubuntu-0ubuntu0.22.04.1)
OpenJDK 64-Bit Server VM (build 11.0.15+10-Ubuntu-0ubuntu0.22.04.1, mixed mode, sharing)

Cài đặt Apache Spark​

Tại thời điểm viết hướng dẫn này, phiên bản mới nhất của Apache Spark là Spark 3.2.1. Bạn có thể tải xuống bằng lệnh wget:
Mã:
wget https://dlcdn.apache.org/spark/spark-3.2.1/spark-3.2.1-bin-hadoop3.2.tgz
Sau khi tải xuống hoàn tất, hãy giải nén tệp đã tải xuống bằng lệnh sau:
Mã:
tar xvf spark-3.2.1-bin-hadoop3.2.tgz
Tiếp theo, giải nén trường đã tải xuống vào /opt thư mục:
Mã:
mv spark-3.2.1-bin-hadoop3.2/ /opt/spark
Tiếp theo, chỉnh sửa tệp .bashrc và xác định đường dẫn của Apache Spark:
Mã:
nano ~/.bashrc
Thêm các dòng sau vào cuối tệp:
Mã:
export SPARK_HOME=/opt/spark
export PATH=$PATH:$SPARK_HOME/bin:$SPARK_HOME/sbin
Lưu và đóng tệp sau đó kích hoạt biến môi trường Spark bằng lệnh sau:
Mã:
source ~/.bashrc
Tiếp theo, tạo một người dùng chuyên dụng để chạy Apache Spark:
Mã:
useradd spark
Tiếp theo, thay đổi quyền sở hữu của /opt/spark thành người dùng và nhóm spark:
Mã:
chown -R spark:spark /opt/spark

Tạo tệp dịch vụ Systemd cho Apache Spark​

Tiếp theo, bạn sẽ cần tạo tệp dịch vụ để quản lý dịch vụ Apache Spark.

Đầu tiên, tạo một tệp dịch vụ cho Spark master bằng lệnh sau:
Mã:
nano /etc/systemd/system/spark-master.service
Thêm các dòng sau:
Mã:
[Unit]
Description=Apache Spark Master
After=network.target
[Service]
Type=forking
User=spark
Group=spark
ExecStart=/opt/spark/sbin/start-master.sh
ExecStop=/opt/spark/sbin/stop-master.sh
[Install]
WantedBy=multi-user.target
Lưu và đóng tệp, sau đó tạo tệp dịch vụ cho Spark slave:
Mã:
nano /etc/systemd/system/spark-slave.service
Thêm các dòng sau:
Mã:
[Unit]
Description=Apache Spark Slave
After=network.target
[Service]
Type=forking
User=spark
Group=spark
ExecStart=/opt/spark/sbin/start-slave.sh spark://your-server-ip:7077
ExecStop=/opt/spark/sbin/stop-slave.sh
[Install]
WantedBy=multi-user.target
Lưu và đóng tệp sau đó tải lại daemon systemd để áp dụng thay đổi:
Mã:
systemctl daemon-reload
Tiếp theo, khởi động và kích hoạt dịch vụ Spark master bằng lệnh sau:
Mã:
systemctl start spark-master
systemctl enable spark-master
Bạn có thể kiểm tra trạng thái của Spark master bằng lệnh sau lệnh:
Mã:
systemctl status spark-master
Bạn sẽ nhận được kết quả sau:
Mã:
? spark-master.service - Apache Spark Master Loaded: loaded (/etc/systemd/system/spark-master.service; disabled; vendor preset: enabled) Active: active (running) since Thu 2022-05-05 11:48:15 UTC; 2s ago Process: 19924 ExecStart=/opt/spark/sbin/start-master.sh (code=exited, status=0/SUCCESS) Main PID: 19934 (java) Tasks: 32 (limit: 4630) Memory: 162.8M CPU: 6.264s CGroup: /system.slice/spark-master.service ??19934 /usr/lib/jvm/java-11-openjdk-amd64/bin/java -cp "/opt/spark/conf/:/opt/spark/jars/*" -Xmx1g org.apache.spark.deploy.mast>
May 05 11:48:12 ubuntu2204 systemd[1]: Starting Apache Spark Master...
May 05 11:48:12 ubuntu2204 start-master.sh[19929]: starting org.apache.spark.deploy.master.Master, logging to /opt/spark/logs/spark-spark-org>
May 05 11:48:15 ubuntu2204 systemd[1]: Started Apache Spark Master.
Sau khi hoàn tất, bạn có thể tiến hành bước tiếp theo.

Truy cập Apache Spark​

Lúc này, Apache Spark đã được khởi động và đang lắng nghe trên cổng 8080. Bạn có thể kiểm tra bằng lệnh sau:
Mã:
ss -antpl | grep java
Bạn sẽ nhận được thông báo sau đầu ra:
Mã:
LISTEN 0 4096 [::ffff:69.28.88.159]:7077 *:* users:(("java",pid=19934,fd=256))
LISTEN 0 1 *:8080 *:* users:(("java",pid=19934,fd=258))
Bây giờ, hãy mở trình duyệt web của bạn và truy cập giao diện web Spark bằng URL . Bạn sẽ thấy bảng điều khiển Apache Spark trên trang sau:


data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22337%22%3E%3C/svg%3E


Bây giờ, hãy khởi động dịch vụ Spark slave và cho phép nó khởi động khi khởi động lại hệ thống:
Mã:
systemctl start spark-slave
systemctl enable spark-slave
Bạn có thể kiểm tra trạng thái của dịch vụ Spark slave bằng cách sử dụng lệnh sau lệnh:
Mã:
systemctl status spark-slave
Bạn sẽ nhận được kết quả đầu ra sau:
Mã:
? spark-slave.service - Apache Spark Slave Loaded: loaded (/etc/systemd/system/spark-slave.service; disabled; vendor preset: enabled) Active: active (running) since Thu 2022-05-05 11:49:32 UTC; 4s ago Process: 20006 ExecStart=/opt/spark/sbin/start-slave.sh spark://69.28.88.159:7077 (code=exited, status=0/SUCCESS) Main PID: 20017 (java) Tasks: 35 (limit: 4630) Memory: 185.9M CPU: 7.513s CGroup: /system.slice/spark-slave.service ??20017 /usr/lib/jvm/java-11-openjdk-amd64/bin/java -cp "/opt/spark/conf/:/opt/spark/jars/*" -Xmx1g org.apache.spark.deploy.work>
May 05 11:49:29 ubuntu2204 systemd[1]: Starting Apache Spark Slave...
May 05 11:49:29 ubuntu2204 start-slave.sh[20006]: This script is deprecated, use start-worker.sh
May 05 11:49:29 ubuntu2204 start-slave.sh[20012]: starting org.apache.spark.deploy.worker.Worker, logging to /opt/spark/logs/spark-spark-org.>
May 05 11:49:32 ubuntu2204 systemd[1]: Started Apache Spark Slave.
Bây giờ, hãy quay lại giao diện web Spark và làm mới trang web. Bạn sẽ thấy Worker được thêm vào ở trang sau:


data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22338%22%3E%3C/svg%3E


Bây giờ, hãy nhấp vào worker. Bạn sẽ thấy thông tin về người lao động trên trang sau:


data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22198%22%3E%3C/svg%3E

Cách truy cập Spark Shell​

Apache Spark cũng cung cấp tiện ích spark-shell để truy cập Spark thông qua dòng lệnh. Bạn có thể truy cập bằng lệnh sau:
Mã:
spark-shell
Bạn sẽ nhận được kết quả đầu ra sau:
Mã:
WARNING: An illegal reflective access operation has occurred
WARNING: Illegal reflective access by org.apache.spark.unsafe.Platform (file:/opt/spark/jars/spark-unsafe_2.12-3.2.1.jar) to constructor java.nio.DirectByteBuffer(long,int)
WARNING: Please consider reporting this to the maintainers of org.apache.spark.unsafe.Platform
WARNING: Use --illegal-access=warn to enable warnings of further illegal reflective access operations
WARNING: All illegal access operations will be denied in a future release
Using Spark's default log4j profile: org/apache/spark/log4j-defaults.properties
Setting default log level to "WARN".
To adjust logging level use sc.setLogLevel(newLevel). For SparkR, use setLogLevel(newLevel).
22/05/05 11:50:46 WARN NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
Spark context Web UI available at http://ubuntu2204:4040
Spark context available as 'sc' (master = local[*], app id = local-1651751448361).
Spark session available as 'spark'.
Welcome to ____ __ / __/__ ___ _____/ /__ _\ \/ _ \/ _ `/ __/ '_/ /___/ .__/\_,_/_/ /_/\_\ version 3.2.1 /_/
Using Scala version 2.12.15 (OpenJDK 64-Bit Server VM, Java 11.0.15)
Type in expressions to have them evaluated.
Type :help for more information.
scala>
Để thoát khỏi shell Spark, hãy chạy lệnh sau:
Mã:
scala> :quit
Nếu bạn là nhà phát triển Python thì hãy sử dụng pyspark để truy cập Spark:
Mã:
pyspark
Bạn sẽ nhận được kết quả sau:
Mã:
Python 3.10.4 (main, Apr 2 2022, 09:04:19) [GCC 11.2.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
WARNING: An illegal reflective access operation has occurred
WARNING: Illegal reflective access by org.apache.spark.unsafe.Platform (file:/opt/spark/jars/spark-unsafe_2.12-3.2.1.jar) to constructor java.nio.DirectByteBuffer(long,int)
WARNING: Please consider reporting this to the maintainers of org.apache.spark.unsafe.Platform
WARNING: Use --illegal-access=warn to enable warnings of further illegal reflective access operations
WARNING: All illegal access operations will be denied in a future release
Using Spark's default log4j profile: org/apache/spark/log4j-defaults.properties
Setting default log level to "WARN".
To adjust logging level use sc.setLogLevel(newLevel). For SparkR, use setLogLevel(newLevel).
22/05/05 11:53:17 WARN NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
Welcome to ____ __ / __/__ ___ _____/ /__ _\ \/ _ \/ _ `/ __/ '_/ /__ / .__/\_,_/_/ /_/\_\ version 3.2.1 /_/
Using Python version 3.10.4 (main, Apr 2 2022 09:04:19)
Spark context Web UI available at http://ubuntu2204:4040
Spark context available as 'sc' (master = local[*], app id = local-1651751598729).
SparkSession available as 'spark'.
>>>
Nhấn phím CTRL + D để thoát khỏi shell Spark.

Kết luận​

Xin chúc mừng! bạn đã cài đặt thành công Apache Spark trên Ubuntu 22.04. Bây giờ bạn có thể bắt đầu sử dụng Apache Spark trong môi trường Hadoop. Để biết thêm thông tin, hãy đọc trang tài liệu của Apache Spark.
 
Back
Bên trên