1. Trang chủ
  2. » Luận Văn - Báo Cáo

Nghiên cứu mô hình lập trình mapreduce

23 668 6

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 23
Dung lượng 1,38 MB

Nội dung

Hình 1.1: Mô hình tổng quát của Map-Reduce Trong mô hình trên, ngoài hai quá trình cơ bản là Map và Reduce đã được trình bày, còn có thêm hai quá trình nữa là Split và Shuffle,

Trang 1

BỘ GIÁO DỤC ĐÀO TẠO

TRƯỜNG ĐẠI HỌC THĂNG LONG

Trang 2

MỤC LỤC

CHƯƠNG 1 TỔNG QUAN VỀ MAP-REDUCE 5

1.1 Giới thiệu chung 5

1.2 Map-Reduce là gì ? 5

CHƯƠNG 2 KIẾN TRÚC MAP-REDUCE ENGINE 7

2.1 Các thành phần 7

2.2 Cơ chế hoạt động 8

CHƯƠNG 3 NGUYÊN LÝ HOẠT ĐỘNG CỦA MAP-REDUCE 12

3.1 Quá trình Split 12

3.2 Quá trình Map và Shuffle 12

3.3 Quá trình Reduce 13

3.4 Ví dụ bài toán WordCount 14

CHƯƠNG 4 ƯU NHƯỢC ĐIỂM CỦA MAP-REDUCE 16

4.1 Ưu điểm 16

4.1.1 Khả năng mở rộng 16

4.1.2 Giải pháp hiệu quả̉̉̉ 16 ̉̉

4.1.3 Nhanh 16

4.2 Nhược điểm 16

CHƯƠNG 5 ỨNG DỤNG CỦA MAP-REDUCE 17

5.1 Thiết kế hệ thống phân tích và xử lý mã độc 17

5.1.1 Phát biểu bài toán 17

5.1.2 Phân tích mã độc dựa trên mô hình MapReduce 18

5.1.3 Cơ chế Map mã độc 19

5.1.4 Cơ chế Reduce mã độc 20

5.1.5 Thiết kế xây dựng hệ thống 21

CHƯƠNG 6 TỔNG KẾT 23

Tài liệu tham khảo 24

Trang 3

DANH MỤC MINH HỌ

Trang 4

Hình 1.1: Mô hình tổng quát của Map-Reduce 5

Hình 2.1: Kiến trúc map-reduce 7

Hình 2.2: Cơ chế hoạt động của MapReduce 8

Hình 2.3: Mối quan hệ giữa JobTracker và Task Tracker 9

Hình 2.4: Mô hình Task Tracker 9

Hình 2.5: Mô hình JobTracker 10

Hình 2.6: Cơ chế hoạt động của JobTracker 11

Hình 3.1: Quá trình Split 12

Hình 3.2: Quá trình Mapper và Shuffle trên 1 máy 13

Hình 3.3: Quá trình Reducer 13

Hình 3.4: Sơ đồ hoạt động 14

Hình 3.4: Ví dụ về bài toán đếm từ 14

Hình 5.1: Mô hình tổng quan hệ thống 18

Hình 5.2: Mô hình hệ thống phân tích mã độc 18

Hình 5.3: Xử lý kết quả phân tích 20

Hình 5.4: Sơ đồ hoạt động phân tích tĩnh 21

Hình 5.5: Sơ đồ hoạt động phân tích động 22

Trang 5

CHƯƠNG 1 TỔNG QUAN VỀ MAP-REDUCE

1.1 Giới thiệu chung

Năm 2004, Google công bố mô hình xử lý dữ liệu phân tán MapReduce, Mô hình này làsáng kiến của một nhóm các kỹ sư Google, khi nghiên cứu tìm kiếm giải pháp mở rộng cỗ máytìm kiếm của họ Có thể coi MapReduce là một mô hình lập trình, hay một giải thuật lập trình,chuyên dùng để giải quyết vấn đề về xử lý dữ liệu lớn Mô hình này cơ bản gồm hai thao tácchính là Map và Reduce, với ý tưởng là chia công việc lớn ra thành nhiều công việc nhỏ, giaocho nhiều máy tính cùng thực hiện - thao tác Map, sau đó tổng hợp kết quả lại - thao tácReduce

Hình 1.1: Mô hình tổng quát của Map-Reduce

Trong mô hình trên, ngoài hai quá trình cơ bản là Map và Reduce đã được trình bày, còn

