Tải bản đầy đủ (.docx) (22 trang)

Tìm hiểu nền tảng tính toán phân tán Apache Spark

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (952.61 KB, 22 trang )

MỤC LỤC


Lời nói đầu

LỜI NÓI ĐẦU
Từ thập niên 1990, mạng cục bộ và mạng diện rộng ra đời. Điều đó đòi hỏi phải
có một hệ điều hành có nhiều chức năng phục vụ quản lý mạng, đảm bảo an toàn vào
bảo mật. Yêu cầu đó đã đạt ra sự xuất hiện của các hệ điều hành mạng. Hệ điều hành
mạng (network operating system - NOS) là một hệ thống phần mềm: điều khiển một
mạng và các thông điệp truyền trong mạng đó, bao gồm cả vấn đề quản lý các hàng
đợi (queues) các thông điệp; điều khiển quyền truy nhập của nhiều người sử dụng đến
các tài nguyên mạng và cung cấp các chức năng quản trị hệ thống, bao gồm cả vấn đề
an ninh an toàn.
Khi việc xử lý một tập hợp dữ liệu rất lớn và phức tạp mà các ứng dụng xử lý
dữ liệu truyền thống không xử lý được. Cùng với các thách thức như phân tích, thu
thập, giám sát dữ liệu, tìm kiếm, chia sẻ, lưu trữ, truyền nhận, trực quan, truy vấn và
tính riêng tư. Dữ liệu lớn đã đề cập đến việc việc sử dụng các phân tích dự báo, phân
tích hành vi người dùng, hoặc một số phương pháp phân tích dữ liệu tiên tiến khác
trích xuất giá trị từ dữ liệu mà ít khi đề cập đến kích thước của bộ dữ liệu.Vài nghi ngờ
cho rằng số lượng của dữ liệu có sẵn hiện nay thực sự lớn, nhưng đó không phải là đặc
trưng phù hợp nhất của hệ sinh thái dữ liệu mới này
Trong những năm trở lại đây, khi nói về dữ liệu lớn người ta nghĩ ngay đến
Apache Hadoop, công nghệ được viết bởi Doug Cutting dựa trên GFS (Google File
System) và MapReduce của Google vào năm 2005. Tháng Tư năm 2008, Hadoop trở
thành hệ thống nhanh nhất để sắp xếp (sort) 1 terabyte dữ liệu, khi mất 209 giây chạy
trên cluster gồm 910 nodes, đánh bại kỷ lục cũ là 297 giây. Tháng 11 năm 2008,
Google thông báo hệ thống MapReduce của họ chỉ cần 68 giây để sắp xếp 1 terabyte
dữ liệu. Đến tháng 5 năm 2009, Yahoo sử dụng Hadoop chỉ cần 62 giây để làm việc
tương tự. Apache Spark (gọi tắt Spark) là một trong những công nghệ hot nhất năm
2015, đến mức nhiều người cho rằng nó sẽ là sự thay thế Apache Hadoop trong tương


lai.
Với mục đích học tập môn hệ điều mạng, trong thời lượng có hạn, nguồn tài
liệu không nhiều, với đề tài “Tìm hiểu nền tảng tính toán phân tán Apache Spark”,
bài báo cáo này đã được xây dựng với những nội dung chính như sau:
Chương 1: Giới thiệu chung về Apache Spark.
Chương 2: Nội dung nền tảng tính toán phân tán Apache Spark
Chương 3: Cài đặt

2


Chương 1: Giới thiệu chung về Apache Spark

