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

Tìm hiểu về bigtable và giải pháp lưu trữ dữ liệu phân tán có cấu trúc

74 7 0
Tài liệu được quét OCR, nội dung có thể không chính xác

Đ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

Nội dung

Trang 1

TRÂN NGỌC THUẬN (KHOA HỌC MÁY TÍNH) - HUÉ, 2018

BỘ GIÁO DỤC VÀ ĐÀO TẠO DAI HOC HUE

TRUONG DAI HOC KHOA HOC

TRAN NGOC THUAN

TIM HIEU VE BIGTABLE VA GIAI PHAP LUU TRU

DU LIEU PHAN TAN CO CAU TRUC

LUAN VAN THAC SI KHOA HOC MAY TINH

Thira Thién Hué, 2018

Trang 2

BỘ GIÁO DỤC VÀ ĐÀO TẠO ĐẠI HỌC HUE TRƯỜNG ĐẠI HỌC KHOA HỌC TRẢN NGỌC THUẬN

TIM HIEU VE BIGTABLE VA GIAI PHAP LUU TRU

DU LIEU PHAN TAN CO CAU TRUC

CHUYEN NGANH: KHOA HOC MÁY TÍNH MA SO: 60.48.01.01

LUAN VAN THAC Si KHOA HOC DINH HUONG UNG DUNG

NGUOI HUONG DAN KHOA HOC PGS.TS NGUYEN MAU HAN

Thừa Thiên Hué, 2018

Trang 3

LỜI CAM ĐOAN

Tôi xin cam đoan bản luận văn này là công trình nghiên cứu riêng của tôi, không sao chép nội dung ở bất kỳ công trình khoa học nào trước đây Các kết quả đạt

được và nêu trong luận văn là do trong quá trình thực nghiệm đúc kết ra và được trích dẫn đầy đủ Tơi xin hồn tồn chịu trách nhiệm về luận văn này

Học viên

Trang 4

LOI CAM ON

Lời đầu tiên, tôi xin gởi lời cảm ơn chân thành sâu sắc đến quý thầy cô giáo

Khoa Công nghệ thông tin và Phòng Đào tạo Sau đại học - Trường Đại học Khoa học Huế cùng Trường Đại học An Giang đã tận tình hướng dẫn, truyền đạt kiến

thức, tạo mọi điều kiện thuận lợi trong quá trình học tập và thực hiện luận văn tốt nghiệp

Tôi xin chân thành gởi lời biết ơn đến thầy giáo PGS.TS Nguyễn Mậu Hân, người đã hướng dẫn vô cùng tận tình và có nhiều góp ý sâu sắc, nhận xét đúng đắn cho tôi trong suốt quá trình nghiên cứu, kịp thời cho tôi nhiều lời động viên cũng như những hướng dẫn rất quý báu để tôi có thể hoàn thành tốt được đề tài này

Trong quá trình thực hiện để tài, xin chân thành gửi lời cám ơn đến sự giúp đỡ, những lời động viên từ phía gia đình, đồng nghiệp, bạn bè là động lực to lớn giúp tơi hồn thành tốt dé tài nghiên cứu của mình

Bản thân tôi đã cố gắng hết sức trong quá trình thực hiện đề tài này nhưng chắc chắc sẽ không tránh khỏi những thiếu sót Kính mong quý thầy cô và các bạn góp ý chân tỉnh để hoàn thiện bài nghiên cứu

Một lần nữa, tôi xin cảm ơn và mong nhận được tình cảm chân thành từ tất cả

moi ngwoi

Xin chan thanh cam on!

An Giang, ngày 20 tháng 7 năm 2018

Học viên

Trần Ngọc Thuận

Trang 5

MỤC LỤC 09)09.90 60970085 .d,.H,AA , i 090990 090077 .Ỏ ii

MUC LUC icessccsssssssssssessecssscssscsssccsscsssccsscssscsssessscssscsssccsscsssessscssscssscssscsscssesseesseeessees ii DANH MUC CAC BANG cacsngunsbstiisttädrdsttätridsitägidlsitäg1L20188102018810301881 0.0188 q80 vi

DANH MỤC CÁC HÌNH 6-55 5+2 2x2 EEk1111111211111111111 1c, vii DANH MỤC CÁC TỪ VIẾT TẮTT - ¿s2 ©2se©c+++Exetrxeerxeerxerrkerrserree viii

) 9E .)H,A 1

Chuong 1.TONG QUAN VE TINH TOAN PHAN TAN VA BIG DATA 2

1.1 GIGI THIEU VE TINH TỐN PHÂN TÁN -©222222222222222222222-e2 2 12 CÁC MƠ HÌNH LẬP TRÌNH PHÂN TÁN VÀ SONG SONG 3

1.2.1 Lập trình song song với bộ nhớ chia SẺ St St Sshsrersrrerrrrerree 4 1.2.2 Lập trình song song với bộ nhớ phân tán -.- :cccSccscssccerrrrerrees 9

13 CÁC MƠ HÌNH LẬP TRÌNH PHÂN TÁN -52222222212221222.2 e6 12

1.3.1 Mô hình MPI 52 2222222221221122111211221112122122112121222 xe 12 1.3.2 Mô hình CORBA

1.3.3 Mô hình MapReduce

1.4 GIỚI THIỆU VẺ BIG DATA VÀ TẬP TIN CÓ KÍCH THƯỚC LỚN 18 1.5 TIỂU KẾT CHƯƠNG I -22222122212221221211222.2122 xe 21

Chương 2.CÔNG CỤ LƯU TRỮ DỮ LIỆU BIGTA.BLE - 22

2.1 GIỚI THIỆU CHUNG VẺ BIGTABLE ©22-222222122212221222122122e ?2 22 MƠ HÌNH DỮ LIỆU CỦA BIGTABLE -©22-22222212221221222.x2e 22

2.2.1 Hàng 0 221 2212221222221 ea 22 2.2.2 Họ cột Q.20 2222212221221222222112212222222 222222222 rrea 23

2.2.3 Nhãn thời gian L1 SH nh HH Hà HH He 24

23 CÁCH THỨC HOẠT DONG CỦA BIGTABLE 2222222222222 24

2.3.1 Giao diện API 25 222 2212221222122222112211222122222222 ra 24

2.3.2 Xây dựng các khối -22 222 221122122212221211221122222222ee 26

Trang 6

2:4: THỤG THEBIGTABIE:seesessroseinsstsoaidiidoagnigoogtioottitrsosnsaitwGonstgal 27 24.1 Định wị bằng: pPhỤ:zszecseseesrreimnenrssrienirisrsritnins215011010EEEL81300010EES0E010103502002 00020 2.4.2 Chỉ định bảng phụ 2.4.3 Phục vụ bảng phụ S1 HH HH Hà He treo 30 Hình 2.2 Mô hình phục vụ bảng phụ - c St nhe 31 "` 32

2.5 TIỂU KẾT CHƯƠNG 2 2252222222222 1 tt trrrrrrreo 32

Chương 3 LƯU TRỮ DỮ LIỆU PHAN TAN CO CAU TRUC VA MO PHONG33 3.1 HE THONG FILE PHAN TAN HDFS TREN NEN TANG HADOOOP 33

3.1.1 Giới thiệu về HDES 55: c2 22221 2222 2 tre 33

3.1.2 Kiến trúc và cách hoạt động của HDFES cà cseiherererres 33

EM //10109)00/02 0n -‹aẲẰII L.I.I Ả 37

3.2.1 Giới thiệu về MapReduee - 22 2222212221221122112121222ee 37 3.2.2 Giới thiệu về Hadoop - 52 222221222112211211121112112112122 e6 37

3.3 CÔNG CỤ LƯU TRỮ BIG DATTA -. ©222222222222222122231122312222122x 2 38 3.3.1 Công cụ lưu trữ HBase - - nS nhàng tre 38 8.322 MOthink dtl Gs ceserenamncaersrsrorr sneer mernormererersn nercerrenrennmrsramnsenrenties 3.3.3 Khung nhin khai niém

3.3.4 Khung nbin lou trit vat ly eee eeeeeeeeeeneeeeeeeneeneeeeeeeneeneeesreeens 40

BPS aes tthe yar thane itll resem remmnoenenan neers eennuerson man eunemseempmmusmmeens 4I

3.4 CÔNG CỤ LƯU TRỮ HORTONWORKS DATA PLATFORM 45 3.4.1 Giới thiệu HDP - St n1 46 3.4.2 Những đặc tính quan trọng của HDP .- St Scsiisrrrrerrrrerree 46

3.4.3 Các thành phần của HDP -2- 22 2222221222122211211121122121212 e6 46

3.4.4 Cài đặt HortonWorks 2.6.5 trên Hệ điều hành Window -s5¿ 48

3.5 MÔ PHỎNG LƯU TRỮ DỮ LIỆU . -2¿222c¿22222Sv2cccccrrrrree 48

3.5.1 Mô tả bài toán ch HH re, 48

3.5.2 Dữ liệu đầu vào, đầu ra của bài toán -s 22s 221 21211151115x E2 xee 48