có thêm hai quá trình nữa là Split và Shuffle, hai quá trình này lần lượt giữ vai trò: phân chia dữliệu đầu vào, tạo tiền đề cho quá trình Map và gom nhóm dữ liệu đầu ra của quá trình Map, tạotiền đề cho quá trình Reduce

MapReduce định nghĩa dữ liệu dưới dạng các cặp <key, value> - <khóa, giá trị> ; ví dụ,key có thể là tên của tập tin và value nội dung của tập tin, hoặc key là địa chỉ URL và value lànội dung tại URL, v.v Dữ liệu được định nghĩa theo dạng này linh hoạt hơn các bảng dữ liệuquan hệ hai chiều truyền thống (quan hệ cha - con hay còn gọi là khóa chính - khóa phụ)

1.2 Map-Reduce là gì ?

Mô hình Map-Reduce là một mô hình lập trình giúp các ứng dụng có thể xử lý nhanh một lượng lớn dữ liêụ trên các máy phân tán hoạt động song song, độc lập với nhau từ đó giúp rút ngắn thời gian xử lý toàn bộ dữ liệu lớn MapReduce có thể chạy trên các phần cứng thông thường (commodity hardware), không đòi hỏi các server chạy MapReduce phải là các máy tính

có khả năng tính toán, lưu trữ và truy xuất mạnh mẽ Do vậy, chi phí triển khai MapReduce sẽ

rẻ hơn

Map-Reduce làm đơn giản hoá các giải thuật tính toán phân tán Với Map-Reduce, bạn chỉcần cung cấp hai hàm Map và Reduce cùng với một số thành phần xử lý dữ liệu đầu vào Do

Trang 6

vậy, các nhà phát triển ứng dụng phân tán có thể tập trung nhiều hơn cho phần logic của ứng dụng, bỏ qua các chi tiết phức tạp của việc phân tán xử lý.

Sự ra đời của Map-Reduce đã mở ra cho các doanh nghiệp cơ hội xử lý các nguồn dữ liệu

đồ sộ với chi phí thấp và thời gian nhanh hơn Với việc áp dụng MapReduce, Amazon có thể xử

lý được các file log phát sinh trong quá trình bán hàng trên mạng, phục vụ cho việc dự đoán xuhướng mua hàng của khách hàng, các sản phẩm đang được mua nhiều… Facebook có thể xử lýđược khối lượng hơn 10 tỷ hình ảnh mà họ đang lưu trữ để rút trích các thông tin về kích thướchình ảnh, phát hiện các hình ảnh xấu

Trang 7

CHƯƠNG 2 KIẾN TRÚC MAP-REDUCE ENGINE

2.1 Các thành phần Client Program: Chương trình HadoopMapReduce mà client đang sử dụng và tiến hành

chạy một MapReduce Job

JobTracker: Tiếp nhận job và đảm nhận vai trò điều phối job này, nó có vai trò như bộ

não của Hadoop MapReduce Sau đó, nó chia nhỏ job thành các task, tiếp theo sẽ lên lịch phâncông các task (map task, reduce task) này đến các tasktracker để thực hiện Kèm theo vai tròcủa mình, JobTracker cũng có cấu trúc dữ liệu riêng của mình để sử dụng cho mục đích lưu trữ,

ví dụ như nó sẽ lưu lại tiến độ tổng thể của từng job, lưu lại trang thái của các TaskTracker đểthuận tiện cho thao tác lên lịch phân công task, lưu lại địa chỉ lưu trữ của các output của cácTaskTracker thực hiện maptask trả về

TaskTracker: Đơn giản nó chỉ tiếp nhận maptask hay reducetask từ JobTracker để sau đó

thực hiện Và để giữ liên lạc với JobTracker, Hadoop Mapreduce cung cấp cơ chế gửi heartbeat

từ TaskTracker đến JobTracker cho các nhu cầu như thông báo tiến độ của task do TaskTracker

đó thực hiện, thông báo trạng thái hiện hành của nó (idle, in-progress, completed)

HDFS: là hệ thống file phân tán được dùng cho việc chia sẻ các file dùng trong cả quá

trình xử lý một job giữa các thành phần trên với nhau

Hình 2.1: Kiến trúc map-reduce

Trang 8

2.2 Cơ chế hoạt động

Hình 2.2: Cơ chế hoạt động của MapReduce

Đầu tiên chương trình client sẽ yêu cầu thực hiện job và kèm theo là dữ liệu đầu vào tớiJobTracker JobTracker sau khi tiếp nhận job này, nó sẽ thông báo ngược về chương trình clienttình trạng tiếp nhận job Khi chương trình client nhận được thông báo nếu tình trạng tiếp nhậnhợp lệ thì nó sẽ tiến hành phân rã dữ liệu đầu vào này thành các split (khi dùng HDFS thì kíchthước một split thường bằng với kích thước của một đơn vị Block trên HDFS) và các split này