CHƯƠNG 1: GIỚI THIỆU CHUNG VỀ APACHE SPARK
1.1. Khái niệm
Apache Spark là là công nghệ mã nguồn mở 100%, được phát triển sơ khai vào
năm 2009 bởi AMPLab tại đại học California, Berkeley. Sau này, Spark đã được trao
cho Apache Software Foundation vào năm 2013 và được phát triển cho đến nay. Kể từ
khi phát hành, Apache Spark, công cụ phân tích thống nhất, đã nhận được sự chấp
nhận nhanh chóng của các doanh nghiệp trong nhiều ngành công nghiệp. Các nhà cung
cấp Internet như Netflix, Yahoo và eBay đã triển khai Spark với quy mô lớn, cùng
nhau xử lý nhiều petabytes dữ liệu trên các nhóm hơn 8.000 node. Nó đã nhanh chóng
trở thành cộng đồng nguồn mở lớn nhất trong dữ liệu lớn, với hơn 1000 người đóng
góp từ 250 tổ chức.
Apache Spark là một hệ thống mã nguồn mở cho phép thực hiện tính toán trên
cụm nhằm tạo ra khả năng phân tích dữ liệu nhanh với 2 tiêu chí: nhanh về cả lúc chạy
và nhanh cả lúc ghi dữ liệu.
Cụ thể hơn, Apache Spark là một hệ thống tính toán song song hoặc phân tán
bao gồm nhiều máy tính kết nối thành một khối và được dùng như một tài nguyên tính
toán duy nhất (cluster), cung cấp các API cho nhiều ngôn ngữ bậc cao như Java, Scala,

Python hay R. Điểm đặc biệt của nó là cung cấp rất nhiều công cụ bậc cao cho các tác
vụ khác nhau như: Spark SQL sử dụng cho việc xử lý các dữ liệu có cấu trúc, GraphX
dùng cho việc xử lý đồ thị, còn MLlib sử dụng cho các bài toán học máy.
1.2. Đặc điểm
+ Tốc độ xử lý của Spark có được do việc tính toán được thực hiện cùng lúc
trên nhiều máy khác nhau. Đồng thời việc tính toán được thực hiện ở bộ nhớ trong hay
thực hiện hoàn toàn trên RAM.
+ Spark cho phép xử lý dữ liệu theo thời gian thực, vừa nhận dữ liệu từ các
nguồn khác nhau đồng thời thực hiện ngay việc xử lý trên dữ liệu vừa nhận được
(Spark Streaming).
+ Spark không có hệ thống file của riêng mình, nó sử dụng hệ thống file khác
như: HDFS, Cassandra, S3,… Spark hỗ trợ nhiều kiểu định dạng file khác nhau (text,
csv, json…) đồng thời nó hoàn toàn không phụ thuộc vào bất cứ một hệ thống file nào.
+ Spark cho phép xây dựng và phân tích nhanh các mô hình dự đoán. Hơn nữa,
nó còn cung cấp khả năng truy xuất toàn bộ dữ liệu cùng lúc, nhờ vậy ta không cần
phải lấy mẫu dữ liệu – đòi hỏi bởi các ngôn ngữ lập trình như R. Thêm vào đó, Spark
còn cung cấp tính năng streaming, được dùng để xây dựng các mô hình thời gian thực
3


Chương 1: Giới thiệu chung về Apache Spark

bằng cách nạp toàn bộ dữ liệu vào bộ nhớ.
+ Khi có một tác vụ nào đó quá lớn mà không thể xử lý trên một laptop hay một
server, Spark cho phép ta phân chia tác vụ này thành những phần dễ quản lý hơn. Sau
đó, Spark sẽ chạy các tác vụ này trong bộ nhớ, trên các cluster của nhiều server khác
nhau để khai thác tốc độ truy xuất nhanh từ RAM. Spark sử dụng API Resilient
Distributed Dataset (RDD) để xử lý dữ liệu.
Spark hiện nay đang nhanh chóng trở thành lựa chọn chính cho phương pháp
tính toán của big data. Các chương trình Spark ngắn gọn hơn và thường chạy nhanh

hơn 10-100 lần so với Hadoop MapReduce. Vì các công ty nhận ra điều này nên các
nhà phát triển Spark đang trở nên ngày càng có giá trị.

4


Chương 2: Nội dung nền tảng tính toán phân tán Apache Spark

CHƯƠNG 2: NỘI DUNG NỀN TẢNG TÍNH TOÁN PHÂN TÁN
APACHE SPARK
2.1. Kiến trúc nền tảng tính toán phân tán Apache spark
Kiến trúc Apache Spark bao gồm ba thành phần chính:

