1. Trang chủ
  2. » Tất cả

Chương 3 dịch vụ hệ thống phân bố

15 2 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 đề Chương 3 Dịch vụ hệ thống phân phối
Người hướng dẫn TS. Nguyễn Thiên Bảo
Trường học Trường Đại học Sư phạm Kỹ thuật TP.HCM
Chuyên ngành Kỹ Thuật Thông Tin
Thể loại Báo cáo
Năm xuất bản 2022
Thành phố TP. Hồ Chí Minh
Định dạng
Số trang 15
Dung lượng 821,83 KB

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

Nội dung

BỘ GIÁO DỤC VÀ ĐÀO TẠO TRƯỜNG ĐẠI HỌC SƯ PHẠM KỸ THUẬT TP HCM KHOA CÔNG NGHỆ THÔNG TIN BÁO CÁO TUẦN 6 CHƯƠNG 3 DỊCH VỤ HỆ THỐNG PHÂN BỐ GVHD TS Nguyễn Thiên Bảo TP Hồ Chí Minh, ngày 31 tháng 3 năm 202[.]

Trang 1

BỘ GIÁO DỤC VÀ ĐÀO TẠO TRƯỜNG ĐẠI HỌC SƯ PHẠM KỸ THUẬT TP.HCM

KHOA CÔNG NGHỆ THÔNG TIN

BÁO CÁO TUẦN 6 CHƯƠNG 3 DỊCH VỤ HỆ THỐNG PHÂN BỐ

GVHD: TS Nguyễn Thiên Bảo

TP Hồ Chí Minh, ngày 31 tháng 3 năm 2022

Trang 2

NỘI DUNG

1 Giao tác trên hệ thống phân tán

1.1 Khái niệm

Giao dịch phân tán là một tập hợp các thao tác trên dữ liệu được thực hiện trên hai hoặc nhiều kho dữ liệu (đặc biệt là cơ sở dữ liệu) Nó thường được điều phối qua các nút riêng biệt được kết nối bởi một mạng, nhưng cũng có thể mở rộng nhiều cơ sở dữ liệu trên một máy chủ duy nhất

1.2 Các trường hợp xảy ra trong giao dịch phân tán

Có hai kết quả có thể xảy ra:

- Tất cả các hoạt động hoàn thành thành công

- Không có hoạt động nào được thực hiện cả do lỗi ở đâu đó trong hệ thống

Trong trường hợp thứ hai, nếu một số công việc đã được hoàn thành trước khi xảy ra

sự cố, công việc đó sẽ được đảo ngược để đảm bảo không có công việc ròng nào được thực hiện Loại hoạt động này tuân thủ các nguyên tắc ACID:

• Tính nguyên tố (Atomicity): toàn bộ các thao tác trong cùng một giao tác đều

được thực hiện hoặc không một thao tác nào trong chúng được thực hiện Một giao tác là một đơn vị công việc không thể phân chia

• Tính nhất quán (Consistency): một giao tác phải chuyển CSDL từ một trạng thái

nhất quán này sang một trạng thái nhất quán khác

• Tính cô lập (Isolation): Các giao tác phải được thực hiện một cách độc lập với

nhau Nói một cách khác những tác động của giao tác này sẽ không thể thấy được đối với những giao tác khác, khi giao tác này chưa thực hiện xong hoàn toàn

• Tính bền vững (Durability): những thay đổi của CSDL do tác động của một giao

tác thành công là bền vững, không bị mất đi

1.3 Hoạt động của giao dịch phân tán

Các giao dịch phân tán có các yêu cầu hoàn thành xử lý giống như các giao dịch cơ sở

dữ liệu thông thường, nhưng chúng phải được quản lý trên nhiều tài nguyên, khiến việc triển khai chúng trở nên khó khăn hơn đối với các nhà phát triển cơ sở dữ liệu Nhiều tài nguyên làm tăng thêm nhiều điểm lỗi, chẳng hạn như hệ thống phần mềm

Trang 3

riêng biệt chạy tài nguyên (ví dụ: phần mềm cơ sở dữ liệu), các máy chủ phần cứng

bổ sung và lỗi mạng Điều này làm cho các giao dịch phân tán dễ bị thất bại, đó là lý

do tại sao các biện pháp bảo vệ phải được thực hiện để duy trì tính toàn vẹn của dữ liệu

1.4 Các giao dịch phân tán cần thiết và không cần thiết

