Tải bản đầy đủ (.pdf) (81 trang)

Phân tích hành vi sử dụng dịch vụ viễn thông của khách hàng dựa trên thuật toán phân cụm đưa ra chính sách khuyến mại về sản phẩm và theo phân khúc khách hàng

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 (2.26 MB, 81 trang )

ĐẠI HỌC QUỐC GIA HÀ NỘI
TRƯỜNG ĐẠI HỌC CƠNG NGHỆ

HỒNG ANH DŨNG

PHÂN TÍCH HÀNH VI SỬ DỤNG DỊCH VỤ VIỄN THƠNG
CỦA KHÁCH HÀNG DỰA TRÊN
THUẬT TỐN PHÂN CỤM ĐƯA RA CHÍNH SÁCH
KHUYẾN MẠI VỀ SẢN PHẨM VÀ THEO PHÂN KHÚC
KHÁCH HÀNG
Ngành: Cơng Nghệ Thơng Tin
Chun ngành: Khoa Học Máy Tính
Mã Số: 8480101.01

LUẬN VĂN THẠC SĨ CÔNG NGHỆ THÔNG TIN

NGƯỜI HƯỚNG DẪN KHOA HỌC: TS. TRẦN TRÚC MAI

TS. NGUYỄN ĐÌNH HĨA

Hà nội – 2020


LỜI CẢM ƠN
Trước tiên tôi xin dành lời cảm ơn chân thành và sâu sắc đến thầy giáo,
TS Trần Trúc Mai, người đã định hướng về mục tiêu và cách thức thực hiện đề
tài. TS Nguyễn Đình Hóa – người đã hướng dẫn, khuyến khích, chỉ bảo và tạo
cho tơi những điều kiện tốt nhất từ khi bắt đầu cho tới khi hồn thành nhiệm
vụ và đề tài của mình.
Tơi xin dành lời cảm ơn chân thành tới các thầy cô giáo khoa Công nghệ
thông tin, trường Đại học Công nghệ, ĐHQGHN đã tận tình đào tạo, cung cấp


cho tơi những kiến thức vô cùng quý giá và đã tạo điều kiện tốt nhất cho tơi
trong suốt q trình học tập, nghiên cứu tại trường.
Đồng thời tôi xin cảm ơn tất cả những người thân u trong gia đình tơi
cùng tồn thể bạn bè những người đã ln giúp đỡ, động viên tơi những khi
vấp phải những khó khăn, bế tắc.
Cuối cùng, tôi xin chân thành cảm ơn các đồng nghiệp của tơi tại Trung
Tâm Phân Tích Dữ Liệu – Viettel, đã giúp đỡ, tạo điều kiện thuận lợi cho tơi
học tập và nghiên cứu chương trình thạc sĩ tại Đại học Công nghệ, Đại học
Quốc Gia Hà Nội.

2


LỜI CAM ĐOAN
Tôi xin cam đoan rằng luận văn thạc sĩ cơng nghệ thơng tin “PHÂN

TÍCH HÀNH VI SỬ DỤNG DỊCH VỤ VIỄN THƠNG CỦA KHÁCH
HÀNG DỰA TRÊN THUẬT TỐN PHÂN CỤM ĐƯA RA CHÍNH
SÁCH KHUYẾN MẠI VỀ SẢN PHẨM VÀ THEO PHÂN KHÚC
KHÁCH HÀNG” là cơng trình nghiên cứu của riêng tôi, không sao chép lại
của người khác. Trong toàn bộ nội dung của luận văn, những điều đã được
trình bày hoặc là của chính cá nhân tơi hoặc là được tổng hợp từ nhiều nguồn
tài liệu. Tất cả các nguồn tài liệu tham khảo đều có xuất xứ rõ ràng và hợp
pháp.
Tơi xin hồn tồn chịu trách nhiệm và chịu mọi hình thức kỷ luật theo
quy định cho lời cam đoan này.
Hà Nội, ngày …. tháng … năm …..

…..


3


Mục Lục
LỜI CẢM ƠN ....................................................................................................................... 2
LỜI CAM ĐOAN ................................................................................................................. 3
Chương 1:
Giới thiệu ....................................................................................................... 7
Chương 2:
Cơng cụ, nền tảng, thuật tốn sử dụng và ứng dụng Phân tích dữ liệu.......... 9
2.1. Các công cụ nền tảng .............................................................................................. 9
2.1.1. Big Data ......................................................................................................... 9
2.1.2. Giới thiệu về Hadoop ................................................................................... 13
2.1.3. Các ứng dụng trên nền tảng Apache Hadoop .............................................. 14
2.1.4. HDFS ........................................................................................................... 16
2.1.5. Đọc ghi dữ liệu trên HDFS .......................................................................... 17
2.1.6. Map-Reduce ................................................................................................. 19
2.1.7. SPARK, nền tảng công cụ và ứng dụng ...................................................... 20
2.2. Giới thiệu về học máy ........................................................................................... 26
2.2.1. Một số khái niệm cơ bản .............................................................................. 27
2.2.2. Các vấn đề trong quá trình thực hiện đề tài ................................................. 30
Chương 3:
Spark và giải thuật rừng ngẫu nhiên song song (Parallel Random Forest PRF)
..................................................................................................................... 32
3.1. Thuật toán rừng ngẫu nhiên .................................................................................. 33
3.2. Giải thuật xử lý song song rừng ngẫu nhiên cho dữ liệu lớn trong nền tảng Spark..
............................................................................................................................... 36
3.2.1. Tối ưu hóa xử lý dữ liệu đồng thời. ............................................................. 37
3.2.2. Tối ưu hóa xử lý tiến trình đồng thời ........................................................... 44
3.2.3. Phân tích phương pháp xử lý task đồng thời ............................................... 49

3.3. Kmeans, tối ưu hóa xử lý Kmeans với Spark. ...................................................... 52
Chương 4:
Triển khai thực nghiệm ................................................................................ 57
4.1. Cơ sở dữ liệu Khách hàng 360 độ ......................................................................... 57
4.2. Mơ hình ứng dụng ................................................................................................. 60
4.2.1. Quá trình Phân cụm dữ liệu huấn luyện: ..................................................... 63
4.2.2. Lựa chọn ngẫu nhiên các thuộc tính và đánh giá:........................................ 67
4.2.3. Thực hiện huấn luyện dữ liệu với mơ hình Parallel RandomForest ............ 67
4.3. Đánh giá hiệu suất: ................................................................................................ 73
4.3.1. Đánh giá thời gian xử lý với nhóm dữ liệu .................................................. 73
4.3.2. Đánh giá thời gian xử lý với từng cụm ........................................................ 73
4.4. Đánh giá hiệu quả thực tế: .................................................................................... 74
KẾT LUẬN VÀ ĐỊNH HƯỚNG NGHIÊN CỨU TIẾP THEO ........................................ 77
TÀI LIỆU THAM KHẢO................................................................................................... 80