• Lưu trữ dữ liệu.
• API
• Cơ cấu quản lý

Hình 2.1. Kiến trúc Apache Spark
2.1.1. Lưu trữ dữ liệu
Spark sử dụng hệ thống tập tin HDFS để lưu trữ dữ liệu. Nó hoạt động với bất
kỳ nguồn dữ liệu tương thích Hadoop nào bao gồm HDFS, HBase, Cassandra,…
2.1.2. API
API cho phép các nhà phát triển ứng dụng tạo ra các ứng dụng dựa trên Spark
sử dụng giao diện API tiêu chuẩn. Spark cung cấp các API cho Scala, Java, Python.
Các liên kết trang web cho Spark API cho mỗi ngôn ngữ này.
• API Scala
• Java
• Python
2.1.3. Cơ cấu quản lý tài nguyên
Spark có thể được triển khai dưới dạng một máy chủ độc lập hoặc trên một

khuôn khổ tính toán phân tán như Mesos hay YARN.
5


Chương 2: Nội dung nền tảng tính toán phân tán Apache Spark

Hình 2.2. Chu trình trong Spark Driver
Spark gồm một node master và nhiều node worker dưới sự điều khiển của
master. Spark Driver sẽ liên hệ với master node để điều phối các worker node nơi có
chứa các excutor đang thực thi job.
Master node chứa chương trình điều khiển (Spark Standalone/ YARN/ MESSO),
các worker node, chương trình lập lịch sẽ chịu trách nhiệm lập lịch cho các tác vụ và
yêu cầu các worker node thực hiện. Mỗi worker bao gồm một hoặc một số Excutor
thực hiện việc lưu trữ, đọc ghi khi xử lý dữ liệu. Mỗi excutor chịu trách nhiệm xử lý
các task nhỏ riêng biệt bằng các luồng độc lập.

6


Chương 2: Nội dung nền tảng tính toán phân tán Apache Spark

Hình 2.3. Chu trình trong Spark Driver
2.2. Các thành phần của Apache Spark

Hình 2.4. Thành phần của Apache Spark

7


Chương 2: Nội dung nền tảng tính toán phân tán Apache Spark


2.2.1. Apache Spark Core
Spark Core là thành phần cốt lõi thực thi cho tác vụ cơ bản làm nền tảng cho
các chức năng khác. Nó cung cấp khả năng tính toán trên bộ nhớ và database trong bộ
nhớ hệ thống lưu trữ ngoài, để hỗ trợ nhiều ứng dụng và Java, Scala và Python API để
dễ phát triển. Đặc biệt, Spark Core cung cấp API để định nghĩa RDD (Resilient
Distributed DataSet) là tập hợp của các mục được phân tán trên các node của cluster
và có thể được xử lý song song.
2.2.2. Spark SQL
Spark SQL là một thành phần nằm trên Spark Core nó cung cấp một sự ảo hóa
mới cho dữ liệu là SchemaRDD, hỗ trợ các dữ liệu có cấu trúc và bán cấu trúc. Nó
cũng cung cấp khả năng tích hợp mạnh mẽ với các thành phần còn lại của Spark (ví
dụ, tích hợp xử lý truy vấn SQL với học máy).
2.2.3. Spark Streaming
Spark Streaming cho phép thực hiện phân tích xử lý trực tuyến xử lý theo lô.
Chạy trên Spark, Spark Streaming cho phép ứng dụng tương tác và phân tích mạnh mẽ
trên cả dữ liệu trực tuyến và dữ liệu lịch sử, đồng thời thừa hưởng tính dễ sử dụng của
Spark và đặc tính chịu lỗi. Nó dễ dàng tích hợp với nhiều nguồn dữ liệu phổ biến, bao
gồm HDFS, Flume, Kafka và Twitter.
2.2.4. Spark MLlib (Machine Learning Library)
MLlib là một nền tảng học máy phân tán bên trên Spark do kiến trúc phân tán
dựa trên bộ nhớ. Được xây dựng trên Spark, MLlib là một thư viện học có thể mở rộng
được, cung cấp cả các thuật toán chất lượng cao (ví dụ, lặp lại nhiều lần để tăng độ
chính xác) và tốc độ phát sáng (lên đến 100x nhanh hơn MapReduce). Thư viện này có
thể sử dụng được trong Java, Scala và Python như là một phần của các ứng dụng
Spark, để bạn có thể đưa nó vào quy trình làm việc hoàn chỉnh.
2.2.5. Spark GrapX
Grapx là nền tảng xử lý đồ thị dựa trên Spark, cho phép người dùng tương tác
xây dựng, biến đổi và lý luận về dữ liệu có cấu trúc dạng đồ thị theo quy mô. Nó cung
cấp các API để diễn tả các tính toán trong đồ thị bằng cách sử dụng Pregel Api.