sẽ được ghi xuống HDFS Sau đó chương trình client sẽ gửi thông báo đã sẵn sàng đểJobTracker biết rằng việc chuẩn bị dữ liệu đã thành công và hãy tiến hành thực hiện job

Khi nhận được thông báo từ chương trình client, JobTracker sẽ đưa job này vào một stack

mà ở đó lưu các job mà các chương trình client yêu cầu thực hiện Tại một thời điểmJobTracker chỉ được thực hiện một job

Trang 9

Sau khi một job hoàn thành, block hay fail, JobTracker sẽ lấy job khác trong stack này(First in first out) ra thực hiện Trong cấu trúc dữ liệu của mình, JobTrack có một job schedulervới nhiệm vụ lấy vị trí các split (từ HDFS do chương trình client tạo), sau đó nó sẽ tạo mộtdanh sách các task để thực thi Với từng split thì nó sẽ tạo một maptask để thực thi, mặc nhiên

số lượng maptask bằng với số lượng split Còn đối với reduce task, số lượng reduce task đượcxác định bởi chương trình client Bên cạnh đó, JobTracker còn lưu trữ thông tin trạng thái vàtiến độ của tất cả các task

Hình 2.3: Mối quan hệ giữa JobTracker và Task Tracker

Ngay khi JobTracker khởi tạo các thông tin cần thiết để chạy job, thì bên cạnh đó cácTaskTracker trong hệ thống sẽ gửi các heartbeat đến JobTracker Hadoop cung cấp cho cácTaskTracker cơ chế gửi heartbeat đến JobTracker theo chu kỳ thời gian nào đó, thông tin bêntrong heartbeat này cho phép JobTrack biết được TaskTracker này có thể thực thi task hay NếuTaskTracker còn thực thi được thì JobTracker sẽ cấp task và vị trí split tương ứng đếnTaskTracker này để thực hiện

Hình 2.4: Mô hình Task Tracker

Khi một TaskTracker nhận thực thi maptask, kèm theo đó là vị trí của input split

trên HDFS Sau đó, nó sẽ nạp dữ liệu của split từ HDFS vào bộ nhớ, rồi dựa vào kiểu

format của dữ liệu input do chương trình client chọn thì nó sẽ parse split này để phát

Trang 10

sinh ra tập các record, và record này có 2 trường: key và value Cho ví dụ, với kiểu input format

là text, thì tasktracker sẽ cho phát sinh ra tập các record với key là offset đầu tiên của dòng(offset toàn cục), và value là các ký tự của một dòng Với tập các record này, tasktracker sẽchạy vòng lặp để lấy từng record làm input cho hàm map để trả ra out là dữ liệu gồmintermediate key và value Dữ liệu output của hàm map sẽ ghi xuống bộ nhớ chính, và chúng sẽđược sắp xếp trước ngay bên trong bộ nhớ chính

Hình 2.5: Mô hình JobTracker

Trước khi ghi xuống local disk, các dữ liệu output này sẽ được phân chia vào các partition(region) dựa vào hàm partition, từng partition này sẽ ứng với dữ liệu input của reduce task saunày Và ngay bên trong từng partition, dữ liệu sẽ được sắp xếp (sort) tăng dần theo intermediatekey, và nếu chương trình client có sử dụng hàm combine thì hàm này sẽ xử lý dữ liệu trên từngpartition đã sắp xếp rồi Sau khi thực hiện thành công maptask thì dữ liệu output sẽ là cácpartition được ghi trên local, ngay lúc đó TaskTracker sẽ gửi trạng thái completed của maptask

và danh sách các vị trí của các partition output trên localdisk của nó đến JobTracker

Trang 11

Hình 2.6: Cơ chế hoạt động của JobTracker

Sau khi nạp thành công tất cả các region thì TaskTracker sẽ tiến hành merge dữ liệu củacác region theo nhiều đợt mà các đợt này được thực hiện một cách đồng thời để làm gia tănghiệu suất của thao tác merge Sau khi các đợt merge hoàn thành sẽ tạo ra các file dữ liệu trunggian được sắp xếp Cuối cùng các file dữ liệu trung gian này sẽ được merge lần nữa để tạothành một file cuối cùng TaskTracker sẽ chạy vòng lặp để lấy từng record ra làm input chohàm reduce, hàm reduce sẽ dựa vào kiểu format của output để thực hiện và trả ra kết quả outputthích hợp Tất cả các dữ liệu output này sẽ được lưu vào một file và file này sau đó sẽ được ghixuống HDFS

