1. Trang chủ
  2. » Luận Văn - Báo Cáo

Tìm hiểu về apache spark trong việc lưu trữ và xử lý dữ liệu lớn

56 1 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Tiêu đề Tìm hiểu về Apache Spark trong việc lưu trữ và xử lý dữ liệu lớn
Tác giả Lớp: CNTTK19_CLC
Người hướng dẫn Thái Nguyên, Thầy
Trường học Trường Đại Học Công Nghệ Thông Tin & Truyền Thông
Chuyên ngành Công Nghệ Thông Tin
Thể loại Báo cáo thực tập cơ sở
Năm xuất bản 2023
Thành phố Thái Nguyên
Định dạng
Số trang 56
Dung lượng 2,64 MB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Cấu trúc

  • 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)
    • 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)
  • 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 (37)
    • B. XỬ LÝ DỮ LIỆU LỚN (39)

Nội dung

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 1

TRƯỜ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 2

LỜ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 3

3.Ư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 4

Hì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 5

LỜ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 6

CHƯƠ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 7

dụ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 8

Big 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 9

Sử 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 10

Cá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 11

CHƯƠ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 12

Hì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 13

EditLogs: 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 14

1.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 15

Cá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 16

Hì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 17

Hì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 19

Giả 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 21

Hì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 24

Tươ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 26

Trong 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 27

2 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 28

Bằ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

Ngày đăng: 13/05/2023, 09:16

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm

w