Sử dụng các ngôn ngữ như-SQL với khung công tác MapReduce
Số trang: 13
Loại file: pdf
Dung lượng: 0.00 B
Lượt xem: 18
Lượt tải: 0
Xem trước 2 trang đầu tiên của tài liệu này:
Thông tin tài liệu:
Giới thiệu Trong hai thập kỷ vừa qua, sự gia tăng ổn định về công suất tính toán đã tạo ra một luồng dữ liệu rộng lớn, mà dần dần đã dẫn đến một sự thay đổi hình mẫu trong kiến trúc điện toán và các cơ chế xử lý dữ liệu quy mô lớn. Ví dụ, các kính viễn vọng mạnh mẽ trong thiên văn học, các máy gia tốc hạt trong vật lý và các bộ gen trong sinh học trao khối dữ liệu khổng lồ vào tay các nhà khoa học. Facebook thu thập 15 terabyte dữ...
Nội dung trích xuất từ tài liệu:
Sử dụng các ngôn ngữ như-SQL với khung công tác MapReduce Sử dụng các ngôn ngữ như-SQL với khung công tác MapReduce Giới thiệu Trong hai thập kỷ vừa qua, sự gia tăng ổn định về công suất tính toán đã tạo ra một luồng dữ liệu rộng lớn, mà dần dần đã dẫn đến một sự thay đổi hình mẫu trong kiến trúc điện toán và các cơ chế xử lý dữ liệu quy mô lớn. Ví dụ, các kính viễn vọng mạnh mẽ trong thiên văn học, các máy gia tốc hạt trong vật lý và các bộ gen trong sinh học trao khối dữ liệu khổng lồ vào tay các nhà khoa học. Facebook thu thập 15 terabyte dữ liệu mỗi ngày vào một kho dữ liệu quy mô Petabyte. Nhu cầu về khai phá dữ liệu quy mô lớn và các ứng dụng phân tích dữ liệu ngày càng tăng trong cả ngành công nghiệp phần mềm (ví dụ, phân tích dữ liệu web, phân tích luồng nhấn chuột và phân tích bản ghi nhật ký giám sát-mạng) lẫn các ngành khoa học (ví dụ, phân tích dữ liệu do các bộ mô phỏng quy mô rất lớn tạo ra, triển khai bộ cảm biến và thiết bị phòng thí nghiệm có thông lượng cao). Mặc dù các hệ thống cơ sở dữ liệu song song có lợi cho một số các ứng dụng phân tích dữ liệu này, nhưng chúng rất đắt tiền, khó quản lý và thiếu khả năng chịu lỗi với các truy vấn chạy lâu dài. MapReduce là một khung công tác được Google giới thiệu cho việc lập trình các cụm máy tính thương mại để thực hiện xử lý dữ liệu quy mô lớn trong một lần chạy. Khung công tác này được thiết kế theo cách mà một cụm MapReduce có thể mở rộng đến hàng ngàn các nút về mặt khả năng chịu lỗi. Nhưng mô hình lập trình MapReduce có những hạn chế riêng của mình. Luồng dữ liệu một đầu vào và hai tầng của nó vô cùng cứng nhắc, ngoài thực tế là nó ở bậc rất thấp. Ví dụ, bạn phải viết mã tùy chỉnh cho ngay cả những hoạt động phổ biến nhất. Do đó, nhiều nhà lập trình cảm thấy khó chịu với khung công tác MapReduce và thích sử dụng SQL như một ngôn ngữ khai báo bậc cao. Một số dự án (Apache Pig, Apache Hive và HadoopDB) đã được phát triển để giảm bớt nhiệm vụ của các nhà lập trình và cung cấp các giao diện khai báo mức cao trên đỉnh của khung công tác MapReduce. Trước hết hay xem xét khung công tác MapReduce và sau đó xem xét các khả năng của các hệ thống khác nhau cung cấp các giao diện bậc cao cho khung công tác MapReduce. Về đầu trang Khung công tác MapReduce Một lợi thế chính về cách tiếp cận của khung công tác MapReduce là ở chỗ nó tách các ứng dụng ra khỏi các chi tiết về chạy một chương trình phân tán, chẳng hạn như các vấn đề về phân phối dữ liệu, lập lịch biểu và khả năng chịu lỗi. Trong mô hình này, việc tính toán lấy một tập các cặp giá trị/khóa đầu vào và tạo ra một tập các cặp giá trị/khóa đầu ra. Người dùng khung công tác MapReduce biểu thị tính toán này bằng cách sử dụng hai hàm: Map (Ánh xạ) và Reduce (Giảm). Hàm Map lấy một cặp đầu vào và tạo ra một tập các cặp giá trị/khóa trung gian. Khung công tác MapReduce nhóm lại với nhau tất cả các giá trị trung gian gắn liền với khóa trung gian giống nhau I (luôn thay đổi) và chuyển chúng cho hàm Reduce. Hàm reduce nhận một khóa trung gian I với tập các giá trị của nó và kết hợp chúng lại với nhau. Thông thường, chỉ có giá trị đầu ra không hoặc một được tạo ra cho mỗi lần gọi hàm reduce. Lợi thế chính của mô hình này là ở chỗ nó cho phép các tính toán lớn được song song hóa và được thực hiện lại dễ dàng để sử dụng nó như là cơ chế chính về khả năng chịu lỗi. Dự án Hadoop của Apache (Apache Hadoop) là phần mềm Java™ nguồn mở hỗ trợ các ứng dụng phân tán chuyên về dữ liệu bằng cách thực hiện việc triển khai khung công tác MapReduce. Ban đầu nó được Yahoo! phát triển như một bản sao của cơ sở hạ tầng MapReduce của Google nhưng sau đó đã trở thành nguồn mở. Hadoop quan tâm đến việc chạy mã của bạn trên một cụm các máy tính. Nói chung, khi một tập dữ liệu lớn hơn dung lượng lưu trữ của một máy tính vật lý đơn lẻ, việc phân vùng nó trên một số máy tính riêng biệt trở nên cần thiết. Các hệ thống tệp quản lý lưu trữ trên một mạng các máy tính được gọi là các hệ thống tệp phân tán. Hadoop đi kèm với một hệ thống tệp phân tán được gọi là HDFS (Hệ thống tệp phân tán Hadoop). Cụ thể là, HDFS là một hệ thống tệp phân tán lưu trữ các tệp trên tất cả các nút trong một cụm Hadoop. Nó chia tách các tệp thành các khối lớn và phân phối chúng trên các máy tính khác nhau, cộng với việc tạo nhiều bản sao của mỗi khối sao cho nếu có một máy tính bị hỏng, thì không có dữ liệu nào bị mất. Chương trình MapReduce trong Liệt kê 1 được biểu diễn bằng mã-giả (pseudo-code) để đếm số các lần xuất hiện của mỗi từ trong một chuỗi các dòng văn bản. Trong Liệt kê 1, hàm map phát ra mỗi từ cộng với một dấu hiệu liên quan của các lần xuất hiện trong khi hàm reduce cộng tất cả các dấu hiệu đã phát ra với một từ cụ thể. Liệt kê 1. Chương trình MapReduce map(String key, String value): //key: line number, value: line text for each word w in value: EmitIntermediate(w, ?1?); reduce(String key, Iterator values): //key: a word, values: a list of counts int wordCount = 0; for each v in values: wordCount += ParseInt(v); Emit(AsString(wordCount)); Bây giờ giả sử chuỗi đầu vào của dòng văn bản trong Liệt kê 2. Liệt kê 2. Chuỗi đầu vào 1, This is Code Example 2, Example Color is Red 3, Car Color is Green Liệt kê 3 cho thấy kết quả đầu ra của hàm map của đầu vào này. Liệt kê 3. Kết quả đầu ra của hàm map ('This', 1), ('is', 1). ('Code', 1), ('Example', 1) ('Example', 1), ('Color', 1), ('is', 1), ('Red', 1) ('Car', 1), ('Color', 1), ('is', 1), ('Green', 1) Liệt kê 4 cho thấy kết quả đầu ra của hàm reduce (kết quả). Liệt kê 4. Kết quả đầu ra của hàm reduce ('Car', 1), ('Code', 1), ('Color', 2), ('Example', 2), ('Green', 1), ('Red', 1) , ('This', 1), ('is', 3) Với các nhà lập trình, một tính năng quan trọng của khung công tác MapReduce là chỉ có hai nguyên hàm khai báo bậc cao (là map và reduce) có thể được viết bằng bất kỳ ngôn ngữ lập trình nào được chọn mà không cần lo lắng ...
Nội dung trích xuất từ tài liệu:
Sử dụng các ngôn ngữ như-SQL với khung công tác MapReduce Sử dụng các ngôn ngữ như-SQL với khung công tác MapReduce Giới thiệu Trong hai thập kỷ vừa qua, sự gia tăng ổn định về công suất tính toán đã tạo ra một luồng dữ liệu rộng lớn, mà dần dần đã dẫn đến một sự thay đổi hình mẫu trong kiến trúc điện toán và các cơ chế xử lý dữ liệu quy mô lớn. Ví dụ, các kính viễn vọng mạnh mẽ trong thiên văn học, các máy gia tốc hạt trong vật lý và các bộ gen trong sinh học trao khối dữ liệu khổng lồ vào tay các nhà khoa học. Facebook thu thập 15 terabyte dữ liệu mỗi ngày vào một kho dữ liệu quy mô Petabyte. Nhu cầu về khai phá dữ liệu quy mô lớn và các ứng dụng phân tích dữ liệu ngày càng tăng trong cả ngành công nghiệp phần mềm (ví dụ, phân tích dữ liệu web, phân tích luồng nhấn chuột và phân tích bản ghi nhật ký giám sát-mạng) lẫn các ngành khoa học (ví dụ, phân tích dữ liệu do các bộ mô phỏng quy mô rất lớn tạo ra, triển khai bộ cảm biến và thiết bị phòng thí nghiệm có thông lượng cao). Mặc dù các hệ thống cơ sở dữ liệu song song có lợi cho một số các ứng dụng phân tích dữ liệu này, nhưng chúng rất đắt tiền, khó quản lý và thiếu khả năng chịu lỗi với các truy vấn chạy lâu dài. MapReduce là một khung công tác được Google giới thiệu cho việc lập trình các cụm máy tính thương mại để thực hiện xử lý dữ liệu quy mô lớn trong một lần chạy. Khung công tác này được thiết kế theo cách mà một cụm MapReduce có thể mở rộng đến hàng ngàn các nút về mặt khả năng chịu lỗi. Nhưng mô hình lập trình MapReduce có những hạn chế riêng của mình. Luồng dữ liệu một đầu vào và hai tầng của nó vô cùng cứng nhắc, ngoài thực tế là nó ở bậc rất thấp. Ví dụ, bạn phải viết mã tùy chỉnh cho ngay cả những hoạt động phổ biến nhất. Do đó, nhiều nhà lập trình cảm thấy khó chịu với khung công tác MapReduce và thích sử dụng SQL như một ngôn ngữ khai báo bậc cao. Một số dự án (Apache Pig, Apache Hive và HadoopDB) đã được phát triển để giảm bớt nhiệm vụ của các nhà lập trình và cung cấp các giao diện khai báo mức cao trên đỉnh của khung công tác MapReduce. Trước hết hay xem xét khung công tác MapReduce và sau đó xem xét các khả năng của các hệ thống khác nhau cung cấp các giao diện bậc cao cho khung công tác MapReduce. Về đầu trang Khung công tác MapReduce Một lợi thế chính về cách tiếp cận của khung công tác MapReduce là ở chỗ nó tách các ứng dụng ra khỏi các chi tiết về chạy một chương trình phân tán, chẳng hạn như các vấn đề về phân phối dữ liệu, lập lịch biểu và khả năng chịu lỗi. Trong mô hình này, việc tính toán lấy một tập các cặp giá trị/khóa đầu vào và tạo ra một tập các cặp giá trị/khóa đầu ra. Người dùng khung công tác MapReduce biểu thị tính toán này bằng cách sử dụng hai hàm: Map (Ánh xạ) và Reduce (Giảm). Hàm Map lấy một cặp đầu vào và tạo ra một tập các cặp giá trị/khóa trung gian. Khung công tác MapReduce nhóm lại với nhau tất cả các giá trị trung gian gắn liền với khóa trung gian giống nhau I (luôn thay đổi) và chuyển chúng cho hàm Reduce. Hàm reduce nhận một khóa trung gian I với tập các giá trị của nó và kết hợp chúng lại với nhau. Thông thường, chỉ có giá trị đầu ra không hoặc một được tạo ra cho mỗi lần gọi hàm reduce. Lợi thế chính của mô hình này là ở chỗ nó cho phép các tính toán lớn được song song hóa và được thực hiện lại dễ dàng để sử dụng nó như là cơ chế chính về khả năng chịu lỗi. Dự án Hadoop của Apache (Apache Hadoop) là phần mềm Java™ nguồn mở hỗ trợ các ứng dụng phân tán chuyên về dữ liệu bằng cách thực hiện việc triển khai khung công tác MapReduce. Ban đầu nó được Yahoo! phát triển như một bản sao của cơ sở hạ tầng MapReduce của Google nhưng sau đó đã trở thành nguồn mở. Hadoop quan tâm đến việc chạy mã của bạn trên một cụm các máy tính. Nói chung, khi một tập dữ liệu lớn hơn dung lượng lưu trữ của một máy tính vật lý đơn lẻ, việc phân vùng nó trên một số máy tính riêng biệt trở nên cần thiết. Các hệ thống tệp quản lý lưu trữ trên một mạng các máy tính được gọi là các hệ thống tệp phân tán. Hadoop đi kèm với một hệ thống tệp phân tán được gọi là HDFS (Hệ thống tệp phân tán Hadoop). Cụ thể là, HDFS là một hệ thống tệp phân tán lưu trữ các tệp trên tất cả các nút trong một cụm Hadoop. Nó chia tách các tệp thành các khối lớn và phân phối chúng trên các máy tính khác nhau, cộng với việc tạo nhiều bản sao của mỗi khối sao cho nếu có một máy tính bị hỏng, thì không có dữ liệu nào bị mất. Chương trình MapReduce trong Liệt kê 1 được biểu diễn bằng mã-giả (pseudo-code) để đếm số các lần xuất hiện của mỗi từ trong một chuỗi các dòng văn bản. Trong Liệt kê 1, hàm map phát ra mỗi từ cộng với một dấu hiệu liên quan của các lần xuất hiện trong khi hàm reduce cộng tất cả các dấu hiệu đã phát ra với một từ cụ thể. Liệt kê 1. Chương trình MapReduce map(String key, String value): //key: line number, value: line text for each word w in value: EmitIntermediate(w, ?1?); reduce(String key, Iterator values): //key: a word, values: a list of counts int wordCount = 0; for each v in values: wordCount += ParseInt(v); Emit(AsString(wordCount)); Bây giờ giả sử chuỗi đầu vào của dòng văn bản trong Liệt kê 2. Liệt kê 2. Chuỗi đầu vào 1, This is Code Example 2, Example Color is Red 3, Car Color is Green Liệt kê 3 cho thấy kết quả đầu ra của hàm map của đầu vào này. Liệt kê 3. Kết quả đầu ra của hàm map ('This', 1), ('is', 1). ('Code', 1), ('Example', 1) ('Example', 1), ('Color', 1), ('is', 1), ('Red', 1) ('Car', 1), ('Color', 1), ('is', 1), ('Green', 1) Liệt kê 4 cho thấy kết quả đầu ra của hàm reduce (kết quả). Liệt kê 4. Kết quả đầu ra của hàm reduce ('Car', 1), ('Code', 1), ('Color', 2), ('Example', 2), ('Green', 1), ('Red', 1) , ('This', 1), ('is', 3) Với các nhà lập trình, một tính năng quan trọng của khung công tác MapReduce là chỉ có hai nguyên hàm khai báo bậc cao (là map và reduce) có thể được viết bằng bất kỳ ngôn ngữ lập trình nào được chọn mà không cần lo lắng ...
Tìm kiếm theo từ khóa liên quan:
ngôn ngữ truy vấn dữ liệu công suất tính toán khung công tác MapReduce hệ quản trị cơ sở dữ liệu lập trình XML cơ sở dữ liệu nâng caoTài liệu liên quan:
-
Giáo án Tin học lớp 12 (Trọn bộ cả năm)
180 trang 271 0 0 -
Thực hiện truy vấn không gian với WebGIS
8 trang 254 0 0 -
Đề cương chi tiết học phần Quản trị cơ sở dữ liệu (Database Management Systems - DBMS)
14 trang 248 0 0 -
69 trang 145 0 0
-
Giáo trình Toán rời rạc (Nghề: Công nghệ thông tin - Cao đẳng) - Trường Cao đẳng Cộng đồng Đồng Tháp
107 trang 140 0 0 -
Tiểu luận môn Cơ sở dữ liệu nâng cao: Mã hóa cơ sở dữ liệu Database Encryption
16 trang 124 0 0 -
57 trang 90 0 0
-
34 trang 84 0 0
-
Bài giảng Khái niệm về hệ cơ sở dữ liệu: Bài 2 - Hệ quản trị cơ sở dữ liệu
13 trang 79 0 0 -
Giáo trình Hệ quản trị cơ sở dữ liệu - Trần Thiên Thành
130 trang 75 0 0