Trang 12

CHƯƠNG 3 NGUYÊN LÝ HOẠT ĐỘNG CỦA MAP-REDUCE

Ý tưởng:

 Chia vấn đề cần xử lý thành các phần nhỏ để xử lý

 Xử lý các phần nhỏ đó một cách song song và độc lập trên các máy tính phân tán

 Tổng hợp các kết quả thu được để dưa ra kết quả cuối cùng

3.1 Quá trình Split.

Để có thể phân tán công việc trên hệ thống máy tính, trước tiên cần phải phân nhỏ khối dữliệu đầu vào cần xử lý ra thành nhiều phần, rồi sau đó mới có thể phân công cho mỗi máy xử lý một phần trong số đó Quá trình phân chia dữ liệu này được gọi là Split, Split sẽ dựa vào một

bộ tiêu chí được đặt ra trước để chia nhỏ dữ liệu, mỗi mảnh dữ liệu được chia nhỏ như vậy gọi

là một input split

Hình 3.1: Quá trình Split.

3.2 Quá trình Map và Shuffle

Sau khi các input split được tạo ra, Quá trình Map được thực hiện - hệ thống sẽ phân bố các input split về các máy xử lý, các máy được phân công sẽ tiếp nhận và xử lý input split được giao, ta gọi quá trình diễn ra trên nội bộ mỗi máy trong quá trình Map là Mapper Trước khi được xử lý, input split được định dạng lại thành dữ liệu chuẩn của MapReduce - dữ liệu có dạngcác cặp Kết thúc quá trình Mapper trên mỗi máy, dữ liệu đầu ra cũng có dạng các cặp , chúng

sẽ được chuyển sang cho quá trình Shuffle để phân nhóm theo tiêu chí đã được định trước, chuẩn bị cho bước xử lý phân tán tiếp theo Như vậy, quá trình Shuffle sẽ được thực hiện một cách nội bộ trên mỗi máy chạy Mapper

Hình 2.2: Quá trình Mapper và Shuffle trên 1 máy.

Trang 13

3.3 Quá trình Reduce

Quá trình Shuffle diễn ra trên nhiều máy nhưng do sử dụng chung một tiêu chí đã được định trước, nên việc phân nhóm dữ liệu trên các máy có sự thống nhất Các nhóm dữ liệu tương ứng với nhau trên tất cả các máy chạy Shuffle sẽ được gom lại chuyển về cho cùng một máy xử

lý, cho ra kết quả cuối cùng Toàn bộ quá trình này được gọi là Reduce, quá trình xử lý trên từng máy trong quá trình Reduce là quá trình Reducer

Hình 3.3: Quá trình Reducer

Hoạt động của MapReduce có thể được tóm tắt như sau:

 Đọc dữ liệu đầu vào

 Xử lý dữ liệu đầu vào (thực hiện hàm map)

 Sắp xếp và trộn các kết quả thu được từ các máy tính phân tán thích hợp nhất

 Tổng hợp các kết quả trung gian thu được ( thực hiện hàm reduce)

 Đưa ra kết quả cuối cùng

Hình 3.4: Sơ đồ hoạt động

Trang 14

3.4 Ví dụ bài toán WordCount

Hình 3.4: Ví dụ về bài toán đếm từ

Bài toán word-count (đếm từ) là bài toán dễ hiểu nhất minh hoạ cho MapReduce (MR) Bài toán có những đặc điểm sau:

 File cần đếm rất lớn (quá lớn để có thể được tải lên bộ nhớ chính của 1 máy)

 Mỗi cặp <từ ngữ, số lượng> quá lớn cho bộ nhớ

Về mặt định nghĩa thuật toán, ta có thể mô tả MapReduce như sau:

 Input: dữ liệu dưới dạng Key → Value

 Lập trình viên viết 2 thủ tục:

 Map(k, v) → <k', v'>*

 Reduce(k', <v'>*) → <k', v''>*

Với:

 Map biến mỗi key k thu được bằng thành cặp <k', v'>

 Reduce nhận đầu vào là khoá k' và danh sách cách giá trị v' và trả về kết quả là cặp <k',v''>

Ví dụ với hình mô tả ở trên thì Map trả về danh sách: <Bear, 1>, <Bear, 1> còn Reduce nhận kết quả trên và trả về <Bear, 2>