3.5.3 Thực hiện truy vấn với Big Dafa 22-222 22222122221.2222ee 51

Trang 7

Hình 3.6 Câu lệnh truy vấn tinh thời gian trễ trung bình các chuyến bay 51 Hình 3.7 Kết quả truy vấn thời gian trễ trung bình các chuyến bay 52

3.6 TIỂU KÉT CHƯƠNG 3 22.222 2221222112221122112211211 211cc 53

KẾT LUAN VÀ KIÊN NGH[czccninzt n0 Hồn gi Hãng Hãng gi t1381g3111881g3111381g34pta8xg4 54

Trang 8

DANH MỤC CÁC BẢNG

Bang 1.1 Bang so sánh tiến trình và luồng

Bảng 3.1 Mô ta cấu trúc dữ liệu đầu vào

Trang 9

DANH MỤC CÁC HÌNH

Hình 1.1 Hoạt động của luồng trong Pthread 22-222 2222252221122312111211 2112 xe 6 Hình 1.2 Mô hình lập trình song song với bộ chia sẻ bộ nhớ dựa và luỗng 8 Hinh, 1,3: M6 hinh FORK, JOIN seem 9 Hinh 1.4 Sự trao đổi thông điệp giữa hai tiến trình -222 2222222222226 12

Hình 1.5 Cấu trúc chương trình MPI - 2222222221221222112212212212212122.2 e6 13

Hình 1.6 Mô hình kiến trúc CORBA 222-2222 2221 2211221122121 21 e6 15 Hình 1.7 Truy cap internet CORBA thong qua IIOP ee eeceeeeeeeteneeteereneenes 17 Hình 1.8 Hinh anh don giản hóa của quá trình xử lý MapReduee 17

Hình 1.9 Biểu diễn các thuộc tính Big Data 5522222 22122212222222 e6 19

Hình 1.10 Các thành phần của Big Datfa -2- 25 2222221222122222222ee 20

Hình 2.1 Hệ thứ bậc 3 cấp - 22222 222222122122121121121121222222 2222 e 27

Hình 2.2 Mô hình phục vụ bảng phụ .- ccc c 2S nh Hrehereeee 31 Hình 3.1 Quá trình client đọc tập tin trong HDES St se sisirerrrrrrreres 34 Hình 3.2 Quá trình client ghi tập tin trong HDES à c se sisieirrrereres 36 Hình 3.3 Mô hình lữu trữ Big Data với Hbase eeeeceeeeeeteeeteeeeeeneeees 39 Hình 3.4 Các thành phần chính của HDP 22- 222 22222212221222122122221,22 e6 47 Hình 3.5 Trang tải về tập dữ liệu các chuyến bay -.- 222222212221222122122 e6 49 Hình 3.6 Câu lệnh truy vấn tính thời gian trễ trung bình các chuyến bay 51 Hinh 3.7 Két qua truy vấn thời gian trễ trung bình các chuyến bay 32 Hình 3.8 Kết quả truy vấn trả về hãng hàng không có thời gian trễ lớn nhất 32

Trang 10

DANH MỤC CÁC TỪ VIẾT TẮT

HDFS — Hadoop Data File System HDP — Hadoop Data Platform

Trang 11

MỞ ĐẦU

Trong thời đại hiện nay, công nghệ thông tin đóng vai trò quan trọng trong sự phát triển của xã hội Các thành quả trong lĩnh vực công nghệ thông tin đã đem

lại lợi ích to lớn cho con người Internet trở thành một công cụ làm việc và giải trí

hữu ích cho chúng †a mọi lúc mọi nơi Xã hội ngày càng phát triển với xu hướng toàn cầu hóa mọi mặt của đời sống ngày càng được nâng cao, số lượng người sử dụng máy tính và các tài nguyên trực tuyến để xử lý công việc ngày càng tăng

nhanh Khi khối lượng dữ liệu của một hệ thống tăng nhanh đến một mức độ

(khoảng hàng ngàn Terabyte) thì việc hệ thống phải đối mặt với thách thức làm sao để lưu trữ và phân tích dữ liệu ngày càng lớn Những vấn đề về xử lý ngôn

ngữ tự nhiên, nhận dạng, dự báo thông tin đòi hỏi phải xử lý dữ liệu với tốc độ cao và khối lượng dữ liệu rất lớn Việc tính toán tuần tự trên các máy tính riêng lẻ

không thể đáp ứng nhu cầu khai thác sử dụng của con người do đó cần có một hệ thống máy tính cùng với cơng nghệ thuật tốn để giải quyết bài toán về lưu trữ, xử lý và phân tích các loại dữ liệu lớn (Bigdata) một cách nhanh nhất đáp ứng được yêu cầu của người dùng

Công nghệ thông tin đang bước vào giai đoạn phát triển bùng nô Các thiết bị thông minh ra đời với đa dạng về chủng loại hỗ trợ tối đa cho người dùng dẫn đến đữ liệu tăng lên một cách nhanh chóng

Nhiều nhà nghiên cứu trên thế giới đã tìm kiếm và đưa ra nhiều giải pháp để xử lý dữ liệu ngày cảng tăng nhanh này Một trong những giải pháp đó là xây dựng

hệ quản trị cơ sở dữ liệu với các Bigtable

Trang 12

Chương 1 TÔNG QUAN VÈ TÍNH TỐN PHÂN TÁN VÀ BIG DATA 1.1 GIỚI THIỆU VẺ TÍNH TỐN PHẦN TÁN

Tính toán phân tán là phương pháp tính toán phân quyền và song song, sử

dụng hai hay nhiều máy tính được nỗi với nhau để thực hiện một nhiệm vụ chung

Như vậy khi sử dụng phương pháp tính toán phân tán các ứng dung và logic nghiệp

vụ sẽ được phân bố trên nhiều nền tảng khác nhau Nói cách khác việc xử lý được

phân bố trên một hay nhiều máy mà ở đó mỗi quá trình chỉ thực hiện một phần của ứng dụng theo một trình tự nhất định Công nghệ tính toán phân tán cho phép thực hiện các tương tác giữa các máy tính với người và giữa máy tính với máy tính trên cơ sở lập trình phân tán

Ý tưởng chính của lập trình phân tán là liên kết và tận dụng tối đa các nguồn tài nguyên thông qua liên kết mạng Tính toán phân tán là cần thiết vì việc sử dụng các nguồn lực phân tán cho phép tăng tốc quá trình tính toán, xử lý vấn để song song Tính song song được hiểu là khả năng có thể chia phạm vi vấn dé thành các phần nhỏ đề xử lý đồng thời và độc lập

Việc sử dụng mô hình tính toán phân tán trong một số ứng dụng sẽ làm giảm thiểu sự chuyên giao dữ liệu không cần thiết giữa các bộ phận xử lý trong một quy

trình Các thông tin được sử dụng có thể được phân tán về mặt địa lý, có thể có

nhiều thành phân, có thể có nội dung và phạm vi rất lớn

Ngày nay, tốc độ đường truyền ngày cảng cao và khả năng xử lý của hệ thống tính toán ngày càng lớn, tính toán phân tán đang được ứng dụng ngày càng phổ

biến Các dữ liệu thô đã được sàng lọc và chỉ có dữ liệu cần thiết mới được chuyển

về bộ phận xử lý trung tâm

Ví dụ ở đây là việc thiết kế hay chế tạo các thiết bị máy móc hoặc công trình

xây dung, qua trình này đòi hỏi sự tham gia của rất nhiều chuyên gia hay cơ sở sản

xuất ở các lĩnh vực khác nhau và phần lớn công việc của họ thực hiện có tính độc

Trang 13

toán nhỏ độc lập, khi đó việc tính toán phân tán sẽ mang lại hiệu quả cao Một bài

toán lớn và phức tạp được chia thành nhiều bài toán nhỏ đơn giản, giao cho nhiều

đơn vị thực hiện sau đó tổng hợp kết quả lại

Ngoài ra cơng nghệ tính tốn phân tán cho phép xây dựng các trung tâm tính

toán mà ở đó khối lượng các tính toán lớn sẽ được thực hiện trên các máy tính có sức mạnh xử lý lớn Các bộ phận nhập và xử lý dữ liệu có thể được thực hiện trên

các hệ thống rẻ tiền hơn Điều này làm giảm chỉ phí đáng kế cho đầu tư phần cứng và phân mêm

Có rất nhiều công nghệ khác nhau có thể được sử dụng để xây dựng một hệ thống tính toán phân tán như DCOM, CORBA, RMI, MapReduce, Web service

Mỗi công nghệ được sử dụng tùy thuộc vào từng bài toán cụ thê

1.2 CAC MƠ HÌNH LẬP TRÌNH PHÂN TÁN VÀ SONG SONG

Về lý thuyết, lập trình song song là việc sử dụng nhiều hơn một bộ vi xử lý để hoàn tất một công việc Mô hình lập trình song song không đặc tả riêng cho một

loại kiến trúc bộ nhớ hay máy tính cụ thể

Trong môi trường lập trình song song, các câu lệnh được thực hiện đan xen

nhau, có thể có nhiều hơn một lệnh được thực hiện tại một thời điểm

Về nguyên tắc, trong lập trình song song, mỗi chương trình sẽ tự thực hiện các tiến trình của mình, tuy nhiên chúng phải tương tác với nhau và việc thực hiện của

chúng ảnh hưởng tới nhịp độ thực hiện của nhau

Để chuyên đổi từ việc lập trình tuần tự sang lập trình song song, người lập trình không chỉ viết chương trình, đữ liệu như trong môi trường tuần tự mà còn phải sử đụng các công cụ để đồng bộ hoá và điều khiển sự tương tác giữa các tiến trình

Nói cách khác, người lập trình khi đó phải tự tạo lập các tiến trình và điều phối việc

Trang 14

1.2.1 Lập trình song song với bộ nhớ chỉa sẻ a Lập trình trên hệ thông bộ nhớ dùng chung

Trong mô hình bộ nhớ chia sẻ, các nhiệm vụ cùng chia sẻ một không gian địa

chỉ chung có thể được truy cập đọc ghi theo phương thức không đồng bộ Các cơ chế khác nhau như locks và semaphore được điều khiển dé truy cập đến bộ nhớ toàn cục Xét theo quan điểm của lập trình viên thì ưu điểm của mô hình này là không có khái niệm sở hữu dữ liệu Nghĩa là không phải chỉ định rõ ràng quá trình truyền dữ

liệu giữa nhiệm vụ gửi và nhiệm vụ nhận dữ liệu Tính chất này giúp cho phát triển các chương trình đơn giản hơn Tuy nhiên, khi đó việc hiểu và đảm bảo tính cục bộ

trở nên khó khăn và cũng được chú ý nhiều nhất trong kiến trúc bộ nhớ chia sẻ

b Lập trình bộ nhớ chia sẻ dựa vào tiễn trình

Tiến trình là một thực thể điều khiển đoạn mã lệnh có riêng một không gian

địa chỉ, có ngăn xếp riêng rẽ, có bảng chứa các số miêu tả tập tin được mở cùng tiến

trình và đặc biệt là có một định danh PID (process identifier) duy nhất trong toàn bộ

hệ thống vào thời điểm tiến trình đang chạy

Yêu cầu của xử lý song song là khả năng tạo ra một số tiến trình cần thiết cho bài toán và khả năng hủy bỏ tiến trình khi phần việc xử lý song song kết thúc để giải phóng các tài nguyên mà tiến trình đã chiếm giữ và không cản trở hoạt động của những tiến trình khác

Các hệ điều hành Linux, Windows hay Unix déu phai phối hợp sự hoạt động

đồng bộ của tiến trình Khi muốn sử dụng bộ nhớ chung, ta cần phải xin cấp phát bộ nhớ và sau đó khi sử dụng xong phải giải phóng chúng

Khi có một tiến trình truy cập vào bộ nhớ với mục đích cập nhật thì nó phải được đảm bảo rằng không một tiến trình đữ liệu nào khác đọc dữ liệu ở vùng nhớ

Trang 15

c Lập trình song song bộ nhớ chia sẻ dựa vào luông

Luéng là chuỗi các lệnh được lập trình nhỏ nhất có thể được quản lý độc lập bởi một bộ lập lịch, thường là một phan của hệ điều hành Da phân, một luồng là một thành phan của một tiến trình Nhiều luồng có thể tồn tại trong một tiến trình,

thực hiện đồng thời và chia sẻ tài nguyên

Trong phần trên, luận văn đã đề cập đến tiến trình và cách lập trình song song, vậy tiến trình và luồng khác nhau như thế nào? Hãy xem bảng so sánh đưới đây (Bảng 1.1): Bảng 1.1 Bảng so sánh tiễn trình và luồng Tiến trình (process) Luéng (thread) Một tiến trình có thể có nhiều luéng Đa phân, một luồng là một thành phần của một tiến trình

Hiệu năng đồng bộ thấp, do các tiến Hiệu năng đồng bộ cao, các luồng tập trình tốn nhiều thời gian hoạt động của | trung vào sự truy cập các biến đùng hệ thống chung của chương trình

Các luồng của một tiễn trình có thể chia sẻ với nhau về không gian địa chỉ, các đoạn

dữ liệu và môi trường xử lý, đồng thời cũng có vùng đữ liệu riêng đề thao tác

Đa số các hệ điều hành hiện nay hỗ trợ đa luồng: UNIX/Linux, SUN Solaris, Windows, OS/2, Tuy nhién, mỗi hệ điều hành hỗ trợ việc lập trình đa luồng là

khác nhau Để có sự thống nhất, hiện nay đã có một số chuẩn dùng chung như Pthread cua IEEE Portable Operating System Interface, POSIX

Trong Pthread, chương trình chính cũng chính là một luồng, để khai báo, tạo

lập và kết thúc bằng các hàm sau:

pthread t aThread; // Khai báo một luồng

pthread_create (saThread,&status, (void*)procl, (void*)arg); //tao luéng

Trang 16

aThread mm (&arg}: proc1 pthread_create(&aThraad,&status,(void*)proc1,(void*)arg); + pthread_join(aThread, void *status); ees a status)