Trong các thư viện mà Spark cung cấp thì có 69% người dùng Spark SQL, 62%
sử dụng DataFrames, Spark Streaming và MLlib + GraphX là 58%.
Ngoài các thư viện trên, còn có những thư viện khác có thể tích hợp với Spark
như:
• Alluxio (trước đây gọi là Tachyon) là một tệp tin phân tán tập trung vào bộ
nhớ cho phép chia sẻ tập tin tin cậy ở tốc độ bộ nhớ giữa các cluster các thư viện như
Spark và MapReduce. Nó lưu trữ tập tin thiết lập làm việc trong bộ nhớ, do đó tránh đi
đến đĩa để tải thường xuyên đọc datasets. Điều này cho phép các công việc / truy vấn
8


Chương 2: Nội dung nền tảng tính toán phân tán Apache Spark

và các thư viện khác nhau truy cập các tệp tin lưu trữ ở tốc độ bộ nhớ.
• BlinkDB là một công cụ truy vấn gần đúng để sử dụng để chạy tương tác truy
vấn SQL trên khối lượng lớn dữ liệu. Nó cho phép người sử dụng tính toán truy vấn
chính xác cho thời gian phản hồi. Nó hoạt động trên các tập dữ liệu lớn bằng cách
chạy truy vấn trên các mẫu dữ liệu và trình bày các kết quả được chú giải có lỗi có ý
nghĩa quán bar. Các phiên bản sau này của BlinkDB đang được duy trì dưới một dự án
mới gọi là iOLAP.
2.3. Cơ chế hoạt động
Mọi ứng dụng spark bao gồm 1 Driver program để chạy hàm main của người
dùng và thực hiện tính toán song song trên 1 cụm.
Có 2 khái niệm trừu tượng quan trọng trong Spark là RDD và Shared Variables.

• RDD là tập dữ liệu phân tán mà các dữ liệu này được phân tán vào các
node của cluster để thực hiện tính toán song song.
• Shared variables thực hiện chia sẻ biến giữa các task hoặc giữa các task
với driver program.
2.3.1. RDDs

RDDs (Resilient Distributed Datasets) là một cấu trúc dữ liệu cơ bản của Spark.
Nó là một tập hợp bất biến phân tán của một đối tượng. Mỗi dataset trong RDD được
chia ra thành nhiều phần vùng logical. Có thể được tính toán trên các node khác nhau
của một cụm máy chủ (cluster). RDDs có thể chứa bất kỳ kiểu dữ liệu nào của Python,
Java, hoặc đối tượng Scala, bao gồm các kiểu dữ liệu do người dùng định nghĩa.
RDDs hỗ trợ hai kiểu thao tác: Transformations (Chuyển đổi) và Action (Hành
động). Thao tác chuyển đổi (tranformation) tạo ra dataset từ dữ liệu có sẵn. Qua 1
phương thức transformations thì sẽ cho phép tạo mới 1 RDD từ 1 RDD đã tồn tại.
Thao tác actions trả về giá trị cho chương trình điều khiển (driver program) sau khi
thực hiện tính toán trên dataset.
Transformations là một thao tác “lazy”, có nghĩa là thao tác này sẽ không thực
hiện ngay lập tức, mà chỉ ghi nhớ các bước thực hiện lại. Thao tác này chỉ được thực
hiện khi trong quá trình thực hiện có Actions được gọi thì công việc tính toán của
Transformations mới được diễn ra. Nhờ thiết kế này mà Spark chạy hiệu quả hơn.
Mặc định, mỗi RDD sẽ được tính toán lại nếu có Actions gọi nó. Tuy nhiên,
RDDs cũng có thể được lưu lại trên bộ nhớ RAM bằng lệnh persist (hoặc caching) để
sử dụng sau này. Điều này rất tiện lợi cho việc tính toán ngay tại bộ nhớ trong và tái sử
dụng chúng cho actions khác trên tập dữ liệu, nó làm cho việc tính toán thực hiện
nhanh hơn và khả năng chịu lỗi tốt . Cụ thể, lần đầu tiên tính toán với 1 actions, nó sẽ

