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

ĐẠ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 [...]... 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... 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. .. 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... 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... 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... 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... 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. .. [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...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... 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 • • . 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. 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ữ. 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

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