Tải bản đầy đủ (.docx) (20 trang)

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

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (309.82 KB, 20 trang )

ĐẠ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
Mục Lục
2
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
3
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
4
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.
5
• 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.
6
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
7
đượ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
8
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ừ
9
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
10
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
11
một nút chứa dữ liệu, thì sự ưu tiên sẽ dành cho các nút trong cùng một rack. Điều này sẽ
làm giảm lưu lượng trên mạng lưới chính. Nếu một TaskTracker thất bại hoặc vượt quá
thời gian chờ, phần công việc của nó sẽ được thiết lập lại tại một nút khác. Một nhịp tim
báo hiệu hoạt động từ TaskTracker được gửi về JobTracker mỗi phút để kiểm tra trạng
thái của chúng [Wikipedia, Apache Hadoop].
12
III. Ứng Dụng

III.1. Tại sao sử dụng Hadoop?
Những đặc tính lớn của mạng lưới web đã phát minh ra MapReduce, và xây dựng
Hadoop, bởi vì chúng có một vấn đề về dữ liệu mà không một hệ thống thương mại hay
nghiên cứu nào có thể giải quyết được.
Nền tảng cung cấp bởi Hadoop bây giờ được dùng để hỗ trợ vô số ứng dụng khác
nhau. Những ứng dụng này không cần thiết được đặc trưng bằng khối lượng dữ liệu
khổng lồ. Thay vì vậy, chúng cần ba thuộc tính then chốt mà Hadoop cung cấp.
Đầu tiên, Hadoop là một nền tảng lưu trữ độc nhất vững chắc cho tất cả các loại
dữ liệu. Tất nhiên là có những sản phẩm lưu trữ quan hệ và tập tin (các hệ quản trị cơ sở
dữ liệu) vượt bậc trên thị trường hiện nay, và những hệ thống này sẽ tiếp tục được sử
dụng trong nhiều năm tiếp nữa, để giải quyết các vấn đề mà chúng được thiết kế để phục
vụ. Hadoop bổ sung chúng bằng việc đưa ra một kho lưu trữ mới, nơi mà dữ liệu có cấu
trúc và dữ liệu phức có thể được kết hợp một cách dễ dàng.
Thứ hai, bởi vì tính kinh tế của các máy chủ thông dụng độc lập (shared-nothing
commondity servers) và phần mềm mã nguồn mở, Hadoop cung cấp khả năng lưu trữ vô
cùng lớn ở mức chi phí thấp hơn nhiều so với các hệ thống trước đây. Lưu trữ tin cậy,
chịu được sự cố dưới chi phí của HDFS chỉ vài trăm đô la cho mỗi terabyte hiện nay, và
sẽ còn có xu hướng giảm nữa khi mà các nhà cung cấp ngày càng tăng hiệu suất làm việc
và giảm chi phí.
Thứ ba, và cuối cùng, MapReduce khai thác kiến trúc lưu trữ phân tán của HDFS
để cung cấp các dịch vụ xử lý song song đáng tin cậy và mở rộng quy mô linh hoạt cho
nhiều thuật toán bất kỳ. Người dùng không bị giới hạn với một tập nhỏ các giải thuật
được cung cấp bởi các hệ quản trị cơ sở dữ liệu quan hệ hoặc nhà cung cấp. Trong
Hadoop, hệ thống lưu trữ có khả năng lập trình được. Người dùng có thể phân tích dữ
liệu sử dụng các bộ xử lý đính kèm trực tiếp vào ổ cứng chứa dữ liệu đó.
Sự kết hợp này – sự hợp nhất vững chắc của toàn bộ loại dữ liệu trên một nền tảng
lưu trữ tin cậy, chi phí thấp, đồng thời cung cấp sự thực thi song song nhanh chóng của
các thuật toán phân tích mạnh mẽ - là một sự mới mẻ. Hadoop cung cấp cho những tổ
chức chuyên về dữ liệu những cách khai thác dữ liệu mà đơn giản là họ chưa có trước
đây.