4


DANH MỤC HÌNH VẼ
Hình 2.1. Kiến trúc HDFS .............................................................................. 16
Hình 2.2. Luồng đọc dữ liệu trên HDFS ........................................................ 18
Hình 2.3. Luồng ghi dữ liệu trên HDFS ......................................................... 18
Hình 2.4. Mơ hình Map-Reduce...................................................................... 19
Hình 2.5. Cơ chế Map-Reduce........................................................................ 20
Hình 2.6. thành phần của Spark ..................................................................... 22
Hình 2.7. Cơ chế hoạt động của Spark ........................................................... 23
Hình 2.8. Cơ chế hoạt động của Spark và RDD ............................................. 25
Hình 2.9. Zeppelin và phương thức hoạt động ............................................... 26
Hình 2.10. Mơ hình học có giám sát ............................................................... 28
Hình 2.11. Mơ hình học bán giám sát ............................................................ 30

Hình 3.1. Đồ thị vịng DAG được hình thành khi xử lý dữ liệu song song trên
Spark UI. ......................................................................................................... 32
Hình 3.2. Q trình xây dựng thuật tốn rừng ngẫu nhiên RandomForest ... 34
Hình 3.3. Quá trình phân chia dữ liệu theo chiều dọc của các RDDs trong
Spark ............................................................................................................... 38
Hình 3.4. Quá trình xử lý ghép dữ liệu đồng thời của PRF ........................... 40
Hình 3.5. Ví dụ về 3 kịch bản khi phân chia dữ liệu....................................... 42
Hình 3.6. Ví dụ của task DAG cho một cây quyết định của PRF ................... 46
Hình 3.7. Hình dạng cụm dữ liệu được khám phá bởi k-means ..................... 53
Hình 3.8. Thuật tốn Kmeans trong Spark ..................................................... 54
Hình 4.1. Quá trình kết hợp K-Means và RandomForest .............................. 60
Hình 4.2. Tỷ lệ độ đo theo ROC của các tập train, test và validation ........... 69
Hình 4.3. Important Feataures v1 .................................................................. 70
Hình 4.4. ROC - Receiver operating characteristic ....................................... 71
Hình 4.5. Cumulative Gain ............................................................................. 71
Hình 4.6. Tỷ lệ độ chính xác trung bình của các mơ hình cây khác............... 72
Hình 4.7. Phương pháp đo lường kết quả trong thực tế ................................. 74
Hình 4.8. So sánh tỷ lệ triển khai thực tế TG và MHO .................................. 75
Hình 4.9. So sánh tỷ lệ triển khai thực tế MHO và HO .................................. 76

5


DANH MỤC BẢNG
Bảng 3-1: Ví dụ về DSI của PRF.................................................................... 40
Bảng 4-1: Danh mục thuộc tính đánh giá xây dựng C360 ............................. 59
Bảng 4-2: Danh mục thuộc tính được sử dụng ............................................... 63
Bảng 4-3: Giá trị DaviesBouldin .................................................................... 64
Bảng 4-4: Kết quả phân cụm .......................................................................... 64
Bảng 4-5: Phân nhóm khách hàng trên 40 tuổi và dưới 40 tuổi ..................... 66

Bảng 4-6: So sánh tỷ lệ Accuracy giữa Precision, Recall .............................. 69
Bảng 4-7: So sánh thời gian chạy giữa KNN và PRF. ................................... 70

6


Chương 1: Giới thiệu
Trong thời đại ngày nay, để phát triển một doanh nghiệp, ngoài vốn và
nhân lực, “dữ liệu” (data) được coi là nguồn lực không thể thiếu được. Ai cũng
đã từng ngạc nhiên nhận thấy khi mua sắm trực tuyến trên các trang thương
mại điện tử như eBay, Amazon, Sendo hay Tiki, các trang thương mại điện tử
sẽ gợi ý một loạt các sản phẩm có liên quan và phù hợp với nhu cầu của bạn.
Ví dụ khi xem điện thoại, trang mua sắm trực tuyến sẽ gợi ý cho bạn mua thêm
ốp lưng, pin dự phòng; hoặc khi mua áo thun thì sẽ có thêm gợi ý quần jean và
thắt lưng…
Bí ẩn đằng sau các trang web thông minh này là mọi sự chào mời sản
phẩm đều dựa trên các nghiên cứu về sở thích, thói quen của khách hàng cũng
như phân loại được các nhóm khách hàng khác nhau... Vậy những thơng tin để
phân tích này có được từ đâu và có tác động thế nào đến việc sản xuất kinh
doanh của doanh nghiệp? Thứ nhất, dữ liệu khổng lồ về khách hàng có thể có
từ các thông tin mà các doanh nghiệp thu thập trong lúc khách hàng ghé thăm,
tương tác hay mua sắm trên website của mình; dữ liệu này cũng có thể được
mua lại từ các công ty chuyên cung cấp dữ liệu khách hàng. Các thông tin này
không chỉ giúp nhà cung ứng hàng hóa, dịch vụ tăng lợi nhuận cho chính họ
mà còn tăng trải nghiệm mua sắm của người dùng. Một mặt, nhờ q trình tìm
hiểu, phân tích khách hàng, doanh nghiệp có thể tạo ra các sản phẩm đáp ứng
nhu cầu của khách hàng, cũng như xây dựng chính sách phân phối và bán sản
phẩm đến tay người tiêu dùng một cách có hiệu quả nhất. Mặt khác, bản thân
người tiêu dùng có thể tiết kiệm thời gian và yên tâm trong trải nghiệm mua
sắm của mình. Hơn thế nữa, ở tầm ngành và vĩ mô, ứng dụng dữ liệu lớn (Big

Data) có thể giúp các tổ chức và chính phủ dự đốn được tỉ lệ thất nghiệp, xu
hướng nghề nghiệp của tương lai để đầu tư cho những hạng mục đó, hoặc cắt
giảm chi tiêu, kích thích tăng trưởng kinh tế... thậm chí là ra phương án phịng
ngừa trước một dịch bệnh nào đó.
Việc xây dựng và ứng dụng nền tảng Big Data nếu được khai thác hiệu
quả sẽ đem lại những lợi thế cạnh tranh và hiệu quả to lớn trong nhiều lĩnh vực,
đặc biệt trong bối cảnh thị trường dịch vụ tài chính đang bão hịa, trên cơ sở đó
phân tích những ứng dụng của Big Data và các điều kiện nhằm ứng dụng Big
Data cùng với phân tích dữ liệu để sử dụng nguồn tài nguyên hợp lý và tối đa
hóa doanh thu cũng như đưa các mục tiêu kinh doanh gắn liền với hành vi
7


