Apache Hadoop Framework

Một phần của tài liệu (LUẬN văn THẠC sĩ) kết hợp r và hadoop trong khai phá dữ liệu (Trang 44 - 51)

5. Phƣơng pháp nghiên cứu

1.4.3. Apache Hadoop Framework

Apache Hadoop là một Framework mã nguồn mở, trên nền Java, cung cấp một nền tảng phân tán mạnh để lƣu trữ và quản lý dữ liệu lớn. Nó chạy ứng dụng trên các cụm máy chủ lớn đƣợc xây dựng trên các phần cứng thông thƣờng. Có khả năng xử lý hàng ngàn terabytes dữ liệu trên hàng ngàn nodes. Hadoop đƣợc xây dựng dựa trên ý tƣởng của Google MapReduce và Google File System (GFS). Điểm mạnh của nền tảng Hadoop là cung cấp độ tin cậy và tính sẵn sàng cao.

37

Các thành phần của Hadoop:

Hình 1.6. Thành phần Hadoop 1: HDFS và MapReduce [10]

Hình 1.7. Thành phần Hadoop 2 [10]

HDFS(Hadoop Distributed File System): là một hệ thống quản lý tập tin với kích thƣớc rất lớn bằng mô hình phân tán. Mỗi cụm máy chủ của HDFS gồm nhiều cụm (cluster). Mỗi cụm gồm các nút dữ liệu (Data node) là nơi lƣu trữ dữ liệu và nút tên (Name node) nơi quản lý các khối dữ liệu (Block) và các Data node.

38

MapReduce: Là mô hình lập trình sử dụng trong Hadoop. Có hai giai đoạn Map và Reduce. Trình theo dõi công việc (JobTracker) quản lý việc thực hiện MapReduce trên Hadoop.

Yarn (Yet Another Resource Negotiator): là một framework hỗ trợ phát triển ứng dụng phân tán. Yarn cung cấp các API cần thiết cho việc phát triển ứng dụng phân tán, đồng thời xử lý và lập lịch sử dụng tài nguyên tính toán (CPU hay memory) cũng nhƣ giám sát quá trình thực thi các ứng dụng đó.

Hive và Hue: Hive cung cấp khả năng chuyển SQL thành một tác vụ MapReduce. Hue cung cấp một giao diện trên trình duyệt để thực hiện Hive.

Pig: Một môi trƣờng lập trình mức cao hơn để viết mã MapReduce. Ngôn ngữ Pig đƣợc gọi là Pig Latin.

Các ứng dụng của Hadoop:

Ngoài Yahoo, ngày nay có nhiều công ty sử dụng Hadoop nhƣ là một công cụ để lƣu trữ và phân tích dữ liệu trên các khối dữ liệu lớn nhƣ:

Twitter: sử dụng Hadoop để xử lý tweets (các bài viết văn bản lên đến 140 ký tự hiển thị trên profile cảu tác giả), logs và các nguồn dữ liệu phát sinh trong quá trình hoạt động của twitter.

Facebook: sử dụng Hadoop để lƣu trữ các log nội bộ và kích thích của nguồn dữ liệu. Các dữ liệu này đƣợc dung làm nguồn cho các báo cáo phân tích và máy học.

A9.com của Amazon: sử dụng Hadoop để đánh giá chỉ số tìm kiếm sản phẩm Amazon, xử lý hàng triệu phiên làm việc mỗi ngày. Các cluster của A9.com có độ lớn từ 1 đến 100 node.

Và còn rất nhiều các công ty hiện đang sử dụng Hadoop vào việc lƣu trữ và xử lý dữ liệu, đặc biệt cho các nguồn dữ liệu lớn với kích thƣớc lên tới hàng petabyte.

39

Ƣu nhƣợc điểm của Hadoop:

Ưu điểm: Hadoop framework cho phép ngƣời dùng nhanh chóng viết và kiểm tra các hệ thống phân tán. Đây là cách hiệu quả cho phép phân phối dữ liệu và công việc xuyên suốt các máy trạm nhờ vào cơ chế xử lý song song của các lõi CPU.

Hadoop không dựa vào cơ chế chịu lỗi của phần cứng fault-tolerance and high availability (FTHA), thay vì vậy bản thân Hadoop có các thƣ viện đƣợc thiết kế để phát hiện và xử lý các lỗi ở lớp ứng dụng.

Hadoop có thể phát triển lên nhiều server với cấu trúc master-slave để đảm bảo thực hiện các công việc linh hoạt và không bị ngắt quãng do chia nhỏ công việc cho các server slave đƣợc điều khiển bởi server master.

Hadoop có thể tƣơng thích trên mọi nền tảng nhƣ Window, Linux, MacOs do đƣợc tạo ra từ Java, có khả năng mở rộng cao, chi phí hiệu quả, linh hoạt, nhanh, khả năng chịu lỗi.

Nhược điểm: Hadoop không có mô hình bảo mật và tính phức tạp cao, 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ối quan 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ông tin 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ệu thời gian thực, khó biểu diễn dữ liệu đầu ra theo nhu cầu cần sử dụng.

1.4.3.1. Hadoop Distributed File System (HDFS):

HDFS là một hệ thống quản lý tập tin với kích thƣớc rất lớn bằng mô hình phân tán. Tƣơng tự các hệ thống trƣớc nó, HDFS cũng đáp ứng đƣợc yêu cầu nhƣ độ tin cậy, khả năng mở rộng và hiệu suất hoạt động… Tuy nhiên,

