Hadoop là gì

Hadoop cluster computers
Hadoop cluster computers

Hadoop là một Apache framework mã nguồn mở được viết bằng java, cho phép xử lý phân tán (distributed processing) các tập dữ liệu lớn trên các cụm máy tính (clusters of computers) thông qua mô hình lập trình đơn giản. Hadoop được thiết kế để mở rộng quy mô từ một máy chủ đơn sang hàng ngàn máy tính khác có tính toán và lưu trữ cục bộ (local computation and storage).

Kiến trúc Hadoop

Hadoop framework gồm 4 module:

  • Hadoop Common: Đây là các thư viện và tiện ích cần thiết của Java để các module khác sử dụng. Những thư viện này cung cấp hệ thống file và lớp OS trừu tượng, đồng thời chứa các mã lệnh Java để khởi động Hadoop.
  • Hadoop YARN: Đây là framework để quản lý tiến trình và tài nguyên của các cluster.
  • Hadoop Distributed File System (HDFS): Đây là hệ thống file phân tán cung cấp truy cập thông lượng cao cho ứng dụng khai thác dữ liệu.
  • Hadoop MapReduce: Đây là hệ thống dựa trên YARN dùng để xử lý song song các tập dữ liệu lớn.

Ta có thể sử dụng sơ đồ sau để mô tả bốn thành phần có trong Hadoop framework.

Hadoop architecture
Hadoop architecture

Kể từ 2012, thuật ngữ “Hadoop” không chỉ đề cập đến các module cơ sở nêu trên mà còn đề cập đến các gói phần mềm mở rộng (additional software packages) có thể được cài đặt bên cạnh Hadoop, chẳng hạn như Apache Pig, Apache Hive, Apache HBase, Apache Spark.

MapReduce

Hadoop MapReduce là một framework dùng để viết các ứng dụng xử lý song song một lượng lớn dữ liệu có khả năng chịu lỗi cao xuyên suốt hàng ngàn cụm máy tính.

Thuật ngữ MapReduce liên quan đến hai tác vụ mà chương trình Hadoop thực hiện:

  • Map: đây là tác vụ đầu tiên, trong đó dữ liệu đầu vào được chuyển đổi thành tập dữ liệu theo cặp key/value.
  • Reduce: tác vụ này nhận kết quả đầu ra từ tác vụ Map, kết hợp dữ liệu lại với nhau thành tập dữ liệu nhỏ hơn.

Thông thường, kết quả input và output được lưu trong hệ thống file. Framework này sẽ tự động quản lý, theo dõi và tái thực thi các tác vụ bị lỗi.

MapReduce framework gồm một single master (máy chủ) JobTracker và các slave (máy trạm) TaskTracker trên mỗi cluster-node. Master có nhiệm vụ quản lý tài nguyên, theo dõi quá trình tiêu thụ tài nguyên và lập lịch quản lý các tác vụ trên các máy trạm, theo dõi chúng và thực thi lại các tác vụ bị lỗi. Những máy slave TaskTracker thực thi các tác vụ được master chỉ định và cung cấp thông tin trạng thái tác vụ (task-status) để master theo dõi.

JobTracker là một điểm yếu của Hadoop Mapreduce. Nếu JobTracker bị lỗi thì mọi công việc liên quan sẽ bị ngắt quãng.

Hadoop Distributed File System

Hadoop có thể làm việc trực tiếp với bất kì hệ thống dữ liệu phân tán như Local FS, HFTP FS, S3 FS, và các hệ thống khác. Nhưng hệ thống file thường được dùng bởi Hadoop là Hadoop Distributed File System (HDFS).

Hadoop Distributed File System (HDFS) dựa trên Google File System (GFS), cung cấp một hệ thống dữ liệu phân tán, được thiết kế để chạy trên các cụm máy tính lớn (gồm hàng ngàn máy tính) có khả năng chịu lỗi cao.

HDFS sử dụng kiến trúc master/slave, trong đó master gồm một NameNode để quản lý hệ thống file metadata và một hay nhiều slave DataNodes để lưu trữ dữ liệu thực tại.

