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

ỨNG DỤNG ĐIỆN TOÁN PHÂN TÁN VỚI THƯ VIỆN APACHE HADOOP

20 1,4K 0

Đ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 20
Dung lượng 407,52 KB

Nội dung

Và kết quả là hai dịch vụ then chốt trong hệ thống được ra đời là Hệ thống Tập tin Google Google File System – GFS có thể cung cấp sự lưu trữ có khả năng chịu lỗi, đáng tin cậy và khả n

Trang 1

ĐẠI HỌC QUỐC GIA THÀNH PHỐ HỒ CHÍ MINH

Trường Đại Học Công Nghệ Thông Tin

Phòng Sau Đại Học



Bài thu hoạch môn học Điện toán Lưới

Đề tài:

ỨNG DỤNG ĐIỆN TOÁN PHÂN TÁN VỚI

THƯ VIỆN APACHE HADOOP

Giảng viên hướng dẫn: PGS TS Nguyễn Phi Khứ

Học viên thực hiện: Đỗ Duy Phúc MSHV: CH1101122

Lớp: Cao học khóa 6

TP HCM, Tháng 7 năm 2013

Trang 2

Mục Lục

Trang 3

Lời Giới Thiệu

Trong thời đại thông tin phát triển mạnh mẽ hiện nay, mỗi ngày có hàng PetaByte

dữ liệu được tạo ra Chúng ta đều biết những nguồn dữ liệu ấy tiềm ẩn nhiều giá trị, tuy nhiên để lưu trữ chúng một cách hiệu quả đã là một vấn đề không nhỏ, chưa nói đến việc

xử lý và rút trích thông tin từ chúng Đặc biệt, đối với những công ty chuyên về Internet

và dữ liệu như Google, Yahoo!, Facebook, v.v… thì quy mô bài toán dữ liệu mà họ phải giải quyết lại càng khó có thể đo lường được

Từ những nhu cầu trên, một công cụ nổi tiếng được ra đời, đó là Apache Hadoop framework Đây là một thư viện nguồn mở, viết trên ngôn ngữ Java Tuy xuất hiện chưa lâu, nhưng những đặc tính linh hoạt, mạnh mẽ và chi phí hợp lý của Apache Hadoop đã giành được sự tin dùng rộng rãi trong cộng đồng công nghệ Đến những công ty hàng đầu trong lĩnh vực như Yahoo!, Facebook hay Google đều có sử dụng nó trong những hệ thống to lớn của mình

Báo cáo này xin trình bày cái nhìn tổng quan về Apache Hadoop framework Đồng thời cũng nêu ra những khía cạnh, đặc tính nổi bậc của thư viện trong việc giải quyết những bài toán đặc thù về thế giới thông tin ngày nay: bài toán về dữ liệu

Để thực hiện hoàn thành đề tài này, em chân thành cám ơn thầy PGS TS Nguyễn Phi Khứ đã truyền đạt những kiến thức chuyên môn bổ ích và đã chỉ dẫn, tạo điều kiện cho em đi sâu tìm hiểu về vấn đề rất thú vị và quan trọng này

Học viên thực hiện

Đỗ Duy Phúc

Trang 4

I Tổng Quan Về Apache Hadoop Framework I.1 Nguồn gốc xuất xứ và vai trò

Đầu những năm 2000, Google đã đối mặt với một thách thức nghiêm trọng Với sứ mệnh sắp xếp lại thông tin trên toàn thế giới, có nghĩa Google phải dò tìm, sao chép, và đánh chỉ mục cho toàn bộ Internet một cách liên tục Khi mà số lượng và kích thước của các website lớn dần và dịch vụ của Google ngày càng phổ biến, công ty này buộc phải tiêu thụ một khối lượng lớn dữ liệu với tốc độ tăng nhanh chưa gặp từ trước đến nay Không phần mềm thương mại hiện tại nào lúc bấy giờ có thể đảm đương được khối lượng dữ liệu cần xử lý đó, và kiến trúc hạ tầng tự xây dựng trước đây của Google đã chạm đến các giới hạn mở rộng có thể đạt được

Từ nhu cầu bức thiết trên, các kỹ sư của Google đã phải nỗ lực thiết kế và xây dựng một kiến trúc hạ tầng xử lý dữ liệu mới để giải quyết vấn đề Và kết quả là hai dịch

vụ then chốt trong hệ thống được ra đời là Hệ thống Tập tin Google (Google File

System – GFS) có thể cung cấp sự lưu trữ có khả năng chịu lỗi, đáng tin cậy và khả năng