Các giao dịch phân tán là cần thiết khi bạn cần cập nhật nhanh chóng các dữ liệu liên quan được trải rộng trên nhiều cơ sở dữ liệu Ví dụ: nếu bạn có nhiều hệ thống theo dõi thông tin khách hàng và bạn cần thực hiện cập nhật chung (như cập nhật địa chỉ gửi thư) trên tất cả các bản ghi, thì một giao dịch phân tán sẽ đảm bảo rằng tất cả các bản ghi đều được cập nhật Và nếu xảy ra lỗi, dữ liệu sẽ được đặt lại về trạng thái ban đầu và việc gửi lại giao dịch tùy thuộc vào ứng dụng gốc

1.5 Giao dịch phân tán cho dữ liệu truyền trực tuyến

Các giao dịch phân tán ngày nay đặc biệt quan trọng trong môi trường truyền dữ liệu

vì khối lượng dữ liệu đến Ngay cả một lỗi ngắn hạn ở một trong các tài nguyên cũng

có thể thể hiện một lượng lớn dữ liệu bị mất Xử lý dòng tinh vi công cụ hỗ trợ xử lý

“chính xác một lần” trong đó giao dịch phân tán bao gồm việc đọc dữ liệu từ nguồn

dữ liệu, xử lý và ghi dữ liệu tới đích đích (“bồn chứa dữ liệu”) Thuật ngữ "chính xác một lần" đề cập đến thực tế là mọi điểm dữ liệu đều được xử lý, không bị mất và không bị trùng lặp (Đối lập điều này với “nhiều nhất một lần” cho phép mất dữ liệu

và “ít nhất một lần” cho phép sao chép.)

Hazelcast Jet là một ví dụ về công cụ xử lý luồng sẽ cho phép xử lý chính xác một lần với các nguồn và phần chìm vốn dĩ không có khả năng hỗ trợ các giao dịch phân tán

2 Nhân bản và thống nhất trong hệ thống phân bố

2.1 Giới thiệu

2.1.1 Vì sao phải sao lưu?

Có 2 lý do chính để thực hiện việc sao lưu:

+ Để tăng tín tin cậy (tính sẵn sàng) cho hệ thống: Trong quá trình đọc hoặc ghi dữ liệu, nếu dữ liệu đó bị lỗi hay vì một nguyên nhân nào đó mà không thể dùng được, ta có thể dùng ngay bản sao dữ liệu đó để hệ thống không phải dừng lại và tránh được tình trạng sử dụng các dữ liệu không chính xác

Trang 4

+ Để tăng hiệu năng của hệ thống: Tăng quy mô của hệ thống cả về số lượng lẫn phạm vi địa lý

Ví dụ: nếu số lượng máy tăng => tải trên mỗi máy trong hệ phân tán cũng ko tăng lên nhiều hơn, phạm vi địa lý tăng => có thể sử dụng các bản nhân bản gần khu vực địa lý đó

2.1.2 Thống nhất dữ liệu

Đồng độ các bản sao sao cho các hệ thống luôn được đồng bộ về dữ liệu: khi một bản sao được cập nhật thì tất cả những bản còn lại cũng phải được cập nhật theo để đảm bảo tính thống nhất của dữ liệu

=> Điều này ảnh hưởng rất lớn đến hiệu năng của hệ thống

2.1.3 Khó khăn

Sao lưu như 1 kỹ thuật mở rộng các bản sao, có thể tăng hiệu năng của hệ thống vì chúng giúp làm giảm các trễ truy cập

Tuy nhiên chúng lại là nguyên nhân gây khó khăn cho việc duy trì tính thống nhất của

dữ liệu

Các bản sao được phân tán trên diện rộng , vấn đề đặt ra là làm sao xác định được bản sao ở đâu đang được cập nhật 1 cách nhanh chóng nhất

Nếu các bản sao ở xa thì việc cập nhật 1 bản được update sẽ gây ra tốn đường truyền trong mạng ( đồng bộ toàn bộ các bản sao ) mà việc thực hiện sao lưu này nhằm tăng hiệu năng của hệ thống => nếu đồng bộ không hợp lý thì sẽ làm giảm hiệu năng của toàn hệ thống

Đồng bộ từng phần tử rồi lan truyền sang các phần tử kế bên , việc này sẽ làm tăng hiệu năng nhưng sẽ dẫn đến việc có những thời điểm các bản sao là ko giống nhau Trong một số trường hợp ta cần phải nới lỏng những ràng buộc về tính thống nhất dựa trên:

+ Tần suất truy cập và cập nhật dữ liệu

+ Mục đích sử dụng