13
MapReduce và Hadoop được tạo ra khi Google và Yahoo! thấu hiểu cách giải
quyết một vấn đề kỹ thuật cốt lõi cho lĩnh vực kinh doanh của họ: xây dựng một chỉ mục
của hơn một tỉ trang web. Công nghệ này đã chứng minh sự vô giá ở đây. Nhưng nó còn
chứng minh nhiều giá trị hơn nữa ở lĩnh vực không mong đợi khác, như cải thiện sự lựa
chọn mẩu quản cáo và trình bày trang, kiểm tra lỗi chính tả, trình bày bản đồ, và nhiều
nữa. Một công cụ đa mục đích cho phép phân tích tất cả dữ liệu, cung cấp cho tất cả nhà
phát triển sự truy cập dễ dàng, mạnh mẽ đến toàn bộ dữ liệu, tạo nên số lượng lớn đáng
kinh ngạc cho những cải thiện kinh doanh [Olson, 2010].
III.2. Nền tảng khoa học
Một số bài báo khoa học ảnh hưởng đển sự ra đời và phát triển của Hadoop, cùng
với lĩnh vực xử lý dữ liệu lớn có thể kể đến như:
• 2004, MapReduce: Simplified Data Processing on Large Clusters, bởi Jeffrey
Dean và Sanjay Ghemawat từ Google Lab. Bài báo này đã tạo cảm hứng cho
Doug Cutting phát triển một phiên bản nguồn mở cho MapReduce framework.
[Dean và Ghemawat, 2004]
• 2005, From Databases to Dataspaces: A New Abstraction for Information
Management : các tác giả làm nổi bậc lên nhu cầu cho các hệ thống lưu trữ lớn,
chấp nhận tất cả định dạng dữ liệu và để cung cấp API cho việc truy cập lượng dữ
liệu đó. Đồng thời những API này có thể tiến hóa dựa trên sự hiểu biết về dữ liệu
của hệ thống lưu trữ [Franklin et al., 2005].
• 2006, Bigtable: A Distributed Storage System for Structured Data từ Google Lab:
các tác giả giới thiệu mô hình BigTable ở Google về hệ thống lưu trữ phân tán cho
khối lượng lớn dữ liệu có cấu trúc. Mô hình này cung cấp được khả năng điều
khiển năng động về định dạng và bố trí dữ liệu [Chang et al. 2006].
• 2008, H-store: a high-performance, distributed main memory transaction
processing system: giới thiệu mô hình H-Store, một hệ thống OLTP thế hệ tiếp
theo hoạt động trên một cụm phân tán các máy trạm độc lập, nơi dữ liệu nằm hoàn
toàn trên bộ nhớ chính [Kallman et al., 2008].
• 2009, MAD Skills: New Analysis Practices for Big Data: giới thiệu kỹ thuật phân

tích dữ liệu MAD (Magnetic – hấp dẫn mạnh, Agile – nhanh chóng, Deep - sâu) sử
dụng cho một trong những mạng lưới quảng cáo lớn nhất thế giới tại Fox
Interactive Media [Cohen et al., 2009].
• 2011 Apache Hadoop Goes Realtime at Facebook: bài báo này giới thiệu quá trình
các kỹ sư tại Facebook lần đầu tiên ứng dụng Apache Hadoop và Apache HBase
vào xây dựng hệ thống Facebook Message của họ. Các tác giả nêu lên những lý
do mà họ sử dụng Hadoop và HBase, đồng thời giới thiệu các cải tiến của họ để
14
làm cho Hadoop trở thành hệ thống thời gian thực hiệu quả hơn [Borthakur et al.
2011].
Hiện nay, Hadoop đã trở thành một chủ đề nóng bỏng trong giới công nghệ và cả
trong học thuật. Các bài báo công bố liên quan đến Hadoop xuất hiện ngày một nhiều
trong những năm gần đây [Ishii et al., 2013] [Kečo và Subasi, 2012], …
III.3. Những ứng dụng nổi bậc
Với vai trò tiên phong trong lĩnh vực của mình, Apache Hadoop framework là một
công cụ mạnh mẽ, hiệu quả, đa dạng và hầu như là duy nhất để giải quyết vấn đề xử lý
các khối dữ liệu lớn. Tính hiệu quả của nó được minh chứng một cách rõ ràng khi mà có
nhiều công ty công nghệ hàng đầu thế giới tin tưởng và sử dụng để xây dựng các hệ
thống lớn của mình. Một vài ví dụ có thể được nêu ra như sau:
 Yahoo!
Là công ty đầu tiên tài trợ và sử dụng Apache Hadoop, vào ngày 19, tháng 2,
2008, Yahoo! Inc. khởi động hệ thống mà họ cho rằng là ứng dụng thương mại Hadoop
lớn nhất thế giới lúc bấy giờ: hệ thống Yahoo! Search Webmap. Đây là ứng dụng Hadoop
được chạy trên cụm hơn 10.000 lõi Linux và sản xuất dữ liệu dùng cho mỗi câu truy vấn
search của Yahoo! Web. [Yahoo!, 2008]
Vào ngày 10 tháng sáu năm 2009, Yahoo! đã đưa mã nguồn của phiên bản Hadoop
mà họ sử dụng trong hệ thống thương mại của mình, công bố ra cộng đồng. Yahoo! đóng
góp lại toàn bộ kết quả công việc của mình trên Hadoop cho cộng đồng mã nguồn mở.
Các lập trình viên của công ty cũng sửa chữa lỗi và cung cấp các cải tiến ổn định trong
nội bộ, và phát hành chúng để nhiều người dùng khác có thể được lợi ích từ nỗ lực của

họ. [Yahoo!, 2010]
 Facebook