Một tập tin với định dạng HDFS được chia thành nhiều block và những block này được lưu trữ trong một tập các DataNodes. NameNode định nghĩa ánh xạ từ các block đến các DataNode. Các DataNode điều hành các tác vụ đọc và ghi dữ liệu lên hệ thống file. Chúng cũng quản lý việc tạo, huỷ, và nhân rộng các block thông qua các chỉ thị từ NameNode.

HDFS cũng hỗ trợ các câu lệnh shell để tương tác với tập tin như các hệ thống file khác.

Hadoop hoạt động như thế nào?

Giai đoạn 1

Một user hay một ứng dụng có thể submit một job lên Hadoop (hadoop job client) với yêu cầu xử lý cùng các thông tin cơ bản:

  1. Nơi lưu (location) dữ liệu input, output trên hệ thống dữ liệu phân tán.
  2. Các java class ở định dạng jar chứa các dòng lệnh thực thi các hàm map và reduce.
  3. Các thiết lập cụ thể liên quan đến job thông qua các thông số truyền vào.

Giai đoạn 2

Hadoop job client submit job (file jar, file thực thi) và các thiết lập cho JobTracker. Sau đó, master sẽ phân phối tác vụ đến các máy slave để theo dõi và quản lý tiến trình các máy này, đồng thời cung cấp thông tin về tình trạng và chẩn đoán liên quan đến job-client.

Giai đoạn 3

TaskTrackers trên các node khác nhau thực thi tác vụ MapReduce và trả về kết quả output được lưu trong hệ thống file.

Ưu điểm của Hadoop

  • 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.
  • Các server có thể được thêm vào hoặc gỡ bỏ từ cluster một cách linh hoạt và vẫn hoạt động mà không bị ngắt quãng.
  • Một lợi thế lớn của Hadoop ngoài mã nguồn mở đó là khả năng tương thích trên tất cả các nền tảng do được phát triển trên Java.

Apache Hadoop Eco System.png

Nguồn: http://www.tutorialspoint.com/hadoop/hadoop_introduction.htm

Tham khảo thêm: 10 Best Hadoop articles from 2015 that you should read

2 thoughts on “Hadoop là gì

  1. Cảm ơn vì bài viết. Em có một bài toán đang dự định ứng dụng hadoop nhưng chưa biết phải làm sao. Nội dung bài toán là các sensor liên tục đo và gửi chỉ số thông tin về máy chủ (sensor phân tán ở khắp nơi, thời gian gửi dữ liệu khác nhau, dữ liệu gửi về dạng file). Nhiệm vụ của em là làm sao lưu trữ được loại file lớn này và trả về file theo kết quả tìm kiếm của người dùng. Em dự kiến sử dụng Hadoop HDFS để hỗ trợ nhận, lưu trữ file thì có ổn không? Có tut nào hướng dẫn không ạ?

    Like

    1. Việc này liên quan nhiều đến setup server, nhưng HDFS chỉ phù hợp cho lưu trữ và tính toán (load lên để xử lý và lưu ngược lại – batch processing), việc truy xuất phụ thuộc vào việc tổ chức file sao cho hợp lý với yêu cầu truy vấn của mình. Ngoài ra, em có thể tham khảo thêm về Cassandra cũng là hệ quản trị CSDL phân tán nhưng hỗ trợ sẵn SQL cho tác vụ truy vấn. MongoDB cũng có lợi thế riêng của mình trong việc đọc nhanh dữ liệu Big Data.
      Về tut thì em có thể tìm trên internet, có khá nhiều vấn đề liên quan đến bài toán của em. Bí chỗ nào thì search chỗ đó

      Like

Gửi phản hồi

Mời bạn điền thông tin vào ô dưới đây hoặc kích vào một biểu tượng để đăng nhập:

WordPress.com Logo

Bạn đang bình luận bằng tài khoản WordPress.com Log Out / Thay đổi )

Twitter picture

Bạn đang bình luận bằng tài khoản Twitter Log Out / Thay đổi )

Facebook photo

Bạn đang bình luận bằng tài khoản Facebook Log Out / Thay đổi )

Google+ photo

Bạn đang bình luận bằng tài khoản Google+ Log Out / Thay đổi )

Connecting to %s