Mở đầu 1.1 Nhu cầu xử lý dữ liệu lớn trong môi trường phân tán Trong khoảng thời gian gần đây nhu cầu làm việc với dữ liệu lớn ngày càng tăng cao. Sự ra đời và phát triển của các mạng xã hội như Facebook, Lastfm, Twitter .v…đòi hỏi xử lý lượng dữ liệu cực lớn. Ví dụ Facebook cần phải xử lý hơn 135 tỉ thông điệp mỗi tháng do đó kho dữ liệu của họ phải vào khoảng nhiều petabyte , Yahoo cũng đạt đến hơn một terabyte/ngày. Trong lãnh vực khoa học thì ngành sinh học phân tử đòi hỏi xử lý một lượng rất lớn kết quả từ các phòng thí nghiệm khác nhau, hay các dữ liệu về thời tiết, địa chấn ở các trạm quan trắc khác nhau trên khắp thế giới.
Các cơ sở dữ liệu quan hệ tỏ ra không hiệu quả khi làm việc với lượng dữ liệu lớn và nhanh chóng phình to như thế này. Chi phí bỏ ra để nâng cấp phần cứng và trả tiền bản quyền trở nên quá đắt đối với các mạng xã hội hay với nhu cầu tổng hợp và phân tích dữ liệu của khoa học. Hơn nữa các DBMS quan hệ vẫn không đáp ứng được yêu cầu về tính phân bố và khả năng mở rộng dữ liệu. Một số tính năng của các DBMS quan hệ không cần thiết đối với các dữ liệu kể trên như yêu cầu về dạng chuẩn, transactional, cách truy vấn theo kiểu join, .v… Nhu cầu về hệ cơ sở dữ liệu mới là cấp thiết để đáp ứng nhu cầu xuất phát từ thực tế.
Có rất nhiều nghiên cứu và thử nghiệm theo hướng này gọi chung là NoSQL như Hadoop, MapReduce, Cassandra, Hbase, MongoDB .v…Đây là một nhánh mới mở rộng của DBMS dành cho dữ liệu lớn và phân bố. Trong tình hình hiện nay khi điện toán đám mây đang phát triển mạnh thì NoSQL hứa hẹn là phần nền dữ liệu cho xu hướng này. NoSQL hiện vẫn còn phát triển ở giai đoạn đầu, có rất nhiều sản phẩm khác nhau chủ yếu trong cộng đồng mã nguồn mở nhưng chưa có sản phẩm thương mại. Các công ty web hay các viện nghiên cứu tự lựa chọn sản phẩm thích hợp để sử dụng, điều này giúp giảm chi phí bản quyền nhưng đòi hỏi đội ngũ phần mềm phải giỏi vì không có công ty hỗ trợ.
Ở Việt Nam NoSQL chưa được sử dụng nhiều do chi phí nghiên cứu của các công ty thương mại và các viện khoa học rất ít, số người tích cực trong cộng đồng mã nguồn mở chưa nhiều, các mạng xã hội ở Việt Nam chưa lớn đến mức DBMS quan hệ không đáp ứng nổi. Tuy vậy việc nghiên cứu NoSQL là rất quan trọng để nắm bắt các xu hướng công nghệ của thế giới và áp dụng vào thực tế Việt Nam trong thời gian tới khi dịch vụ web và khoa học phát triển hơn.2 Mô tả bài toán dữ liệu lớn trong đề tài Trên môi trường Internet khi các trang web ngày càng lớn mạnh, lượng dữ liệu sinh ra từ việc tương tác với người dùng trở nên rất lớn. Việc lưu trữ, cập nhật, phân 4 tích lượng dữ liệu này là bài toán cần giải quyết. Dữ liệu lưu trữ có thể ở nhiều dạng như text, graph, .v…Đề tài chọn dạng lưu trữ cơ bản là text để nghiên cứu.
Dữ liệu lưu có thể coi như các record trong các database thông thường. Trong số rất nhiều sản phẩm thử nghiệm NoSQL hiện nay, đề tài chọn hệ thống Hadoop-HBase là môi trường để giải quyết vấn đề vì các lý do sau: - Hadoop có framework MapReduce rất hữu hiệu để giải quyết nhiều vấn đề trong môi trường phân bố trong đó có việc viết các chương trình phân tích dữ liệu. Nhiều sản phẩm NoSQL khác cố gắng tích hợp với Hadoop để tận dụng MapReduce. - Hadoop có hệ thống file phân bố đơn giản và hiệu quả thích hợp cho dữ liệu lớn.
- Hadoop làm việc với các file mà không phải với các record nên không giải quyết được các tác vụ transaction của một database thông thường như tạo, thêm, xóa, sửa record. Các vấn đề này sẽ do HBase đảm nhận. HBase được phát triển trên nền Hadoop nên kế thừa rất tốt các tính chất của file phân bố và có các lớp riêng tích hợp với MapReduce. - Hadoop-HBase có một cộng đồng rất tích cực nơi mọi người có thể trao đổi kinh nghiệm và giúp đỡ nhau.
Đây là vấn đề rất quan trọng vì trong các dự án mã nguồn mở chỉ có thể tìm trợ giúp từ cộng đồng chứ không có công ty chịu trách nhiệm. Lớp các bài toán này khác nhau về chi tiết nhưng có chung mô hình lời giải. Ví dụ về các bài toán của lớp này như thu thập dữ liệu thường xuyên từ các file log của hệ thống máy tính ở những nơi khác nhau để phân tích theo một số tiêu chí, dữ liệu từ trang web nghe nhạc online được cập nhật, thêm, xóa và xếp hạng theo bài hát, album, nghệ sĩ v.3 Đề xuất cách giải quyết Hướng giải quyết chung là dữ liệu được lưu trữ trong HBase để dễ thêm, bớt, xóa, sửa. Dữ liệu cũ import vào HBase qua file text dùng MapReduce.
MapReduce cũng được dùng để viết công cụ phân tích dữ liệu. Bài toán cụ thể đề tài thực hiện như sau: Người dùng Internet truy cập vào các trang web về âm nhạc để nghe nhạc online hoặc tải bài hát. Mỗi lần user chọn bài hát hệ thống sẽ ghi lại tên user, bài hát, ca sĩ trình bày, tên album. User cũng có thể đăng nhập để ghi nhận xét về bài hát, album, nghệ sĩ.
Các comment sẽ được hiển thị lại cho người dùng xem trước khi đăng tiếp comment khác. Dữ liệu được tổng hợp lại để phân tích ra những kết quả như xếp hạng bài hát, album, nghệ sĩ trong khoảng thời gian cho trước. Dữ liệu sẽ được thiết kế theo table của HBase và lưu trữ phân bố trên một cluster gồm 3 máy tính. Các truy cập thời gian thực như insert, delete, create, tìm 5 kiếm sẽ do HBase đảm nhiệm.
Các tác vụ phân tích data (số lượng lượt chọn một bài hát, ca sĩ được nghe nhiều nhất, v.v…) sẽ dùng MapReduce để hiện thực. Dữ liệu khoảng 4GB lấy từ trang web âm nhạc last.fm dùng để test chương trình (dữ liệu này là hợp pháp vì last.fm cho phép lấy data qua một số hàm API của trang cho mục đích nghiên cứu). Do giải pháp Hadoop, HBase dành cho dữ liệu lớn mới có hiệu quả nên dữ liệu sẽ được thực thi trên MySQL để so sánh và rút ra kết luận với kích thước data từ mức nào thì Hadoop-HBase là hiệu quả và không thay thế được. Ngôn ngữ sử dụng để lập trình là Java.
Nội dung báo cáo chia làm 5 phần. Phần 1 giới thiệu đề tài. Phần 2 tóm tắt nền tảng Hadoop-HBase. Phần 3 là chi tiết cách tiếp cận để giải quyết vấn đề.
Phần 4 là đánh giá kết quả và so sánh với MySQL. Phần 5 là kết luận và đưa ra hướng phát triển. 6 Chương 2: Mô hình Hadoop-HBase 2.1 Giới thiệu các loại NoSQL 2.1 Khái niệm về NoSQL Cùng với sự phát triển của Internet là một loạt các ứng dụng web mới được xây dựng trên nền Internet như mạng xã hội, thương mại điện tử. Các ứng dụng này có một số đặc điểm sau: - Khối lượng dữ liệu phải lưu trữ và xử lý khổng lồ.
Ví dụ trong một ngày có hàng tỉrecord được tạo mới trên Facebook hay lượng dữliệu to lớn của Google cần lưu trữ để phục vụ nhu cầu tìm kiếm hiện nay trên thếgiới. - Độ co giãn lớn. Ví dụ một website bán hàng có lượng giao dịch tăng nhanh cần phải mở rộng Cơ sở dữ liệu trong thời gian ngắn nhất và với chi phí rẻ nhất. Với các CSDL như Oracle, SQL Server, v.v… việc nâng cấp tốn kém tiền bản quyền cho phiên bản cao hơn và chi phí nâng cấp phần cứng.
- Tính sẵn sàng cao: Nguy cơ hỏng hóc phần cứng là thường xuyên nhưng dịch vụ cung cấp không thể ngưng trong bất cứ thời gian nào. Ví dụ các đơn đặt hàng online của Amazon không được để mất bất cứ đơn nào. - Vấn đề nhất quán dữ liệu:không cần thỏa mãn ngay tức khắc mà có thể thỏa mãn sau một thời gian dài, ngắn tùy theo tính chất của bài toán. Ví dụ các đơn đặt hàng online sẽ được đáp ứng 3 giờ sau khi gửi đi thành công.
Các hệ cơ sở dữ liệu quan hệ truyền thống tỏ ra không hiệu quả khi thực hiện các yêu cầu này. Với các hệ CSDL quen thuộc như Oracle, MS SQL Server, DB2,… tính nhất quán được đặt lên hàng đầu vì chúng áp dụng cho các trường hợp cần độ chính xác và tính tức thời cao như ngân hàng, các dữ liệu về nhân thân, an ninh .v…Trong khi đó tính nhất quán yêu cầu trong các ứng dụng web thế hệ mới như mạng xã hội và thương mại điện tử mang tính chất “nhất quán cuối cùng” (eventually consistency) tức là sau một thời gian nào đó tùy theo yêu cầu của từng ứng dụng tính nhất quán sẽ đạt được. Ngoài ra chi phí để mở rộng và bảo trì dữ liệu của các hệ cơ sở dữ liệu truyền thống quá đắt đỏ do dữ liệu được lưu tập trung. Từ các tính chất trên, nảy sinh các vấn đề cần giải quyết để các ứng dụng web thế hệ mới có thể phát triển: - Dữ liệu cần được lưu trữ phân tán trên các máy tính thông thường tại các nơi khác nhau về mặt địa lý để giải quyết được bài toán về lượng dữ liệu rất lớn và giá thành rẻ.
- Cấu trúc của hệ cơ sở dữ liệu phải thay đổi theo hướng đơn giản và uyển chuyển hơn để thuận tiện cho việc truy vấn, tránh các câu hỏi dạng join làm chậm quá trình ra kết quả, các ràng buộc khắt khe về dạng chuẩn có thể bỏ qua. 7 - Khả năng đánh chỉ số một lượng dữ liệu lớn và phục vụ các trang web nhanh chóng là một yêu cầu bắt buộc. Nhiều hướng nghiên cứu đồng thời của cộng đồng nguồn mở, các trường đại học và các hãng thương mại lớn như Google, Amazon, v.v… để phục vụ cho việc xử lý dữ liệu trên các ứng dụng web 2.0 đã đưa đến một mô hình lưu trữ dữ liệu mới là NoSQL với các đặc điểm: - Phân bố. - Không cố gắng tuân theo mô hình ACID (atomicity, consistency, isolation, durability) một cách nghiêm ngặt.
ACID là các tính chất cơ bản của cơ sở dữ liệu quan hệ cổ điển. - Chấp nhận trùng lặp dữliệu. - NoSQL không phải là anti-RDBMS nhưng nó nhấn mạnh đến các ưu thế của mô hình lưu trữ Key-Value, mô hình cơ sở dữ liệu văn bản hay mô hình cơ sở dữ liệu graph.