9


Chương 2: Nội dung nền tảng tính toán phân tán Apache Spark

lưu trữ tại bộ nhớ trong trên các node. Nếu 1 phần nào đó của RDD bị mất, nó sẽ tự
động tính toán lại sử dụng transformation được tạo ban đầu.
Mỗi RDD được lưu trữ với các mức khác nhau. Ví dụ, bạn có thể persist dữ liệu
trên ổ cứng, bộ nhớ trong, hoặc qua việc sao lặp qua các node. Các mức lưu trữ tùy
thuộc truyền đối tượng org.apache.spark.storage.StorageLevel vào hàm persist().

Phương thức cache() là cách viết tắt cho phương thức persist với mức lưu trữ mặc
định, cụ thể là StorageLevel.MEMORY_ONLY.
Mức lưu trữ

Ý nghĩa

MEMORY_ONLY

Lưu trữ RDD như đối tượng deserialized
Java trên JVM.Nếu RDD vượt quá bộ nhớ
trong thì 1 số vùng sẽ khôngđược cached
và nó sẽ tính toán lại mỗi khi nó cần. Đây
là mức lưu trữ mặc định.

DISK_ONLY

Lưu trữ các vùng RDD chỉ trên ổ cứng

MEMORY_ONLY_2,
MEMORY_AND_DISK_2, etc.

Giống như các mức trên nhưng sao lặp
mỗi vùng RDD trên2 cluster nodes.

Để thay đổi mức lưu trữ, sử dụng phương thức apply() của đối tượng
StorageLevel.

Hình 2.5: Cơ chế hoạt động của Apache Spark
- Cơ chế lập lịch:


10


Chương 2: Nội dung nền tảng tính toán phân tán Apache Spark

Hình 2.6. Cơ chế lập lịch của Apache






Lập lịch theo mô hình đồ thị DAG
Chia các task thành các Stage
Cache dữ liệu cần sử dụng lại
Phân chia partition hạn chế tối đa việc shuffle dữ liệu qua mạng

Một số Action là: giảm, thu thập, đếm, lần đầu tiên, lấy, countByKey, và
foreach.
+ Spark thực hiện đưa các thao tác RDD chuyển đổi vào DAG (Directed
Acyclic Graph) và bắt đầu thực hiện. Khi một action được gọi trên RDD, Spark sẽ tạo
DAG và chuyển cho DAG scheduler. DAG scheduler chia các thao tác thành các nhóm
(stage) khác nhau của các task.
+ Mỗi Stage bao gồm các task dựa trên phân vùng của dữ liệu đầu vào có thể
pipline với nhau và có thể thực hiện một cách độc lập trên một máy worker. DAG
scheduler sắp xếp các thao tác phù hợp với quá trình thực hiện theo thời gian sao cho
tối ưu nhất.
Ví dụ: các thao tác map sẽ được đưa vào cùng một stage do không xảy ra
shuffle dữ liệu giữa các stage. Kết quả cuối cùng của DAG scheduler là một tập các
stage. Các Stages được chuyển cho Task Scheduler. Task Scheduler sẽ chạy các task