khách hàng, nhằm mang lại cho doanh nghiệp phương án kinh doanh hiệu quả
nhất.
Việc sử dụng và khai thác dữ liệu lớn như một nguồn tài nguyên tương
tự như dầu khí, hay các nguồn tài nguyên khác là phương án để đưa doanh
nghiệp tiếp cận đến người dùng một cách hiệu quả nhất, kết hợp với mục tiêu
kinh doanh để hồn thiện hơn các chính sách, tối đa hóa lợi ích cho người dùng
và tăng trưởng doanh thu bền vững cho doanh nghiệp.
Với đề tài “Phân Tích Hành Vi Sử Dụng Dịch Vụ Viễn Thông

Của Khách Hàng Dựa Trên Thuật Tốn Phân Cụm Đưa Ra Chính
Sách Khuyến Mại Về Sản Phẩm Và Theo Phân Khúc Khách Hàng”
nhằm mục tiêu đưa ứng dụng Phân tích dữ liệu lớn vào khai thác nguồn tài
nguyên đặc biệt – Big Data. Sử dụng các công cụ khai thác Big Data, các công
cụ được sử dụng để lưu trữ và vận hành hệ thống Big Data - Hadoop, các công
cụ xử lý học máy, xử lý dữ liệu lớn như Spark, Zeppelin (Spark ML), ứng dụng
hệ khuyến nghị, học máy và các kỹ thuật phân tích hành vi khách hàng nhằm
đưa ra kết quả phù hợp nhất với từng nhóm đối tượng khách hàng sử dụng dịch

vụ.
Phần cịn lại của luận văn được trình bày theo cấu trúc như sau.
Chương 2 trình bày các khái niệm cơ bản phục vụ cho nghiên cứu của
đề tài, Big Data, các công cụ được sử dụng trong quá trình thực hiện đề tài,
phương thức xây dựng hệ cơ sở dữ liệu khách hàng 360 – là bộ khung dữ liệu
sử dụng xuyên suốt quá trình xây dựng các mơ hình học máy và sử dụng để
đánh giá các mơ hình học máy, các thuật tốn sẽ sử dụng trong q trình thực
hiện. Tính ứng dụng khi sử dụng thư viện Spark ML và các điểm ưu việt của
Spark khi sử dụng để xây dựng và ứng dụng cho giải thuật rừng ngẫu nhiên
song song.
Chương 3 sẽ trình bày về q trình thực hiện, các phiên bản xây dựng
mơ hình và kết quả thực nghiệm.
Cuối cùng sẽ là phần kết luận, ý nghĩa phương pháp triển khai, các kết
quả đạt được và định hướng nghiên cứu tiếp theo.

8


Chương 2: Cơng cụ, nền tảng, thuật tốn sử dụng
và ứng dụng Phân tích dữ liệu
2.1. Các cơng cụ nền tảng
Với sự xuất hiện liên tục của nhiều phương thức phổ biến thông tin mới,
cùng sự gia tăng của công nghệ điện toán đám mây và Internet vạn vật (IoT),
dữ liệu không ngừng tăng lên với tốc độ cao. Quy mơ dữ liệu tồn cầu liên tục
tăng với tốc độ 2 lần sau mỗi hai năm [1]. Giá trị ứng dụng của dữ liệu trong
mọi lĩnh vực đang trở nên quan trọng hơn bao giờ hết. Tồn tại một lượng lớn
thơng tin đáng giá trong dữ liệu có sẵn. Sự xuất hiện của thời đại dữ liệu lớn
cũng đặt ra những vấn đề và thách thức nghiêm trọng bên cạnh những lợi ích
rõ ràng. Do nhu cầu kinh doanh và áp lực cạnh tranh, hầu hết mọi doanh nghiệp
đều có yêu cầu cao về xử lý dữ liệu theo thời gian thực và hợp lệ [2]. Do đó,

vấn đề đầu tiên là làm thế nào để khai thác thông tin có giá trị từ dữ liệu khổng
lồ một cách hiệu quả và chính xác. Đồng thời, dữ liệu lớn nắm giữ các đặc
điểm như số chiều cao, độ phức tạp và nhiễu. Dữ liệu khổng lồ thường chứa
các thuộc tính được tìm thấy trong các biến đầu vào khác nhau ở hàng trăm
hoặc hàng nghìn cấp, trong khi mỗi một trong số chúng có thể chứa một ít
thơng tin. Vấn đề thứ hai là chọn các kỹ thuật thích hợp có thể dẫn đến hiệu
suất phân loại tốt cho tập dữ liệu chiều nhiều chiều. Xem xét các sự kiện nói
trên, khai thác và phân tích dữ liệu cho dữ liệu quy mơ lớn đã trở thành một
chủ đề nóng trong học thuật và nghiên cứu công nghiệp. Tốc độ khai thác và
phân tích dữ liệu đối với dữ liệu quy mô lớn cũng đã thu hút nhiều sự quan tâm
của cả giới học thuật và công nghiệp. Các nghiên cứu về khai thác dữ liệu phân
tán và song song dựa trên nền tảng điện toán đám mây đã đạt được nhiều thành
tựu thuận lợi [3],[4]. Hadoop [5] là một nền tảng đám mây nổi tiếng được sử
dụng rộng rãi trong khai thác dữ liệu.

2.1.1.

Big Data

Khái niệm Big Data
Big Data (Dữ liệu lớn) là thuật ngữ mơ tả q trình xử lý dữ liệu trên
một tập dữ liệu lớn bao gồm cả dữ liệu có cấu trúc hay khơng có cấu trúc. Big
Data rất quan trọng với các tổ chức, doanh nghiệp thì dữ liệu ngày một lớn và
càng nhiều dữ liệu sẽ giúp các phân tích càng chính xác hơn. Việc phân tích
9


chính xác này sẽ giúp doanh nghiệp đưa ra các quyết định giúp tăng hiệu quả
sản xuất, giảm rủi ro và chi phí.
Những dữ liệu này tới từ mọi nơi – ví dụ như từ những chiếc cảm biến

