Tải bản đầy đủ (.pdf) (16 trang)

Báo Cáo Nhân Hai Ma Trận BigData

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (273.32 KB, 16 trang )

NHÂN HAI MA TRẬN TRONG
HADOOP MAPREDUCE
Thành viên thực hiện:
Phạm Hồng Cẩm - M2515002
Dương Bích Chi - M2515018
Lý Minh Phương - M2515027
Phan Thúy Quỳnh - M2515028

Giảng viên hướng dẫn:
TS. Phan Th ượng Cang


NỘI DUNG
Sơ lược về Mapreduce và Hadoop
Giới thiệu bài toán nhân hai ma trận
Mapreduce bài toán nhân hai ma trận
Demo

Tham khảo: /> />MapReduce


Sơ lược về Mapreduce và Hadoop
Mapreduce là gì?
MapReduce được thiết kế bởi Google như 1 mô
hình lập trình xử lý tập dữ liệu lớn song song, thu ật
toán được phân tán trên 1 cụm.


Sơ lược về Mapreduce và Hadoop









Nền tảng MapReduce thường gồm các máy chủ phân tán
và nó chạy nhiều tác vụ khác nhau song song.
Có nhiều thành phần quản lý việc giao tiếp gi ữa các
nodes khác nhau của dữ liệu và cung cấp tính sẵn sàng
cao và mức độ chịu lỗi.
Chương trình được viết theo chức năng MapReduce đ ược
tự động được phân tán và thực thi song song trên các máy
chủ.
Trong khi xử lý nếu có lỗi, nền tảng cung c ấp tính s ẵn
sàng cao và các node khác thực hiện thay th ế nhi ệm v ụ
của node bị lỗi.


Sơ lược về Mapreduce và Hadoop
Hadoop là gì?




Hadoop là một Apache framework 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 framework gồm 4 module:
+ Hadoop Common
+ Hadoop YARN
+ Hadoop Distributed File System (HDFS)
+ Hadoop MapReduce


Giới thiệu bài toán nhân hai ma trận


Cho ma trận A với m dòng n cột được ký hiệu:

A  aij 

mn


Giới thiệu bài toán nhân hai ma trận
Nếu ma trận A có kích thước m x n và ma trận B
có kích thước n x p, thì ma trận tích C=AB có
kích thước m x p có phần tử đứng ở hàng thứ i, cột
thứ j xác định bởi:

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

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


Mapreduce bài toán nhân hai ma trận

Cho hai ma trận A(m x n) và B(n x p). Tính ma
trận C (m x p)= AB.

Tập tin lưu ma trận A và B có dạng:
[Tên ma trận],[Hàng],[Cột],[Giá trị]
Ví dụ:
A,0,0,1
A,0,1,-1
A,0,2,0
A,1,0,2
A,1,1,1
A,1,2,1


Mapreduce bài toán nhân hai ma trận
Cho bài toán:

Ma trận A và B được lưu
vào tập tin:

A,0,0,12
A,0,1,-51
A,0,2,4
A,1,0,6
A,1,1,167
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


Mapreduce bài toán nhân hai ma trận
Giải thuật hàm Map
a_ij

b_jk
nxp

=

col k

mxn

X

row i

((i,0), (A, j, a_ij))
a_ij

Map

((i,p-1), (A, j, a_ij))

((0,k), (B, j, b_jk))

b_jk

Map

((m-1,k), (B, j, b_jk))


Mapreduce bài toán nhân hai ma trận
Giải thuật hàm 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)
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)


Mapreduce bài toán nhân hai ma trận
Giải thuật hàm 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)])


Mapreduce bài toán nhân hai ma trận
Giải thuật hàm 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ử C00

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)


Demo
Các bước chạy chương trình:

Tại thư mục home/username/matran/demo lưu các
file .java
Tại thư mục home/username/matran/input lưu các
file .txt là input đầu vào của chương trình


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
Các bước chạy chương trình:


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

cd ~/matran/demo
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/*


Cảm ơn đã lắng nghe!



×