2.2 Các mô hình sao lưu hướng dữ liệu

Trang 5

Đây là kiểu mô hình sao lưu được sử dụng rộng rãi nhất.

Trong kiểu mô hình này, bất kì người sử dụng nào truy cập vào kho dữ liệu cũng sẽ nhìn thấy các thao tác được sắp xếp theo mô hình

Điều này trái ngược với các mô hình sao lưu hướng client (mình sẽ nói sau) nơi client được yêu cầu một mô hình sao lưu cụ thể và các client khác nhau sẽ nhìn thấy các thao tác theo những trật tự khác nhau

Kho dữ liệu có thể được đọc hay ghi bởi bất cứ tiến trình nào trong một hệ phân tán

2.2.1 Mô hình thống nhất liên tục

Mô hình này hoạt động dựa trên việc xác định xem việc ko thống nhất nào là có thể chấp nhận được dựa vào việc xác định các thông tin sau:

+ Độ lệch bằng số giữa các bản sao

+ Độ lệch theo trạng thái giữa các bản sao

+ Độ lệch trong thứ tự các lần cập nhật

Như vậy trong hệ thống sẽ quy định một độ lệch giữa các bản sao

Nếu một phiên bản được cập nhật mà độ lệch chưa đạt tới giá trị quy định thì giữa bản sao đó và các bản sao khác vẫn được coi là thống nhất và ko phải thực hiện cập nhật

Độ lệch bằng số giữa các bản sao:

Thường sử dụng với các chương trình có dữ liệu là số

Có 2 dạng của độ lệch này là: độ lệch tương đối và độ lệch tuyệt đối

Có thể xác định số này là số lượng bản cập nhật cho 1 bản sao nào đó

Độ lệch về trạng thái giữa các bản sao:

Liên quan đến thời gian cuối cùng 1 bản sao đã được cập nhật

Với 1 số ứng dụng thì nó có thể chấp nhận dữ liệu cũ , miễn là ko quá cũ

Ví dụ: trong dự báo thời tiết , máy chủ liên tục nhận được các thông tin về thời tiết nhưng chỉ đồng bộ 30’/lần …

Độ lệch trong thứ tự cập nhật:

Trang 6

Thứ tự cập nhật được phép khác nhau ở các bản sao khác nhau khi sự khác nhau vẫn trong giới hạn

Khi nhận được yêu cầu cập nhật thì bản sao tạm thời cập nhật và chờ sự đồng ý của các bản sao khác về quá trình cập nhật

Như vậy cần có thêm 1 bản sao phụ để nếu không nhận được sự đồng ý cập nhật của các bản sao khác thì quay lại bản cũ

Có thể sau nhiều lần cập nhật tạm thời thì bản sao mới được cập nhật lâu dài

2.2.2 Mô hình thống nhất theo thứ tự thao tác

Truy cập tương tranh đến các tài nguyên chia sẻ

Tài nguyên chia sẻ là dữ liệu được sao lưu

Mạnh hơn mô hình liên tục

Khi thực hiện cập nhật, thứ tự cập nhật được thống nhất giữa các bảo sao

a Thống nhất chặt

Là mô hình thỏa mãn điều kiện sau:

Thao tác đọc bất kỳ trên mục dữ liệu x đều trả về một giá trị tương ứng với kết quả của thao tác ghi gần nhất trên x đó

Sử dụng khái niệm thời gian tuyệt đối

Thời gian tuyệt đối này là tổng thể cho cả hệ thống để xác định đúng khái niệm "gần nhất" => Điều này là khó khả thi với hệ phân tán

*Các kí hiệu:

Wi(x)a: thao tác ghi được thực hiện bởi tiến trình P(i) lên mục dữ liệu x với giá trị a Ri(x)b: thao tác đọc được thực hiện bởi tiến trình P(i) lên mục dữ liệu x cho kết quả b Giá trị khởi tạo của các dữ liệu là NIL (x = null)

Do việc lan truyền cục bộ của P1 chưa tới P2 nên P2 đọc dữ liệu x vẫn là giá trị null ban đầu => Mô hình này là không khả thi

b Thống nhất tuần tự

Trang 7

Là mô hình lỏng lẻo hơn, yếu hơn mô hình thống nhất chặt.

Các tiến trình đều có một chuỗi thao tác cục bộ

Nó thỏa mãn các yêu cầu sau:

+ Kết quả của sự thực hiện bất kỳ là như nhau nếu thao tác đọc và ghi do các tiến trình thực hiện trên kho dữ liệu một cách tuần tự và các thao tác của mỗi tiến trình xuất hiện trong chuỗi thao tác này chỉ ra bởi chương trình của nó