để thu thập thông tin thời tiết, những thông tin được cập nhật trên các trang
web mạng xã hội, những bức ảnh và video kỹ thuật số được đưa lên mạng, dữ
liệu giao dịch của các hoạt động mua sắm trên mạng... – dưới mọi hình thức
khác nhau (có cấu trúc, phi cấu trúc, bán cấu trúc). Đó chính là dữ liệu lớn.
Big Data là thuật ngữ dùng để chỉ một tập hợp dữ liệu rất lớn và hỗn tạp
đến nỗi những cơng cụ, ứng dụng xử lí dữ liệu truyền thống khó có thể nào
đảm đương được. Bằng việc tổng hợp một lượng thông tin lớn từ các nguồn
khác nhau khiến cho Big Data trở thành một công cụ rất mạnh cho việc ra các
quyết định kinh doanh, nhận diện hành vi và xu hướng nhanh hơn và tốt hơn
rất nhiều so với cách thức truyền thống. Big Data được nhận diện trên ba khía
cạnh chính: Dữ liệu (Data), Cơng nghệ (Technology), Quy mô (Size). Thứ
nhất, dữ liệu (data) bao gồm các dữ liệu thuộc nhiều định dạng khác nhau như
hình ảnh, video, âm nhạc… trên Internet [6]; gồm các dữ liệu thu thập từ các
hệ thống cung ứng dịch vụ cơng nghệ thơng tin có kết nối với hệ thống máy
chủ; dữ liệu của khách hàng ở các ứng dụng thơng minh và các thiết bị có kết
nối mạng; dữ liệu của người dùng để lại trên các nền tảng của mạng xã hội,
việc ứng dụng khai phá dữ liệu lớn sẽ tạo thành quy trình khép kín, việc bổ
sung dữ liệu và huấn luyên được diễn ra liên tục [7]. Do các dữ liệu được cập
nhật qua các thiết bị kết nối mạng từng giờ, từng phút, từng giây và đến từ
nhiều nguồn khác nhau nên khối lượng dữ liệu này là rất lớn (Big). Hiện nay,
Big Data được đo lường theo đơn vị Terabytes (TB), Petabytes (PB) và
Exabytes (EB). Có thể dễ dàng lấy một vài ví dụ như Walmart xử lý hơn 1 triệu
giao dịch của khách hàng mỗi giờ, dữ liệu nhập vào ước tính hơn 2,5 PB;
Facebook có hơn 1.9 tỷ người dùng đồng thời, có hàng trăm server xử lý và
lưu trữ dữ liệu [8]. Twitter là một hệ thống mạng xã hội với 1,3 tỷ người dùng
đang hoạt động và trong giai đoạn đầu [9]. Yếu tố nhận diện thứ hai của Big
Data là công nghệ (technology). Công nghệ thường được thiết kế và hình thành
một hệ sinh thái từ dưới đi lên để có khả năng xử lý các dữ liệu lớn và phức
tạp. Một trong những hệ sinh thái mạnh nhất hiện nay phải kể đến Hadoop với
khả năng xử lý dữ liệu có thể được tăng lên cùng mức độ phức tạp của dữ liệu,

năng lực này là một công cụ vô giá trong bất kỳ ứng dụng Big Data nào. Yếu
tố nhận diện thứ ba của Big Data là quy mơ dữ liệu. Hiện nay vẫn chưa có câu
10


trả lời chính xác cho câu hỏi dữ liệu thế nào gọi là lớn. Theo ngầm hiểu thì khi
dữ liệu vượt quá khả năng xử lý của các hệ thống truyền thống thì sẽ được xếp
vào Big Data.
Việc bản thân các doanh nghiệp cũng đang sở hữu Big Data của riêng
mình đã trở nên phổ biến. Chẳng hạn, như trang bán hàng trực tuyến eBay thì
sử dụng hai trung tâm dữ liệu với dung lượng lên đến 40 petabyte để chứa
những truy vấn, tìm kiếm, đề xuất cho khách hàng cũng như thơng tin về hàng
hóa của mình. Hay nhà bán lẻ online Amazon.com phải xử lí hàng triệu hoạt
động mỗi ngày cũng như những yêu cầu từ khoảng nửa triệu đối tác bán hàng.
Tương tự, Facebook cũng phải quản lí 50 tỉ bức ảnh từ người dùng tải lên [10],
YouTube hay Google thì phải lưu lại hết các lượt truy vấn và video của người
dùng cùng nhiều loại thông tin khác có liên quan. Theo kết quả khảo sát được
thực hiện bởi Qubole - công ty hàng đầu về cung cấp giải pháp, nền tảng quản
lí dữ liệu hạ tầng đám mây phục vụ phân tích - và bởi Dimensional Research một tổ chức nghiên cứu thị trường công nghệ, lĩnh vực chăm sóc khách hàng,
kế hoạch cơng nghệ thơng tin, quy trình bán hàng và hoạt động tài chính là các
lĩnh vực thu lợi nhiều nhất từ Big Data. Qua đó, thấy được là mục đích khai
thác Big Data của các nhà cung ứng hàng hóa, dịch vụ tồn cầu là hướng đến
chăm sóc khách hàng, phân tích dữ liệu khách hàng để phát triển sản phẩm,
dịch vụ; ứng dụng thông minh để tăng trải nghiệm của khách hàng và giữ chân
khách hàng khi sự cạnh tranh ngày càng gay gắt giữa các nhà cung ứng ở hầu
hết các lĩnh vực kinh doanh. Với các công cụ phân tích, đặc biệt là cơng cụ
phân tích dự báo (Predictive Analytics) và khai thác dữ liệu (Data mining) [19],
Big Data giúp các doanh nghiệp đo lường, phân tích các vấn đề liên quan đến
sản phẩm, phát hiện các cơ hội và nguy cơ rủi ro, đồng thời, dự báo doanh thu
từ hoạt động kinh doanh hàng ngày.

Big Data có thể bao gồm những kiểu dữ liệu sau:
Dữ liệu của các hệ thống doanh nghiệp truyền thống bao gồm các dữ
liệu từ hệ thống quản lý khách hàng, các giao dịch của hệ thống tài chính doanh
nghiệp, các dữ liệu kế tốn, thơng tin giao dịch của khách hàng và doanh
nghiệp...

11


Dữ liệu sinh tự động hoặc do cảm biết: Bao gồm dữ liệu thông tin khách
hàng sử dụng dịch vụ, lịch sử truy cập các trang web, các dữ liệu ghi lịch sử
thiết bị sử dụng…
Dữ liệu mạng xã hội- bao gồm các dữ liệu được sinh ra từ quá trình sử
dụng mạng xã hội của người dùng như ảnh, video, thông tin trên Facebook,
Twitter, Instagram…
Đặc điểm của Big Data
Ba đặc điểm chính của Big Data bao gồm Dung lượng (volume), Tốc độ
(velocity), Tính đa dạng (variety). Dung lượng của Dữ liệu lớn đang tăng lên
mạnh mẽ từng ngày [10].Theo thông tin được Google công bố, cứ mỗi 1 giây,
87000 từ khóa tìm kiếm được thực hiện, hàng petabyte dữ liệu được tạo ra trên
toàn thế giới. Về Tốc độ (Velocity) phản ánh tốc độ mà tại đó dữ liệu được
phân tích bởi các cơng ty để cung cấp một trải nghiệm người dùng tốt hơn. Với
sự ra đời của các kỹ thuật, công cụ, ứng dụng lưu trữ, nguồn dữ liệu liên tục
được bổ sung với tốc độ nhanh chóng. Về Tính đa dạng (Variety) của dữ liệu,
việc đa dạng hóa các nguồn dữ liệu đầu vào, từ dữ liệu có cấu trúc, bán cấu
trúc cho đến dữ liệu khơng có cấu trúc, từ các loại dữ liệu dạng giao dịch cho
đến các dữ liệu dạng văn bản sinh ngẫu nhiên trên internet.
Độ lớn dữ liệu (volume): Dữ liệu sinh ra tự động (machine-generated
data) có số lượng nhiều hơn rất nhiều so với dữ liệu truyền thống. Dữ liệu có
thể sinh ra hàng TB trong thời gian ngắn và dữ liệu lưu trữ có thể lên đến

