1. Trang chủ
  2. » Công Nghệ Thông Tin

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

16 1,2K 8

Đ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

Định dạng
Số trang 16
Dung lượng 273,32 KB
File đính kèm NhanHaiMaTran.rar (3 KB)

Nội dung

Bài báo cáo và code demo cho bài toán Nhân hai ma trận trong Hadoop, NHÂN HAI MA TRẬN TRONG HADOOP MAPREDUCE BigData: Dữ liệu lớn là một thuật ngữ rộng cho việc xử lý một tập hợp dữ liệu rất lớn và phức tạp mà các ứng dụng xử lý dữ liệu truyền thống không xử lý được. Bao gồm các thách thức phân tích, thu thập, giám sát dữ liệu, tìm kiếm, chia sẻ, lưu trữ, truyền nhận, trực quan hóa, truy vấn và tính riêng tư. Thuật ngữ này thường đơn giản là sử dụng để phân tích dự đoán hoặc là một số phương pháp tiên tiến khác rõ ràng để trích xuất giá trị từ dữ liệu mà ít khi đề cập đến kích thước của bộ dữ liệu. Độ chính xác trong dữ liệu lớn có thể dẫn tới ra quyết định tự tin hơn, và những quyết định tốt hơn có thể đưa đến kết quả hoạt động tốt hơn như giảm chi phí và rủi ro. Sơ lược về Mapreduce và Hadoop: Về cơ bản, Hadoop framework (khung công tác Hadoop) của Apache là một cơ chế dùng để phân tích các tập dữ liệu rất lớn mà không cần đặt trong một kho dữ liệu. Hadoop trừu tượng hóa công cụ phân tích dữ liệu to lớn của MapReduce, làm nó trở nên dễ tiếp cận hơn với các nhà phát triển. Hadoop có khả năng mở rộng vô số các node và có thể xử lý tất cả hoạt động và phối hợp liên quan đến việc phân loại dữ liệu. Hadoop với các tính năng và tùy chỉnh phong phú đã trở thành một framework có ích và mạnh mẽ đến không ngờ. Yahoo và vô số các tổ chức khác đã tìm thấy ở nó một cơ chế hiệu quả để phân tích các núi dữ liệu bit, byte. Hadoop cũng khá dễ thực hiện trên một node đơn; tất cả những gì bạn cần là dữ liệu nào đó để phân tích và biết rõ về mã Java, bao gồm một phương tiện lập trình tổng quát (generics). Hadoop cũng làm việc với Ruby, Python và C++. Thông tin thêm về MapReduce Nếu bạn là độc giả của loạt bài này, thì có thể bạn đã tìm hiểu cách hoạt động của MapReduce. Trong bài Tìm hiểu dịch vụ REST với CouchDB và RESTClient của Groovy (REST up with CouchDB and Groovys RESTClient), tôi đã trình bày cách CouchDB sử dụng MapReduce cho các khung nhìn, sau đó tôi lại sử dụng nó trong bài MongoDB: Một kho dữ liệu NoSQL với các di chuyển RDBMS (tất cả đều đúng)) (MongoDB: A NoSQL datastore with (all the right) RDBMS moves), như là cơ chế dùng để xử lý các tài liệu MongoDB. Là một framework dựa trên các khái niệm dùng để xử lý các tập hợp dữ liệu khổng lồ, MapReduce được tối ưu hóa rất cao để giải quyết vấn đề phân tán bằng cách sử dụng một số lượng lớn các máy tính. Framework này bao gồm hai hàm, như tên gọi của nó cho thấy. Hàm map (ánh xạ) được thiết kế để nhận một đầu vào dữ liệu lớn và phân chia nó thành từng mảnh nhỏ hơn, rồi nó chuyển chúng đến các quá trình khác có thể làm điều gì đó với nó. Hàm reduce (giảm) phân loại các câu trả lời riêng lẻ do hàm map thu thập và đưa chúng tới một đầu ra cuối cùng. Trong Hadoop, bạn định nghĩa các việc thực hiện map và reduce bằng cách mở rộng các lớp cơ sở riêng của Hadoop. Các việc thực hiện này được gắn chặt với nhau bằng một cấu hình quy định chúng, cùng với các định dạng đầu vào và đầu ra. Hadoop rất thích hợp cho việc xử lý các tệp rất lớn chứa dữ liệu có cấu trúc. Một khía cạnh rất tiện dụng của Hadoop là ở chỗ nó xử lý phân tích cú pháp thô của một tệp đầu vào, do đó bạn có thể xử lý một dòng tại một thời điểm. Vì thế việc định nghĩa một hàm map thực ra chỉ là vấn đề xác định những gì bạn cần nắm lấy từ một dòng văn bản gửi đến. 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

Trang 1

NHÂN HAI MA TRẬN TRONG

NHÂN HAI MA TRẬN TRONG

Thành viên th c hi n: ự ệ Gi ng viên h ả ướ ng d n: ẫ

Ph m H ng C m - M2515002 TS Phan Th ạ ồ ẩ ượ ng Cang

D ươ ng Bích Chi - M2515018

Lý Minh Ph ươ ng - M2515027

Phan Thúy Quỳnh - M2515028

Trang 2

N I DUNG Ộ

N I DUNG Ộ

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

Demo

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

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

Tham kh o: http://hadoopgeek.com/mapreduce- ả matrix-multiplication/

https://github.com/GitJit/hadoop_kitchen/tree/master/

Trang 3

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 ề

Mapreduce là gì?

Trang 4

● 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 ề

Trang 5

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

Trang 6

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

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

  a ij m n

A

Trang 7

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:

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

Cij=ai1b1j+ai2b2j+ +ainbnj v i i=1 m; j=1 p

Ví d :ụ

Trang 8

T p tin l u ma tr n A và B có d ng: ậ ư ậ ạ

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ê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

Trang 9

Cho bài toán:

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

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

Ma tr n A và B đậ ượ ưc l u

vào t p tin:ậ

Trang 10

Map a_ij

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

Map b_jk

((0,k), (B, j, b_jk)) ((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

a_ij

b_jk row i

Trang 11

Gi i thu t hàm Map ả ậ

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 ậ

Trang 12

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)])

Trang 13

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

Giải thuật hàm 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)

((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 C ầ ử 00

Trang 14

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

Trang 15

● 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/*

Demo

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

Trang 16

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

Ngày đăng: 21/09/2016, 23:28

TỪ KHÓA LIÊN QUAN

w