« Home « Kết quả tìm kiếm

ĐIệN TOáN ĐáM MÂY Và BàI TOáN Xử Lí Dữ LIệU LớN THEO MÔ HìNH ÁNH Xạ - RúT GọN


Tóm tắt Xem thử

- ĐIỆN TOÁN ĐÁM MÂY VÀ BÀI TOÁN XỬ LÍ DỮ LIỆU LỚN THEO MÔ HÌNH ÁNH XẠ - RÚT GỌN.
- Điện toán đám mây, dữ liệu lớn, ánh xạ - rút gọn, Hadoop.
- Những công ty hàng đầu về công nghệ thông tin như Google, Yahoo, Amazon, Microsoft, Facebook, Twitter… đối mặt với một khối lượng dữ liệu khổng lồ.
- Sự tăng trưởng này đòi hỏi các chiến lược mới để xử lý và phân tích dữ liệu.
- Điện toán đám mây được phát triển và Hadoop- MapReduce đang là một mô hình tính toán mạnh mẽ để giải quyết cho những vấn đề này.
- Mô hình này đưa ra một khung lập trình cho các ứng dụng xử lí văn bản có khả năng xử lí nhanh chóng một lượng lớn dữ liệu nhờ vào sự song song trong một cụm lớn máy tính.
- Bài viết này cung cấp một cái nhìn tổng quan về vấn đề xử lí dữ liệu lớn trên nền tảng tính toán đám mây, như là, kiến trúc và thành phần của Hadoop, HDFS (Hadoop distributed File System), Mô hình MapReduce và các ứng dụng khác nhau của nó..
- Điện toán đám mây cung cấp 3 mô hình dịch vụ cơ bản: dịch vụ phần cứng (IaaS), dịch vụ hạ tầng (PaaS) và dịch vụ phần mềm (SaaS).
- Điện toán đám mây hiện thực ra đời nhờ vào sự phát triển của các công ty lớn như Google, Amazon với các trung tâm dữ liệu khổng lồ kết nối bằng mạng và Internet.
- Điện toán đám mây có lẽ không phải để phát triển riêng cho xử lí dữ liệu lớn nhưng nó là một công nghệ mới đầy hứa hẹn cho bài toán dữ liệu lớn.
- Trong lời dẫn của Hội thảo quốc tế về điện toán đám mây và dữ liệu lớn năm 2012 (http://www.cloudserviceresearch.com/bdc2012/) có đoạn viết “Gần đây, điện toán đám mây đã nổi lên như một công nghệ đầy hứa hẹn đối với việc xử lý dữ liệu lớn.”.
- Khái niệm dữ liệu lớn (big data) chưa có một định nghĩa thống nhất nhưng nó ám chỉ các tập dữ liệu có dung lượng rất lớn mà đơn vị đo thường là cỡ terabyte trở lên.
- Theo tự điển mở Wikipedia, dữ liệu lớn thông thường là các tập dữ liệu mà kích cỡ của nó vượt quá khả năng thu thập, quản lý và xử lí trong thời gian chấp nhận được.
- Vì vậy, khái niệm dữ liệu lớn không chỉ là các tập dữ liệu lớn về dung lượng mà còn bao hàm cả về công nghệ lưu trữ, tính toán, tìm kiếm trên đó.
- Ví dụ, HP cho rằng: “doanh nghiệp đang chìm trong thông tin - có quá nhiều dữ liệu mà không có cách hiệu quả để xử lí nó.
- Đám mây của HP là đám mây có tính co giãn được, cung cấp nền tảng lưu trữ và lập chỉ mục cho tập dữ liệu hàng trăm petabyte và có thể truy vấn được hầu như tức thời.
- Sách trắng của IDG năm 2011 viết rằng “ dữ liệu lớn đang là thách thức không ngừng gia tăng mà các tổ chức phải đối mặt khi họ gặp các nguồn dữ liệu hay thông tin tăng lên rất nhanh”.
- Làm sao để có thể lưu trữ và xử lí một khối lượng dữ liệu lớn và ngày càng lớn hơn theo cấp số nhân? Giải pháp truyền thống là mua phần cứng lớn hơn (CPU, RAM, đĩa cứng lớn).
- Mặt khác, đây là giải pháp đối diện với bế tắc vì dữ liệu có dung lượng lớn hơn khả năng lưu trữ và xử lí của bất kỳ một máy tính nào, chẳng hạn như qui mô dữ liệu của Google.
- Điện toán đám mây cung cấp một giải pháp lưu trữ trong cụm máy tính có khả năng co giãn được và.
- Mô hình hiện tại có thể xử lí dữ liệu song song phân tán trong một cụm lớn máy kết nối với nhau đó là ánh xạ - rút gọn (Map - Reduce).
- Có thể Map - Reduce chẳng liên quan gì đến điện toán đám mây, nhưng Hadoop là nền tảng công nghệ cho phép thiết lập cụm máy tính, che dấu mọi gánh nặng về song song hay giao tiếp mạng giữa các máy tính nên nó có thể coi là một giải pháp đám mây cho bài toán dữ liệu lớn..
- Mô hình MapReduce cung cấp khung lập trình với chức năng chính là xử lý dữ liệu theo chức năng cơ bản: Ánh xạ (map) và rút gọn (reduce)..
- Việc ánh xạ được thực hiện cục bộ, song song trên các máy trạm khác nhau.
- Nguyên tắc làm việc: các máy trạm thực hiện xử lí các khối dữ liệu đầu vào theo một kích thước (cố định) nào đó và xuất ra các giá trị trung gian theo dạng cặp dữ liệu <khóa K, giá trị V>.
- Theo kiến trúc Hadoop, mô hình MapReduce được cài đặt bao gồm một bộ theo dõi công việc (Job Tracker) hay còn gọi là chủ (Master) và các bộ xử lí nhiệm vụ (Task Trackers hay Workers) để thực thi một công việc (Hadoop Job)..
- Mỗi Task Tracker được ấn định trước một số các ánh xạ và rút gọn (map và reduce) để chỉ ra khả năng xử lí của nó tại một thời điểm.
- Mô hình tính toán này dựa trên hệ thống quản lí tập tin phân tán HDFS (Hadoop Distributed File System), đó là hệ thống tin cậy và khả năng chịu lỗi cao nhằm quản lí lưu trữ và thực hiện sao chép dữ liệu đầu vào, đầu ra của một công việc Hadoop..
- Cần lưu ý rằng những gì chúng ta nói đến về dữ liệu đầu vào đầu ra là trong ngữ cảnh dữ liệu lớn (Big data), vượt quá khả năng lưu trữ và xử lí của bất kỳ một hệ quản trị CSDL hay một máy tính đơn lẻ nào.
- Dữ liệu lớn có thể có cấu trúc,.
- Dữ liệu đó cần có một hệ thống quản lí lưu trữ mới đó là HDFS..
- động phân tích dữ liệu lớn theo mô hình ánh xạ- rút gọn (Map-reduce) cho dữ liệu phi cấu trúc trên hệ thống tập tin phân tán.
- Lõi (core) Hadoop: bao gồm một tập hợp của các thành phần và các giao diện cung cấp chức năng truy cập vào các hệ thống tập tin phân tán và vào ra tổng quát.
- Hadoop-MapReduce: là một mô hình lập trình và khung phát triển phần mềm cho phép viết các ứng dụng nhanh chóng xử lý một lượng lớn dữ liệu song song dựa vào một cụm lớn các máy tính gọi là các nút tính toán (node) dựa trên kiến trúc của nền tảng Hadoop.
- MapReduce sử dụng HDFS để truy cập vào các khối (phân đoạn tập tin) và lưu trữ kết quả rút gọn..
- Hệ thống tập tin phân tán (Hadoop Distributed File System-HDFS) là hệ thống lưu trữ chính được sử dụng bởi các ứng dụng Hadoop.
- HDFS, như tên gọi của nó, một hệ thống tập tin phân tán cung cấp truy cập thông lượng cao vào dữ liệu của ứng dụng, tạo ra nhiều bản sao của khối dữ liệu và phân phối chúng trên các nút tính toán trong một cụm để cho phép tính toán song song, đáng tin cậy và nhanh chóng..
- HBase: là một cơ sở dữ liệu phân tán theo cột..
- Nó ánh xạ dữ liệu HDFS vào một cơ sở dữ liệu có cấu trúc giống và cung cấp các giao diện lập trình được cho Java (Java API) truy cập vào CSDL này.
- Pig: là ngôn ngữ xử lí dòng dữ liệu.
- Apache Pig là một nền tảng cho việc phân tích dữ liệu lớn bao gồm một ngôn ngữ cấp cao để diễn tả các chương trình phân tích dữ liệu.
- Đặc điểm chính của chương trình Pig là cấu trúc của chúng có thể được song song hóa cho phép nó xử lý các tập hợp dữ liệu rất lớn, cú pháp đơn giản.
- Hive: là một kho dữ liệu cơ sở hạ tầng được xây dựng trên Hadoop.
- Hive cung cấp các công cụ để cho phép tóm tắt dữ liệu, truy vấn không chuẩn (ad-hoc) và phân tích các bộ dữ liệu lớn được lưu trữ trong các tập tin Hadoop.
- Nó cung cấp một cơ chế để định cấu trúc cho loại dữ liệu này và cung cấp một ngôn ngữ truy vấn đơn giản gọi là Hive.
- QL, dựa trên SQL, cho phép người sử dụng quen thuộc với SQL để truy vấn dữ liệu này..
- Nó là một hệ thống thu thập dữ liệu để theo dõi các hệ thống phân tán lớn.
- Chukwa bao gồm một bộ công cụ linh hoạt và mạnh mẽ cho hiển thị, theo dõi và phân tích kết quả để sử dụng tốt nhất các dữ liệu thu thập được..
- HCatalog: là một lớp quản lý lưu trữ cho Hadoop cho phép người dùng sử dụng với các công cụ xử lý dữ liệu khác nhau.
- Bảng HCatalog trình bày cho người dùng một khung nhìn kiểu quan hệ cho dữ liệu trong hệ thống tập tin phân tán Hadoop (HDFS) và đảm bảo rằng người dùng không cần phải quan tâm về nơi lưu trữ hoặc định dạng của dữ liệu được lưu trữ..
- 3 HỆ THỐNG TẬP TIN PHÂN TÁN (HDFS) Một cụm máy tính cài đặt hệ thống HDFS có hai loại nút: Nút tên (NameNode), hay còn gọi là nút chủ (master), và nút dữ liệu (DataNodes), hay còn gọi là nút tớ (worker).
- NameNode quản lý không gian tên hệ thống tập tin.
- Nó duy trì cây hệ thống tập tin và siêu dữ liệu cho tất cả các tập tin và thư mục trong cây.
- NameNode nhận biết các DataNode mà trên đó tất cả các khối cho một tập tin được đặt phân tán.
- NameNode quyết định về sao lưu dữ liệu của 1 khối.
- Nguyên tắc hoạt động: Để đọc một tập tin HDFS, các ứng dụng từ máy khách (client) chỉ cần sử dụng một luồng đầu vào (như file input stream trong Java) giống như đọc tập tin trong hệ thống tập tin cục bộ.
- Tuy nhiên, về xử lí đằng sau hậu trường, luồng đầu vào này được xử lí để lấy dữ liệu từ HDFS.
- cập, NameNode sẽ xác định danh sách của khối HDFS chứa tập tin và một danh sách các nút dữ liệu lưu trữ mỗi khối và trả về cho máy khách..
- Để ghi dữ liệu HDFS, các ứng dụng xem các tập tin HDFS như là một luồng đầu ra (output stream).
- Ngoài ra còn một tiến trình thứ ba quản lý phản hồi từ các NameNode rằng dữ liệu đã được ghi hoàn tất..
- 4 MÔ HÌNH ÁNH XẠ - RÚT GỌN (MAP- REDUCE).
- MapReduce là mô hình xử lý dữ liệu (xem Hình 2) với lập trình song song được giới thiệu bởi Google.
- Trong mô hình này, người sử dụng xây dựng các tính toán qua hai chức năng, ánh xạ (map) và rút gọn (reduce).
- Trong giai đoạn ánh xạ, MapReduce lấy các dữ liệu đầu vào và đưa cho bộ ánh xạ (Mapper).
- Mô hình MapReduce có lợi thế là dễ dàng mở rộng quy mô xử lý dữ liệu trên nhiều nút tính toán..
- Hình 2: Mô hình Map- Reduce [2].
- Theo mô hình MapReduce, cơ bản, các lập trình viên chỉ cần viết hai chức năng (hoặc hai hàm): ánh xạ và rút gọn.
- Chức năng ánh xạ sẽ nhận dữ liệu đầu vào và sinh ra các cặp <khóa, giá trị>.
- Mô hình MapReduce được xây dựng trên một hệ thống tập tin phân tán (HDFS) cung cấp lưu trữ và truy cập phân tán.
- Hình 3 cho thấy quá trình thực hiện của MapReduce qua hai giai đoạn: ánh xạ và rút gọn..
- Dữ liệu đầu vào được chia thành một tập hợp của các khối.
- Các bộ ánh xạ (mapper) đọc các khối và xử lí song song trong giai đoạn ánh xạ..
- Mỗi mapper sẽ xử lý dữ liệu bằng cách phân tích dữ liệu thành các cặp <khóa, giá trị>.
- và sau đó tạo ra các kết quả trung gian được lưu trữ trong hệ thống tập tin cục bộ.
- Các bộ rút gọn (reducer) sử dụng phương thức gọi từ xa (RPC) để đọc dữ liệu từ các mapper.
- Cuối cùng, đầu ra sẽ được ghi vào các tập tin trong hệ thống phân tán..
- Máy chủ sẽ dò (ping) máy tớ, bao gồm bộ ánh xạ và bộ rút gọn, theo định kỳ.
- Nếu bộ rút gọn hỏng thì công việc rút gọn nào đã hoàn thành không cần phải được thực hiện lại bởi vì kết quả đã được lưu trữ trong hệ thống tập tin toàn cục, phân tán..
- 6 MỘT VÍ DỤ VỀ LẬP TRÌNH MAP- REDUCE Xét bài toán thống kê tần suất xuất hiện của các từ trong một tập tin.
- Chúng ta sẽ giải quyết bài toán này theo mô hình lập trình MapReduce..
- Dữ liệu đầu vào được phân chia thành.
- những khối nhỏ lưu trữ phân tán trong cụm máy tính..
- Đối với mỗi khối dữ liệu đầu vào, một bộ ánh xạ (mapper) chạy cho ra kết quả đầu ra là ánh xạ mỗi từ thành cặp <khóa, giá trị>.
- Kết quả đầu ra của tất cả các bộ ánh xạ được sắp xếp và kết tập theo khóa riêng biệt.
- trong đó khóa là từ còn giá trị là tần suất của từ đó trong tập tin (tức là trong tất cả các khối).
- Đây chính là kết quả cuối cùng của hai bước ánh xạ và rút gọn.
- Lập trình viên không bận tâm tới lưu trữ vật lý phân tán của tập tin trong HDFS.
- Chương trình không phụ thuộc vào cách lưu trữ phân tán..
- và ghi kết quả ra tập tin xuất..
- Thiết lập các đường dẫn vào, ra chương trình để truy cập các tập tin và gọi thực thi gói công việc Hadoop, tức là thực hiện chương trình ánh xạ - rút gọn.
- Nói chung MapReduce làm việc tốt trên tập tin phi cấu trúc như là văn bản.
- Nó có vẻ không phù hợp lắm với dữ liệu có cấu trúc truyền thống như là cơ sở dữ liệu quan hệ.
- Tiến bộ công nghệ điện toán đám mây và việc gia tăng sử dụng Internet đang tạo ra những tập dữ liệu rất lớn.
- Dữ liệu lớn vẫn còn ở giai đoạn sơ khai nhưng cũng đã có những ảnh hưởng sâu sắc đến các công ty công nghệ và cách làm kinh doanh mới.
- Kích thước của các bộ dữ liệu lớn.
- đòi hỏi cần có cách thức lưu trữ và xử lí mới, phù hợp.
- Mô hình lập trình MapReduce với Hadoop là một nền tảng cơ bản trong cộng đồng dữ liệu lớn nhờ vào hiệu quả chi phí trên cụm máy tính được thiết lập như là một đám mây điện tử.
- Tính hiệu quả và dễ dàng sử dụng của nền tảng Hadoop ở chỗ nó cài đặt mô hình ánh xạ - rút gọn chạy song song, liên quan đến nhiều thuật toán phân tích dữ liệu đã được che dấu bên trong.
- Một trong số đó là hệ thống tập tin phân tán HDFS, có thể chứa một khối lượng rất lớn dữ liệu (tính bằng terabytes hoặc thậm chí petabytes) và cung cấp cơ chế try cập thông lượng cao vào các dữ liệu này..
- Hiện tại đây là mô hình chính để lập trình xử lí dữ liệu lớn theo mô hình đám mây điện tử.