Petabytes. Cách đây vài năm, việc lưu trữ dữ liệu lớn là một vấn đề khó khăn.
Tuy nhiên hiện nay, với việc phần cứng ngày càng rẻ cộng thêm công nghệ lưu
trữ đám mây thì việc xác định giá trị cần thiết từ tập dữ liệu lớn mới là vấn đề
cốt yếu.
Tốc độ xử lý dữ liệu (velocity): Dữ liệu lớn không đồng nghĩa với xử lý
chậm. Ngày nay các hệ thống media cần xử lý nhanh và có phản hồi chấp nhận
được với người dùng. Trong việc xử lý dữ liệu lớn ta luôn cần quan tâm đến
Tốc độ xử lý dữ liệu
Tính đa dạng dữ liệu (variety): Với việc thu thập từ nhiều nguồn dữ liệu
khác nhau (web, mobile…), Big Data khơng chỉ có dữ liệu kiểu truyền thống
dạng schema mà ngày nay cịn có nhiều loại dữ liệu khác như dạng image,
12


video, cấu trúc dữ liệu phức tạp khác… Big Data có thể xử lý dữ liệu có cấu
trúc, phi cấu trúc và bán cấu trúc.
Để đáp ứng được về các tính chất đó của Big Data, các cơng ty lớn trên
thế giới như Amazon, Google, FaceBook đều sử dụng nền tảng Hadoop làm
công cụ lưu trữ và xử lý dữ liệu.

2.1.2.

Giới thiệu về Hadoop

Apache Hadoop [11] là một framework cho phép xử lý phân tán một tập
dữ liệu lớn qua cụm (cluster) các máy tính bằng việc sử dụng mơ hình lập trình
đơn giản. Được thiết kế để có thể giãn nở thực hiện trên một đến hàng nghìn
máy tính là nơi tính tốn và lưu trữ cục bộ. Một điểm mới của Apache Hadoop
là thay vì thiết đặt cơ chế sẵn sàng cao (High Availability - HA) bằng phần
cứng thì bản thân Hadoop được thiết kế để phát hiện và quản lý lỗi tại tầng ứng

dụng, do đó sẽ đưa ra dịch vụ có tính sẵn sàng cao HA tại cụm các máy tính
nơi có thể xảy ra lỗi bằng cách thiết đặt thêm một ứng dụng (node) dưới dạng
hoạt động hoặc chế độ chờ (active/standby).
Apache Hadoop được tạo bởi 2 thành phần bao gồm một hệ thống file
phân tán Hadoop Distributed Filesystem (HDFS) và một layer để tính tốn theo
mơ hình xử lý Map Reduce. Hadoop là một open source cho phép xử lý dữ liệu
theo lô và có khả năng xử lý khối lượng dữ liệu cực lớn.
Hadoop sử dụng một cụm các server thông thường để lưu trữ, tính tốn.
Việc tính tốn trên Hadoop Distributed Filesystem (HDFS) được thực hiện một
cách song song và trừu tượng với các developer giúp họ tránh được việc lập
trình mạng và xử lý bài tốn đồng bộ phức tạp. Khơng giống như nhiều hệ
thống phân tán khác, Hadoop cung cấp việc xử lý logic trên nơi lưu dữ liệu mà
không phải lấy dữ liệu từ các máy khác giúp tăng hiệu năng một cách mạnh
mẽ.
Hadoop bao gồm những module sau:
Hadoop Common: Các tiện ích cơ bản hỗ trợ Hadoop
Hadoop Distributed File System (HDFS™): Hệ thống file phân tán
cung cấp khả năng truy vấn song song tối đa hóa theo đường truyền truy cập
bởi ứng dụng
13


Hadoop YARN: Framework quản lý lập lịch tác vụ và tài nguyên trên
cụm.
Hadoop MapReduce: Hệ thống YARN-based để xử lý tập dữ liệu lớn.

2.1.3.

Các ứng dụng trên nền tảng Apache Hadoop


Apache phát triển một số ứng dụng để việc sử dụng MapReduce một
cách dễ dàng hơn đồng thời hỗ trợ việc ghi và lấy dữ liệu trên HDFS được đơn
giản. Sau đây là một số ứng dụng thông dụng chúng ta cần quan tâm đến:
Apache Hive
Hive tạo ra một cơ sở dữ liệu quan hệ dạng trừu tượng cho phép các
developer có thể truy vấn dữ liệu bằng SQL. Thực chất đây là việc thi hành
một hoặc nhiều job MapReduce trên các cụm.
Hive thực hiện việc tạo ra một schema dạng bảng trên tập các file đang
tồn tại trên HDFS và quản lý các bản ghi được trích xuất khi chạy một query.
Bản thân dữ liệu trên đĩa không thay đổi mà chỉ được lấy ra tại thời điểm query.
Các câu lệnh HiveQL được dịch và thực thi trên các lớp map và reduce có sẵn
tương ứng với câu lệnh SQL đó.
Apache Pig
Giống như Hive, Apache Pig được tạo ra để đơn giản việc sử dụng
MapReduce job, mà không cần thiết phải viết Java Code. Thay vào đó, người
dùng sẽ viết các job xử lý dữ liệu trên ngôn ngữ high-level script mà Pig đã
xây dựng. Trong trường hợp cần thao tác xử lý dữ liệu đặc biệt mà Pig chưa hỗ
trợ chúng ta có thể hồn tồn mở rộng Pig script bằng Java.
Apache Sqoop
Việc chuyển đổi dữ liệu từ dữ liệu quan hệ sang dữ liệu trên Hadoop là
một trong vấn đề quan trọng và phổ biến hiện nay. Sqoop viết tắt của “SQL to
Hadoop” thực hiện chuyển đổi dữ liệu 2 chiều giữa Hadoop và hầu hết các cơ
sở dữ liệu sử dụng JDBC driver. Sử dụng MapReduce, Sqoop thực hiện các
hoạt động một cách song song mà không cần phải viết code. Sqoop hỗ trợ các
plugin cho từng loại database cụ thể cung cấp các đặc tính cơ bản của hệ quản
trị cơ sở dữ liệu quan hệ đó. Hiện nay Sqoop có hỗ trợ sẵn các khai kết nối
14