Hình 1.1 Hoạt động của luồng trong Pthread

Để giải quyết vấn đề tranh chấp khi truy xuất tài nguyên đùng chung giữa các

luồng, thực hiện qua các hàm sau:

pthread mutex init(mutex, NULL)

pthread_mutex_lock (mutex)

pthread_mutex_unlockinit (mutex)

pthread_mutex_ destroy (mutex)

Đề hiểu rõ hon vé Pthread, chúng ta cùng xem đoạn mã chương trình tính tổng các phần tử trong mảng số nguyên bằng cách lập trình đa luồng, mô phỏng bằng ngôn ngữ C

#include <studio.h> #include <pthread.h>

imt a [100], N = 50;

int ok, k, next, nProc =3;

Trang 17

next= N - 1;

thread_mutex_init (&lock, NULL); ok=0;

for(i = 0; i < nProc; i++) {

if (0==pthread_create (&id, NULL, work, NULL) ) continue; else printf ("Khéng tao dugc luồng !\n"); pthread_exit(&status) ; } /* Chương trình xử lý vẫn đề loại trừ nhau giữa các luổng để thực hiện song song */ void *work(){ int 1, ctr, 7 ý ctr = 0; while (ok==0) ; /* Chờ cho đến khi tất cà các luồng được tao lập*/ do{ pthread_mutex_lock(&lock); °L = next ——=; pthread mutex unlock (&clock) ; CT1 tự if(i >= 0) ali] += k; if (itpthread_ self 0 = 0) sleep(1); /* cham lai một nhịp */ }while(i >= 0);

prirtf ("Thread $%d đã thực hiện %d vong lap\n", pthread self , ctr);

Trang 18

cho mỗi luồng là các thủ tục con của chương trình chính Và bất kì luồng nào cũng

có thể thực hiện bất kì thủ tục con nào tại cùng thời điểm với các luồng khác Trong

mô hình luồng, các luồng kết nối với nhau thông qua bộ nhớ toàn cục Với việc kết nối này, chương trình phải được xây dựng một cách đồng bộ đề tránh cùng lúc có

nhiều luồng cùng cập nhập một vị trí trong bộ nhớ toàn cục chương trình chính Tl T2 a time T4

Hình 1.2 Mô hình lập trình song song với bộ chia sẻ bộ nhớ dựa và luồng

d Lập trình song song bộ nhớ chia sẻ với QpenMP

OpenMP là một API hỗ trợ lập trình xử lý song song với bộ nhớ chia sẻ

OpenMP hỗ trợ nhiều ngôn ngữ lập trình như C, C++, Fortran chạy trên các hệ điều hành Solaris, Linux, macOS, Windows

OpenMP bao gồm các thành phần sau:

+ Compiler Directives: cac chi thi bién dich

+ Runtime Libarary Routines: cac thu vién + Environment Variables: cac bién môi trường

OpenMP cho phép các lập trình viên đơn giản hóa việc phát triển các ứng dụng song song trên nhiều nền tảng, từ máy tính để bàn đến siêu máy tính, thông

Trang 19

Mô hình sử dụng trong OpenMP là mô hình FORK — JOIN theo hình dưới + { parallel region } { parallel region} day: master thread |

Hình 1.3 Mô hình FORK - JOIN

Trong mô hình này, các lệnh chương trình khi khởi chạy sẽ là tuần tự bởi Master Thread cho dén khi gp ving can xử lý song song

+ Fork: Master Thread sé tạo ra các luéng thực hiện song song Các đoạn mã

song song trong chương trình sẽ được các luồng này thực thi đồng thời

+ Join: khi các luồng thực thi các đoạn mã song song kết thúc, chúng sẽ được

đồng b6 va Master Thread tiép tục xử lý các đoạn lệnh tuần tự

1.2.2 Lập trình song song với bộ nhớ phần tán

Tính toán phân tán là những tính toán được thực hiện trên cơ sở kết hợp tính

toán và truyền thông của hai hay nhiều máy tính trên mạng Mô hình tính toán phân tán có những ưu điểm:

+ Cho phép chia sẻ đữ liệu được lưu ở nhiều máy tính khác nhau + Chia sẻ với nhau về một số chức năng chính của máy tính

+ Độ tin cậy và khả năng chịu lỗi cao hơn Trong trường hợp có một máy tính bị lỗi thì những máy tính khác có thé thay thế để hoàn thành nhiệm vụ của hệ thống

+ Tính kinh tế: thường đầu tư vào hệ phân tán sẽ thấp hơn đầu tư cho hệ tập

Trang 20

Tuy nhiên, hệ tính toán phân tán cũng đứng trước nhiều thách thức, những vấn

để liên quan đến việc quản trị hệ thống, định vị tài nguyên, vấn để đảm bảo an tồn,

an ninh thơng tin, v.v

Trong hệ thống phân tán, không có bộ nhớ chia sẻ để trao đổi dữ liệu với

nhau, sự trao đổi được thực hiện bằng cách truyền thông điệp Mô hình ở mức cao hon, client-server, ciing co thể sử dụng cơ chế này để cài đặt

a Mô hình truyền thông điệp tong quát

Tính tốn phân tán theo mơ hình truyền thông điệp (message passing) có

những đặc điểm tương tự như mô hình bộ nhớ chia sẻ, về cơ bản mô hình truyền

thông điệp có những đặc điểm cơ bản sau:

+ Các đơn vị xử lý song song là các tiến trình

+ Các tiến trình được thực hiện trên những bộ xử lý khác nhau, tài nguyên

chia sẻ chung duy nhất là kênh truyền, thường là truyền thông mạng (LAN/ MAN)

+ Tất cả các biến là cục bộ của các tiến trình nên không có vấn đề về tranh

chấp tài nguyên

+ Để bắt đầu trao đổi với nhau, một tiến trình phải gửi đi một thông điệp vào kênh truyền và có một tiến trình khác yêu cầu nhận thông điệp đó

+ Sự trao đổi được hoàn tất khi dữ liệu đã chuyên tử nơi gửi đến nơi nhận Có hai loại mô hình truyền thông điệp: dị bộ và đồng bộ

b Mô hình truyền thông điệp dị bộ

Kênh truyền được giả định là có khả năng tiếp nhận không giới hạn các thông tin gửi đến cho mỗi tiến trình Do đó, tiến trình gửi luôn gửi khi có yêu cầu mà không phải chờ để tiến trình nhận sẵn sàng

Hai tiến trình gửi và nhận có thể hoạt động gần như độc lập nhau Việc thông

điệp gửi đi có thể nhận sau một khoảng thời gian không xác định trước (lâu bất kỳ)

Mô hình truyền thông điệp dị bộ, phát sinh một số vấn để sau:

Trang 21

+ Khi tiến trình A gửi một thông điệp cho tiến trình B thì sau đó A cần phải biết xem B có nhận được hay không Nghĩa là A phải chờ để nhận được câu trả lời khẳng định của B

+ Việc phân phát thông điệp cũng không thể đảm bảo rằng không bị thất bại Nếu A gửi đi một thông điệp cho B và không nhận được câu trả lời thì nó cũng không có cách nào biết được là thông điệp đó đã được gửi đến đích chưa hoặc tiến trình B bị huỷ bỏ trong quá trình xử lý hoặc ngay cả khi câu trả lời của B không đến

được A

+ Các thông điệp đều phải đưa vào bộ đệm (theo cơ chế hàng đợi), nhưng trong thực tế không gian hàng đợi là hữu hạn Khi có quá nhiều thông điệp được gửi

đi, thì hoặc chương trình sẽ không thực hiện được hoặc phương thức gửi bị chặn lại

Điều này vi phạm ngữ nghĩa của mô hình truyền thông điệp dị bộ c Mô hình truyền thông điệp đồng bộ

Tiến trình gửi dữ liệu bị chặn cho đến khi tiến trình nhận sẵn sàng nhận, sự

truyền thông và đồng bộ hóa luôn gắn chặt với nhau

Một ví dụ về mô hình truyền thông điệp đồng bộ là việc gọi điện thoại bằng điện thoại bàn truyền thống, khi nhắc máy lên, bấm số dé gọi, thì khi đó kênh truyền phải đợi và không thể nhận cuộc gọi đến

Ưu điểm: đơn giản hơn trong việc đồng bộ và cấp phát bộ nhớ, đảm bảo tính

toàn vẹn dữ liệu

Nhược điểm: giảm tính đồng thời của hệ thống, hệ thống này yêu cầu phải có một kênh truyền hoàn hảo đảm bảo truyền thông tốc độ cao và luôn ổn định Nhưng sự hoàn hảo là không thể, nên mô hình truyền thông điệp đồng bộ ít được sử dụng rộng rãi

Trang 22

1.3 CÁC MƠ HÌNH LẬP TRÌNH PHÂẦN TAN 1.3.1 Mô hình MPI

Có rất nhiều ngôn ngữ lập trình và các thư viện được xây dựng nên để dành cho lập trình song song Mô hình truyền thông điệp chuẩn MPI (MessagePassing Interface) là một giao diện chuẩn cho phép nhiều máy tính giao tiếp với nhau, được sử dụng trong các cụm máy tính và siêu máy tính và là một trong các mô hình cổ nhất được sử dụng rộng rãi nhất trong các mô hình dùng cho lập trình trên các máy tính song song bởi vì nó yêu câu tối thiêu về phần cứng Tiên trình | Tién trình 2 send(2 &x); iEbeiiEF 1, &y);

Hình 1.4 Sự trao đôi thông điệp giữa hai tiến trình

MPI là một chuẩn mô tả các đặc điểm và cú pháp của một thư viện lập trình

song song, được đưa ra vào năm 1994 boi MPIF (Message Passing Interface

Forum),và được nâng cấp lên chuẩn MPI-2 từ năm 2001 Có rất nhiều các thư viện

dựa trên chuẩn MPI này chẳng hạn như MPICH, OpenMPI hay LAM/MPI

MPI là giao thức độc lập ngôn ngữ sử dụng cho các máy tính song song MPI

là một giao diện lập trình ứng dụng truyền thông điệp với mục đích là đem lại hiệu

năng cao, khả năng mở rộng và linh hoạt

MPI sử dụng đặc tả độc lập ngôn ngữ (LIS) cho các lời gọi hàm Hiện nay, các

chuẩn MPI có hai phiên bản phố biến là 1.2 (gọi tắt là MPI-1) chủ yếu là truyền thông điệp và có môi trường hoạt động tĩnh, và phiên bản MPI-2.1 (gọi tắt là MPI- 2) bao gồm nhiều đặc điểm mới như vào/ra song song, quản lý tiến trình động và truy cập bộ nhớ từ xa MPI-2 gần như bao hàm toàn bộ MPI-I

Trang 23

Chức năng của thư viện MPI bao gồm (nhưng không hạn chế) các hoạt động

gửi nhận điểm-điểm, lựa chọn topo tién trinh logic dang hinh hoc phang hay dé thi,

trao đổi đữ liệu giữa các cặp tiến trình, phối hợp kết quả từng phần của quá trình tính toán, các nút đồng bộ cũng như các thông tin về mạng v.v

Trong chương trình MPI thì số lượng các tiến trình là cố định, các tiến trình có

thể thực hiện trao đổi thông tin một-một để gửi dữ liệu từ tiến trình này sang tiến trình khác Một nhóm các tiến trình có thể thực hiện các thao tác kết hợp để thực

hiện các thao tác chung và phô biến như là phép cộng hay broadcast MPI có khả năng thăm dò các thông điệp có hỗ trợ truyền thông bất đồng bộ

Các thuật toán chỉ tạo ra một tác vụ trên một bộ xử lý có thể áp dụng trực

tiếp các thủ tục trao đổi kết hợp hay một-một nhằm đáp ứng các yêu cầu truyền

thông Trong khi đó các thuật toán tác vụ động hay dựa trên sự thực thị đồng thời của nhiễu tác vụ trên cùng một bộ xử lý, thì cần phải điều chỉnh lại cho thích hợp

với mô hình MPI

Các tập tin thư viện: liên quan đến các hàm các thủ tục, các kiểu dữ liệu Bao

gồm tập tin h như mpi.h mpio.h và các tập tin khác Thông thường người lập trình chỉ cần dùng thư viện mpi.h là đủ Các tập tin thư viện Khởi tạo môi trường MPI Thực hiện các thủ tục hàm của MPI Thoát khỏi môi trường MIPI

Hình 1.5 Cấu trúc chương trình MPI

Môi trường MPI: Tắt cả các kiểu dữ liệu, các thủ tục, các giá trị defined nếu

muốn dùng nó, sau khi gọi các tập tin thư viện liên kết thì phải khởi tạo môi trường

Trang 24

sử đụng thì mới có thê dùng được các chức năng mà MPI cung cấp Các thủ tục, hàm MPI: sử đụng giống như các hàm trong C và cả các ngôn ngữ khác như

Fortran

1.3.2 Mô hình CORBA

