Mục lụcMở đầu Bài thu hoạch này trình bày các vấn đề lý thuyết về điện tốn đám mây, ứng dụng trong bài tốn phân lớp dữ liệu quy mơ lớn với thuật tốn phân loại Nạve Bayes được cải tiến xử
Trang 1
BÀI THU HOẠCH MÔN HỌC
ĐIỆN TOÁN LƯỚI VÀ ĐÁM MÂY
ĐỀ TÀI:
TÌM HIỂU GIẢI THUẬT PHÂN LỚP SONG SONG
CHO DỮ LIỆU QUY MÔ LỚN
GIÁO VIÊN HƯỚNG DẪN:
PGS.TS NGUYỄN PHI KHỨ HỌC VIÊN: VƯƠNG ĐỨC HIỀN MSHV: CH1301087
TP HỒ CHÍ MINH - THÁNG 6, NĂM 2014
Trang 2Mục lục
Mở đầu
Bài thu hoạch này trình bày các vấn đề lý thuyết về điện tốn đám mây, ứng dụng trong bài tốn phân lớp dữ liệu quy mơ lớn với thuật tốn phân loại Nạve Bayes được cải tiến xử lí trên nền tảng song song Hadoop MapReduce Nội dung của bài thu hoạch này chủ yếu được dịch từ bài báo “Research on Parallel Classification Algorithms for Large-scale Data” của các tác giả Lijuan Zhou, Hui Wang, Wenbo Wang [1]
Các phần theo sau đây trong bài thu hoạch cĩ cấu trúc tương ứng với các phần trong bài báo [1] nĩi trên, bao gồm: phần 1: tĩm tắt nội dung bài báo; phần 2: trình bày giới thiệu tổng quan về Điện tốn đám mây và nền tảng Hadoop MapReduce; phần 3 trình bày về kiến trúc Hadoop MapReduce, bao gồm một phần về hệ thống tập tin phân tán HDFS (Hadoop Distributed File System) và một phần giới thiệu về mơ hình lập trình MapReduce; phần 4 trình bày thuật tốn phân loại Nạve Bayes truyền thống và thuật tốn Nạve Bayes được cải tiến để sử dụng cho phân loại song song trong mơi trường điện tốn đám mây; phần 5 là các kết
Trang 3quả mà nhĩm tác giả đã thực hiện thử nghiệm trên các tập dữ liệu UCI; phần 6 tổng kết những kết quả đã đạt được của bài báo
1. Tĩm tắt
Với khối lượng ngày càng tăng của dữ liệu và các yêu cầu cá nhân hĩa cho việc khai phá dữ liệu, phương pháp khai phá dữ liệu tập trung truyền thống khơng thể thích ứng với loại nhu cầu này Điện tốn đám mây cung cấp một giải pháp giá
rẻ cho việc lưu trữ, phân tích và xử lí dữ liệu lớn Để đạt được mục đích của khai phá dữ liệu song song trong mơi trường điện tốn đám mây, một thuật tốn cải tiến dựa trên thuật tốn Nạve Bayes đã được đề xuất trong bài báo này Đầu tiên, đề xuất các ý tưởng thiết kế của thuật tốn cải tiến trong mơ hình lập trình MapReduce Sau đĩ sử dụng các dữ liệu thực tế để kiểm tra thuật tốn Kết quả thử nghiệm xác nhận rằng các thuật tốn mới cĩ hiệu suất cao hơn và khả năng mở rộng tốt hơn
2. Giới thiệu
Điện tốn đám mây là một thuật ngữ thương mại cho các cơng nghệ cĩ khả năng cung cấp tài nguyên tính tốn, phần mềm, truy cập và lưu trữ dữ liệu Nĩ khơng địi hỏi người dùng cuối biết về vị trí và cấu hình của hệ thống cung cấp các dịch vụ Điện tốn đám mây là việc cung cấp các tài nguyên tính tốn như một dịch vụ hơn là một sản phẩm, theo đĩ các tài nguyên được chia sẻ, các phần mềm
và các thơng tin được cung cấp cho máy tính và các thiết bị khác như một tiện ích qua mạng
Trang 4Những dịch vụ này thường được chia thành ba loại: cơ sở hạ tầng như một dịch vụ, nền tảng như một dịch vụ và các phần mềm như một dịch vụ Điện toán đám mây là việc thực hành sử dụng các mạng và Internet để cung cấp tài nguyên tính toán ảo cho người dùng Nó cho phép chúng ta sử dụng các khả năng phần cứng và bản quyền phần mềm khi cần mà không phải trả phí cho các tài nguyên tính tính nhàn rỗi Với công nghệ của SaaS , PaaS , IaaS và mô hình cao cấpkhác, điện toán đám mây phân phối sức mạnh của máy tính đến tay của người dùng cuối
Amazon EC2, giống như Google App Engine, Windows Azure và Hadoop,
là những kiến trúc điện toán đám mây tương đối hoàn thiện hiện nay Hadoop được tạo ra bởi Doug Cutting, ông ấy đặt tên Hadoop dựa theo tên con voi đồ chơi của con trai mình Apache Hadoop là một nền tảng phần mềm hỗ trợ các ứng dụng phân phối dữ liệu chuyên sâu miễn phí Nó cho phép các ứng dụng làm việc với hàng ngàn các nodes và các dữ liệu petabyte Hadoop đã được lấy cảm hứng từ các bài báo về Google’s MapReduce và Google FileSystem Hadoop được phát triển ban đầu để hỗ trợ phân phối cho dự án công cụ tìm kiếm Nutch Hadoop bây giờ bao gồm nhiều dự án nhỏ ngoài các cốt lõi cơ bản, MapReduce và hệ thống tập tin phân tán HDFS Các dự án nhỏ này cung cấp khả năng xử lý ứng dụng nâng cao cho việc thực hiện các cơ bản Hadoop bao gồm Avro, Pig, HBase, Zookeeper, Hive và Chukwa
Ngày nay, sự phát triển nhanh chóng của Internet và World Wide Web đã dẫn đến một lượng lớn các thông tin trực tuyến có sẵn được coi là Big Data Ngoài
ra, các tổ chức kinh doanh và chính phủ tạo ra một lượng lớn các thông tin có cấu trúc và phi cấu trúc mà cần phải được xử lý, phân tích và liên kết Một bài báo IDC được tài trợ bởi EMC đã ước tính số lượng thông tin được lưu trữ trong một dạng kỹ thuật số trong năm 2007 là khoảng 281 Exabyte và tỉ lệ tăng trưởng kép khoảng 57%, với các thông tin trong các tổ chức tỉ lệ này còn cao hơn Việc lưu trữ, quản lý, truy cập và xử lý số lượng lớn các dữ liệu này mô tả một nhu cầu cơ bản và một thách thức lớn để đáp ứng nhu cầu tìm kiếm, phân tích, khai phá, và
Trang 5mô hình hóa dữ liệu này làm thông tin Ngoài ra, một tính năng hiện tại của những
dữ liệu lớn là khó khăn làm việc với nó bằng cách sử dụng các thuật toán khai thác
dữ liệu truyền thống, đòi hỏi thay vì "phần mềm song song chạy trên hàng chục, hàng trăm, thậm chí hàng ngàn máy chủ" Xử lý song song phân rã quá trình xử lí của ứng dụng tổng thể thành các công vụ riêng biệt, mà sau đó có thể được thực hiện song song trên một nền tảng điện toán thích hợp để đạt được hiệu suất tổng thể cao hơn so với xử lí tuần tự Và nó thường liên quan đến phân vùng hoặc phân chia các dữ liệu vào nhiều phân đoạn có thể được xử lý một cách độc lập bằng cách sử dụng chương trình ứng dụng thực thi song song trên một nền tảng điện toán thích hợp , sau đó lắp lại kết quả để đưa ra các dữ liệu đầu ra hoàn chỉnh Kiến trúc điện toán đám mây có thể hỗ trợ các ứng dụng dữ liệu song song là một giải pháp tiềm năng cho các yêu cầu xử lý dữ liệu quy mô petabyte và terabyte của tính toán Big data Và một số giải pháp đã xuất hiện bao gồm các kiến trúc MapReduce đi tiên phong bởi Google và bây giờ đã có trong một sự thực hiện mã nguồn mở gọi là Hadoop được sử dụng bởi Yahoo, Facebook, và những người khác
3. Kiến trúc Hadoop và MapReduce
3.1 Hệ thống tập tin phân tán HDFS
HDFS (Hadoop Distributed File System), được viết bằng Java, là một
hệ thống tập tin phân tán mở rộng cho nền tảng Hadoop HDFS được lấy cảm hứng từ bài báo về Google File System Nó có tính chịu lỗi cao và được thiết
kế để triển khai trên phần cứng chi phí thấp
HDFS là có kiến trúc master/slave Một cụm HDFS bao gồm một NameNode duy nhất và một số các DataNode quản lí việc lưu trữ các tập tin Server NameNode tổ chức hệ thống tập tin và một NameNode thứ hai có thể tạo ra những bức ảnh của cấu trúc bộ nhớ của NameNode, để ngăn chặn hệ thống tập tin bị sập và giảm sự mất mát dữ liệu Các hoạt động không gian tên, như mở, đóng tập tin, và đổi tên tập tin, thư mục được thực hiện bởi các
Trang 6NameNode Và việc map của các khối cho DataNodes cũng được xác định bởi NameNode HDFS là một hệ thống tập tin có cấu trúc khối, các tập tin riêng lẻ được chia thành các khối có kích thước cố định Các khối này được lưu trữ trên DataNodes với khả năng lưu trữ dữ liệu Do đó, các DataNodes chấp nhận yêu cầu từ client của hệ thống tập tin Các DataNodes cũng thực hiện việc tạo các khối, xóa, sao chép theo các chỉ dẫn từ NameNode Hệ thống tập tin sử dụng các lớp giao thức TCP/IP để giao tiếp; và các client sử dụng RPC để giao tiếp với nhau
Để mở một tập tin, client liên lạc với các NameNode bằng cách gọi hàm open() trên đối tượng FileSystem và lấy được một danh sách các vị trí các khối
mà bao gồm tập tin Các vị trí này xác định được DataNodes giữ mỗi khối đó Client sau đó đọc tập tin dữ liệu trực tiếp từ các DataNode server bằng cách gọi hàm read() trên FSDataInputStream, có thể song song Khi client đã đọc xong, nó gọi hàm close() trên FSDataInputStream
HDFS được thiết kế để trở nên mạnh mẽ hơn với một số vấn đề mà các
hệ thống tập tin phân tán khác như NFS gặp phải Đặc biệt:
1) HDFS được thiết kế để lưu trữ một số lượng rất lớn thông tin Điều này đòi hỏi việc lan rộng dữ liệu trên một số lượng lớn máy móc Nó cũng hỗ trợ các kích thước tập tin lớn hơn nhiều so với NFS
2) HDFS lưu trữ dữ liệu một cách đáng tin cậy Nếu một máy cá nhân trong nhóm bị crash, dữ liệu vẫn có sẵn Vì các tập tin được lưu trữ trong một chế
độ dự phòng trên nhiều máy tính để đảm bảo độ bền của chúng khi có lỗi
và tính sẵn có cho các ứng dụng song song
3) HDFS cung cấp khả năng truy cập mở rộng và nhanh chóng với những thông tin được lưu trong Hadoop Nó phục vụ một số lượng lớn khách hàng hơn bằng cách đơn giản là bổ sung thêm máy vào một nhóm
4) HDFS tích hợp tốt với Hadoop MapReduce, cho phép dữ liệu được đọc
và tính toán cục bộ khi có thể
3.2 Mô hình lập trình của MapReduce
Trang 7Kiến trúc MapReduce cho phép các lập trình viên sử dụng một kiểu lập trình hàm để tạo ra một hàm “map” để xử lí một cặp key-value kết hợp với các
dữ liệu đầu vào để tạo ra một tập hợp các cặp key-value trung gian, và một hàm “reduce” trộn tất cả các value trung gian kết hợp với cùng key trung gian
tương ứng Động cơ bao gồm một JobTracker và một số TaskTrackers Client
gửi các công việc MapReduce cho JobTracker Node Với một hệ thống file rack-aware, JobTracker đẩy việc ra các nút TaskTracker đang có sẵn, có chứa các dữ liệu hoặc gần đó dữ liệu Bởi vì hệ thống quản lý các chi tiết như phân vùng dữ liệu đầu vào, lập kế hoạch và thực hiện nhiệm vụ trên một cụm xử lý,
và quản lý các thông tin liên lạc giữa các nút một cách tự động, các lập trình viên không có kinh nghiệm trong lập trình song song có thể dễ dàng sử dụng một môi trường xử lý phân tán lớn
MapReduce là một mô hình lập trình được thiết kế để xử lý khối lượng lớn dữ liệu song song bằng cách chia công việc thành một tập hợp các nhiệm
vụ độc lập Dưới đây sẽ giải thích nó có thể được sử dụng như thế nào để viết các chương trình chạy trong môi trường Hadoop
MapReduce là một nền tảng phần mềm được giới thiệu bởi Google vào năm 2004 để hỗ trợ tính toán phân tán trên các tập dữ liệu lớn trên các cụm máy tính Framework được lấy cảm hứng từ các hàm map và reduce được sử dụng trong lập trình hàm, mặc dù mục đích của chúng trong nền tảng MapReduce không giống như hình thức ban đầu của chúng Dữ liệu được đọc
từ tập tin vào Mappers, được phân phối bởi mappers đến Reducers, và gửi ra Reducers vào các file đầu ra được lưu trữ trong HDFS Chế độ lập trình MapReduce được thiết kế để tính toán khối lượng lớn dữ liệu một cách song song Mô hình phân chia khối lượng công việc trên các nhóm (cluster) Và nó phân chia đầu vào thành các mảnh đầu vào nhỏ được biểu diễn bởi các giao diện Java của InputSplit Khi client gửi một công việc để framework, một map đơn xử lý một mảnh đầu vào Và từng phần được chia thành các bản ghi; map
xử lí mỗi bản ghi lần lượt Một InputFormat chịu trách nhiệm cho việc tạo các
Trang 8mảnh đầu vào và phân chia chúng thành các bản ghi Và framework sẽ gán một mảnh cho mỗi hàm map Các JobTracker đẩy việc ra các nút TaskTracker có sẵn trong các cụm, cố gắng để giữ cho các công việc gần với dữ liệu càng tốt Với hệ thống tập tin rack-aware, JobTracker biết nút nào có chứa dữ liệu và những máy nào khác gần đó TaskTracker sẽ xử lý các bản ghi lần lượt MapReduce đảm bảo rằng các đầu vào cho mỗi reducer đã được sắp xếp theo key Quá trình thực hiện sắp xếp và chuyển các kết quả map như là đầu vào của reducer được gọi là shuffle Chức năng map không chỉ đơn giản là ghi output của nó vào đĩa
Hình 1 Mô hình MapReduce
Hình 1.1 cho thấy những gì xảy ra Mỗi nhiệm vụ map có một bộ nhớ đệm xoay vòng để ghi kết quả đầu ra Khi các nội dung của bộ nhớ đệm đạt đến một ngưỡng nhất định, chúng sẽ được sắp xếp và ghi vào đĩa trong khi
Trang 9map tiếp tục output các bản ghi Trước khi sự cố tràn ghi vào đĩa, dữ liệu được chia thành các phân vùng tương ứng với các reducer sẽ được tối ưu hĩa để gửi
đến các tiến trình chạy nền Trong mỗi phân vùng, các tiến trình chạy nền thực hiện được sắp xếp theo key Trước khi cơng việc kết thúc, các tập tin tràn được
sáp nhập vào một phân vùng và được sắp xếp theo tập tin đầu ra duy nhất Vì vậy tập tin đầu ra vẫn nằm trên đĩa local của tasktracker thực hiện nhiệm vụ map để giảm lưu lượng của mạng
Khi hàm map được hồn thành, TaskTracker sẽ thơng báo cho JobTacker Sau đĩ mỗi hàm reduce nhận output được giao từ một số nhiệm vụ map thơng qua HTTP vào bộ nhớ và định kỳ trộn các kết quả vào đĩa Và điều này được gọi là giai đoạn sao chép của nhiệm vụ reduce Khi tất cả các kết quả đầu ra map đã được sao chép, hàm reduce được gọi cho mỗi key trong đầu ra
đã được sắp xếp Và đầu ra của giai đoạn này được ghi trực tiếp vào hệ thống tập tin đầu ra, thường là HDFS
4. Thuật tốn Nạve Bayes trong mơi trường điện tốn đám mây
Nạve Bayes là một phương pháp phân loại dựa trên thống kê Nĩ là một thuật tốn xác suất được nghiên cứu mà thường được sử dụng trong phân loại Nĩ
sử dụng các kiến thức về xác suất và thống kê để phân loại Các nghiên cứu so sánh các thuật tốn phân loại đã nhận thấy Nạve Bayes cĩ thể so sánh về hiệu suất với bộ phân lớp cây quyết định và phân loại mạng nơ ron Nạve Bayes cũng đã cho thấy độ chính xác cao và nhanh khi áp dụng cho các cơ sở dữ liệu lớn
4.1 Thuật tốn Nạve Bayes truyền thống
Bộ phân lớp Nạve Bayes giả định rằng sự hiện diện của một đặc tính đặc biệt của một lớp là khơng liên quan đến sự hiện diện của bất kỳ đặc tính khác trên một biến phân loại cho trước Giả định này được gọi là phân lớp độc lập cĩ điều kiện Nhưng nĩ xuất hiện để làm việc tốt trong thực tế ngay cả khi giả định độc lập là khơng hợp lệ Nĩ phân loại dữ liệu theo hai bước:
Trang 10- Bước huấn luyện: Sử dụng các mẫu đào tạo, phương pháp ước tính các thơng số của một phân bố xác suất, giả sử đặc tính này là độc lập điều kiện trong lớp nhất định
- Bước dự đốn: Đối với một mẫu thử nghiệm chưa cĩ nhãn, phương pháp tính tốn xác suất hậu nghiệm của mẫu đĩ thuộc mỗi lớp Phương pháp này sau đĩ phân loại các mẫu thử nghiệm tùy theo xác suất hậu nghiệm lớn nhất
Để chứng minh khái niệm phân loại Nạve Bayes, xem xét các kiến thức
về thống kê Cho Y là thuộc tính phân loại và X {x1, x2, , xk } là mảng véc
tơ giá trị của các thuộc tính đầu vào, bài tốn phân loại làm đơn giản để ước tính xác suất cĩ điều kiện P(Y|X) từ một tập các mẫu huấn luyện P(Y|X) là xác suất hậu nghiệm, và P(Y) là xác suất cho trước
Giả sử cĩ m lớp, Y1, Y2, , Ym Cho một bộ X, bộ phân loại sẽ dự đốn X thuộc về lớp cĩ xác suất hậu nghiệm cao nhất Bộ phân loại Nạve Bayes dự đốn bộ X thuộc về lớp Yi khi và chỉ khi:
P(Yi | X) >= P(Yj | X) (1) Quy tắc Bayes nĩi rằng xác suất này cĩ thể được biểu diễn dạng cơng thức:
P(Yi | X) = P(X | Yi).P(Yi) / P(X) (2) Như P(X) là hằng số cho tất cả các lớp, chỉ
P(X | Yi )P(Yi ) (3) cần được tối đa hĩa Xác suất trước được tính bằng cách xác suất của Yi trong tập huấn luyện
Để giảm bớt việc tính tốn trong việc đánh giá P(X | Yi), giả định Nạve Bayes của lớp độc lập cĩ điều kiện được thực hiện Vì vậy,
P(X | Yi) = Π P(Xk | Yi) (4)
Và chúng ta dễ dàng tính tốn được xác suất P(X1 | Yi), P(X2 | Yi), , P(Xk | Yi) từ các bộ huấn luyện Nhãn lớp được dự đốn là lớp Yi mà xác suất P(X |
Yi )P(Yi ) là lớn nhất
4.2 Thuật tốn Nạve Bayes cải tiến
Điện tốn đám mây cĩ thể được định nghĩa là một sự cung cấp thơng qua Internet của tất cả các dịch vụ điện tốn Nĩ là phiên bản tiên tiến nhất của kiến trúc client-server và cĩ hệ thống để một mức độ rất cao của nguồn tài nguyên được chia sẻ và nhân rộng Trong chế độ này, các ứng dụng, dữ liệu và