connectors (hỗ trợ trực tiếp) cho MySQL và PostgreSQL và kèm theo một số

connector free cài đặt thêm để hỗ trợ Teradata, Netezza, SQL server và Oracle.
Apache Flume

Apache Flume là một hệ thống để tập hợp các dữ liệu streaming được
thiết kế để truyền khối lượng lớn dữ liệu vào hệ thống ví dụ như Hadoop. Nó
hỗ trợ kết nối và ghi dữ liệu trực tiếp tới HDFS.
Apache Oozie

Trong thực tế, sẽ có rất nhiều job Map Reduce được chạy do đó Apache
Oozie được sinh ra với mục đích trở thành một workflow engine để điều phối
các job này trên các Hadoop cluster. Workflow có thể hoạt động dựa trên cơ
chế thời gian hoặc cơ chế sự kiện. Oozie là một REST service để quản lý
workflow và trạng thái hoạt động của luồng.
Apache Whirr

Apache Whirr được xây dựng để đơn giản hóa việc tạo và deploy các
clusters trên mơi trường cloud ví dụ như Amazon’s AWS.
Apache HBase

Apache HBase là cơ sở dữ liệu phân tán (non relational), độ trễ thấp
được xây dựng trên nền HDFS. HBase đưa ra một mô hình dữ liệu linh hoạt
có các thuộc tính scale-out với API rất đơn giản. Dữ liệu trên HBase được lưu
trữ dưới dạng bán cột (semi-columnar) phân chia bởi các hàng trong các region.
Các bảng trên HBase có thể lên tới hàng trăm terabyte hoặc một số trường hợp
lên đến petabytes. Hiện nay, HBase được sử dụng để phục vụ một khối lượng
lớn dữ liệu trong các hệ thống real-time.
Apache ZooKeeper

Apache ZooKeeper hỗ trợ các tính năng của hệ thống phân tán. Trong
thực tế nhiều dự án sử dụng Hadoop có sử dụng ZooKeeper để hỗ trợ các tính

năng cần thiết cho hệ thống phân tán (leader election, locking, group
membership, service location, config-uration services)
15


Apache HCatalog

Apache HCatalog là một dịch vụ cung cấp khả năng chia sẻ schema và
các dịch vụ truy cập dữ liệu giữa các ứng dụng trong cùng một hệ thống. Về
lâu dài, HCatalog sẽ cung cấp việc kết hợp các tool ví dụ như Hive và Pig để
chúng có thể chia sẻ các thông tin về dataset và metadata.

2.1.4.

HDFS

Hadoop Distributed File System (HDFS) [12] là một hệ thống file phân
tán được thiết kế để chạy trên phần cứng thông thường. HDFS cũng tương tự
những hệ thống file phân tán hiện có. Tuy nhiên, sự khác biệt ở đây là HDFS
có khả năng chịu lỗi cao (fault-tolerant) và được thiết kế để deploy trên các
phần cứng rẻ tiền. HDFS cung cấp khả năng truy cập high throughput từ ứng
dụng và thích hợp với các ứng dụng có tập dữ liệu lớn.

Hình 2.1. Kiến trúc HDFS
HDFS có kiến trúc master-worker, (Hình 2.1). Một cụm HDFS (HDFS
cluster) bao gồm các Namenode và Datanode. Dữ liệu được lưu trên các block.

16



Một cụm HDFS bao gồm hai loại nút (node) hoạt động theo mơ hình nút chủ nút thợ (master-worker):
Một cụm HDFS có 1 namenode (master – nút chủ)
Một cụm HDFS có một hoặc nhiều các datanode (worker - nút thợ)
Namenode quản lý các namespace filesystem. Nó quản lý một filesystem
tree và các metadata cho tất cả các file và thư mục trên tree. Thông tin này
được lưu trữ trên đĩa vật lý dưới dạng không gian tên ảnh và nhật ký (edit log).
Namenode cịn quản lý thơng tin các khối (block) của một tập tin được lưu trên
những datanodes nào.
HDFS đưa ra một không gian tên cho phép dữ liệu được lưu trên tập tin.
Trong đó một tập tin được chia ra thành một hay nhiều khối (block) và các
block được lưu trữ trên một tập các DataNode. Namenode thực thi các hoạt
động trên hệ thống quản trị không gian tên tập tin như mở, đóng, đổi tên tập
tin và thư mục. Namenode còn quyết định việc kết nối các khối với các
DataNode. Các DataNode có tính năng xử lý các yêu cầu về đọc ghi từ máy
khách. Ngoài ra các DataNode cịn thực hiện việc tạo, xóa, lặp các khối theo
sự hướng dẫn của DataNode
Một phần mềm được thiết kế bao gồm NameNode và DataNode có thể
chay trên những máy tính thơng thường. u cầu duy nhất chỉ là chạy hệ điều
hành GNU/Linux. HDFS được xây dựng trên ngôn ngữ Java nên bất kỳ máy
nào hỗ trợ Java đều có thể chạy phần mềm thực thi NameNode và DataNode.

2.1.5.

Đọc ghi dữ liệu trên HDFS

a. Đọc dữ liệu
Với khối dữ liệu (block) ID và địa chỉ IP đích máy chủ (host) của
Datanode, máy khách (client) có thể liên lạc với các Datanode còn lại để đọc
các khối (block) cần thiết. Quá trình này lặp lại cho đến khi tất cả các khối
trong file được đọc và máy khách đóng luồng đọc file trực tuyến.


17


Hình 2.2. Luồng đọc dữ liệu trên HDFS
Hình 2.2 mơ tả quá trình đọc dữ liệu của NameNode từ DataNode thơng
qua các API của Hadoop.
b. Ghi dữ liệu

Hình 2.3. Luồng ghi dữ liệu trên HDFS
18


Việc ghi dữ liệu sẽ phức tạp hơn việc đọc dữ liệu đối với hệ thống HDFS.
Trong Hình 2.3 ban đầu, máy khách gửi yêu cầu đển tạo một file bằng việc sử
dụng Hadoop FileSystem APIs. Một yêu cầu được gửi đến namenode để tạo
tập tin metadata nếu user có quyền tạo. Thông tin Metadata cho tập tin mới đã
được tạo; tuy nhiên lúc này chưa có một block nào liên kết với tập này. Một
tiến trình trả kết quả được gửi lại cho máy khách xác nhận yêu cầu tạo file đã
hồn thành và bắt đầu có thể ghi dữ liệu. Ở mức API, một đối tượng Java là
stream sẽ trả về. Dữ liệu của máy khách sẽ ghi vào luồng này và được chia ra
thành các gói, lưu trong queue của bộ nhớ. Một tiến trình riêng biệt sẽ liên hệ
với namenode để yêu cầu một tập datanode phục vụ cho việc sao lưu dữ liệu
vào các khối (block). Máy khách sẽ tạo một kết nối trực tiếp đến datanode đầu
tiên trong danh sách. Datanode đầu tiên đó sẽ kết nối lần lượt đến các datanode
khác. Các gói dữ liệu được ghi dần vào các datanode. Mỗi datanode sẽ phản
hồi dữ liệu ghi thành công hay không. Quá trình này kết thúc khi tồn bộ các
gói dữ liệu đã được lưu tại các khối (block) của datanode