CORBA (Common Object Request Broker Architecture) tam dich là kiến trúc môi giới gọi các đối tượng chung do té chire quéc té OMG (Object Management Group) quản lý và phát triển Tham vọng của OMG là đưa ra cách để các đối tượng viết bằng những ngôn ngữ khác nhau có thể gọi lẫn nhau theo mô hình đối tượng phân tán Các nhà lập trình luôn mong muốn tìm được một tiếng nói chung cho tất cả các ngôn ngữ lập trình hiện có

CORBA không phải là một ngôn ngữ lập trình, CORBA là một ngôn ngữ đặc tả giao tiếp (IDL — Interface Description Language)

CORBA quy định một tập hợp các mô tả hàm, kiểu đữ liệu, cách khai báo đặc

tả đối tượng Đặc tả đối tượng cũng giống như khái niệm giao tiếp Interface trong Java Nó chỉ mô tả chức năng của đối tượng thông qua hàm, phương thức, thuộc tính, mà không có bất kỳ cài đặt mã lệnh nào trong ngôn ngữ đặc tả Chính vì vậy mà CORBA còn được gọi là ngôn ngữ đặc tả giao tiếp IDL

IDL là ngôn ngữ đặc tả giao tiếp, IDL không có lệnh, chỉ có các mô tả hàm,

kiểu dữ liệu, các khai báo dé đặc tả đối trong CORBA ding IDL dé cé thé cài đặt

client/server bang các ngôn ngữ khác nhau có hỗ trợ CORBA như là C, C++,

COBOL, Ada, Java Méi ngén ngit hé tro CORBA déu có trình chuyển đổi IDL

sang ngôn ngữ đó

CORBA dùng IDL để viết Interface, sau đó dùng các trình biên dịch để dịch

sang ngôn ngữ cụ thể, đồng thời tạo lớp stub, skel và một số lớp hỗ trợ CORBA CORBA đưa ra một kiến trúc đối tượng phân tán cùng với các đặc tả ứng dụng cho nhiều lĩnh vực khác nhau, nhiều nền khác nhau và nhiều ngôn ngữ lập trình

khác nhau Vì tính trung lập của nó, CORBA được hỗ trợ rất rộng rãi, đặc biệt trong các hệ thống thông tin thương mại, phần mềm giao dịch kinh doanh và dịch vụ viễn

Trang 25

thông Tuy nhiên, cũng do tính độc lập của nó dẫn đến nhiều lý do mà CORBA không thực sự mạnh ở các hệ thống ứng qui mô vừa và nhỏ

CORBA cho phép một tập các đối tượng hỗn hợp, phân tán siêu tương tác với nhau là một chuẩn hết sức quan trọng ra nhằm cho phép thực hiện kiến trúc “client /sever” theo phương pháp tiếp cận hướng sự vật, trên những hệ thống máy khác nhau và phân tán, để cho phép nhiều nhóm sản xuất phần mềm khác nhau cùng cộng tác

INTERFACE IDL IMPLEMENTATION REPOSITORY COMPILER, REPOSITORY

in args

Oo———

operation) (SERVANT) OBJECT

out args + return value - Oo ¿ TDL 1 SKELETON ORB OBJECT INTERFACE ADAPTER GIOP/TIOP Cy STANDARD INTERFACE

Cc) STANDARD LANGUAGE MAPPING

@m ORB-sPECIFIC INTERFACE ( )sTawpaRp PROTOCOL

Hình 1.6 Mô hình kiến trủc CORBA

Trong cấu trúc mô hình CORBA gồm có:

- Client: 1a déi tuong yéu cau dich vu

- Object (Servant): la déi tuong thuc hién cac yéu cầu, nó định nghĩa các

thao tác, hỗ trợ giao diện IDL của CORBA

- ORB (Object Request Broker -Trình môi giới yêu cầu đối tượng trung gian) cho phép thiết lập quan hệ Client/Sever giữa các đối tượng Bằng cách sử

dụng ORB đối tượng Client có thể gọi các hàm trên máy cục bộ ORB là một dịch vụ phân tán thực thi yêu cầu đến các đối tượng ở xa Nó định vị đối tượng ở xa trên

mạng, gửi yêu cầu đến đối tượng, chờ kết quả và khi sẵn sằng thì gửi các kết quả này trở lại cho client

Trang 26

ORB thực thi vị trí trong suốt Chính xác là cơ chế yêu cầu giỗng nhau được si dung béi client va déi trong CORBA ma không quan tâm đến vị trí của đối

tượng Nó co thể nằm trong một bộ xử lí với client, hoặc ở bất kì nơi nảo

ORB thực thi các ngôn ngữ lập trình độc lập với các yêu cầu Client đưa ra một yêu cầu được viết bởi một ngôn ngữ lập trình có thê khác với ngôn ngữ lập

trình viết trong đối tuong CORBA ORB thực hiện việc dịch cần thiết giữa các ngôn

ngữ lập trình Các liên kết ngôn ngữ được định nghĩa cho tất cả các ngôn ngữ lập trình thông dụng

- ORB Interface: Cung cấp các giao điện để đối tượng yêu cầ và đối tượng thực hiện kết nối với nhau qua môi trường ORB

- IDL Stub, IDL Skeleton: Stub gồm các lệnh cho phép Client truy nhập tới các thành phần của Server tương tự như cơ chế RPC Skeleton gồm các lệnh trên Server để liên lạc các thành phần CORBA, đóng vai trò cầu nối giữa ORB với đối

tượng thực hiên trên Server

- Object Adapter: Hỗ trợ cho ORB trong việc phân phát các yêu các đến các

đối tượng

Trong đó ORB giữ vai trò quan trọng, ORB cho phép client sử dụng dịch vụ

của đối tượng phục vụ mà không cần biết cụ thể dạng thực hiện, nên triển khai và vị trí cài đặt của đối tượng phục vụ ORB được coi là highway ( xa lộ hay còn gọi là

băng thông) thực thi tất cả các vấn đề truyền thông của CORBA

Giao tiếp giữa ORB trên máy khách và ORB trên máy chủ được xây dựng dựa trên giao thức mang tên IIOP (Interoperate Internet ObJect Protocol) Giao thức này đo tổ chức Corba đề xướng Nó làm nên cho tất cả các đối tượng có thê trò chuyện được với nhau trên mạng Internet một cách dễ dàng Hiện nay giao thức

IIOP duoc ding kha phé biến thậm chí còn vượt trội hơn cả giao thức triệu gọi từ

xa RMI của Java (Java gọi giao thức RMI mà các máy ảo có thể dùng trò chuyện

được với các đối tượng ở xa là JRMP- Java Remote Method Protocol)

Trang 27

Sự bùng nỗ Internet thì mở rộng CORBA đề xử lý phân tán ở mạng tầm rộng qua Internet trở thành quan trọng, và khi đó phải kết hợp CORBA với ngôn ngữ

giao diện XML của Internet, XML đang được triển khai để mở rộng HTML mà chúng ta quen thuộc HTML & Java Applet Jawa Enabled Web Browser Web server Proxy server HTML Document Java Applet IIOP Naming serice 1 Cc Distributed Relational Objects Database JDBC ODBC DBMS_ specific Hình 1.7 Truy cập internet CORBA thông qua IIOP 1.3.3 Mô hình MapReduce

Google đã giới thiệu ý tưởng về MapReduce như là một mô hình lập trình để xử lý hay tạo các tập dữ liệu lớn Trong mô hình chính tắc, một hàm map xử lý các

cặp giá tri-khoa, tạo ra một tập trung gian của các cặp giá trị khóa Sau đó

Trang 28

Dữ liệu đầu vào được phân chia thành nhiều phần theo cách để cho nó có thể được phân phối trong một cụm các máy cho phép xử lý song song Theo cách như vậy, đữ liệu trung gian đã tạo ra được xử lý song song, làm cho cách tiếp cận này là

lý tưởng đối với việc xử lý số lượng đữ liệu rất lớn

1.4 GIỚI THIỆU VE BIG DATA VA TAP TIN CO KÍCH THƯỚC LỚN

Su phat triển của Internet đã làm thay đổi mạnh mẽ cách thức hoạt động của các tổ chức, các ứng dụng Web, mạng xã hội, điện toán đám mây một phần mang

lại cho các tô chức phương thức kinh doanh mới Trong kỷ nguyên của IoT (Internet of Things) — các thiết bị thông minh ra đời một cách nhanh chóng và các

tiện ích đi cùng với nó như camera, làm việc online làm cho dữ liệu người dùng

bùng nổ Dưới sự bùng nỗ này, thuật ngữ Big Data được sử dụng để chỉ những bộ dữ liệu không lồ, chủ yếu không có cấu trúc, được thu thập từ nhiều nguồn khác

nhau

Trong công nghệ thông tin, thuật ngữ Big Data (dữ liệu lớn) được hiểu là những tập hợp dữ liệu phát triển nhanh chóng và rộng khắp dưới nhiều hình thức khác nhau, làm cho chúng vượt quá khả năng xử lý của những hệ thống cơ sở dữ liệu truyền thống Mỗi ngày, chúng ta tạo ra 2,5 quintillion (1030 tỷ tỷ) bytes dữ liệu - 1 Quintillion= 1, 000, 000, 000, 000, 000, 000

