Apache Spark là một hệ thống phân tán mã nguồn mở được sử dụng để xử lý và phân tích dữ liệu lớn. Nó được thiết kế để xử lý dữ liệu trên một cụm máy tính phân tán, cho phép xử lý song song và tăng tốc độ xử lý. Apache Spark có khả năng xử lý dữ liệu lớn bằng cách sử dụng mô hình tính toán trong bộ nhớ (inmemory computing), cho phép truy cập dữ liệu từ bộ nhớ chứ không phải từ đĩa cứng. Điều này giúp giảm thời gian truy cập và xử lý dữ liệu, đồng thời tăng tốc độ xử lý. Spark cung cấp một API linh hoạt để xử lý dữ liệu lớn, bao gồm các thư viện cho xử lý dữ liệu phân tán, xử lý dữ liệu đồ thị, xử lý dữ liệu trực tuyến và học máy. Bạn có thể sử dụng Spark để thực hiện các tác vụ như xử lý dữ liệu, truy vấn dữ liệu, phân tích dữ liệu, xây dựng mô hình học máy và thực hiện các tác vụ tính toán phức tạp khác trên dữ liệu lớn. Một trong những đặc điểm nổi bật của Apache Spark là khả năng chạy trên nhiều nguồn dữ liệu khác nhau, bao gồm Hadoop Distributed File System (HDFS), Apache Cassandra, Apache HBase, Amazon S3 và nhiều nguồn dữ liệu khác. Điều này cho phép Spark làm việc với dữ liệu từ nhiều nguồn khác nhau mà không cần sao chép dữ liệu sang nơi lưu trữ khác. Spark cung cấp mô hình xử lý dữ liệu linh hoạt, gọi là Resilient Distributed Dataset (RDD), cho phép bạn thực hiện các phép biến đổi và hành động trên dữ liệu phân tán. RDD là một tập hợp không thay đổi của các đối tượng phân tán có thể được xử lý song song. Bên cạnh RDD, Spark cũng hỗ trợ các cấu trúc dữ liệu khác như DataFrame và Dataset để thao tác dữ liệu dễ dàng hơn.
Trang 1TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN & TRUYỀN THÔNG
KHOA CÔNG NGHỆ THÔNG TIN
BÁO CÁO THỰC TẬP CƠ SỞ
ĐỀ TÀI : TÌM HIỂU VỀ APACHE SPARK TRONG VIỆC LƯU TRỮ VÀ XỬ
Trang 2LỜI CAM ĐOAN 5
CHƯƠNG I TỔNG QUAN VỀ DỮ LIỆU LỚN (BIGDATA) 6
A.GIỚI THIỆU VỀ DỮ LIỆU LỚN 6
1 Dữ liệu lớn là gì ? 6
2 Các định dạng dữ liệu thường được dùng 6
3 Cách thức hoạt động 6
4 Cách thức xử lý 7
B ỨNG DỤNG CỦA DỮ LIỆU LỚN 7
1 Các trường hợp sử dụng Dữ liệu lớn 7
2 Một số lĩnh vực thường sử dụng Dữ liệu lớn 9
CHƯƠNG II TỔNG QUAN VỀ HADOOP - APACHE SPARK VÀ NGÔN NGỮ R .11
A HADOOP 11
1 Kiến trúc HDFS ( Hệ thống phân tán Hadoop ) 11
2.NameNode 11
3.NameNode phụ: 13
4.DataNode 14
5.Blocks 14
6.Replication Management ( Quản lý sao chép ) 15
7.Rack Awareness 16
8.HDFS Read / Write Architecure ( Kiến trúc đọc / ghi HDFS) 18
B APACHE SPARK 26
1 Apache Spark là gì ? 26
2 Câu tạo của Apache Spark ? 27
3 Kiến trúc của Apache Spark ? 28
4 Ưu điểm ? 29
C NGÔN NGỮ R 30
1 Ngôn ngữ R là gì ? 30
Trang 33.Ưu điểm của R ? 30
CHƯƠNG III KẾT NỐI R VÀ SPARK 33
A KẾT NỐI R VÀ SPARK 33
B PHÂN TÍCH VÀ TRỰC QUAN DỮ LIỆU 33
C XÂY DỰNG MÔ HÌNH DỮ LIỆU 34
CHƯƠNG IV XỬ LÝ DỮ LIỆU LỚN 37
A TẢI DỮ LIỆU OKCUPID VÀ CÀI ĐẶT NHỮNG GÓI CẦN THIẾT TRONG R STUDIO 37
B XỬ LÝ DỮ LIỆU LỚN 39
CÁC NGUỒN TÀI LIỆU THAM KHẢO : 54
MỤC LỤC ẢNH Hình 1 - Kiến trúc HDFS 11
Hình 2 - Vòng tuần hoàn của HDFS 12
Hình 3 - Vị trí của NameNode phụ trong HDFS 14
Hình 4 - Ví dụ minh hoạ về Block 15
Hình 5 - Quản lý sao chép 16
Hình 6 - Thuật toán mô phỏng các block nằm trên rack 17
Hình 7 - Quá trình sao chép Dữ liệu 20
Hình 8 - Quá trình thiết lập đường ống 21
Hình 9 - Quá trình truyền và sao chép dữ liệu 22
Hình 10 - Quá trình kết thúc 24
Hình 11 - Quá trình ghi dữ liệu 25
Hình 12 - Kiến trúc đọc HDFS 26
Hình 13 - Apache Spark và các đơn vị kết nối 28
Hình 14 - Cấu tạo của Apache Spark 29
Trang 4Hình 17 - Cài đặt gói dữ liệu cần thiết bằng Tool 41
Hình 18 - Cài đặt gói dữ liệu cần thiết bằng Tool (2) 41
Hình 19 - Phân bố biến age 45
Bảng 2 - Dữ liệu biến tôn giáo 46
Hình 20 - Tỉ lệ cá nhân thất nghiệp theo biến tôn giáo 47
Bảng 3 - Dữ liệu giữa người sử dụng rượu và ma tuý 48
Hình 21 - Biểu đồ khảm về sử dụng rượu và ma tuý 49
Hình 22 - Biểu đồ toạ độ ứng với người sử dụng rượu và ma tuý 51
Bảng 4 - Giá trị trung bình và độ lệch chuẩn của biến tuổi 52
Hình 23 - Phân bố tuổi theo tỉ lệ 53
Bảng 5 - Bảng dữ liệu biến giả 54
Hình 24 - Phân bố độ dài bài luận 55
Trang 5LỜI CAM ĐOAN
Bài Thực tập cơ sở này là sản phẩm tổng hợp toàn bộ các kiến thức mà tôi đãhọc và nghiên cứu trong thời gian học tập tại trường Ý thức được điều đó, với tinhthần nghiêm túc, sự tự giác cùng sự cố gắng miệt mài của bản thân và sự hướng dẫntận tình của thầy Trần Quang Quý Tôi đã hoàn thành bài thực tập cơ sở của mình
Tôi xin cam đoan: Nội dung bài làm của tôi là công sức tôi đã tìm hiểu, khôngsao chép từ nội dung của các bài thực tập khác, có sự tham khảo các mẫu đồ án trênthư viện nhà trường về nội dung và hình thức trình bày để trình bày vào bài thực tập
cơ sở của mình Mọi thông tin sai lệch tôi xin hoàn toàn chịu trách nhiệm trước hộiđồng bảo vệ
Trang 6CHƯƠNG I TỔNG QUAN VỀ DỮ LIỆU LỚN (BIGDATA)
A.GIỚI THIỆU VỀ DỮ LIỆU LỚN
1 Dữ liệu lớn là gì ?
Dữ liệu lớn là đề cập đến dữ liệu có cấu trúc và phi cấu trúc phức tạp,
với lượng dữ liệu khổng lồ được tao ra và truywwnf nhanh tróng từnhiều nguồn khác nhau Dữ liệu lớn còn được định nghĩa là “3 chữ V”,các thuộc tính được tạo nên là :
- Volume (Khối lượng) : lượng DL khổng lồ được lưu trữ
- Velocity (Tốc độ) : Tốc độ cực nhanh mà tại đó các luồng dữ liệu phải
được xử lý và phân tích
- Variety ( Sự đa dạng ) : Các nguồn và hình thức khác nhau mà dữ
liệu được thu thập, VD : số, văn bản, hình ảnh,video, âm thanh
#Các công cụ xử lý dữ liệu truyền thống không đủ công năng để xử lýcác dữ liệu lớn và phực tạp này Điều này dẫn đến sự xuất hiện của mộtloạt các giải pháp kiến trúc và phần mềm dữ liệu lớn chuyên dụng rađời
2 Các định dạng dữ liệu thường được dùng
- Dữ liệu không cấu trúc: Dữ liệu bao gồm thông tin không có tổ chức
và không thuộc mô hình hoặc định dạng được xác định từ trước, dữ liệuthu thập từ các nguồn truyền thông xã hội, giúp các doanh nghiệp thuthập thông tin về nhu cầu khách hàng
- Dữ liệu có cấu trúc: Dữ liệu bao gồm các thông tin đã được tổ chức
quản lý trong cơ sở dữ liệu và bảng tính, thường là các con số trong tựnhiên
- Dữ liệu bán cấu trúc: Dữ liệu được tổ chức theo một định dạng không
cố định
3 Cách thức hoạt động
Big Data có thể thu thập từ các bình luận được chia sẻ công khai trên
Trang 7dụng cá nhân thông qua bảng câu hỏi hoặc thông qua mua sản phẩm vàđăng ký điện tử.
Sự hiện diện của các cảm biến và các đầu vào khác trong thiết bị thôngminh cho phép thu thập dữ liệu trên nhiều trường hợp và trong mọi hoàncảnh
Big Data thường được lưu trữ trong cơ sở dữ liệu máy tính và phân tíchbằng phần mềm được thiết kế đặc biệt để xử lý các tập dữ liệu lớn vàphức tạp
4 Cách thức xử lý
- Xử lý hàng loạt: Thường được sử dụng nếu ta lo ngại về khối lượng
và sự đa dạng của dữ liệu Trước tiên, lưu trữ tất cả dữ liệu cần thiết vàthực hiện xử lý chung một lần (điều này dẫn đến độ trễ cao)
- Xử lý luồng: Thường được sử dụng nếu ta quan tâm đến thời gian
phản hồi nhanh Các dữ liệu sẽ được xử lý ngay khi nhận được (độ trễthấp)
Ngoài ra, Big Data còn sử dụng phân tích các nhóm tập trung, phươngtiện truyền thông xã hội, thị trường để lập kế hoạch sản xuất và bán hànghiệu quả
Trang 8Big Data cho phép thu thập dữ liệu từ mạng xã hội, lượt truy cập web,nhật ký cuộc gọi và các nguồn khác để cải thiện trải nghiệm tương tác
và tối đa hóa giá trị được cung cấp
Thực hiện các chương trình khuyến mãi cho khách hàng, giảm bớt sự rời
bỏ của khách hàng và xử lý các vấn đề một cách chủ động
Máy học (Machine Learning)
Máy học đang là chủ đề nổi bật nhất hiện nay, Big Data là một trongnhững vấn đề chính Hiện nay, có thể dạy máy móc thay vì lập trìnhchúng, sự sẵn có của Big Data đào tạo các mô hình máy học đã trở nênkhả thi hơn
Hiệu quả hoạt động
Với Big Data, có thể phân tích và đánh giá hoạt động sản xuất, các yếu
tố khác để giảm tình trạng ngừng hoạt động và dự đoán nhu cầu trongtương lai
Big Data có thể được sử dụng để cải thiện việc ra quyết định phù hợpcho nhu cầu thị trường trong những thời điểm khác nhau
Thúc đẩy sự đổi mổi
Big Data có thể đổi mới bằng cách nghiên cứu sự phụ thuộc lẫn nhaugiữa con người, tổ chức, thực thể và quy trình, sau đó định hướng vềcách sử dụng những thông tin chi tiết đó
Trang 9Sử dụng thông tin chi tiết về dữ liệu để cải thiện các quyết định về cânnhắc tài chính và lập kế hoạch.Xem xét xu hướng và những gì kháchhàng cần cung cấp cho các sản phẩm và dịch vụ mới.
2 Một số lĩnh vực thường sử dụng Dữ liệu lớn
Y học
Các bệnh viện, nhà nghiên cứu và các công ty dược phẩm áp dụng cácgiải pháp Big Data để cải thiện và nâng cao chất lượng chăm sóc sứckhỏe
Với quyền truy cập vào lượng Big Data về bệnh nhân và người dân, yhọc đang tăng cường các phương pháp điều trị, thực hiện nghiên cứuhiệu quả hơn về các bệnh như ung thư và Alzheimer
Phát minh ra các loại thuốc mới và có được những hiểu biết quan trọng
về mô hình sức khỏe của người dân
Nông nghiệp
Từ hạt giống có thể dự đoán năng suất cây trồng với độ chính xác cao,Big Data và các công cụ tự động hóa đang từng bước nâng cao hiệu quảngành nông nghiệp
Các nhà nghiên cứu và các nhà khoa học trên thế giới sử dụng Big Data
để giải quyết nạn đói và suy dinh dưỡng
Với các nhóm dữ liệu mở toàn cầu về Nông nghiệp và Dinh dưỡng(GODAN) thúc đẩy quyền truy cập mở, không hạn chế vào dữ liệu nôngnghiệp và dinh dưỡng toàn cầu Một số cải tiến đang được thực hiệntrong công cuộc chấm dứt nạn đói trên thế giới
Truyền thông – Giải trí
Trang 10Các công ty truyền thông phân tích thói quen đọc, xem và nghe củacông chúng để xây dựng trải nghiệm cá nhân.
Netflix thậm chí còn sử dụng dữ liệu về đồ họa tiêu đề và màu sắc đểđưa ra quyết định về sở thích của khách hàng
Trang 11CHƯƠNG II TỔNG QUAN VỀ HADOOP - APACHE SPARK VÀ NGÔN NGỮ R
A HADOOP
1 Kiến trúc HDFS ( Hệ thống phân tán Hadoop )
HDFS là một hệ thống tệp có cấu trúc khối trong đó mỗi tệp được chia thành các khối
có kích thước xác định trước Các khối này được lưu trữ trên một cụm gồm một hoặcmột số máy
Kiến trúc Apache Hadoop HDFS tuân theo Kiến trúc Master/Slave , trong đó mộtcụm bao gồm một NameNode (nút Chính) duy nhất và tất cả các nút khác làDataNodes (nút Slave).HDFS có thể được triển khai trên nhiều loại máy hỗ trợ Java
Hình 1 - Kiến trúc HDFS
2.NameNode
Trang 12Hình 2 - Vòng tuần hoàn của HDFS
NameNode là nút chính trong Kiến trúc Apache Hadoop HDFS duy trì và quản lý các
khối có trên DataNodes (nút phụ) NameNode là một máy chủ có tính sẵn sàng caoquản lý không gian tên hệ thống tệp và kiểm soát quyền truy cập vào tệp của kháchhàng Kiến trúc HDFS được xây dựng theo cách sao cho dữ liệu người dùng khôngbao giờ nằm trên NameNode.Dữ liệu chỉ nằm trên DataNodes
Chức năng của NameNode:
1.Là trình nền chính duy trì và quản lý các DataNodes (các nút công nhân
#worker)
2.Ghi lại siêu dữ liệu của tất cả các tệp được lưu trữ trong cụm,
Ví dụ: Vị trí của các khối được lưu trữ, kích thước của tệp, quyền,
phân cấp, v.v
Có hai tệp được liên kết với siêu dữ liệu:
FsImage: Chứa trạng thái hoàn chỉnh của không gian tên hệ thống tệp
kể từ khi bắt đầu NameNode
Trang 13EditLogs: Chứa tất cả các sửa đổi gần đây được thực hiện đối với hệ
thống tệp đối với FsImage gần đây nhất
3.Ghi lại từng thay đổi diễn ra đối với siêu dữ liệu hệ thống tệp
Ví dụ: nếu một tệp bị xóa trong HDFS, NameNode sẽ ngay lập tức ghi lại tệp này trong EditLog
4.Thường xuyên nhận được báo cáo Nhịp tim và khối từ tất cả các Nút dữ liệu trong cụm để đảm bảo rằng các Nút dữ liệu đang hoạt động
5.Giữ một bản ghi của tất cả các khối trong HDFS và vị trí của các khối này trong các nút
6.NameNode cũng chịu trách nhiệm chăm sóc hệ số sao chép của tất cả các khối mà chúng ta sẽ thảo luận chi tiết sau trong blog hướng dẫn
HDFS này
7.Trong trường hợp DataNode bị lỗi , NameNode chọn DataNode mới cho cácbản sao mới, cân bằng việc sử dụng đĩa và quản lý lưu lượng truyền thông đếnDataNode
3.NameNode phụ:
NameNode phụ hoạt động đồng thời với NameNode chính dưới dạng một daemon trợgiúp
Trang 141.NameNode phụ là một cái liên tục đọc tất cả các hệ thống tệp và siêu dữ liệu từ RAM của NameNode và ghi nó vào đĩa cứng hoặc hệ thống tệp.
2.Chịu trách nhiệm kết hợp EditLogs với FsImage từ NameNode
3.Tải xuống EditLogs từ NameNode theo định kỳ và áp dụng cho
FsImage FsImage mới được sao chép trở lại NameNode, được sử dụng bất cứ khi nào NameNode được khởi động vào lần tiếp theo
4.Do đó, NameNode phụ thực hiện các điểm kiểm tra thông thường trong HDFS Do đó, nó còn được gọi là CheckpointNode
4.DataNode
DataNodes là các nút worker trong HDFS Không giống như NameNode, DataNode làmột phần cứng hàng hóa, nghĩa là một hệ thống không đắt tiền, không có chất lượngcao hoặc tính sẵn sàng cao DataNode là một máy chủ khối lưu trữ dữ liệu trong tệpcục bộ ext3 hoặc ext4
Chức năng của DataNode:
1.Đây là các daemon nô lệ hoặc tiến trình chạy trên mỗi máy nô lệ
2.Dữ liệu thực tế được lưu trữ trên DataNodes
3.Các DataNode thực hiện các yêu cầu đọc và ghi ở mức độ thấp từ các máy khách của hệ thống tệp
4.Họ gửi nhịp tim đến NameNode theo định kỳ để báo cáo tình trạng
chung của HDFS, theo mặc định, tần suất này được đặt thành 3 giây
5.Blocks
Ta có thể biết dữ liệu nằm trong HDFS nằm rải rác trên các DataNode dưới dạng cáckhối
Trang 15Các khối là vị trí liên tục nhỏ nhất trên ổ cứng , nơi dữ liệu được lưu trữ Nói chung,trong bất kỳ Hệ thống tệp nào, lưu trữ dữ liệu dưới dạng tập hợp các khối Tương tự,HDFS lưu trữ từng tệp dưới dạng các khối nằm rải rác trong cụm Apache Hadoop.Kích thước mặc định của mỗi khối là 128 MB trong Apache Hadoop 2 x (64 MBtrong Apache Hadoop 1 x ) mà ta có thể tuỳ chỉnh cấu hình theo nhu cầu.
Ví dụ :
Hình 4 - Ví dụ minh hoạ về Block
Ta có một tệp “example.txt” có kích thước 514 MB như trong hình trên Giả sử rằngđang sử dụng cấu hình kích thước khối mặc định là 128 MB Thì sau đó sẽ có 5 khốiđược tạo ra Bốn khối đầu tiên sẽ có dung lượng 128 MB Đương nhiên, khối cuốicùng sẽ có kích thước 2 MB
6.Replication Management ( Quản lý sao chép )
HDFS cung cấp một cách đáng tin cậy để lưu trữ dữ liệu khổng lồ trong môi trườngphân tán dưới dạng khối dữ liệu Các khối cũng được sao chép để cung cấp khả năngchịu lỗi Hệ số sao chép mặc định là 3 có thể định cấu hình lại Vì vậy, như ta có thểthấy trong hình bên dưới, mỗi khối được sao chép ba lần và được lưu trữ trên cácDataNodes khác nhau (xem xét hệ số sao chép mặc định):
Trang 16Hình 5 - Quản lý sao chép
Do đó, nếu ta đang lưu trữ tệp 128 MB trong HDFS bằng cách sử dụng cấu hình mặcđịnh, thì cuối cùng sẽ chiếm dung lượng 384 MB (3*128 MB) vì các khối sẽ được saochép ba lần và mỗi bản sao sẽ nằm trên một DataNode khác nhau
Lưu ý: NameNode thu thập báo cáo khối từ DataNode theo định kỳ để duy trì hệ số
sao chép Do đó, bất cứ khi nào một khối được sao chép quá mức hoặc sao chép dướimức, NameNode sẽ xóa hoặc thêm các bản sao nếu cần
7.Rack Awareness
Trang 17Hình 6 - Thuật toán mô phỏng các block nằm trên rackNameNode cũng đảm bảo rằng tất cả các bản sao không được lưu trữ trên cùng một
giá hoặc một kệ duy nhất Nó tuân theo Thuật toán Rack Awareness được xây dựng
để giảm độ trễ cũng như cung cấp khả năng chịu lỗi Xem xét hệ số sao chép là 3,
Thuật toán Rack Awareness nói rằng bản sao đầu tiên của một khối sẽ được lưu trữ
trên một giá đỡ cục bộ và hai bản sao tiếp theo sẽ được lưu trữ trên một giá đỡ (từ xa)khác, nhưng trên một DataNode khác trong đó ( điều khiển từ xa) như minh họa tronghình trên Nếu mà có nhiều bản sao hơn, phần còn lại của các bản sao sẽ được đặt trêncác Nút dữ liệu ngẫu nhiên với điều kiện là không quá hai bản sao nằm trên cùng mộtgiá
Và đây là cách một cụm sản xuất Hadoop thực tế trông như thế nào ? Tại đây, ta cónhiều kệ được điền bằng DataNodes:
Trang 18Ưu điểm của Rack Awareness:
Để cải thiện hiệu suất mạng: Giao tiếp giữa các nút nằm trên các giá khác nhau được
định hướng thông qua bộ chuyển mạch Nói chung, ta sẽ thấy băng thông mạng lớnhơn giữa các máy trong cùng một giá so với các máy nằm trong các giá đỡ khác nhau
Vì vậy, Rack Awareness giúp ta giảm lưu lượng ghi giữa các giá đỡ khác nhau và do
đó mang lại hiệu suất ghi tốt hơn Ngoài ra, sẽ tăng hiệu suất đọc vì ta đang sử dụngbăng thông của nhiều giá
Để tránh mất dữ liệu: Ta không phải lo lắng về dữ liệu ngay cả khi toàn bộ giá bị hỏng do lỗi công tắc hoặc mất điện Và nếu ta nghĩ về nó, nó sẽ có lý, vì người ta nói rằng không bao giờ bỏ tất cả trứng vào cùng một giỏ.
8.HDFS Read / Write Architecure ( Kiến trúc đọc / ghi HDFS)
HDFS write architecure ( Kiến trúc ghi HDFS )
Giả sử một tình huống trong đó ứng dụng khách HDFS muốn ghi một tệp có
Trang 19Giả sử rằng kích thước khối hệ thống được cấu hình là 128 MB (mặc định)
Vì vậy, máy khách sẽ chia tệp “example.txt” thành 2 khối – một khối 128
MB (Khối A) và khối còn lại 120 MB (khối B)
Bây giờ, giao thức sau sẽ được tuân theo bất cứ khi nào dữ liệu được ghi vào HDFS:
Lúc đầu, ứng dụng khách HDFS sẽ liên hệ với NameNode để yêu cầu ghiđối với hai khối, chẳng hạn như Khối A & Khối B
Sau đó, NameNode sẽ cấp cho khách hàng quyền ghi và sẽ cung cấp địachỉ IP của DataNode nơi cuối cùng các khối tệp sẽ được sao chép
Việc lựa chọn địa chỉ IP của DataNodes hoàn toàn là ngẫu nhiên dựa trên tính khả dụng, hệ số sao chép và nhận thức về giá đỡ mà chúng
ta đã thảo luận trước đó
Giả sử hệ số sao chép được đặt thành mặc định, tức là 3 Do đó, đối vớimỗi khối, NameNode sẽ cung cấp cho khách hàng một danh sách (3) địachỉ IP của DataNode Danh sách sẽ là duy nhất cho mỗi khối
Giả sử, NameNode đã cung cấp danh sách địa chỉ IP sau cho máy khách:
Đối với Khối A, danh sách A = {IP của DataNode 1, IP của
DataNode 4, IP của DataNode 6}
Đối với Khối B, đặt B = {IP của DataNode 3, IP của DataNode 7,
Trang 20 Bây giờ toàn bộ quá trình sao chép dữ liệu sẽ diễn ra theo ba giai đoạn:
Hình 7 - Quá trình sao chép Dữ liệuTrong đó :
1 Thiết lập đường ống
Trước khi ghi các khối, máy khách xác nhận xem các DataNodes, có trong mỗi danh sách IP, đã sẵn sàng nhận dữ liệu hay chưa Khi làm như vậy, máy khách tạo một đường dẫn cho từng khối bằng cách kết nối các DataNodes riêng lẻ trong danh sách tương ứng cho khối đó Chúng ta hãy xem xét Khối A Danh sách các DataNodes được cung cấp bởi NameNode là :Đối với Khối A, danh sách A = {IP của DataNode 1, IP của DataNode 4,
IP của DataNode 6}
Trang 21Hình 8 - Quá trình thiết lập đường ống
Vì vậy, đối với khối A, khách hàng sẽ thực hiện các bước sau để tạo đườngdẫn:
Máy khách sẽ chọn DataNode đầu tiên trong danh sách (DataNode IP choBlock A) là DataNode 1 và sẽ thiết lập kết nối TCP/IP
Máy khách sẽ thông báo cho DataNode 1 sẵn sàng nhận khối Nó cũng sẽcung cấp IP của hai DataNode tiếp theo (4 và 6) cho DataNode 1 nơi khốiđược cho là sẽ được sao chép
DataNode 1 sẽ kết nối với DataNode 4 DataNode 1 sẽ thông báo choDataNode 4 sẵn sàng nhận khối và sẽ cung cấp cho nó IP của DataNode 6.Sau đó, DataNode 4 sẽ thông báo cho DataNode 6 sẵn sàng nhận dữ liệu
Tiếp theo, xác nhận sẵn sàng sẽ tuân theo trình tự ngược lại, tức là Từ
Trang 22 Cuối cùng, DataNode 1 sẽ thông báo cho khách hàng rằng tất cả cácDataNode đã sẵn sàng và một đường dẫn sẽ được hình thành giữa kháchhàng, DataNode 1, 4 và 6.
Bây giờ quá trình thiết lập đường ống đã hoàn tất và máy khách cuối cùng
sẽ bắt đầu quá trình sao chép hoặc phát trực tuyến dữ liệu
2 Truyền và sao chép DL
Khi đường ống đã được tạo, máy khách sẽ đẩy dữ liệu vào đường ống Bây giờ, đừng quên rằng trong HDFS, dữ liệu được sao chép dựa trên hệ số saochép Vì vậy, ở đây, Khối A sẽ được lưu trữ vào ba DataNode vì hệ số sao chép giả định là 3 Tiếp tục, máy khách sẽ chỉ sao chép khối (A) sang
DataNode 1 Việc sao chép luôn được DataNodes thực hiện tuần tự
Hình 9 - Quá trình truyền và sao chép dữ liệu
Vì vậy, các bước sau sẽ diễn ra trong quá trình sao chép:
Khi khối đã được ghi vào DataNode 1 bởi máy khách, DataNode 1 sẽ kếtnối với DataNode 4
Trang 23 Sau đó, DataNode 1 sẽ đẩy khối vào đường ống và dữ liệu sẽ được saochép sang DataNode 4.
Một lần nữa, DataNode 4 sẽ kết nối với DataNode 6 và sẽ sao chép bảnsao cuối cùng của khối
3 Tắt đường ống
Khi khối đã được sao chép vào cả ba DataNode, một loạt xác nhận sẽ diễn ra
để đảm bảo máy khách và NameNode rằng dữ liệu đã được ghi thành công Sau
đó, máy khách cuối cùng sẽ đóng đường ống để kết thúc phiên TCP
Như thể hiện trong hình bên dưới, xác nhận xảy ra theo trình tự ngược lại, tức
là từ DataNode 6 đến 4 rồi đến 1 Cuối cùng, DataNode 1 sẽ đẩy ba xác nhận (bao gồm cả xác nhận của chính nó) vào đường ống và gửi nó đến máy khách Máy khách sẽ thông báo cho NameNode rằng dữ liệu đã được ghi thành công NameNode sẽ cập nhật siêu dữ liệu của nó và máy khách sẽ tắt quytrình
Trang 24Tương tự, Block B cũng sẽ được sao chép vào DataNodes song song với Block A Vì vậy, những điều sau đây cần được chú ý ở đây:
Máy khách sẽ đồng thời sao chép Khối A và Khối B sang DataNode đầutiên
Do đó, trong trường hợp , hai đường ống sẽ được hình thành cho mỗi khối
và tất cả quá trình được thảo luận ở trên sẽ diễn ra song song trong haiđường ống này
Máy khách ghi khối vào DataNode đầu tiên và sau đó các DataNode sẽsao chép khối một cách tuần tự
Hình 11 - Quá trình ghi dữ liệuNhư có thể thấy trong hình trên, có hai đường ống được hình thành cho mỗi khối (A
và B) Sau đây là luồng hoạt động đang diễn ra cho từng khối trong các đường ốngtương ứng của chúng:
Trang 25Đối với Block B: 1B -> 2B -> 3B -> 4B -> 5B -> 6B
HDFS Read Architecture ( Kiến trúc đọc HDFS )
Ví dụ : trên tệp “example.txt”
Hình 12 - Kiến trúc đọc HDFSBây giờ, các bước sau sẽ diễn ra trong khi đọc tệp:
Khách hàng sẽ liên hệ với NameNode để yêu cầu siêu dữ liệu khối cho tệp
“example.txt”
NameNode sẽ trả về danh sách các DataNodes nơi mỗi khối (Khối A vàB) được lưu trữ
Sau đó, máy khách sẽ kết nối với các DataNodes nơi lưu trữ các khối
Máy khách bắt đầu đọc dữ liệu song song từ các DataNode (Khối A từDataNode 1 và Khối B từ DataNode 3)
Trang 26Trong khi phục vụ yêu cầu đọc của máy khách, HDFS chọn bản sao gần máy kháchnhất Điều này làm giảm độ trễ đọc và mức tiêu thụ băng thông Do đó, bản sao đóđược chọn nằm trên cùng một giá với nút đầu đọc, nếu có thể.
mã nguồn được tặng cho Apache Software Foundation vào năm 2013 và tổ chức này
đã duy trì nó cho đến nay
Khả năng tính toán phân tán của Apache Spark khiến nó rất phù hợp với big data vàmachine learning, vốn đòi sức mạnh tính toán khổng lồ để làm việc trên các kho dữliệu lớn Spark cũng giúp loại bỏ một số gánh nặng lập trình khỏi vai của các nhà pháttriển với một API dễ sử dụng đảm nhiệm phần lớn công việc khó khăn của tính toánphân tán và xử lý dữ liệu lớn
Trang 272 Câu tạo của Apache Spark ?
Apache Spark gồm có 5 thành phần chính: Spark Core, Spark Streaming, Spark SQL,
và ghi vào các kho dữ liệu khác bao gồm JSON, HDFS, Apache Hive, JDBC, ApacheORC và Apache Parquet, tất cả đều được hỗ trợ trực tiếp Các cơ sở dữ liệu phổ biếnkhác như Apache Cassandra, MongoDB, Apache Hbase,… cũng được hỗ trợ thôngqua các trình kết nối riêng biệt từ hệ sinh thái Spark Packages
Spark Streaming
Spark Streaming là một bổ sung ban đầu cho Apache Spark giúp nó đáp ứng các yêucầu xử lý thời gian thực (realtime) hoặc gần như thời gian thực Spark Streaming chia
Trang 28Bằng cách này, mã trong các xử lý hàng loạt và trực tuyến có thể được tái sử dụng,chạy trên cùng một framework, do đó giảm chi phí cho cả nhà phát triển và nhà điềuhành.
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 với kiến trúc phân tán dựatrên bộ nhớ Theo các một số so sánh, Spark MLlib nhanh hơn 9 lần so với thư việntương đương chạy trên Hadoop là Apache Mahout
GrapX
Spark GraphX đi kèm với lựa chọn các thuật toán phân tán để xử lý cấu trúc đồ thị.Các thuật toán này sử dụng phương pháp tiếp cận RDD của Spark Core để lập môhình dữ liệu; gói GraphFrames cho phép ta thực hiện các xử lý biểu đồ trên khung dữliệu, bao gồm cả việc tận dụng trình tối ưu hóa Catalyst cho các truy vấn đồ thị
3 Kiến trúc của Apache Spark ?
Về cơ bản, Apache Spark bao gồm hai thành phần chính: trình điều khiển (driver) vàtrình thực thi (executors) Trình điều khiển dùng để chuyển đổi mã của người dùngthành nhiều tác vụ (tasks) có thể được phân phối trên các nút xử lý (worker nodes) Trình thực thi chạy trên các nút xử lý và thực hiện các nhiệm vụ được giao cho chúng.Spark cũng có thể chạy ở chế độ cụm độc lập chỉ yêu cầu khung Apache Spark vàJVM trên mỗi máy trong cụm Tuy nhiên, sử dụng các công cụ quản lý cụm như trunggian giữa hai thành phần giúp tận dụng tài nguyên tốt hơn và cho phép phân bổ theo