mở rộng linh hoạt, và MapReduce, một mô hình hệ thống xử lý dữ liệu cho phép công

việc được chia nhỏ giữa một số lượng lớn các máy chủ và thực thi song song GFS và MapReduce được thiết kế từ rất sớm để chạy trên phần cứng máy chủ thông dụng mà Google sử dụng trong tất cả trung tâm dữ liệu của họ

Vào năm 2004, Google đã công bố một bài báo học thuật miêu tả kết quả nghiên cứu của mình Không lâu sau đó, một lập trình viên phần mềm nguồn mở có tiếng tăm tên Doug Cutting quyết định sử dụng lại kỹ thuật mà Google miêu tả Cutting lúc đấy đang làm việc với một bộ dò tìm thông tin được gọi là Nutch và có cùng những vấn đề với khối lượng dữ liệu và tốc độ lập chỉ mục, những vấn đề đã thúc đẩy Google phát triển MapReduce Ông ấy thay thê kiến trúc hạ tầng thu thập và xử lý dữ liệu đằng sau bộ dò tìm của mình, đặt nền tảng cho bản hiện thực mới của ông ấy dựa trên MapReduce Ông đặt tên phần mềm mới của mình là Hadoop, theo tên một chú voi đồ chơi của cậu con trai nhỏ của ông

Các kỹ sư tại Yahoo!, một công ty cạnh tranh trực tiếp với Google trong lĩnh vực tìm kiếm, cũng đã đọc được bài báo và biết được công việc của Cutting Nóng lòng sử dụng hệ thống xử lý dữ liệu của chính mình, Yahoo! quyết định đầu tư để phát triển

Hadoop Các nhà lãnh đạo Yahoo!, bao gồm cả Cutting, đã ra một quyết định chiến lược: Hadoop sẽ trở thành một dự án nguồn mở, tự do để tải về và sử dụng, đồng thời cũng mở

để nhận các bổ sung, cải tiến và đóng góp từ các nhà phát triển phần mềm tài năng trên

Trang 5

toàn thế giới Đến năm 2006, Hadoop đã chính thức được triển khai và khai thác bởi các công ty web nổi bậc

Hadoop hiện nay là một dự án nguồn mở và được hoạt động dưới sự bảo trợ của Apache Software Foundation [Olson, 2010]

I.2 Vậy cụ thể Hadoop là gì?

Apache™ Hadoop® là một dự án phát triển phần mềm, mục tiêu hướng tới cung cấp một nền tảng điện toán phân tán, mở rộng linh hoạt và đáng tin cậy

Apache Hadoop còn được xem là một thư viện hay framework cho phép xử lý phân tán khối lượng lớn các tập dữ liệu trên nhiều cụm máy tính bằng cách sử dụng các

mô hình lập trình đơn giản Nó được thiết kế để mở rộng ra từ các máy chủ đơn lẻ lên đển hàng ngàn trạm làm việc, mỗi trạm cung cấp khả năng tính toán và lưu trữ cục bộ Không phụ thuộc vào phần cứng để cung cấp sự sẵn sàng cao, bản thân thư viện được thiết kế để phát hiện và xử lý các sự cố ngay trên tầng ứng dụng, từ đó cung cấp một dịch vụ có tính sẵn sàng cao ở trên một cụm máy tính, với mỗi máy đều có khả năng đối phó với sự cố

Dự án Apache Hadoop bao gồm những module sau:

Hadoop Common: các tiện ích chung dùng hỗ trợ các bộ phận khác của Hadoop

Hadoop Distributed File System (HDFS): một hệ thống tập tin phân tán cung cấp khả

năng truy cập thông suốt cao đến dữ liệu ứng dụng

Hadoop YARN: một framework cho lập kế hoạch công việc và quản lý tài nguyên trên

cụm máy tính

Hadoop MapReduce: một hệ thống trên nền tảng YARN cho xử lý song song các tập

dữ liệu lớn

Dựa trên nền tảng cung cấp bởi Hadoop, nhiều dự án khác liên quan được phát triển cung cấp thêm nhiều khả năng ứng dụng khác nhau liên quan đến dữ liệu, như:

Ambari TM: một công cụ giao diện web cho việc theo dõi, quản lý, dự phòng các cụm máy tính Apache Hadoop, bao gồm hỗ trợ cho Hadoop HDFS, Hadoop MapReduce