Khối lượng dữ liệu mới được tạo ra nhiều và nhanh đến mức mà những năm

gần đây nhất chiếm đến 90% khối lượng dữ liệu trên thế giới hiện nay 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 cau tric,

bán cấu trúc) Đó chính là dữ liệu lớn — Big Data

Với những tác động trong việc khám phá giá trị tiềm ân to lớn, Big Data đang được xem là một yếu tố mới quan trọng mang lại lợi ích cho các tổ chức trong nhiều

lĩnh vực khác nhau Với những ưu điểm và tác động mạnh mẽ của “dữ liệu lớn”

Trang 29

(Big Data) và các ứng dụng liên quan, Big Data đang được xem là xu hướng phát triển của thế giới công nghệ thông tin hiện nay, như một yếu tố quyết định đến việc phát triển cũng như mang lại lợi thế cạnh tranh của các tô chức

Các đặc điểm và thành phần của Big Dafa

Big Data gồm có 3 đặc điểm chính là khối lượng (Volume), vận tốc

(Velocity), tinh da dang (Variety) 3Vs of Big Data Data *., Velocity +, interval *, % l *¿ RDBMS Ôn ku nà vn HỆ mm nrỆn na cm > Variety py Data

Volume Source: http://blog.sqlauthority.com

Hình 1.9 Biểu diễn các thuộc tính Big Data

+ Volume (Dung lượng): Kích thước dữ liệu Nhu cầu lưu trữ ngày càng tăng

va sé lượng dữ liệu này chu yếu được tạo ra bởi máy, mạng Internet và sự tương tác

của con người lên các hệ thống truyền thông xã hội nên khối lượng dữ liệu là rất lớn Sự gia tăng theo cấp số nhân không chỉ đơn thuần là đữ liệu văn bản Khối dữ liệu này lên đến hàng Petabyte Khối lượng đữ liệu càng phát triển thì các ứng đụng

và kiến trúc xây đựng để hỗ trợ dữ liệu cần phải được đánh giá lại khá thường

xuyên Dung lượng dữ liệu thực sự đại diện cho Big Data

+ Velocity (Vận tốc): Tốc độ xử lý nhanh (thu thập, xử lý, đáp trả) Khối

lượng dữ liệu là rất lơn dẫn đến tốc độ truy xuất chậm Nhưng thực tế nhu cầu sử

dụng đòi hỏi tốc độ xử lý phải nhanh, ôn định, chính xác Ngày nay mọi người cập nhật thông tin trên các phương tiện truyền thông xã hội những diễn biến mới nhất của thế giới và đôi khi họ không quan tâm đến các thông báo cách đó vài giây

Trang 30

(tweet, status, ) Ho thuong loại bỏ các tin nhắn cũ và chú ý đến các cập nhật gan

đây nhất Sự chuyển động của đữ liệu bây giờ mang tính thực tế (Real time) và tốc

độ cập nhật giảm xuống đơn vị hàng mIli giây Vận tốc dữ liệu đại diện cho Big Data

+ Variety (Đa đạng): Đa dạng các loại dữ liệu có cấu trúc và phi cấu trúc Dữ

liệu đến từ nhiều nguồn: cảm biến, Smart device, mạng xã hội, tin tức, phim ảnh,

email, bao gồm dữ liệu truyền thống và không truyền thống có cấu trúc, không

cấu trúc, sự đa dạng của dữ liệu này tạo ra vấn đề cho việc lưu trữ dữ liệu, khai

thác và phân tích Sẽ là đễ dàng nếu dữ liệu có cùng một định dạng, nhưng thường

