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

Thuật toán PageRank (HADOOP MAPREDUCE BIG DATA)

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 (865.77 KB, 20 trang )

TRƢỜNG ĐẠI HỌC CẦN THƠ
KHOA CÔNG NGHỆ THÔNG TIN & TRUYỀN THÔNG
----------------- • ------------------

BÁO CÁO MÔN HỌC
DỮ LIỆU LỚN

THUẬT TOÁN PAGE RANK

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

Nhóm thực hiện:
1. Nguyễn Thị Thanh Lan M2515005
2. Giang Tuấn Nguyên
M2515007
3. Lƣ Minh Phúc
M2515010

1


Nội dung báo cáo
1.

Thuật toán Page rank

2.

Giới thiệu cấu trúc dữ liệu bài toán


3.

Ngôn ngữ giả thuật toán Pagerank

4.

Chạy Demo

5.

Tài liệu tham khảo

2


1. Thuật toán Page rank
 PageRank là thuật toán phân tích các liên kết đƣợc
dùng trong Google Search để xếp hạng các trang web.
 Nó là một giá trị số đại diện cho tầm quan trọng của

một trang web trong thế giới website.
 Nó nhƣ là quá trình bầu chọn của các trang web trên
hệ thống mạng internet .

3


Top trang web có Page rank cao

4



2. Giới thiệu cấu trúc dữ liệu
• Cấu trúc dữ liệu ban đầu của bài toán tính
PageRank:

Trang web d có link đến trang web a,b,c
Trang web c chỉ link đến trang web a
Trang web b có link tới trang web a,c
Giả sử trang web a link tới trang web b,c,d

5


2. Thuật toán Page rank (tt)
PR(A) = (1-d) + d*(PR(T1)/C(T1) + … + PR(Tn)/C(Tn)
• Trong đó:
 PR(A) là pagerank của trang “page A”.
 d là hằng số. Thông thƣờng d = 0.85 (hằng số này có
đƣợc qua nhiều nghiên cứu ).
 PR(Tn) là pagerank của trang Tn có liên kết với “trang
A”.
 C(Tn) : tổng số liên kết ra bên ngoài (outgoing links) của
trang Tn.
6


3. Ngôn ngữ giả thuật toán
Page rank
 Để áp dụng thuật toán PageRank vào bài toán trên thì

chúng ta sẽ chia công việc thành 3 jobs bao gồm: chuyển
đổi, tính toán và sắp xếp

7


3. Ngôn ngữ giả thuật toán Page
rank

8


Ngôn ngữ giả thuật toán Page
rank

9


3. Ngôn ngữ giả thuật toán Page
rank


Function Mapper1(Key1: Số dòng , value1: chuỗi giá trị của dòng) {
tab_Index = value1.find("\t");
if (tabIndex > 0) {
nodeA = value1. substring(0, tabIndex);
nodeB= value1.substring(tabIndex+1, tabIndex+2);
emit(Key2 : nodeA , value2: nodeB);
}
}


Trong đó:
nodeA là tên trang hiện tại
nodeB là tên các trang đƣợc link tới từ trang A


Ngôn ngữ giả thuật toán Page
rank
Function Reducer1(Key2 : nodeA , value2[ ]: danh sách các nodeB) {
first = true;
links = 0.5 + "\t";
foreach( value : value2[ ] ) {
if (!first) {
links += ",“
}
links += value;
first = false;
}
emit(Key3 = key2, value3: links);
}
Trong đó:
value3 có nội dung là: 0.5 value2[1], value2[2] … value2[n]

11


Ngôn ngữ giả thuật toán Page
rank
Function Mapper2(Key3 = key2, value3: nodeA 0.5 value2[1], value2[2] … value2[n])
{

tab_index1 = value3.find("\t");
tab_index2 = value3.find("\t", tab_index1 + 1);
page = value3.substring( 0, tab_index1 );
pageRank = value3.substring(tab_index1 + 1, tab_index2 - (tab_index1 + 1));
links = value3.substring(tab_index2 + 1, value3.getLength() - (tab_index2 + 1));
allOtherPages[ ] = links.split(",");
for (otherPage : allOtherPages) {
pageRankWithTotalLinks = “pageRank + "\t" + allOtherPages.length “;
emit (key4: otherPage, value4: pageRankWithTotalLinks);
}
emit (key5: page, value5: || + links ));
}

12


Ngôn ngữ giả thuật toán Page
rank
Function reducer2(key5: page, values : value4 hoặc value5[ ] ){
links = ""
sumShareOtherPageRanks = 0.0;
for (value : values) {
content = value;
if (content == value5) {
links += content.substring(2);
} else if(content == value4) {
split [ ] = content.split("\\t");
pageRank = split[0];
totalLinks = split[1];
sumShareOtherPageRanks += (pageRank / totalLinks);

}
}
newRank = (1 - d) + d * sumShareOtherPageRanks ;
emit (Key7 : key5, value7: newRank + "\t" + links);
}

13


3. Ngôn ngữ giả thuật toán Page
rank
Function Mapper3(Key7 : key5, value7: page +”\t”+ newRank + "\t" + links) {
tab_index1= value7.find(“ \t ");
tab_index2 = value7.find(“ \t ", tab_index1 + 1);
page = value7.substring(0, tab_index1);
pageRank = value7. substring(tab_index1 +1, tab_index2 );
emit (key8: pageRank,value8: page );
}


4. Chạy Demo
• Demo:
Khởi động các dịch vụ HDFS và kiểm tra các tiến trình
đang chạy qua các lệnh
• start-all.sh
• jps
– B1: Giải nén tập tin pagerank.tar.gz vào thƣ mục cài đặt
hadoop
– B2: Di chuyển vào thƣ mục cài hadoop
cd ~/hadoop

– B3: Tạo thƣ mục input trên hdfs nếu chƣa tạo
hdfs dfs -mkdir /input
15


4. Chạy Demo
– B4: Di chuyển vào thƣ mục pagerank vừa giải nén ở trên
cd ~/hadoop/pagerank
– B5: Đƣa các file trong thƣ mục pagerank/input lên hdfs:
hdfs dfs -put ./input/* /input
– B6: Biên dịch file java thành file class
hadoop com.sun.tools.javac.Main *.java
– B7 :Biên dịch file class thành file jar
jar cf pg.jar *.class
– Chạy chƣơng trình với số lần lặp là 1
hadoop jar pg.jar PageRank --input /input/easy4.txt --output
/output

16


4. Chạy Demo
– Chạy chƣơng trình với số lần lặp là 2
hadoop jar pg.jar PageRank --loop 2 --input /input/easy4.txt --output
/output1
– Xem kết quả tính pagerank với 1 lần lặp
hadoop fs -cat /output/result/*
– Xem kết quả tính pagerank với 2 lần lặp
hadoop fs -cat /output1/result/*


17


4. Demo
– Kết quả tính Pagerank với 1 lần lặp của tập easy4.txt:

– Kết quả tính Pagerank với 2 lần lặp của tập tin easy4.txt:


5. Tài liệu tham khảo
1. />2.
/>ses/BIB/pagerank.htm
3. />19


Cảm ơn Thầy và các bạn
đã theo dõi!

20



×