40

HDFS ra đời để đáp ứng các đòi hỏi về lƣu trữ và xử lý một lƣợng lớn dữ liệu với các đặc thù riêng.

Các khái niệm trong HDFS:

Khối (Block): Tƣợng tự nhƣ cách thức quản lý ổ cứng của các hệ điều hành, block là cơ sở của HDFS, tập tin lƣu trữ trong HDFS đƣợc chia nhỏ thành các block, kích thƣớc mặc định của mỗi khối là 128 MB trong Apache Hadoop 2.x (64 MB trong Apache Hadoop 1.x ) mà bạn có thể định cấu hình theo yêu cầu của mình [21]. HDFS thiết kế block lớn, ngƣời dùng có quyền thay đổi giá trị để giảm thời gian duyệt tập tin nhƣng vẫn đảm bảo tốc độ duyệt tối thiểu một block. Ví dụ chúng ta có một tệp tin example.txt có kích thƣớc 514 MB nhƣ trong hình trên. Giả sử chúng ta đang sử dụng cấu hình mặc định của kích thƣớc khối, là 128 MB. Vậy với 514 MB ta chia đƣợc 5 khối 128 MB và khối cuối cùng là 2 MB.

Hình 1.8. Mô tả về cách chia khối trong HDFS

NameNodes và DataNodes: Một cụm HDFS có hai loại nút:

NameNode: chịu trách nhiệm quản lý những thông tin về cấu trúc thƣ mục, file các metadata hệ thống. Lƣu trữ vị trí của các block của tập tin trên Datanode.

Các DataNode: chịu trách nhiệm lƣu trữ và cập nhật vị trí của block định kỳ cho NameNode.

Kiến trúc HDFS: HDFS sử dụng cấu trúc cây để phân cấp file, thƣ mục. Các file là các node lá, mỗi file đƣợc chia thành các block có block ID để nhận diện. Mỗi block đƣợc lƣu trữ thành nhiều bản (replica) nhằm đảm bảo an toàn

41

dữ liệu. Trong một cụm, chỉ có một NameNode chịu trách nhiệm quản lý, nó cũng có các bản sao ở các cụm khác để đảm bảo cả cụm vẫn hoạt động nếu NameNode bị lỗi. Khi có yêu cầu lấy tập tin từ máy khách gửi đến NameNode, nó sẽ gửi danh sách block id và nơi lƣu trữ chúng cho máy đó, từ danh sách đó máy khách gửi các yêu cầu đến các DataNode chứa các block đó để lấy chúng về, sau đó tổng hợp lại thành tập tin hoàn chỉnh.

Hình 1.9. Cách thức hoạt động của HDFS

Hoạt động của MapReduce trên Hadoop:

MapReduce trên Hadoop gồm hai thành phần: JobTracker là nơi quản lý, lập lịch các công việc cho hệ thống và phân phối cho các TaskTracker. JobTracker khi tiếp nhận một công việc nó sẽ lấy danh sách block đầu vào từ HDFS chia cho TaskTracker để thực hiện hàm Map, kết quả trả về của hàm Map đƣợc nhóm lại theo key rồi lƣu vào bộ nhớ cục bộ của TaskTracker đó. TaskTracker gửi danh sách các key vào thông báo hoàn thành hàm Map cho JobTracker. JobTracker tiếp tục chia các key cùng với vị trí lƣu trữ của chúng cho các TaskTracker để thực hiện hàm Reduce. Các TaskTracker này dựa vào các vị trí lƣu trữ nhận đƣợc từ JobTracker tiến hành copy dữ liệu từ các

42

TaskTracker thực hiện hàm Map để thực hiện hàm Reduce. Tất cả các kết quả sau khi thực hiện Reduce đƣợc tổng hợp lại sau đó ghi vào HDFS.

Hình 1.10. Cách thức hoạt động của MapRedcue trên Hadoop

Khác với hệ thống phân tán Google File System và MapReduce độc quyền của Google, Hadoop là hệ thống mã nguồn mở nên thu hút đông đảo ngƣời dùng sử dụng để áp dụng mô hình MapReduce.Hiện nay, để thuận tiện cho việc sử dụng và thu hút thêm ngƣời dùng, các nhà phát triển đã xây dựng rất nhiều thƣ viện chuyển đổi giúp sử dụng Hadoop trên nhiều ngôn ngữ lập trình khác nhau. Nhƣ Hadoop, R cũng là một công cụ, ngôn ngữ lập trình mã nguồn mở, có cộng đồng ngƣời sử dụng và nhà phát triển rộng lớn trên nhiều lĩnh vực khác nhau. Hiện nay đã có thƣ viện giúp R tƣơng tác với Hadoop. Sự kết hợp giữa một công cụ, một ngôn ngữ lập trình hoạt động trên nhiều lĩnh vực và một hệ thống xử lý song song với nhiều ƣu điểm hứa hẹn sẽ hỗ trợ nhau, cung cấp nhiều giải pháp, cải tiến, các kỹ thuật hữu ích.

43

Một phần của tài liệu (LUẬN văn THẠC sĩ) kết hợp r và hadoop trong khai phá dữ liệu (Trang 44 - 51)

Tải bản đầy đủ (PDF)

(87 trang)