2.1.6.


Map-Reduce

Map-reduce [13] là mơ hình dùng để xử lý dữ liệu. Trong quá trình xử
lý dữ liệu, MapReduce sẽ chia ra 2 giai đoạn: giai đoạn Map và giai đoạn
Reduce. Cả hai giai đoạn này đều có đầu vào và đầu ra ở dạng key, value.
Người lập trình cần viết 2 hàm chức năng để có thể xử lý dữ liệu đó là hàm
chức năng Map và hàm chức năng Reduce.

Hình 2.4. Mơ hình Map-Reduce
Về mặt định nghĩa thuật tốn, ta có thể mô tả Map-Reduce như sau:
19


Input: dữ liệu dưới dạng Key → Value
Lập trình viên viết 2 thủ tục:
Map(k, v) → <k', v'>*
Reduce(k', <v'>*) → <k', v''>*
Map biến mỗi key k thu được bằng thành cặp <k', v'>. Reduce nhận đầu vào là
khoá k' và danh sách cách giá trị v' và trả về kết quả là cặp <k', v''>.

Hình 2.5. Cơ chế Map-Reduce
Ví dụ với hình mơ tả ở trên thì Map trả về danh sách: <Bear, 1>, <Bear, 1> còn
Reduce nhận kết quả trên và trả về <Bear, 2>.

2.1.7.

SPARK, nền tảng công cụ và ứng dụng

Hadoop là một nền tảng đám mây nổi tiếng được sử dụng rộng rãi trong

khai thác dữ liệu. Trong phạm vi ứng dụng khai phá dữ liệu, khai thác tiềm
năng dữ liệu lớn, một số thuật toán học máy đã được đề xuất dựa trên mơ hình
MapReduce. Tuy nhiên, khi các thuật toán này được triển khai dựa trên
MapReduce, các kết quả trung gian thu được trong mỗi lần lặp được ghi vào
Hệ thống tệp phân tán Hadoop (HDFS) và được tải từ đó. Điều này tốn nhiều
thời gian cho các hoạt động I / O của đĩa và cũng tốn nhiều tài nguyên để truyền
thông và lưu trữ. Apache Spark[24] là một nền tảng đám mây tốt khác phù hợp
cho khai thác dữ liệu lớn. So với Hadoop, mơ hình Tập dữ liệu phân tán linh
hoạt (RDD) và mơ hình Đồ thị vịng có hướng (DAG) được xây dựng trên
khung tính tốn bộ nhớ được hỗ trợ cho Spark. Cho phép lưu trữ một bộ nhớ
20


cache dữ liệu trong bộ nhớ và thực hiện tính toán và lặp lại cho cùng một dữ
liệu trực tiếp từ bộ nhớ. Nền tảng Spark tiết kiệm một lượng lớn thời gian hoạt
động I / O của đĩa. Do đó, Spark phù hợp hơn cho việc khai thác dữ liệu với
tính tốn lặp đi lặp lại. Thuật tốn Rừng ngẫu nhiên (RF) [14] là một thuật toán
khai thác dữ liệu phù hợp cho dữ liệu lớn. RF là một thuật tốn học tập hợp sử
dụng khơng gian con đặc trưng để xây dựng mơ hình. Hơn nữa, tất cả các cây
quyết định có thể được đào tạo đồng thời, do đó nó cũng thích hợp cho việc xử
lý song song hóa. Apache Spark Mllib[22] đã song song hóa thuật tốn RF
(được gọi là Spark-MLRF) dựa trên tối ưu hóa song song dữ liệu để cải thiện
hiệu suất của thuật toán.
a. Khái niệm Apache Spark
Theo [24], Spark là một ứng dụng mã nguồn mở được xây dựng được
xây dựng để xử lý dữ liệu phân tán, nhằm tăng tốc độ xử lý, dễ sử dụng và linh
hoạt. Sử dụng để xử lý dữ liệu lớn một cách nhanh chóng, bằng cách cho phép
thực hiện tính tốn trên cụm tạo ra khả năng phân tích dữ liệu tốc độ cao khi
đọc và ghi dữ liệu. Tốc độ xử lý của Spark có được do việc tính tố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 tốn được thực

hiện ở bộ nhớ trong (in-memories) hay thực hiện hồn tồn trên RAM. Spark
hỗ trợ nhiều ngơn ngữ lập trình được sử dụng rộng rãi (Python, Java, Scala và
R), bao gồm các thư viện cho các tác vụ đa dạng khác nhau, từ SQL đến phát
trực tuyến và học máy, và chạy ở mọi nơi từ máy tính xách tay đến một cụm
hàng nghìn máy chủ. Điều này hỗ trợ cho Spark trở thành một hệ thống dễ dàng
bắt đầu và mở rộng quy mô để xử lý dữ liệu lớn hoặc quy mô cực kỳ lớn..
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ó hồn tồn khơng phụ thuộc vào bất
cứ một hệ thống file nào.
Để chạy nhanh hơn, Spark cung cấp: Mơ hình tối ưu các tính tốn đồ thị
một cách tùy ý (optimize arbitrary operator graphs). Hỗ trợ tính tốn tại bộ nhớ
trong. Spark cung cấp bộ API hỗ trợ các ngôn ngữ Scalar, Java, Python. Spark
21


hỗ trợ các thư viện ứng dụng cơ bản của học máy như Rừng ngẫu nhiên
(Random Forest), cây quyết định (Decision Tree)… hay các thư viện phân cụm
(KMeans).
b. Resilient Distributed Datasets - RDD
Resilient Distributed Datasets (RDD) [25] 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, hỗ trợ tính
tốn xử lý trong bộ nhớ. Mỗi nhóm dữ liệu đối tượng trong RDD được chia ra
thành nhiều phần vùng vật lý. Có thể được tính tốn trên các nút 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. Thông

thường, RDD chỉ cho phép đọc, phân mục tập hợp của các bản ghi. RDDs có
thể được tạo ra qua điều khiển xác định trên dữ liệu trong bộ nhớ hoặc RDDs,
RDD là một tập hợp có khả năng chịu lỗi mỗi thành phần có thể được tính tốn
song song.
c. Thành phần của Spark