Vào năm 2010, Facebook giành vị trí đứng đầu của Yahoo! khi họ có cụm Hadoop
lớn nhất trên thế giới với kho lưu trữ 21 PetaByte [Facebook, 2010]. Vào này 27 tháng 7,
2011 họ tuyên bố dữ liệu đã phát triển lên đến 30 PetaByte [Facebook, 2011], và lên đến
100 PetaByte vào ngày 13 tháng 6 năm 2012 [Facebook, 2012 - a]. Đến ngày 9 tháng 11
năm 2012, Facebook công bố kho dữ liệu của họ đã đạt mức phát triển trung bình gần
một nữa PetaByte mỗi ngày [Facebook, 2012 - b].
 Và những công ty hàng đầu trên thế giới
15
Ngoài Facebook và Yahoo!, nhiều tổ chức và công ty khác đang sử dụng Hadoop
để chạy các hệ thống tính toán phân tán lớn của mình [Apache, 2013]. Một vài ví dụ điển
hình như:
• Amazon.com
• American Airlines
• AOL
• Apple
• AVG
• eBay
• Electronic Arts
• Ericsson
• Fox Interactive Media
• Google
• Hewlett-Packard
• IBM
• Linkedln
• Microsoft
• Netflix
• US Natrional Security Agency
(NSA)

• The New York Times
• StubleUpon
• Twitter
16
Và nhiều công ty khác nữa.
Kết Luận
Trong một thế giới bùng nổ dữ liệu ngày này, Apache Hadoop là một công cụ cần
thiết và không thể thiếu được. Với sự linh hoạt, khả năng mạnh mẽ và yêu cầu chi phí
hợp lý, nó giúp phá bỏ mọi giới hạn khả năng của con người khi phải đối mặt với bất kỳ
bài toán to lớn nào. Tạo điều kiện cho thế giới thông tin phát triển không ngừng, và góp
phần thúc đẩy sự lớn mạnh của tri thức.
Bài báo cáo đã giới thiệu tổng quan xung quanh về Hadoop framework: giới thiệu
về nguồn gốc ra đời, kiến trúc hạ tầng, đồng thời cho thấy được nhu cầu to lớn về một
nền tảng xử lý dữ liệu với khối lượng không giới hạn. Bên cạnh đó, báo cáo cũng giới
thiệu những ví dụ minh họa cụ thể cho những ứng dụng của Hadoop, cùng với những dự
án khác lấy Hadoop làm nền tảng phát triển.
Tài Liệu Tham Khảo
Borthakur, D., K. Muthukkaruppan, K. Ranganathan, S. Rash, J. S. Sarma, N.
Spiegelberg, D. Molkov, R. Schmidt, J. Gray, H. Kuang, A. Menon, A. Aiyer, 2011.
Apache Hadoop Goes Realtime at Facebook. In SIGMOD 111, June 12-16, 2011, Athens,
Greece.
Chang, F., J. Dean, S. Ghemawat, W. C. Hsieh, D. A. Wallach, M. Burrows, T. Chandra,
A. Fikes, R. E. Gruber, 2006. Bigtable: A Distributed Storage System for Structured
Data. In OSDI, 2006.
Cohen, J., B. Dolan, M. Dunlap, J. M. Hellerstein, C. Welton, 2009. MAD Skills: New
Analysis Practices for Big Data. Journal Proceedings of the VLDB Endowment, Vol. 2,
Issue 2, August 2009, Pages 1481-1492.
Dean, J., S. Ghemawat, 2004. MapReduce: Simplified Data Processing on Large
Clusters. Google Lab
Franklin, M., A. Halevy, D. Maier, 2005. From Databases to Dataspaces: A New

Abstraction for Information Management. In ACM SIGMOD, Dec. 2005.
Ishii, M., J. Han, H. Makino, 2013. Design and performance evaluation for Hadoop
clusters on virtualized environment. In International Conference on Information
Networking (ICOIN), Bangok.
Kallman, R., H. Kimura, J. Natkins, A. Pavlo, A. Rasin, S. Zdonik, E. P. C. Jones, S.
Madden, M. Stonebraker, Y. Zhang, J. Hugg, 2008. H-store: a high-performance,
distributed main memory transaction processing system. In PVLDB '08, August 23-28,
2008, Auckland, New Zealand.
Kečo, D., A. Subasi, 2012. Parallelization of genetic algorithms using Hadoop
Map/Reduce. Southeast Europe Journal Of Soft Computing, Vol 1, No 2.
Olson, M., 2010, HADOOP: Scalable, Flexible Data Storage and Analysis. Cloudera
White Paper.
Apache, 2013, Applications and organizations using Hadoop
Facebook, 2010. HDFS: Facebook has the world's largest Hadoop cluster!
Facebook, 2011. Moving an Elephant: Large Scale Hadoop Data Migration at
Facebook, 2012 – a. Under the Hood: Hadoop Distributed Filesystem reliability with
Namenode and Avatarnode
Facebook, 2012 – b. Under the Hood: Scheduling MapReduce jobs more efficiently with
Corona
Yahoo!, 2008, Yahoo! Launches World's Largest Hadoop Production Application.
Yahoo!, 2010, Hadoop at Yahoo!
Wikipedia, MapReduce
Wikipedia, Apache Hadoop

×