thông qua cluster manager (Spark Standalone/Yarn/Mesos). Task scheduler không biết
về sự phụ thuộc của các stages. Nó chỉ chịu trách nhiệm thực hiện sắp xếp các task
một cách tối ưu nhất.
+ Mỗi Worker bao gồm một hoặc nhiều Excutor. Các excutor chịu trách nhiệm
thực hiện các task trên các luồng riêng biệt. Việc chia nhỏ các task giúp đem lại hiệu
năng cao hơn, giảm thiểu ảnh hưởng của dữ liệu không đối xứng (kích thước các file
không đồng đều).

11


Chương 2: Nội dung nền tảng tính toán phân tán Apache Spark

2.3.2. Shared Variables
Spark cung cấp 2 kiểu chia sẻ biến: broadcast variable và accumulators.
- Broadcast variable là biến mà chỉ được phép đọc giá trị của biến trên mỗi máy,
không cho phép sửa đối giá trị nhằm mục đích đảm bảo cùng giá trị của biến broadcast
trên tất cả các node. Có thể sử dụng giá trị của biến qua phương thức value.
- Accumulators là biến mà chỉ thực hiện chỉ “added” qua phương thức kết hợp
(như sum hoặc count).
Khác với biến broadcast, biến accumulator cho phép thay đối giá trị, cho phép
đọc ghi dữ liệu lên biến này. Điều này rất tiện lợi cho việc tính toán song song trên các
cụm và thực hiện cho cùng mục đích là cùng nguồn tài nguyên. Sau khi tính toán song
nó sẽ trả về driver program.
2.4. Ưu, nhược điểm
2.4.1. Ưu điểm
2.4.1.1. Dễ sử dụng
Spark có các API dễ sử dụng để vận hành trên các tập dữ liệu lớn. Điều này bao
gồm một tập hợp của hơn 100 toán tử để chuyển dữ liệu và các API khung dữ liệu
quen thuộc để thao tác dữ liệu bán cấu trúc.

2.4.1.2. Tốc độ
Được thiết kế từ dưới lên cho hiệu suất, Spark có thể nhanh hơn 100 lần so với
Hadoop để xử lý dữ liệu quy mô lớn bằng cách khai thác trong bộ nhớ máy tính và tối
ưu hóa khác. Bằng việc giảm số thao tác đọc ghi lên đĩa cứng, nó lưu trữ trực tiếp dữ
liệu xử lý lên bộ nhớ.và hiện đang giữ kỷ lục thế giới về phân loại đĩa trên quy mô lớn.
2.4.1.3. Cung cấp công cụ thống nhất, toàn diện
- Spark được đóng gói với các thư viện cấp cao hơn, bao gồm hỗ trợ các truy vấn
SQL, truyền dữ liệu, học máy và xử lý đồ thị. Các thư viện tiêu chuẩn tăng năng suất
của nhà phát triển và có thể kết hợp liền mạch để tạo các quy trình công việc phức tạp.
Nó cung cấp một khung thống nhất toàn diện và thống nhất để quản lý các yêu cầu xử
lý dữ liệu lớn cho các bộ dữ liệu đa dạng về bản chất (dữ liệu văn bản, dữ liệu biểu đồ,
v.v) và từ nhiều nguồn khác nhau (dữ liệu luồng theo thời gian thực so với thời gian
thực) .
- Phân tích nâng cao: Spark không chỉ hỗ trợ ‘Map’ và ‘Reduce’. Nó còn hỗ trợ
truy vấn SQL, xử lý theo Stream, học máy, và các thuật toán đồ thị (Graph).
2.4.1.4. Hỗ trợ đa ngôn ngữ
Spark cung cấp các API có sẵn cho các ngôn ngữ Java, Scala, hoặc Python. Do
đó, bạn có thể viết các ứng dụng bằng nhiều các ngôn ngữ khác nhau. Spark đi kèm 80
12


Chương 2: Nội dung nền tảng tính toán phân tán Apache Spark

truy vấn tương tác mức cao.
2.4.2. Nhược điểm
2.4.2.1. Không có hệ thống quản lý tập tin
Spark không có hệ thống quản lý tập tin riêng của nó. Nó thường phụ thuộc vào
một số nền tảng khác như hadoop hay nền tảng đám mây khác
2.4.2.2. Chi phí cao
Spark đòi hỏi sử dụng nhiều bộ nhớ RAM để xử lý dữ liệu vì vậy bộ nhớ để chạy