và các phần mêm khác có liên quan đến Hadoop

Avro TM: một hệ thống tuần tự hóa dữ liệu

Cassandra TM: một cơ sở dữ liệu nhiều điểm chủ (multi-master) mở rộng linh hoạt không có những điểm chết

Chukwa TM: một hệ thống thu thập dữ liệu để quản lý các hệ thống phân tán lớn

HBase TM: một cơ sở dữ liệu phân tán, mở rộng linh hoạt, hỗ trợ lưu trữ dữ liệu có cấu

trúc cho các bảng dữ liệu lớn

Trang 6

Hive TM: Một cơ sở hạ tầng kho dữ liệu cung cấp tính năng tổng kết dữ liệu và cơ chế truy vấn đặc thù chuyên biệt

Mahout TM: Một thư viện máy học và khai phá dữ liệu có thể mở rộng được

Pig TM: Một ngôn ngữ luồng dữ liệu (data-flow) bậc cao và famework thực thi cho tính toán song song

Zookeeper TM: Một dịch vụ đồng bộ hiệu năng cao cho các ứng dụng phân tán

Kết hợp lại với nhau, các dự án trên tạo thành một hệ sinh thái đa dạng và mạnh mẽ, hỗ trợ nhiều ứng dụng với nhiều khía cạnh khác nhau liên quan đến dữ liệu

Trang 7

II Kiến Trúc Hệ Thống Của Apache Hadoop

Về cơ bản, Apache Hadoop là thư viện hiện thực của mô hình hệ thống tập tin Google File System (GFS) và cơ chế xử lý song song MapReduce trong bài báo học thuật được

công bố của Google [Dean và Ghemawat, 2004] Trong đó, Hadoop Distributed File System (HDFS) là hiện thực của GFS và Hadoop YARN cùng với Hadoop MapReduce

là cài đặt của bộ máy xử lý song song theo mô hình MapReduce Trong phần này, hệ thống kiến trúc cấu tạo nên Apache Hadoop sẽ được giới thiệu và phân tích chi tiết các đặc trưng về tính năng

II.1 Hệ thống tập tin Hadoop (HDFS)

II.1.1 Kết cấu

Hình 1 Mô hình tổng quan Apache Hadoop framework [Wikipedia, Apache Hadoop] HDFS có kết cấu master/slave Một nhóm HDFS (HDFS cluster) gồm một

NameNode để quản lí tập tin system namespace và điều tiết clients truy xuất các tập tin, cùng nhiều DataNode lưu dữ liệu Một tập tin được chia ra thành các blocks lưu trên nhiều node NameNode xử lí những việc như mở, đóng, đổi tên tập tin và thư mục, biết

Trang 8

được block nào trên DataNode nào để chỉ cho clients đọc và lấy dữ liệu đúng chỗ (cũng

có nghĩa là truy xuất dữ liệu thực sự không hề thông qua NameNode) DataNodes cũng phụ trách việc tạo, xoá và sao blocks theo lệnh của NameNode

NameNode và DataNode được chạy trên các máy GNU/Linux thông thường HDFS được viết bằng Java nên chạy được trên nhiều loại máy Thông thường mỗi máy trong nhóm (cluster) chạy một DataNode

NameNode dùng Editlog lưu những thay đổi của metadata và lưu toàn bộ file system namespace vào tập tin FsImage (các metadata là dạng nén, chiếm ít dung lượng,

nên NameNode chỉ cần 4GB là phù hợp) Khi khởi động, NameNode đọc ra FsImage và Editlog, dựa vào Editlog để sửa FsImage trong bộ nhớ, sau đó lưu FsImage mới lại và xóa Editlog cũ Quá trình này gọi là checkpoint HDFS còn có SecondaryNamenode làm nhiệm vụ copy định kì FsImage và Editlog từ NameNode, kết hợp tạo thành FsImage mới trả về cho NameNode, NameNode sẽ update lại FsImage và xóa Editlog cũ đi

II.1.2 Các đặc tính

Hình 2 Dữ liệu được sao lưu trên HDFS [Olson, 2010]

a) Sao lưu dữ liệu

Trang 9

Như đã nói, tập tin được lưu trữ thành các block (có cùng độ lớn, trừ block cuối) trên các máy khác nhau Việc sao lưu là để đảm bảo tính chịu lỗi Độ lớn block (mặc định 64MB) và số bản sao (mặc định 3) đều có thể thiết lập được Nhớ rằng Tập tin trong HDFS là write-once

