ĐẠI HỌC ĐÀ NẴNGTRƯỜNG ĐẠI HỌC SƯ PHẠM BÁO CÁO GIỮA KỲ MÔN LẬP TRÌNH SONG SONG CÀI ĐẶT MPI VÀ HADOOP Người thực hiện : Nguyễn Duy Thắng Lớp : 19CNTTD Gỉảng viên hướng dẫn : Nguyễn Đìn
Trang 1ĐẠI HỌC ĐÀ NẴNG
TRƯỜNG ĐẠI HỌC SƯ PHẠM
BÁO CÁO GIỮA KỲ
MÔN LẬP TRÌNH SONG SONG
CÀI ĐẶT MPI VÀ HADOOP
Người thực hiện : Nguyễn Duy Thắng
Lớp : 19CNTTD
Gỉảng viên hướng dẫn : Nguyễn Đình Lầu
Đà Nẵng, tháng 11/2022
1
Trang 2CHƯƠNG 1: CƠ SỞ LÝ THUYẾT
I Lập trình song song:
a) Định nghĩa:
- Nh ng thu t toán, trong đó có m t sốố thao tác có th th c hi n ữ ậ ộ ể ự ệ
đốồng th i đờ ượ ọc g i là thu t toán song song.ậ
- Đó còn là m t t p các tiếốn trình ho c các tác v có th th c hi n ộ ậ ặ ụ ể ự ệ
đốồng th i và có th trao đ i d li u v i nhau đ kếốt h p cùng gi iờ ể ổ ữ ệ ớ ể ợ ả
m t bài toán đ t ra.ộ ặ
- Đ thiếốt kếố để ược các thu t toán song song cầồn ph i tr l i các cầuậ ả ả ờ
h i sau:ỏ
1 Vi c phần chia d li u cho các tác v nh thếố nào?ệ ữ ệ ụ ư
2 D li u đữ ệ ược truy c p nh thếố nào, nh ng d li u nào cầồn ph iậ ư ữ ữ ệ ả
chia s ?ẻ
3 Phần các tác v cho các tiếốn trình (b x lý) nh thếố nào?ụ ộ ử ư
4 Các tiếốn trình được đốồng b ra sao?ộ
b) Nguyến lý:
- Có năm nguyến lý chính trong thiếốt kếố thu t toán song song:ậ
1 Các nguyến lý l p l ch: T o l ch trình đ gi m tốối thi u các b x ậ ị ạ ị ể ả ể ộ ử
lý s d ng trong thu t toán sao cho th i gian tính toán là khống tăng ử ụ ậ ờ
(xét theo khía c nh đ ph c t p) ạ ộ ứ ạ
2 Nguyến lý hình ốống: Nguyến lý này đ ược áp d ng khi bài toán xuầốt ụ
hi n m t dãy các thao tác {T1, T2, , Tn}, trong đó Ti+1 th c hi n sau ệ ộ ự ệ
khi Ti kếốt thúc.
3 Nguyến lý chia đ tr : Chia bài toán thành nh ng phầồn nh h n ể ị ữ ỏ ơ
t ương đốối đ c l p v i nhau và gi i quyếốt chúng m t cách song song ộ ậ ớ ả ộ
4 Nguyến lý đốồ th ph thu c d li u: Phần tích mốối quan h d li uị ụ ộ ữ ệ ệ ữ ệ
trong tính toán đ xầy d ng đốồ th ph thu c d li u và d a vào đó đ ể ự ị ụ ộ ữ ệ ự ể
xầy d ng thu t toán song song.ự ậ
5 Nguyến lý điếồu ki n tệ ương tranh: Nếốu hai tiếốn trình cùng muốốn truy c p vào cùng m t m c d li u chia s thì chúng ph i tậ ộ ụ ữ ệ ẻ ả ương tranh
v i nhau, nghĩa là chúng có th c n tr lầẫn nhau.ớ ể ả ở
- Ngoài nh ng nguyến lý nếu trến, khi thiếốt kếố thu t toán song song ữ ậ
còn m t sốố đi m cầồn quan tầm:ộ ể
1 T ương t nh kiếốn trúc, hi u qu th c hi n c a thu t toán song ự ư ệ ả ự ệ ủ ậ
song có th rầốt khác nhau, mà yếốu tốố quan tr ng nhầốt nh hể ọ ả ưởng t i đớ ộ
ph c t p tính toán là cầốu hình tố pố liến kếốt m ng ứ ạ ạ
Trang 32 Thu t toán song song ph i đậ ả ược thiếốt kếố d a trến nh ng kiếốn th c vếồ ự ữ ứ
kiếốn trúc máy tính, ngốn ng l p trình song song và các phữ ậ ương pháp tính toán.
c) Cách tiếốp c n trong thiếốt kếố: ậ
- Có ba cách tiếốp c n đ thiếốt kếố thu t toán song song:ậ ể ậ
1 Th c hi n song song hoá nh ng thu t toán tuầồn t , biếốn đ i nh ng ự ệ ữ ậ ự ổ ữ
cầốu trúc tuầồn t đ t n d ng đự ể ậ ụ ược nh ng kh năng song song t nhiến ữ ả ự
c a tầốt c các thành phầồn trong h thốống x lý ủ ả ệ ử
2 Thiếốt kếố nh ng thu t toán song song m i phù h p v i kiếốn trúc song ữ ậ ớ ợ ớ
song.
3 Xầy d ng nh ng thu t toán song song t nh ng thu t toán song songự ữ ậ ừ ữ ậ
đã đ ược xầy d ng cho phù h p v i cầốu hình tốpố m ng và mối trự ợ ớ ạ ường song song th c tếố ự
- Nh v y, cách làm khá thống d ng là biếốn đ i các thu t toán tuầồn ư ậ ụ ổ ậ
t vếồ song song, hay chuy n t m t d ng song song vếồ d ng song song ự ể ừ ộ ạ ạ
phù h p h n sao vầẫn b o toàn đợ ơ ả ược tính tương đương trong tính toán
Do đó, khi biếốn đ i chúng ta cầồn tr l i hai cầu h i:ổ ả ờ ỏ
1 Kiếốn trúc nào phù h p cho bài toán?ợ
2 Nh ng bài toán lo i nào seẫ x lý hi u qu trong kiếốn trúc song song ữ ạ ử ệ ả
cho trước?
Các cách tiếốp c n trong thiếốt kếố: ậ
- Phần rã: Khi bài toán được xác đ nh, cống vi c tính toán và d ị ệ ữ
li u c a bài toán đệ ủ ược phần rã thành nhiếồu tác v ụ
4
Trang 4- Xác đ nh trao đ i tin (Truyếồn thống): th hi n thống qua luốồng ị ổ ể ệ
thống tin sao cho các tác v đụ ượ ạc t o ra trong cống đo n trến seẫ ạ
được th c hi n đốồng th i Tính toán th c hi n trong m t tác v ự ệ ờ ự ệ ộ ụ
th ường seẫ yếu cầồu d li u kếốt h p v i các d li u khác.ữ ệ ợ ớ ữ ệ
- G p, nhóm (Tích t ): Cống đo n này seẫ g p các tác v nh đã t o ộ ụ ạ ộ ụ ỏ ạ
ra cống đo n phần rã thành các tác v có kích thở ạ ụ ướ ớc l n h n ơ
Khi tích t các tác v nh thành các tác v l n thì chi phí truyếồn ụ ụ ỏ ụ ớ
thống seẫ gi m đi nh ng seẫ làm gi m tiếồm năng th c hi n đốồng ả ư ả ự ệ
th i ờ
- Ánh x : Đầy là cống đo n cuốối cùng, mốẫi tác v seẫ đạ ạ ụ ược ầốn đ nh ị
vào m t b x lý nào đó ộ ộ ử
1) Hadoop:
a) Đ nh nghĩa: ị
Hadoop là m t mã nguốồn m độ ở ược viếốt băồng java, cho phép x lý ử
phần tán (distributed processing) các t p d li u l n trến các c m máy ậ ữ ệ ớ ụ
tính (clusters of computers) thống qua mố hình l p trình đ n gi n ậ ơ ả
Hadoop đ ược thiếốt kếố đ m r ng quy mố t m t máy ch đ n sang ể ở ộ ừ ộ ủ ơ
hàng ngàn máy tính khác có tính toán và l u tr c c b (local ư ữ ụ ộ
computation and storage).
b) Các lo i module: ạ
Hadoop gốồm 4 module:
- Hadoop Common: Đầy là các th vi n và ti n ích cầồn thiếốt c a ư ệ ệ ủ
Java đ các module khác s d ng Nh ng th vi n này cung cầốp ể ử ụ ữ ư ệ
h thốống file và l p OS tr u tệ ớ ừ ượng, đốồng th i ch a các mã l nh ờ ứ ệ
Java đ kh i đ ng Hadoop.ể ở ộ
- Hadoop YARN: Đầy là framework đ qu n lý tiếốn trình và tài ể ả
nguyến c a các cluster.ủ
- Hadoop Distributed File System (HDFS): Đầy là h thốống file phần ệ
tán cung cầốp truy c p thống lậ ượng cao cho ng d ng khai thác dứ ụ ữ
li u.ệ
- Hadoop MapReduce: Đầy là h thốống d a trến YARN dùng đ x lýệ ự ể ử
song song các t p d li u l n.ậ ữ ệ ớ
c) Cầốu trúc Hadoop:
Trang 5d) Ư u đi m: ể
- Robus and Scalable – Có th thếm node m i và thay đ i chúng khi ể ớ ổ
cầồn.
- Affordable and Cost Effective – Khống cầồn phầồn c ng đ c bi t đ ứ ặ ệ ể
ch y Hadoop.ạ
- Adaptive and Flexible – Hadoop được xầy d ng v i tiếu chí x lý ự ớ ử
d li u có cầốu trúc và khống cầốu trúc.ữ ệ
- Highly Available and Fault Tolerant – Khi 1 node lốẫi, nếồn t ng ả
Hadoop t đ ng chuy n sang node khác.ự ộ ể
- M t đi m c ng khác cho Hadoop nó là mã nguốồn m , có th ộ ể ộ ở ể
t ương thích v i tầốt c platformsớ ả
2) MPI:
a) Đ nh nghĩa: ị
- Mố hình truyếồn thống đi p là m t trong nh ng mố hình lầu đ i ệ ộ ữ ờ
nhầốt và đ ượ ức ng d ng r ng rãi nhầốt trong l p trình song song ụ ộ ậ
Hai b cống c ph biếốn nhầốt cho l p trình song song theo mố ộ ụ ổ ậ
hình này là PVM (Parallel Virtual Machine) và MPI (Message Passing Interface) Các b cống c này cung cầốp các hàm dùng choộ ụ
vi c trao đ i thống tin gi a các tiếốn trình tính toán trong h ệ ổ ữ ệ
thốống máy tính song song
- MPI (Message Passing Interface ) 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 b i 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
- MPICH2 là m t th vi n miếẫn phí bao gốồm các hàm theo chu n ộ ư ệ ẩ
MPI dùng cho l p trình song song theo phậ ương th c truyếồn thống ứ
đi p, đệ ược thiếốt kếố cho nhiếồu ngốn ng l p trình khác nhau (C++, ữ ậ
Fortran, Python, ) và có th s d ng trến nhiếồu lo i h điếồu hành ể ử ụ ạ ệ
(Windows, Linux, MacOS, ).
b) Mố hình l p trình: ậ
6
Trang 6MPI ra đ i m c đích dành cho các h thốống máy tính có b nh phần ờ ụ ệ ộ ớ
tán Tuy nhiến, MPI cũng có th tri n khai để ể ược trến h thốống máy tính ệ
có b nh chia s ộ ớ ẻ
c) L p trình MPI: ậ
- Header file: yếu cầồu cho m i chọ ương trình đượ ậc l p trình b i MPIở
- Đ nh d ng các hàm trong MPI: ị ạ
- Cầốu trúc c a chủ ương trình MPI:
Trang 7CH ƯƠ NG 2: CÁCH CÀI Đ T MPI Ặ
B ướ c 1: T o m i Project tến “MPI_lau2”, sau đó l u file ạ ớ ư
“MPI_helloworld.cpp”
B ướ c 2: Thiếốt l p theo hậ ướng dầẫn dưới
Thếm đường dầẫn nh hình bến dư ưới (C:\Program Files (x86)\Microsoft SDKs\MPI\Include;$(IncludePath)
Đ nh l i đị ạ ường dầẫn đ dich main - t c thếm vào nh hình dể ứ ư ướ ười đ ng dầẫn: (C:\Program Files (x86)\Microsoft SDKs\MPI\Lib\x64\*.lib;% (AdditionalDependencies)) sau đó copy path này
8
Trang 8B ướ c 3: Cài l i path h điếồu hành đ ch đếốn file d ch ạ ệ ể ỉ ị C:\Program Files\Microsoft MPI\Bin
Ấn chuột phải vào This PCàPropertiec Tiếp theo vào Advanced system
setting
Trang 9Vào Environment Variables.
10
Trang 10- Chọn Path Edit…à
Dán đường dẫn (C:\Program Files\Microsoft MPI\Bin) này vào-àOK
B ướ i 4: D ch File MPI_helloword.cpp (ầốn chu t vào Local Windows ị ộ
Debugger) Kếốt qu d ch cho ra file MPI_lau2.exeả ị
#include <stdio.h>
#include <mpi.h>
int main( int argc , char ** argv ) {
int size, rank;
MPI_Init(& argc , & argv );
MPI_Comm_size( MPI_COMM_WORLD , &size);
MPI_Comm_rank( MPI_COMM_WORLD , &rank);
printf( "SIZE = %d RANK = %d\n" , size, rank);
MPI_Finalize();
return 0;
}
Nh hình dư ướ ểi đ xem đường dầẫn l u file MPI_lau2.exeư
Trang 11B ướ c 5: Ch y file MPI_lau2.exeạ
Vào màn hình CMD đ ch y ể ạ
12