Spark rất tốn kém.
2.4.2.3. Tối ưu hóa thủ công
Việc tối ưu hóa Spark đòi hỏi phải thực hiện thủ công và phù hợp với các bộ dữ
liệu cụ thể. Nếu chúng ta muốn phân vùng và lưu trữ trong Spark một cách chính xác,
nên thực hiện bằng thủ công.
2.4.2.4. Có vấn đề với tập tin nhỏ
Nếu chúng ta sử dụng Spark với hadoop chúng ta gặp một vấn đề của tập tin nhỏ.
HDFS cung cấp số lượng hạn chế các tệp lớn chứ không phải là số lượng lớn các tệp
tin nhỏ.
2.4.2.5. Độ trễ
Apache Spark có độ trễ cao hơn so với Apache Fling.

13


Chương 2: Nội dung nền tảng tính toán phân tán Apache Spark

CHƯƠNG 3: CÀI ĐẶT
3.1. Cài đặt trên Hệ điều hành Windows 10
3.1.1. Download
- Download Spark bản mới nhất trên : />
Hình 3.1. Trang chủ downloads Apache Spark
- Download winultils.exe tại:
/>3.1.2. Cài đặt
Cài đặt biến môi trường cho JAVA, SPARK, HADOOP theo cấu hình như sau:

14


Chương 2: Nội dung nền tảng tính toán phân tán Apache Spark


Hình 3.2: Cài đặt Spark

Hình 3.3: Cài đặt biến môi trường Java

- Run spark-shell bằng command line:
- Mở CMD với quyền admin
- Mở đến thư mục của …\bin
- Type lệnh spark-shell

Hình 3.4: Viết lệnh spark- shell vào mục bin trong cmd

15


Chương 2: Nội dung nền tảng tính toán phân tán Apache Spark

3.2. Cài đặt trên hệ điều hành Ubuntu 16.04
3.2.1. Cài đặt Java
Để có thể cài đặt Apache Spark trên ubuntu thì cần phải cài Java

• Đầu tiên kiểm tra xem Java đã được cài đặt hay chưa, mở Terminal gõ lệnh sau:
$ java –version

• Nếu java chưa được cài đặt (như hình phía dưới), ta tiến hành cài đặt java

Hình 3.5: Kiểm tra và kết quả java chưa được cài đặt

• Để cài đặt java ta gõ các lệnh sau:
$ sudo apt-add-repository ppa:webupd8team/java

$ sudo apt-get update
$ sudo apt-get install oracle-java7-installer

Hình 3.6 Thêm vào hệ thống webupd8team/java

Hình 3.7. update bản mới
16


Chương 2: Nội dung nền tảng tính toán phân tán Apache Spark

Hình 3.8. Câu lệnh cài đặt java

• Kiểm tra lại xem java đã cài đặt thành công hay chưa

Hình 3.9. Cài đặt thành công java version “1.8.0_161”
3.2.2. Cài đặt Scala
Tiếp theo là cài đặt Scala, chúng ta có thể tìm hiểu thêm về Scala tại trang chủ
Tải bản Scala 2.12.5 tại đây: />Sử dụng câu lệnh wget để tải file thông qua đường dẫn của trang web

Hình 3.10. Download Scala
Cài đặt Scala vơí tập tin là scala-2.12.5.deb trên máy bằng câu lệnh dpkg –i

Hình 3.11. Cài đặt tập tin scala-2.12.5.deb
Kiểm tra xem Scala đã được cài đặt hay chưa, nếu thành công sẽ ra kết quả giống
17


Chương 2: Nội dung nền tảng tính toán phân tán Apache Spark


hình ảnh dưới đây:

Hình 3.12. Cài đặt thành công Scala
3.2.3. Cài đặt Spark
Cuối cùng là cài đặt đặt Apache Spark, chúng ta có thể tìm hiểu thông tin trên
trang chủ: />Ta có thể tải các bản của Spark trên trang:
/>Sử dụng câu lệnh wget để tải spark về