Các DataNode sẽ gởi nhịp tim (Heartbeat) và báo cáo Block (Blockreport) về cho NameNode theo định kì Nhận được nhịp tim, NameNode sẽ biết được DataNode hoạt động bình thường, còn báo cáo Block, bao gồm danh sách tất cả các block tên DataNode đó, sẽ giúp cho NameNode ra quyết định (truy xuất dữ liệu hoặc sao thêm nếu có block không đủ bản sao)

Để tăng độ tin cậy (reliability), tính sẵn sàng (availability) và tối ưu đường truyền, HDFS lưu các bản sao của các block theo kiểu rack-aware Cụ thể nếu số bản sao là 3 thì có 2 bản sao lưu trên 2 nodes thuộc cùng một rack, bản sao còn lại lưu trên node thuộc rack khác NameNode sẽ xác định DataNode nào thuộc rack nào Nhớ rằng, lỗi của rack ít hơn rất nhiều so với lỗi của node và giao tiếp giữa các rack khác nhau thì phải qua các switch, tốn thời gian Cách làm này cho phép đọc dữ liệu song song từ các node khác nhau, nhưng lại tốn chi phí nhiều hơn khi ghi dữ liệu

b) Chế độ safemode

Khi khởi động NameNode sẽ vào trạng thái safemode, dựa trên Heartbeat và Blockreport mà các DataNode gởi về Block nào được sao đủ số lượng thì xem là an toàn Nếu có đủ một tỉ lệ nhất định (thiết lập được) các block an toàn, NameNode sẽ thoát khỏi safemode sau 30s Sau đó, những block nào chưa được sao ra đủ sẽ được sao thêm

c) Kiểm tra nhịp tim

Nếu NameNode không nhận được Heartbeat gởi định kì về, thì xem như

DataNode đó đã chết (dead), sẽ không cho tham gia các I/O, tất cả dữ liệu trên dead node

sẽ vô hiệu Node chết có thể làm một số block không đủ bản sao, NameNode luôn kiểm tra điều này và sao thêm khi cần

d) Toàn vẹn dữ liệu

Do nhiều nguyên nhân, dữ liệu lấy ra từ DataNode có thể bị hư, HDFS client software sẽ tiến hành checksum nội dung của tập tin Khi tạo tập tin, HDFS sẽ tính ra checksum của từng block, và lưu thành tập tin ẩn riêng biệt Checksum của dữ liệu lấy từ

Trang 10

DataNode sẽ được so sánh với tập tin ẩn này, nếu không giống thì xem như dữ liệu đã hư, cần phải lấy từ DataNode khác

e) Xóa dữ liệu

Khi tập tin bị xóa, thực chất sẽ được di chuyển vào thư mục /trash, sau một thời gian nhất định (mặc định 6 tiếng, có thể thiết lập) thì mới bị xóa hoàn toàn /trash chỉ lưu bản sao cuối cùng và có thể khôi phục nhanh chóng khi lệnh xóa bị hủy

f) Xử lý sự cố

FsImage và Editlog là cấu trúc dữ liệu trung tâm, nếu xảy ra lỗi có thể dẫn đến HDFS ngưng hoạt động Có thể thiết lập NameNode để lưu các cấu trúc này thành nhiều bản sao, sửa bản chính phải đảm bảo đồng thời sửa bản sao Điều này có làm giảm tốc độ của NameNode chút ít nhưng cũng chấp nhận được Trong trường hợp NameNode (duy nhất) bị sự cố thì cần phải thủ công xử lí

g) Những tính năng khác

TaskTracker sẽ chọn bản sao gần nhất cho chương trình xử lý, để giảm lưu lượng và thời gian truyền qua mạng

Nếu không gian trống trên một DataNode giảm xuống mức độ nhất định, dữ liệu trên DataNode đó sẽ được di chuyển sang các node khác Tập tin có nhiều yêu cầu truy xuất sẽ được sao ra thêm trên các node phù hợp

Khi client yêu cầu tạo tập tin, HDFS client sẽ lưu tạm đến khi độ lớn vượt qua một block thì mới liên lạc với NameNode NameNode thêm tên tập tin vào tập tin system, cấp cho một block rồi đem node ID với block ID thông báo client, client tự đem tập tin lưu vào block đã chỉ định