+ Khi các tiến trình chạy đồng thời trên các máy khác nhau thì cho phép sự đan xen của các thao tác nhưng tất cả các tiến trình đều phải nhận biết được sự đan xen của các thao tác đó là như nhau

+ Tất cả các tiến trình đều nhìn thấy một thứ tự của các thao tác ghi

o Mô hình nhất quán tuần tự

o Không là mô hình nhất quán tuần tự.

c Thống nhất tuyến tính

Là mô hình yếu hơn mô hình thống nhất chặt nhưng mạnh hơn mô hình thống nhất tuần tự

Mô hình này thỏa mãn điều kiện sau:

+ Kết quả của bất kì sự thực hiện nào là như nhau nếu các thao tác (đọc và ghi) của tất cả các tiến trình lên dữ liệu được thực hiện môt cách tuần tự và các thao tác của mỗi tiến trình xuất hiện trong chuỗi thao tác này phải theo thứ tự đã được chỉ

ra trong chương trình của nó

d Thống nhất nhân quả

Đây là mô hình lỏng lẻo hơn mô hình thống nhất tuần tự

Mô hình này phân biệt các sự kiện có quan hệ nhân quả và các sự kiện không có quan

hệ nhân quả

Mô hình thống nhất nhân quả thỏa mãn các điều kiện sau:

+ Một thao tác đọc có quan hệ nhân quả với thao tác ghi cung cấp dữ liệu cho nó

Trang 8

+ Một thao tác ghi có quan hệ nhân quả với một thao tác đọc xảy ra trước nó trong cùng một tiến trình

e Thống nhất FIFO

Thống nhất FIFO còn được gọi là nhất quán PRAM

Đây là mô hình yếu nhất vì mô hình này bỏ qua giới hạn về trật tự của bất kì thao tác đồng thời nào

Mô hình thỏa mãn điều kiện:

+ Các thao tác ghi bởi một tiến trình đơn phải được tất cả các tiến trình khác nhìn thấy theo cùng một trật tự mà chúng đề ra

+ Nhưng thao tác ghi bởi nhiều tiến trình khác nhau có thể được thấy theo những trật tự khác nhau bởi các tiến trình khác nhau

f Thống nhất yếu

Mô hình này không tập trung vào các thao tác trên dữ liệu mà chúng quan tâm đến trật

tự các nhóm lệnh bằng việc sử dụng các biến được đồng bộ

Mô hình có ba đặc tính sau:

+ Việc truy cập đến một biến đồng bộ hóa được kết hợp với kho dữ liệu là một thống nhất tuần tự

+ Không có thao tác nào lên các biến đồng bộ hóa được phép thực hiện cho đến khi tất cả các thao tác ghi trước đó được hoàn thành ở mọi nơi

+ Không có thao tác đọc hay ghi dữ liệu lên các mục dữ liệu nào được phép thực hiện cho đến khi tất cả các thao tác trước đó lên các biến đồng bộ hóa được thực hiện

o Mô hình nhất quán yếu

o Không là mô hình nhất quán yếu

g Thống nhất đi ra (Release consistency)

Sử dụng thêm hai lệnh:

+ Lệnh acquired: để báo muốn vào vùng tới hạn (critial region)

Trang 9

+ Lệnh release: để báo giải phóng vùng tới hạn.

Điều kiện thỏa mãn:

+ Trước khi thực hiện một thao tác đọc hay ghi lên dữ liệu chia sẻ thì tất cả các thao tác acquire do tiến trình này thực hiện trước đó phải hoàn tất

+ Trước khi một thao tác release được phép thực hiện thì tất cả các thao tác đọc và ghi do tiến trình này thực hiện trước đó phải được hoàn tất

+ Truy cập vào các biến đồng bộ hóa là nhất quán FIFO (Không yêu cầu nhất quán tuần tự)

h Thống nhất đi vào (Entry consistency)

Giống mô hình thống nhất đi ra, mô hình thống nhất đi vào cũng sử dụng hai lệnh acquired và release khi muốn sử dụng vào vùng tới hạn

Điều kiện sau:

+Một thao tác acquire để truy cập vào một biến đồng bộ hóa không được phép thực hiện trong một tiến trình cho đến khi tất cả các cập nhật lên mục dữ liệu trong tiến trình đó được thực hiện