Hình 3.13. Tải Spark phiên bản 2.3.0
Tạo thư mục mới spark trong opt bằng câu lệnh: sudo mkdir /opt/spark
Sau đó, tiến hành giải nén tập tin vừa được tải về sửa dụng câu lệnh:
sudo tar -xvf spark-2.3.0-bin-hadoop2.7.tgz

Hình 3.14. Tạo thư mục Spark và giải nén tập tin spark
Sao chép tất cả file spark-2.3.0-bin-hadoop2.7 vào trong thư mục mới tạọ spark

18


Chương 2: Nội dung nền tảng tính toán phân tán Apache Spark

Hình 3.15. Sao chép các thư mục và file của spark-2.3.0-bin-hadoop2.7vào
trong thư mục spark
Vào trong thư mực opt/spark/bin/spark shell lên chạy để tiến hành cài đặt

Hình 3.16. Cài đặt thành công Spark

19



Chương 2: Nội dung nền tảng tính toán phân tán Apache Spark

Hình 3.17. Chạy thử thành công Spark

20


Kết luận

KẾT LUẬN
Bài báo cáo đã giới thiệu chung về Apache Spark, kiến trúc, các thành và cơ chế
hoạt động của Apache Spark. Từ đó cài đặt Spark nên Windows 10 và trên hệ điều
hành máy tính ảo Ubuntu 16.04 cài đặt trên VMware Workstation Pro 12. Nhóm cũng
nêu ra được các ưu và nhược điểm khi sử dụng Apache Spark.
Trong bài báo cáo này, nhóm đã xem xét cách khung công tác Spark của
Apache giúp với xử lý dữ liệu lớn và phân tích với API chuẩn của nó. Nhóm cũng xem
xét cách Spark so với thực hiện MapReduce truyền thống như Apache Hadoop. Spark
dựa trên cùng một hệ thống lưu trữ file HDFS như Hadoop, vì vậy bạn có thể sử dụng
Spark và MapReduce nếu bạn đã có đầu tư và thiết lập cơ sở hạ tầng đáng kể với
Hadoop.
Ngoài ra, chúng ta cũng có thể kết hợp việc xử lý Spark với Spark SQL, Spark
MLlib (cho máy học tập), Spark Streaming,và còn có bộ điều hợp để tích hợp với các
sản phẩm khác như Alluxio (trước đây gọi là Tachyon), BlinkDB, Cassandra (Spark
Cassandra Connector) và R (SparkR).
Với một số tích hợp và bộ điều hợp trên Spark, chúng ta có thể kết hợp nó với
các công nghệ khác. Một ví dụ của việc này là sử dụng Spark, Kafka và Apache
Cassandra cùng nhau nơi Kafka có thể được sử dụng cho dữ liệu phát trực tuyến sắp
tới in, Spark cho phép tính toán và cơ sở dữ liệu Cassandra NoSQL để lưu trữ dữ liệu
tính toán kết quả.
Đối với các nhà cung cấp giải pháp CNTT, Apache Spark là một lá bài quan

trọng trong việc sử dụng các công nghệ cốt lõi để xây dựng những data warehouses
hiện đại. Đây là một phân khúc lớn trong ngành IT có khả năng thu về hàng tỉ đô
doanh thu hằng năm. Spark đưa ra một khái niệm mới mang nhiều hứa hẹn trong
tương lai đó là data lakes. Đây là một nơi lưu trữ một lượng dữ liệu khổng lồ với nhiều
định dạng khác nhau và được truy vấn để xử lý khi cần thiết. Data lakes đưa ra một
framework thương mại có thể tạo ra một môi trường lưu trữ vô hạn bất kỳ loại dữ liệu
nào.

21


Tài liệu tham khảo

TÀI LIỆU THAM KHẢO
[1] />[2] />utm_source=infoq&utm_medium=related_content_link&utm_campaign=relatedConte
nt_articles_clk
[3] />[4] />[5] Learning Spark by Matei Zaharia, Patrick Wendell, Andy Konwinski, Holden
Karau

22



×