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.
Sau khi Java được cài đặt, hãy xác minh cài đặt Java bằng lệnh sau lệnh:
Bạn sẽ nhận được kết quả đầu ra sau:
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:
Tiếp theo, giải nén trường đã tải xuống vào /opt thư mục:
Tiếp theo, chỉnh sửa tệp .bashrc và xác định đường dẫn của Apache Spark:
Thêm các dòng sau vào cuối tệp:
Lưu và đóng tệp sau đó kích hoạt biến môi trường Spark bằng lệnh sau:
Tiếp theo, tạo một người dùng chuyên dụng để chạy Apache 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:
Đầu tiên, tạo một tệp dịch vụ cho Spark master bằng lệnh sau:
Thêm các dòng sau:
Lưu và đóng tệp, sau đó tạo tệp dịch vụ cho Spark slave:
Thêm các dòng sau:
Lưu và đóng tệp sau đó tải lại daemon systemd để áp dụng thay đổi:
Tiếp theo, khởi động và kích hoạt dịch vụ Spark master bằng lệnh sau:
Bạn có thể kiểm tra trạng thái của Spark master bằng lệnh sau lệnh:
Bạn sẽ nhận được kết quả sau:
Sau khi hoàn tất, bạn có thể tiến hành bước tiếp theo.
Bạn sẽ nhận được thông báo sau đầu ra:
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:
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:
Bạn sẽ nhận được kết quả đầu ra sau:
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
Bạn sẽ nhận được kết quả đầu ra sau:
Để thoát khỏi shell Spark, hãy chạy lệnh sau:
Nếu bạn là nhà phát triển Python thì hãy sử dụng pyspark để truy cập Spark:
Bạn sẽ nhận được kết quả sau:
Nhấn phím CTRL + D để thoát khỏi shell Spark.
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
Mã:
java -version
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
Mã:
tar xvf spark-3.2.1-bin-hadoop3.2.tgz
Mã:
mv spark-3.2.1-bin-hadoop3.2/ /opt/spark
Mã:
nano ~/.bashrc
Mã:
export SPARK_HOME=/opt/spark
export PATH=$PATH:$SPARK_HOME/bin:$SPARK_HOME/sbin
Mã:
source ~/.bashrc
Mã:
useradd 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
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
Mã:
nano /etc/systemd/system/spark-slave.service
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
Mã:
systemctl daemon-reload
Mã:
systemctl start spark-master
systemctl enable spark-master
Mã:
systemctl status spark-master
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.
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
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))
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
Mã:
systemctl status spark-slave
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.
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
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>
Mã:
scala> :quit
Mã:
pyspark
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'.
>>>