là không Sự đa dạng của dữ liệu đại diện cho Big Data Physical and Security Infrastructure ` — =Áj)) €®7 Various Data Sources _ gi)

| Data Extract , Transform and Integrate Processes |

Enterprise Data Warehouse

(Relational Data Store) Gy I | | I | Ị I | I | | Analytical Big Data Warehouse and Data Marts | | I I I I I | | | Ỉ Knowledge Discovery / Business Intelligence / Data Mining | ~~ Reporting and Visualization « m LIÊN ^

Hình 1.10 Các thành phần của Big Data

Hình 1.10 cho chúng ta cái nhìn tổng quan về cách các thành phần khác nhau trong kiến trúc Big Data tương tác lẫn nhau Trong Big Data, các nguồn đữ liệu khác nhau là 1 phần của kiến trúc do đó extract (chuyển đổi), transform (truy xuất) và integration (tích hợp) là 1 trong những lớp quan trọng nhất của kiến trúc Hầu hết các dữ liệu được lưu trữ trong quan hệ cũng như không quan hệ và các giải pháp

Trang 31

(various - đa đạng) được xử lý và chuyển thành báo cáo trực quan với người đùng cuối Cũng giống như phần mềm, phần cứng cũng là phần quan trọng nhất của kiến trúc Big Data Trong kiến trúc Big Data, hạ tầng phần cứng vô cùng quan trọng và cần phải cài đặt ngăn chặn lỗi xây ra

1.5 TIỂU KÉT CHƯƠNG 1

Chương này cho ta cái nhìn tổng quan về tính toán phân tán và song song, các phương pháp lập trình song song: lập trình chia sẻ bộ nhớ, lập trình phân tán Các mô hình tính toán phân tán: MPI, CORBA, MAPREDUCE

Trên thực tế việc lưu trữ và truy xuất dữ liệu với hàng triệu mẫu tin và thay

đổi thường xuyên là vấn đề rất phức tạp, nó đòi hỏi phải có cấu trúc và cách thức lưu trữ với hệ thống có thé giúp truy xuất một cách nhanh chóng

Trong chương 2 sẽ giúp chúng ta hiểu hơn về cấu trúc lưu trữ dữ liệu lớn với Bigtable và cách thức hoạt động của nó

Trang 32

Chương 2 CÔNG CỤ LƯU TRỮ DỮ LIỆU BIGTABLE 2.1 GIỚI THIỆU CHUNG VẺ BIGTABLE

Bigtable là một hệ thống lưu trữ phân tán dùng để quản lý đữ liệu có cấu trúc được thiết kế để co giãn trong phạm vi rất lớn: hàng petabyte dữ liệu thông qua hàng nghìn server Nhiều dự án của Google lưu trữ dữ liệu bằng Bigtable bao gồm: chỉ mục web, Google Earth và Google Finance Những ứng dụng này đặt ra những yêu cầu khác nhau đối với Bigtable xét về phạm vi kích thước đữ liệu và các tính yêu cầu về độ trễ Mặc dù những yêu cầu này rất khác nhau, tuy nhiên Bigtable đã cung cấp thành công giải pháp linh động, hiệu năng cao cho tất cả các sản phẩm của Google

Bigdata được thiết kế với khả năng co giãn lên tới hàng petabyte dữ liệu và hàng nghìn máy Bigtable đã đạt được một số thành tựu: tính ứng dụng lớn, khả năng giãn nở, hiệu năng cao và tính sẵn sảng cao

Bigdata không hỗ trợ mô hình dữ liệu quan hệ không đây đủ, thay vào đó nó cung cấp cho các client mô hình đữ liệu đơn giản mà hỗ trợ điều khiển động về kiến

trúc và định dạng

2.2 MÔ HÌNH DỮ LIEU CUA BIGTABLE

Một Bigtable là một bản đỗ phân tán, đa chiều ổn định Bản dé này được đánh chỉ mục bởi một khoá hàng, khoá cột và một nhãn thời gian, mỗi giá trị trong

bản đồ là một mảng giá trị không diễn dịch

2.2.1 Hàng

Các khoá hàng là các xâu bất kỳ (dung lượng có thể lên tới 64KB, mặc đù

người dùng thường sử dụng khoảng 10-100 bytes) Mọi hoạt động đọc hoặc ghi dữ liệu dưới đạng một khoá dòng đơn đều là nguyên tử (không quan tâm đến số cột được đọc và được ghi trong hàng), một giải pháp thiết kế có thể làm cho các ứng dụng khách dễ dàng hiểu được các nguyên lý của hệ thống khi xây ra cập nhật đồng thời lên cùng một hàng

Trang 33

Bigtable bao tri dé liệu theo thứ tự từ điển bởi khoá hàng Dãy các hàng trong bảng được phân cách động Mỗi một dãy hàng được gọi là bảng phụ, nó là đơn vị của phân tán và cân bằng tải Việc đọc các dãy hàng ngắn có hiệu quả và yêu cầu giao tiếp chỉ với số lượng nhỏ các máy Các ứng dụng khách có thê khai thác

thuộc tính này bằng cách lựa chọn các khoá hàng cho họ để có được những vị trí tốt cho việc truy cập dữ liệu

Ví dụ trong Webtable, các trang trong cùng tên miền được nhóm vào các hàng liền kề nhau bằng cách đảo ngược các thành phần trong địa chỉ URL Cụ thể, chúng ta sẽ lưu trữ đữ liệu cho trang maps.google.com/index.html bằng khoá com.google.maps/index.html

2.2.2 Họ cột

Các khoá cột được nhóm lại một tập hợp gọi là họ cột Tất cả các dữ liệu lưu

trữ trong cùng một họ cột thường có cùng kiêu dữ liệu

Một “họ” cột phải được tạo ra trước khi dữ liệu được lưu trữ tại một cột nào đó trong họ Sau khi một họ được tạo, mọi khóa cột bên trong họ đó đều có thể sử

dụng Số họ cột trong một bảng không nhiều (nhiều nhất là hàng trăm), và những họ này hiếm khi thay đổi trong quá trình hoạt động Ngược lại, một bảng có số cột

không giới hạn Một khóa cột được đặt tên dựa theo cú pháp “tên họ:tính chất” Ví dụ về họ cột cho Webftable là LANGUAGE, nó lưu trữ ngôn ngữ mà trang web đó được viết Chúng ta chỉ sử dụng một khóa cột cho họ LANGUAGE, và nó lưu trữ

định danh của ngôn ngữ của mỗi trang web Một họ cột cũng rất hữu dụng cho bảng

nay la ANCHOR; mỗi cột trong họ đại diện cho một anchor đơn lẻ Phần tính chất

là tên của trang liên quan, nội dung ô là kết nối văn bản

Điều khiển truy xuất cùng với đĩa và tính toán bộ nhớ được thực hiện tại mức

họ cột Trong ví dụ Webtable, bộ điều khiển cho phép chúng ta quản lý vài loại ứng

dụng khác nhau: một vài trong số chúng dùng để tạo mới dữ liệu cơ bản, một vài để đọc dữ liệu cơ bản và tạo ra các họ cột từ đó, và một vài thì chỉ cho phép xem dữ liệu đang tổn tại

Trang 34

2.2.3 Nhãn thời gian

Mỗi ô trong Bigtable có thể chứa nhiều phiên bản của cùng một dữ liệu, những phiên bản này được đánh chỉ mục bởi nhãn thời gian Nhãn thời gian là các số nguyên 64 bit Chúng có thể được chỉ định bởi Bigtable, trong trường hợp chúng mô tả thời gian thực tới từng micro giây, hoặc được chỉ định bởi các ứng dụng người đùng Ứng dụng nào cần tránh các xung đột phải tự sinh ra nhãn thời gian duy nhất của riêng chúng Các phiên bản khác của một ô được lưu trữ theo thứ tự giảm dần của nhãn thời gian, nhờ đó phiên bản mới nhất có thê được đọc trước Để cho việc quản lý các phiên bản dữ liệu được đễ dàng hơn, cho phép hỗ trợ hai môi

trường trên các họ cột Phía client có thể chỉ định một số n nào đó phiên bản cuối cùng được giữ lại, hoặc chỉ giữ lại những phiên bản đủ mới (ví dụ, chỉ giữ lại giá trị

được ghi trong vòng 7 ngày trở lại)

2.3 CÁCH THỨC HOẠT ĐỌNG CỦA BIGTABLE

2.3.1 Giao điện API

Bigtable API cung cấp chức năng cho việc tạo và xóa các bảng và các họ cột Nó cũng cung cấp chức năng dé chuyén cum( cluster), bảng, và siêu dữ liệu họ cột

Các ứng dụng client có thê ghi và xóa giá trị, tìm kiếm giá trị từ các hàng

riêng lẻ, hoặc lặp lại I nhóm dữ liệu trong một bảng Dưới đây là một đoạn code C++ su dung ham RowMutation để thực hiện một chuỗi cập nhật Gọi hàm Apply thực hiện một sự thay đổi nguyên tử đến Webtable: thêm 1 anchor vao

www.cnn.com va xoa | anchor khac di

Table *T = OpenorDie(“/bigtable/web/webtable”); // mo bang dit liéu

Trang 35

Đoạn code dưới đây cho thấy đoạn code C++ sử dung ham Scanner dé lap lai tất cả các anchor trong 1 hang Client co thé lap lai trén nhiễu họ cột, và có vài cơ chế định ra giới hạn số hàng, cột, nhãn thời gian tạo ra bởi 1 bộ scan Ví dụ, chúng ta có thể hạn chế bộ scan chỉ tạo ra những anchor có cột phù hợp với biểu thức

anchor.*.enn.com, hoặc chỉ tạo ra những anchor mà nhãn thời gian trong vòng 10 ngày trở lại Scanner scanner(1); ScanStream *stream; stream= scanner FetchColumnFamily(“anchor”); stream-> SetReturnAllVersions(); scanner.Lookup(“com.cnn.www ”); for (; !stream->Done(); stream->next()) ( printf (“%s %s Y%1ld %s \n, scanner.Rowname(), stream->Columnname(), stream- >MicroTimestamp(), stream->Value()); }

Bigtable hỗ trợ một vài tính năng khác cho phép người dùng vận dụng dữ liệu theo nhiều cách phức tạp:

- Hỗ trợ giao tác đơn hàng (single-row transaction), có thể sử dụng để thực hiện chuỗi đọc-sửa-ghi nguyên tử trên dữ liệu lưu trữ đưới một khóa hàng đơn

- Hỗ trợ sự thực thi của những kịch bản client-supplied trong không gian địa chỉ của server Kịch bản được viết bằng ngôn ngữ phát triển tại Google dành cho

việc xử lý dữ liệu gọi là Sawzall Hiện tại, API dựa trên nên Sawzall không cho

phép các kịch bản client viết lại vào Bigtable, nhưng nó cho phép các dạng khác

nhau của phép biến đổi dữ liệu, bộ lọc đựa trên biểu thức bất kì

Trang 36

2.3.2 Xây dụng các khối

Bigtable được xây đựng trên các phần khác nhau của cơ sở hạ tầng của Google Bigtable sử dụng hệ thống file phân tán Google (distributed Google File

System) để lưu trữ bản ghi và file dữ liệu Một cụm Bigtable hoạt động trong một

nhóm các máy được chia sẻ, các máy này chạy nhiều ứng dụng phân tán khác nhau, và các tiến trình Bigtable thường chia sẻ máy tính với tiến trình từ các ứng dụng

khác

Bigtable phụ thuộc vào hệ thống quản lý cụm trong việc lên lịch công việc,

quản lý tài nguyên khi chia sẻ, giải quyết sự cố, và kiểm tra trạng thái của máy

Định dạng file Google SStable được sử dụng để lưu trữ dữ liệu Bigtable Một SSTable cung cấp một bản đồ liên tục, và thứ tự ko đổi từ các khóa tới các gia tri,

nơi mà cả khóa và giá trị đều là các xâu bất kì Các phép toán được cung cấp đề tìm

kiếm giá trị liên quan đến khóa được chỉ rõ, và để lặp lại tất cả các cặp khóa/giá trị trong một dải khóa được chỉ ra Sâu hơn nữa, mỗi Sstable mang một chuỗi các

block ( mỗi block có kích thước 64KB, có thể điều chỉnh được) Một chỉ mục bloek

(lưu tại cuối của Sstable) được sử dụng để định vị block; chỉ mục được tải vào bộ nhớ khi SStable được mở Bigtable dựa vào một dịch vụ khóa phân tán có tính sẵn sàng cao gọi là Chubby Một dịch vụ Chubby bao gồm 5 mô hình hoạt động, một

trong số chúng được chọn làm chủ và đáp ứng các yêu cầu Dịch vụ này chỉ “sống” khi phần lớn các mô hình đang chạy và có giao tiếp với các mô hình khác Chubby sử đụng thuật toán Paxos để giữ các mô hình của nó nhất quán trong trường hợp có lỗi xây ra Chubby cung cấp một không gian tên bao gồm các thư mục và các file

nhỏ Mỗi thư mục hoặc file có thể sử dụng như 1 khóa, việc đọc và ghi file là tự

động Thư viện client của Chubby cung cấp một nơi lưu trữ nhất quán cho file Chubby Mỗi client Chubby duy trì một phiên với một dịch vụ Chubby

Bigtable sử đụng Chubby để: bảo đảm chỉ có duy nhất một mô hình chủ tại

mọi thời điểm; để lưu trữ vị trí khởi động của đữ liệu Bigtable để lưu trữ thông tin

lược đỗ Bigtable ( thông tin về họ cột cho mỗi bảng), và để lưu trữ danh sách điều

khiển truy xuất

Trang 37

2.4 THỰC THỊ BIGTABLE

Thực thị Bigtable có 3 thành phần chính: một thư viện được kết nối tới mọi client, một máy chủ, và nhiều máy chủ phụ Máy chủ phụ có thể được thêm hoặc gỡ

bỏ động từ một cụm để điều tiết những thay đổi của tải làm việc Máy chủ chính có

trách nhiệm chỉ định các bảng phụ (tablet) vào các máy chủ phụ, phát hiện sự bé

sung cũng như mở rộng của máy chủ phụ, cân bằng tải, và loại bỏ file trong GFS

Thêm vào đó, nó điều khiển những thay đổi lược đồ ví dụ như việc tạo ra các bảng

hay các họ cột Mỗi máy chủ phụ quản lý một tập các bảng phụ (thông thường có từ khoảng 10 đến 1000 bảng phụ trên một máy chủ phụ) Máy chủ phụ quản lý các yêu cầu đọc và ghi vào các bảng con đã được tải, và chia nhỏ các bảng khi chúng quá

lớn Như với các hệ thống lưu trữ phân tán một máy chủ, dữ liệu khách không được

dua qua may cht, client giao tiếp trực tiếp với các máy chủ phụ để đọc và ghi Bởi client Bigtable không phụ thuộc vào máy chủ về thông tin vị trí các bảng phụ, hầu hết client không bao giờ giao tiếp với máy chủ Do đó, máy chủ không phải chịu tải lớn Một cụm Bigtable lưu trữ một số bảng Mỗi bảng gồm có một tập các bảng

phu, và mỗi bảng phụ mang toàn bộ dữ liệu kết hợp với một dải các hàng Khởi đầu

Trang 38

Cấp thứ nhất là một file được lưu trữ tại Chubby chứa vị trí của bảng phụ

gốc Bảng phụ gốc chứa vị trí của tất cả các bảng phụ trong một bảng Metadate đặc biệt Mỗi bảng Metadata chứa vị trí của một tập các bảng phụ người dùng Bảng phụ gốc là bảng đầu tiên trong bảng Metadata, nhưng được đối xử đặc biệt, không bao giờ bị chia cắt, để đảm bảo rằng thứ bậc không bao giờ quá 3 cấp

Bảng Metadata lưu trữ vị trí của một bảng phụ bên dưới khóa hàng là một mã hóa của định danh của tên bảng chứa bảng phụ đó và hàng kết thúc của nó Mỗi

hang Metadata luu trit xấp xỉ IKB dữ liệu trong bộ nhớ Với giới hạn 128MB, luoc

dé định vị 3 mức đủ đánh địa chỉ 2^34 bảng phụ ( hoặc 2^61 byte trong 128M bảng

phu) Thư viện client lưu trữ vị trí bảng phụ Nếu client không biết về vị trí của bảng phụ, hoặc nếu nó phát hiện ra vị trí lưu trữ là sai, nó sẽ di chuyển đệ quy lên theo thứ bậc Mặc dù vị trí bảng phụ được lưu trong bộ nhớ, vì thế nếu ko có yêu

cầu GFS, chúng ta giảm giá thành trong hầu hết trường hợp bằng cách có một thư

viện nạp trước vị trí các bảng phụ: nó đọc dữ liệu metadata cua nhiều hơn một bảng

phụ bất cứ khi nào nó đọc bảng Metadata

Chúng ta cũng lưu trữ thông tin thứ hai trong bảng Metadata, bao gồm một bản ghi tất cả các sự kiện liên quan đến bảng phụ (ví dụ như khi một máy chủ bắt đầu hoạt động) Thông tin này hữu ích cho việc debug và phân tích hiệu năng

2.4.2 Chỉ định bảng phụ

Mỗi bảng phụ được phân vào một máy chủ phụ vào một thời điểm Máy chủ chính lưu vết các thiết lập của máy chủ phụ đang hoạt động, và sự phân công hiện tại của các bảng phụ tới các máy chủ, bao gồm bảng phụ nào chưa được chỉ định

Khi một bảng phụ ko được chỉ định, và một máy chủ phụ có du khả năng cho bảng

phụ sẵn sàng, máy chủ chính sẽ phân công bảng phụ bằng cách gửi một yêu cầu tải bảng phụ tới máy chủ phụ Bigtable sử đụng Chubby đề lưu vết các máy chủ phụ

Khi một máy chủ phụ khởi động, nó tạo ra, và yêu cầu một khóa dành riêng,

một file với tên duy nhất trong thư mục riêng Chubby Máy chủ chính giám sát thư mục này (gọi là server đirectory) để phát hiện ra các máy chủ phụ Một máy chủ

Trang 39

phu ngừng phục vụ nếu nó mất khóa của nó: ví dụ, do việc phân chia mạng làm cho

máy chủ mất phiên làm việc Chubby của nó Chubby cung cấp một cơ chế hiệu quả cho phép một máy chủ phụ nó có còn giữ khóa của nó mà ko bị ảnh hưởng bởi tắc nghẽn mạng Một máy chủ phụ sẽ cố gắng giành lại một khóa dành riêng trên file

của nó chỉ cần file đó còn tổn tại Nếu file ko còn tổn tai, máy chủ phụ không bao gid co thé phục vụ trở lại, vì thế nó tự ngừng hoạt động

Bất cứ khi nào một máy chủ phụ ngừng hoạt động (ví dụ, do hệ thống quản lý cụm gỡ bỏ máy chủ ra khỏi cụm) nó cố gắng giải phóng khóa của nó nhờ đó máy chủ chính có thê chỉ định lại những bảng phụ này nhanh chóng hơn

Máy chủ chính có trách nhiệm phát hiện khi một máy chủ phụ không còn phục vụ các bảng phụ của nó, và phân công lại bảng phụ sớm nhất có thê Để phát

hiện khi một máy chủ phụ ngừng phục vụ, máy chủ chính hỏi một cách định kì mỗi

máy chủ phụ trạng thái khóa của nó Nếu một máy chủ phụ báo cáo rằng nó đã mắt khóa, hoặc nếu máy chủ chính ko thể kết nối tới máy chủ phụ trong lần thử cuối cùng của nó, máy chủ chính sẽ cố gắng giành lại khóa trên file của máy chủ phụ Nếu máy chủ chính có thể giành được khóa, Chubby sẽ hoạt động và máy chủ phụ sẽ ngừng hoạt động hoặc gặp vấn đề khi kết nối tới Chubby, vì thế máy chủ chính đảm bảo rằng máy chủ phụ không bao giờ phục vụ trở lại bằng cách xóa file của nó Một khi file của máy chủ phụ đã bị xóa, máy chủ chính có thê di chuyển tất cả các bảng phụ trước đó đã được phân cho máy chủ phụ đó về tập các bảng phụ chưa

được chỉ định

Để dảm bảo rằng cụm Bigtable không bị nguy hiểm bởi các vấn đề mạng giữa may chi chinh va Chubby, may chủ chính tự ngừng hoạt động nếu phiên Chubby của nó hết thời gian

Tuy nhiên, như đã nói ở trên, máy chủ chính gặp sự cố không ảnh hưởng đến

sự chỉ định các bảng phụ vào các máy chủ phụ Khi một máy chủ chính được khởi

động bởi hệ thống quản lý cụm, nó cần phải phát hiện ra sự phân công bảng phụ hiện tại trước khi nó thay đổi chúng Máy chủ chính thực hiện những bước sau:

Trang 40

Bước I: Máy chủ chính chiếm lấy một khóa máy chủ chính duy nhất trên Chubby

Bước 2: nó scan thư mục trong Chubby để tìm ra những máy chủ phụ đang

hoạt động

Bước 3: nó giao tiếp với tất cả các máy chủ phụ đang hoạt động để tìm ra những bảng phụ nào đã được chỉ định cho mỗi máy chủ phụ

Bước 4: máy chủ chính scan bảng Metadata đề học tập các bảng phụ Bất cứ khi nào scan thấy một bảng phụ chưa được phân công rồi, nó bổ sung thêm các

bảng phụ vào tập các bảng chưa được chỉ định, từ đó chọn ra bảng thích hợp để

phân công Việc scan bảng Metadata không thể được thực hiện cho đến khi các bảng phụ Metadata được phân công Bởi vậy, trước khi scan (bước 4) máy chủ chính bổ sung thêm các bảng phụ gốc vào tập các bảng chưa được phân công nếu phát hiện ra một phân công bảng phụ gốc trong bước 3 Sự bổ sung này đảm bảo bảng phụ gốc sẽ được phân công

Tập các bảng phụ đang tổn tại chỉ thay đổi khi một bảng được tạo ra hay xóa

đi, hai bảng phụ đang tổn tại được gộp thành một bảng phụ lớn hơn, hoặc một bảng

phụ bị chia thành hai bảng phụ nhỏ hơn Máy chủ chính có thể lưu vết những thay

đổi này Những bảng phụ bị chia cắt được đối xử đặc biệt khi chúng được khởi tạo

bởi một máy chủ phụ Máy chủ phụ thực thi việc tách bằng cách ghi lại thông tin cho bảng phụ mới trong bảng Metadata Khi một hoạt động tách được chuyển giao, nó báo cho máy chủ chính Trong trường hợp thông báo bị mất (đo máy chủ chính hoặc phụ lỗi), máy chủ chính phát hiện ra bảng phụ mới bằng cách yêu cầu một máy chủ phụ tải bảng phụ bị tách Máy chủ phụ báo lại cho máy chủ chính về việc chia tách

2.4.3 Phục vụ bảng phụ

Trạng thái liên tục của bảng phụ được lưu tại GFS Cập nhật được thực thị vào một bản ghi thực thị lưu trữ các bản ghi làm lai (redo) Những lần cập nhật này, những cập nhật gần hơn được lưu trong bộ nhớ đệm được sắp xếp gọi là memtable,

Ngày đăng: 11/01/2024, 22:46

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

TÀI LIỆU LIÊN QUAN

w