Khi viết dữ liệu vào HDFS, client gởi block đã lưu tạm sang DataNode đầu tiên (trong danh sách được NameNode chỉ định) theo từng khối nhỏ 4KB, DataNode này vừa lưu dữ liệu vừa đem dữ liệu gởi sang DataNode thứ 2, và cứ như thế đến node cuối cùng [Wikipedia, Apache Hadoop]

II.2 Bộ máy xử lý phân tán Hadoop MapReduce

II.2.1 Cơ chế MapReduce

Cơ chế MapReduce được giới thiệu đầu tiên bởi Google vào năm 2004 Nó là một khung làm việc để xử lý các vấn đề một cách song song giữa các tập dữ liệu lớn Hệ thống sử dụng một lượng lớn máy tính (nút), nhóm chung với nhau và được gọi là một cụm (cluster, nếu tất cả các nút nằm trên cùng một mạng nội bộ và dùng phần cứng tương

Trang 11

tự nhau), hay một lưới (grid, nếu các nút được chia sẻ xuyên suốt trên các hệ thống phân tán về mặt địa lý, và sử dụng phần cứng hỗn tạp hơn) Xử lý tính toán có thể xảy ra trên

dữ liệu được lưu trên hệ thống tập tin (không cấu trúc) hay trên một cơ sở dữ liệu (có cấu trúc) MapReduce có thể tận dụng lợi thế về tính cục bộ của dữ liệu, xử lý dữ liệu trên hay gần các cơ sở lưu trữ để giảm thiểu sự truyền gửi

Cơ chế MapReduce gồm hai bước:

Bước “Map”: Nút chủ (master node) lấy dữ liệu, chia nhỏ nó ra thành các vấn đề

con, và phân phối chúng cho các nút thợ (worker node) Một nút thợ có thể lặp lại quá trình trên đối với phần công việc nó được nhận (nó trở thành một nút chủ khác, cấp nhỏ hơn), dẫn đến một cấu trúc cây nhiều cấp Nút thợ xử lý vấn đề nhỏ hơn, và trả về kết quả cho nút chủ của nó

Bước “Reduce”: Nút chủ sau đó thu thập các câu trả lời cho toàn bộ các vấn đề

con và kết hợp nó lại theo một cách nào đó để hình thành kết quả – câu trả lời cuối cùng cho vấn đề mà nó cố gắng trả lời ban đầu

MapReduce cho phép xử lý phân tán các thao tác map và reduce Mỗi bước map được độc lập với các bước map khác, và tất cả bước map có thể thực hiện song song – mặc dù trong thực tế nó bị giới hạn bởi số lượng nguồn dữ liệu độc lập và số lượng CPU gần nguồn dữ liệu đó Tương tự, một tập các bộ reduce cũng có thể thực hiện ở giai đoạn reduce Tuy toàn bộ quá trình trên có thể thường kém hiệu quả hơn so với các thuật toán mang nhiều tính tuần tự, nhưng MapReduce có thể áp dụng cho một tập dữ liệu lớn hiệu quả hơn là các máy chủ thông dụng Kiến trúc song song cũng cung cấp một vài khả năng

để khôi phục lại từ các sự cố cục bộ của các máy chủ hoặc kho lưu trữ trong suốt quá trình thực thi Nếu một bộ map hoạc reduce bị sự số, công việc có thể được thiết lập lại với giả định nguồn dữ liệu vẫn còn sẵn sàng [Wikipedia, MapReduce]

II.2.2 Bộ máy Hadoop MapReduce

Để hiện thực cơ chế MapReduce được miêu tả qua công bố của Google , Hadoop MapReduce giới thiệu hai thành phần trong bộ máy xử lý phân tán của nó là: JobTracker

và TaskTracker (ta có thể tham khảo tổng quan ở Hình 1).

Bộ máy MapReduce của Hadoop chứa một JobTracker, là nơi mà các ứng dụng khách sẽ gửi các công việc cần xử lý JobTracker sau đó sẽ đẩy công việc đến các nút TaskTracker trong cụm các máy tính, cố gắng giữ công việc càng gần dữ liệu càng tốt Với một hệ thống tập tin tự nhận biết rack – mỗi nút biết được vị trí rack của mình và thông báo với nút quản lý trung tâm NameNode, JobTracker biết nút nào chứa dữ liệu và biết máy nào gần đó có thể xử lý công việc Nếu công việc không thể được giao cho cùng

Ngày đăng: 09/04/2015, 19:19

TỪ KHÓA LIÊN QUAN

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

TÀI LIỆU LIÊN QUAN

w