+ Trước khi một truy cập trong chế độ dành riêng của một tiến trình tới một biến đồng bộ hóa được phép thực hiện thì không tiến trình nào khác còn được giữ các biến đồng bộ hóa, trong chế độ không dành riêng thì không cần yêu cầu như vậy + Sau khi một truy cập trong chế độ dành riêng lên một biến đồng bộ hóa được thực hiện thì bất kì sự truy cập của tiến trình nào khác trong chế độ không dành riêng lên biến đó cũng không được thực hiện cho đến khi chủ nhân của biến đồng

bộ thực hiện xong việc truy cập của mình

3.1 Kiến trúc của Hadoop

Hadoop có một cấu trúc liên kết master-slave Trong cấu trúc này, chúng ta có một node master và nhiều node slave Chức năng của node master là gán một tác vụ cho các node slave khác nhau và quản lý tài nguyên Các node slave là máy tính thực tế có thể không mạnh lắm Các node slave lưu trữ dữ liệu thực trong khi trên master chúng

ta có metadata

Kiến trúc Hadoop gồm có ba lớp chính đó là

+ HDFS (Hadoop Distributed File System)

Trang 10

+ Map-Reduce

+ Yarn

3.2 HDFS (Hadoop Distributed File System)

Là hệ thống file phân tán, cung cấp khả năng lưu trữ dữ liệu khổng lồ và tính năng tối ưu hoá việc sử dụng băng thông giữa các node HDFS có thể được sử dụng để chạy trên một cluster lớn với hàng chục ngàn node

Cho phép truy xuất nhiều ổ đĩa như là 1 ổ đĩa Nói cách khác, chúng ta có thể sử dụng một ổ đĩa mà gần như không bị giới hạn về dung lượng Muốn tăng dung lượng chỉ cần thêm node (máy tính) vào hệ thống

Có kiến trúc Master-Slave

+ NameNode chạy trên máy chủ Master, có tác vụ quản lý Namespace và điều chỉnh truy cập tệp của client

+ DataNode chạy trên các nút Slave có tác vụ lưu trữ business data thực tế + Một tập tin với định dạng HDFS được chia thành nhiều block và những block này được lưu trữ trong một tập các DataNodes

+ Kích thước 1 block thông thường là 64MB, kích thước này có thể thay đổi được bằng việc cấu hình

Trang 11

3.3 Map-Reduce

Map-Reduce là một framework dùng để viết các ứng dụng xử lý song song một lượng lớn dữ liệu có khả năng chịu lỗi cao xuyên suốt hàng ngàn cluster(cụm) máy tính

Map-Reduce thực hiện 2 chức năng chính đó là Map và Reduce

+ Map: Sẽ thực hiện đầu tiên, có chức năng tải, phân tích dữ liệu đầu vào và được chuyển đổi thành tập dữ liệu theo cặp key/value

+ Reduce: Sẽ nhận kết quả đầu ra từ tác vụ Map, kết hợp dữ liệu lại với nhau thành tập dữ liệu nhỏ hơn

Để dễ hiểu hơn, chúng ta hãy cùng xem ví dụ WordCount sau đây WordCount là bài toán đếm tần suất xuất hiện của các từ trong đoạn văn bản Và chúng ta sẽ mô tả quá trình xử lý bài toán này bằng Map-Redue

Trang 12

Đối với hàm Map:

+ Input là 1 đoạn văn bản +Output là các cặp <word, 1>

Hàm Map được thực hiện song song để xử lý các tập dữ liệu khác nhau

Đối Với hàm Reduce:

+ Input có dạng <word, [list]>, trong đó list là tập hợp các giá trị đếm được của mỗi từ

+Output: <word, tổng số lần xuất hiện của từ>

Hàm Reduce cũng được chạy song song để xử lý các tập từ khoá khác nhau

Giữa hàm Map và Reduce có một giai đoạn xử lý trung gian gọi là hàm Shuffle Hàm này có nhiệm vụ sắp xếp các từ và tổng hợp dữ liệu đầu vào cho Reduce từ các kết quả đầu ra của hàm Map

3.4 Yarn

YARN (Yet-Another-Resource-Negotiator) là một framework hỗ trợ phát triển ứng dụng phân tán YARN cung cấp daemons và APIs cần thiết cho việc phát triển ứng dụng phân tán, đồng thời xử lý và lập lịch sử dụng tài nguyên tính toán (CPU hay memory) cũng như giám sát quá trình thực thi các ứng dụng đó

Bên trong YARN, chúng ta có hai trình quản lý ResourceManager và NodeManage

Ngày đăng: 24/02/2023, 10:58

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