Hình 2.6. thành phần của Spark
Hình 2.6 mơ tả các thành phần cơ bản của Spark, cụ thể:
Spark Core: là lõi ứng dụng (engine) thực thi chung làm nền tảng cho Spark.
Tất cả các chức năng khác được xây dựng dựa trên nền tảng là Spark Core.
22


Cung cấp khả năng tính tốn trên bộ nhớ RAM và cả bộ dữ liệu tham chiếu
trong các hệ thống cho phép mở rộng bộ nhớ vật lý (external storage).
Spark SQL: là một thành phần nằm trên Spark Core, giới thiệu một khái niệm
trừu tượng hóa dữ liệu mới gọi là SchemaRDD, cung cấp hỗ trợ cho dữ liệu có
cấu trúc và bán cấu trúc.
Spark Streaming: tận dụng khả năng lập lịch memory-base của Spark Core
để thực hiện streaming analytics. Nó lấy dữ liệu theo mini-batches và thực hiện
các phép biến đổi RDD (Bộ dữ liệu phân tán có khả năng phục hồi) trên các
mini-batches dữ liệu đó.
MLlib (Machine Learning Library): là một framework machine learning
phân tán trên Spark tận dụng khả năng tính tốn tốc độ cao nhờ distributed
memory-based của kiến trúc Spark.
GraphX: là một framework xử lý đồ thị phân tán. Nó cung cấp một API để
thực hiện tính tốn biểu đồ có thể mơ hình hóa các biểu đồ do người dùng xác
định bằng cách sử dụng API đã được tối ưu sẵn.
Hoạt động


Hình 2.7. Cơ chế hoạt động của Spark
Chương trình Spark chạy như một bơ process độc lập trên mỗi cluster. Các
process này được điều khiển bởi SparkContext trong chương trình điều khiển
(Driver program), được thể hiện trong Hình 2.7. SparkContext sẽ kết nối với
một số loại Cluster Manager (các trình quản lý cụm chạy standalone của Spark
hoặc YARN hoặc MESOS) trình quản lý việc phân bố tài nguyên cho các ứng
dụng để xác định các nút sẽ làm việc. Sau đó, Spark sẽ kết nối tới một số
23


Executor trên các nút này (thực chất là các tiến trình chạy các tác vụ tính tốn,
lưu trữ dữ liệu cho ứng dụng), sau đó sẽ gửi mã của ứng dụng (được gửi từ
SparkContext) tới các Executor này. Cuối cùng SparkContext sẽ gửi các tác vụ
tới các Executor để chạy.
Ưu điểm:
Mỗi ứng dụng sẽ được chạy trong một executor riêng biệt, các tác vụ sẽ
được chạy đa luồng multithread. Các task của các ứng dụng khác nhau sẽ được
chạy trong các JVM khác nhau, tách biệt được việc lập lịch chạy ứng dụng và
việc thực thi ứng dụng. Nhược điểm ở đây là dữ liệu của các ứng dụng khác
nhau không được chia sẻ trừ khi ghi vào một bộ nhớ bên ngồi.
Spark độc lập với các trình quản lý cụm (chỉ cần nó có thể liên hệ được
với tiến trình executor), có thể tích hợp được với nhiều trình quản lý cụm khác
nhau (YARN, MESOS …).
Các trình điều khiển lập lịch được đặt trên các cụm được đặt trong cùng
mạng LAN với các Nút (Nodes), giúp cho quá trình điều khiển sẽ nhanh và tin
cậy hơn.
d. Các cơ chế quản lý cụm mà Spark hỗ trợ:
Theo [26], các cơ chế quản lý cụm dữ liệu sẽ có một số cơ chế như sau:
Standalone – cơ chế quản lý cụm đơn giản được tích hợp ngay trong chính
Spark.

Apache Mesos – cơ chế quản lý cụm cơ bản hỗ trợ chạy Spark, Hadoop
MapReduce và các ứng dụng giao tiếp ngầm.
Hadoop YARN – quản lý tài nguyên trên Hadoop.
e. Spark vs Hadoop MapReduce
Theo [27], Về cơ chế hoạt động của Map-Reduce: dữ liệu đầu vào được
đọc từ HDFS (ứng dụng phụ trách việc lưu trữ trong Hadoop), xử lý bằng các
thao tác chỉ định, dữ liệu đầu ra được ghi vào HDFS, dữ liệu tiếp tục được đưa
lên, thao tác tiếp theo được thực hiện, dữ liệu đầu ra tiếp tục ghi vào HDFS …
chuỗi các bước [đọc - xử lý - ghi] đó được lặp cho đến khi hồn thành tác vụ.
24


Vì dữ liệu đầu vào được chia thành các khối (block) độc lập với nhau, các tiến
trình map-reduce được thực hiện song song, nên về cơ bản nó hữu ích để xử lí
những bộ dữ liệu lớn. Tuy nhiên, map-reduce vẫn cịn những tồn tại là q trình
xử lý khơng thực sự hiệu quả trong trường hợp phải lặp lại nhiều step, vì mỗi
step cần thiết phải ghi đầu ra dữ liệu vào HDFS trước khi bước tiếp theo được
thực hiện, việc này tạo ra các vấn đề trong việc lưu trữ và cơ chế tạo lặp các
vùng lưu trữ, tăng độ trễ xử lý do phần lớn thực hiện trên Disk vốn có hiệu suất
I/O khơng cao. Bên cạnh đó là việc thực hiện viết code với Map-Reduce có
phần khó khăn vì viết lệnh giao tiếp khá dài dịng.

Hình 2.8. Cơ chế hoạt động của Spark và RDD
Cơ chế hoạt động của Spark: khắc phục những tồn tại của Hadoop
MapReduce, Spark đưa ra một khái niệm mới RDD - Resilient Distributed
Dataset đóng vai trị như 1 cấu trúc dữ liệu cơ bản trong Spark, RDD được định
nghĩa là trừu tượng cho một tập hợp các phần tử bất biến (bản chất là được lưu
trên các ô nhớ chỉ đọc readOnly), được phân vùng có thể được chia sẻ, tác động
song song, theo Hình 2.8. Qua đó, dữ liệu vào từ hệ thống lưu trữ chỉ cần đẩy
lên lần duy nhất, các bước thực hiện biến đổi, xử lý dữ liệu đầu vào được lên

kế hoạch, tối ưu hóa và thực hiện một cách liên tục cho đến khi dữ liệu đầu ra
được trả khi kết thúc cơng việc. Tồn bộ q trình đó được diễn ra trên bộ nhớ
RAM (khi hết RAM sẽ được chuyển sang xử lý trên Disk) tận dụng được hiệu
suất I/O cao từ đó có thể giảm thời gian thực thi nhỏ hơn 10-100 lần Hadoop
MapReduce.
25


×