Tải bản đầy đủ

Bài báo cáo : Viết chương trình nhân 2 ma trận kích thước lớn (BIG DATA HADOOP MAPREDUCE)

TRƯỜNG ĐẠI HỌC CẦN THƠ
KHOA CÔNG NGHỆ THÔNG TIN VÀ TRUYỀN THÔNG

BÁO CÁO
BÀI TOÁN NHÂN HAI MA TRẬN KÍCH THƯỚC LỚN
Giảng viên hướng dẫn:

Học viên thực hiện:

TS. Phan Thượng Cang

Trần Văn Tiên
Mã Tuấn Duy


Bài toán Nhân hai ma trận
kích thước lớn
1. Mô tả bài toán
Nhân hai ma trận

2. Bài toán Nhân hai ma trận

trong mô hình Map Reduce
Nội Dung

3. Demo chương trình

4. Thảo luận


Mô tả
Bài toán Nhân hai ma trận


1 . Giới Thiệu Bài Toán Nhân Hai Ma Trận
Bài toán
Hai ma trận A có kích thước m dòng và n cột; Ma trận B có kích thước n
dòng và p cột, được ký hiệu như sau
A = [aij]mxn
B = [bij]nxp
Cần tính ma trận tích C = AB


1 . Giới Thiệu Bài Toán Nhân Hai Ma Trận
Ma Trận Tích
Ma trận tích C=AB có kích thước m*p xác định bằng công thức:

cij=ai1b1j+ai2b2j+..+ainbnj
Ví dụ:

với i=1..m; j=1..p


Bài toán Nhân hai ma trận
trong mô hình MapReduce


2 . Nhân hai ma trận trong MapReduce
Tập dữ liệu input
[Tên ma trận],[Hàng],[Cột],[Giá trị]
Ví dụ:
A=



File input.txt
A,0,0,1
A,0,1,-1
A,0,2,0
A,1,0,2
A,1,1,1
A,1,2,1


2 . Nhân hai ma trận trong MapReduce
Tập dữ liệu input
A=

A,0,0,12
A,0,1,-51
A,0,2,4
A,1,0,6
A,1,1,167

B=

A,1,2,-68
A,2,0,-4
A,2,1,24
A,2,2,-41
B,0,0-2
B,0,1,1
B,1,0,1
B,1,1,2
B,2,0,0
B,2,1,3


3. MapReduce Và
Bài Toán Nhân Hai Ma Trận

Giải Thuật Map
Giải Thuật Reduce


3 . Nhân hai ma trận trong MapReduce – Mô hình
Input files

Mapping

Shuffling

Reducing

(Key, Value)

(Key, Value)

(Key, Value)

(0,0),(A,0,12)
(0,1),(A,0,12)
Input.txt

A,0,0,12
A,0,1,-51
A,0,2,4
A,1,0,6
A,1,1,167
A,1,2,-68
B,0,0-2
B,0,1,1
B,1,0,1
B,1,1,2
B,2,0,0
B,2,1,3

(0,0),[(A,0,12),(A,1,-51),…,(B,2,0)]
Key (0,0)
List A = [(A,0,12)…]
List B = [(B,0,-2),…]

(0,0),(A,1,-51)
(0,1),(A,1,-51)
(0,0),(A,2,4)
(0,1),(A,2,4)

(0,1),[(A,0,12),(A,1,-51),…,(B,2,3)]
Key (0,1)
List A = [(A,0,12)…]
List B = [(B,0,1),…]

(1,0),(A,2,-68)
(1,1),(A,2,-68)



(0,0),(B,0,-2)
(1,0),(B,0,-2)
(0,0),(B,1,1)
(1,0),(B,1,1)
(0,0),(B,2,0)
(1,0),(B,2,0)

(1,0),[(A,0,6),(A,1,-51),…,(B,2,0)]

(1,1),[(A,0,6),(A,1,-51),…,(B,2,3)]

Key (1,0)
List A = [(A,0,6)…]
List B = [(B,0,-2),…]



(0,1),(B,2,3)
(1,1),(B,2,3)

Result



P=


Giải Thuật Map


Giải Thuật Map
 map(key,value): // value is(“A”,i,j,a_ij) or
(“B”,j,k,b_jk)
 if value[0]==”A”:
i=value[1]
j=value[2]
a_ij=value[3]
for k=0 to p-1:
context.write((i,k) as key, (A,j,a_ij) as
value)
//p: so cot cua Ma tran B


Giải Thuật Map
else:
j=value[1]
k=value[2]
b_jk=value[3]
for i=0 to m-1:
context.write((i,k) as key, (B,j,b_jk) as
value)
//m: so dong cua ma tran A


Giải Thuật Map
A,0,0,12

(0,0),(A,0,12)
(0,1),(A,0,12)

Sau khi tạo ra các cặp key,value và sắp xếp các value theo key ta được:

((0,0),[(A,0,12),(A,1,-51),(A,2,4),(B,0,-2),(B,1,1),(B,2,0)])


Giải Thuật Reduce


Giải Thuật Reduce
reduce(key,values):
// key is (i,k)
// values is a list of (“A”,j,a_ij) and (“B”,j,b_jk)
hash_A={j:a_ij for (x,j,a_ij) in values if x==A}
hash_B={j:b_jk for (x,j,b_jk) in values if x==B}
Result=0
for j=1 to n:
Result + =hash_A[j] * hash_B[j]
context.write(key,result)


Nhân Hai Ma Trận Trong Hadoop MapReduce

Giải Thuật Reduce
((0,0),[(A,0,12),(A,1,-51),(A,2,4),(B,0,-2),(B,1,1),(B,2,0)])
reduce

12*(-2)+(-51)*1+4*0=-75
phần tử P00


Demo


Nhân Hai Ma Trận Trong Hadoop MapReduce

Demo
Khởi động dịch vụ:



hadoop/sbin/start-all.sh



Tạo thư mục input:



hdfs dfs -mkdir /input



Đưa file matrix.txt lên hadoop:



hdfs dfs -put ~/matran/input/* /input




Demo
Biên dịch chương trình:



hadoop com.sun.tools.javac.Main *.java



Tạo file jar



jar cf mt.jar *.class

Chạy chương trình



hadoop jar mt.jar Matrix /input /output



Xem kết quả



hdfs dfs -cat /output/*




Xin cảm ơn!



Tài liệu bạn tìm kiếm đã sẵn sàng tải về

Tải bản đầy đủ ngay

×