Trang 15

CHƯƠNG 4 ƯU NHƯỢC ĐIỂM CỦA MAP-REDUCE

4.1 Ưu điểm

4.1.1 Khả năng mở rộng

 Hadoop là một nền tảng có khả năng mở rộng cao Điều này phần lớn là do khả nănglưu trữ cũng như phân phối các tập dữ liệu lớn trên nhiều máy chủ Các máy chủ này cóthể không tốn kém và có thể hoạt động song song Và với mỗi bổ sung của một máychủ cung cấp thêm sức mạnh xử lý

 Trái ngược với các hệ thống quản lý cơ sở dữ liệu quan hệ truyền thống (RDMS) khôngthể quy mô để xử lý số lượng lớn dữ liệu, lập trình Hadoop MapReduce cho phép các tổchức kinh doanh chạy các ứng dụng từ một số lượng lớn các nút có thể liên quan đếnviệc sử dụng hàng ngàn terabytes dữ liệu

4.1.2 Giải pháp hiệu quả̉̉̉ ̉̉

 Cấu trúc có thể mở rộng của Hadoop cũng hàm ý rằng nó là một giải pháp rất hiệu quả

về chi phí cho các doanh nghiệp cần lưu trữ dữ liệu ngày càng tăng theo yêu cầu hiệnnay

 Trong trường hợp các hệ thống quản lý cơ sở dữ liệu quan hệ truyền thống, nó trở nêntốn kém để đạt mức độ nhất định với Hadoop, chỉ để xử lí dữ liệu

 Hadoop không có mô hình bảo mật và tính phức tạp cao

 Hadoop không cung cấp lưu trữ hoặc mã hóa dữ liệu mức mạng, trong khi đây là mốiquan tâm rất lớn đối với dữ liệu ứng dụng đối tượng khách hàng cần độ bảo mật thôngtin như chính phủ, ngân hàng…

 HDFS không hiệu quả để xử lý các tập tin nhỏ

 MapReduce không thích hợp để sử dụng các trường hợp có nhu cầu truy cập dữ liệuthời gian thực

 MapReduce khó biểu diễn dữ liệu đầu ra theo nhu cầu cần sử dụng

Trang 16

CHƯƠNG 5 ỨNG DỤNG CỦA MAP-REDUCE

Các job dễ dàng sử dụng Mapreduce:

 Thống kê số từ khóa xuất hiện trong các documents

 Thống kê số documents có chứa từ khóa

 Thống kê số câu match với pattern trong các documents

 Thống kê số URLs xuất hiện trong các web pages

 Thống kê số lượt truy cập các URLs

 Thống kê số từ khóa trên các hostnames

 Distributed Sort

Một số bài toán ứng dụng mô hình Map-Reduce

Khi áp dụng mô hình MapReduce, trong quá trình Map, mỗi Mapper sẽ làm việc với mộttập con của tập dữ liệu văn bản, công việc của mỗi Mapper là tìm kiếm và đánh dấu nhữngdòng khớp với biểu thức tìm kiếm trong tập dữ liệu văn bản mà mình phụ trách Kết quả củacác Mapper sẽ được quá trình Reduce gom lại tạo thành kết quả cuối cùng

Mô hình MapReduce rất phù hợp với bài toán sắp xếp dữ liệu Trong quá trình Map, mỗiMapper sẽ chỉ giữ nhiệm vụ đọc dữ liệu lên, Shuffle sẽ phân nhóm dữ liệu theo từng khoảng giátrị, Quá trình Reduce sẽ chịu trách nhiệm sắp xếp dữ liệu, mỗi Reducer sẽ sắp xếp dữ liệu trênkhoảng giá trị được phân công

5.1 Thiết kế hệ thống phân tích và xử

lý mã độc

5.1.1 Phát biểu bài toán

Với nhu cầu xử lý dữ liệu lớn, các mã độc trên mạng ngày càng nhiều, quá trình phát hiện

và xử lý mã độc rất phức tạp, mã độc cần thời gian xử lý ngắn hơn, do đó hướng ứng dụng môhình xử lý phân tán MapReduce để phân tích và xử lý mã độc đang được quan tâm hiện nay.Yêu cầu của hệ thống phân tích và xử lý mã độc: Tính phân tán, Tính an toàn, Tính tựđộng, Tính hiệu năng

5.1.2 Phân tích mã độc dựa trên mô hình MapReduce

Mô hình phân tích mã độc:

Ngày đăng: 13/01/2019, 15:03

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w