0

Giới thiệu tổng quan về Hadoop và Hadoop Ecosystems

Hadoop là gì?

Giới thiệu

  • Apache Hadoop là được sử dụng để phát triển các một open source software framework dùng xử lý dữ liệu được thực thi trong môi trường tính toán phân tán(distributed computing environment).

  • Các ứng dụng xây dựng bằng Hadoop chạy trên các tập dữ liệu lớn được phân phối qua các cụm máy tính thông thường(commodity computers).

    • Máy tính thông thường là những máy tính rẻ và phổ biến, giúp đạt được sức mạnh tính toán lớn với chi phí thấp.
    • Các commodity computers được sử dụng để xây dựng các cụm máy tính (compute clusters) cho việc xử lý và lưu trữ dữ liệu phân tán.
    • Một cụm Hadoop bao gồm nhiều Commodity Computer, mỗi máy tính hoạt động như một node trong hệ thống phân tán.

Hệ thống tệp phân tán Hadoop(HDFS)

  • Dữ liệu trong Hadoop nằm trong một hệ thống tệp phân tán gọi là Hadoop Distributed File System.
  • Cung cấp khả năng truy cập với hiệu suất cao đến với các dữ liệu nằm trên các cụm của Hadoop.
  • HDFS lưu trữ dữ liệu dưới dạng block, mỗi block có kích thước là 128MB và có thể định cấu hình được bằng cách thay đổi kích thước đó theo yêu cầu của mình trong tệp hdfs-site.xml trong thư mục Hadoop.
  • Mô hình xử lý dựa trên khái niệm “Data Locality”, trong đó logic tính toán(computational logic) được gửi đến các cluster node. Logic tính toán này là compiled version của một chương trình và viết bằng ngôn ngữ cấp cao như Java.
  • Một số tính năng quan trọng:
    • Dễ dàng truy cập vào các file được lưu trữ trong HDFS: HDFS cung cấp một giao diện dễ sử dụng để truy xuất và quản lý các file trên hệ thống.
    • Cung cấp high availability và khả năng chịu lỗi(fault tolerance): HDFS được thiết kế để có khả năng sẵn có cao và khả năng chịu lỗi, giúp đảm bảo rằng dữ liệu luôn có sẵn và an toàn ngay cả khi có sự cố xảy ra.
    • Khả năng mở rộng: HDFS cho phép mở rộng dễ dàng bằng cách thêm hoặc giảm số lượng các node theo nhu cầu của hệ thống.
    • Dữ liệu được lưu trữ theo phân phối: Dữ liệu được phân tán lưu trữ trên các DataNode khác nhau, giúp cải thiện hiệu suất và đảm bảo tính sẵn sàng.
    • Phân bản dữ liệu: HDFS cung cấp tính năng sao chép dữ liệu (replication), giúp đảm bảo không có mất mát dữ liệu trong trường hợp một DataNode gặp sự cố.(Data Loss)
    • Độ tin cậy cao(High Reliability): HDFS có khả năng lưu trữ dữ liệu lớn, từ hàng Terabytes đến Petabytes, đảm bảo tính tin cậy cao cho các ứng dụng lưu trữ lớn.
    • Các máy chủ tích hợp trong NameNode và DataNode: HDFS có các máy chủ tích hợp trong NameNode và DataNode giúp dễ dàng truy xuất thông tin cụm.
    • Cung cấp thông lượng cao: HDFS hỗ trợ việc xử lý dữ liệu với thông lượng cao, phù hợp cho các ứng dụng yêu cầu xử lý lớn và hiệu suất cao.

Hadoop Ecosystem

MapReduce

  • Chức năng: Là một mô hình lập trình và framework để xử lý dữ liệu lớn theo cách phân tán.
  • Dễ dàng viết các ứng dụng xử lý lượng lớn dữ liệu(multi-terabyte data-sets) song song trên large cluster(thousands of nodes).
  • Nó bao gồm hai giai đoạn chính:
    • Map (phân tích) và Reduce (tổng hợp).
    • MapReduce thường chia tập dữ liệu đầu vào thành các phần độc lập được xử lý bởi các tác vụ map song song hoàn toàn. Framework sắp xếp đầu ra của các map, sau đó đưa vào các tác vụ reduce.
  • Đặc điểm: Giúp xử lý dữ liệu song song trên nhiều máy chủ, tối ưu hóa tài nguyên và tăng tốc độ xử lý.

HBase

  • Chức năng:
    • Hệ thống cơ sở dữ liệu dạng cột phân tán trên HDFS.
    • Tương tự như Google’s big table được thiết kế để cung cấp quyền truy cập ngẫu nhiên nhanh chóng vào lượng lớn dữ liệu có cấu trúc.

  • Đặc điểm: Cung cấp khả năng truy cập ngẫu nhiên, thời gian thực đến dữ liệu lớn, hỗ trợ tốt cho các ứng dụng cần truy vấn nhanh.

  • So sánh HDFS và HBase

    HDFS HBase
    HDFS là một hệ thống file phân tán phù hợp để lưu trữ các tệp lớn. HBase là một cơ sở dữ liệu được xây dựng trên HDFS.
    HDFS không hỗ trợ tra cứu từng bản ghi nhanh. HBase cung cấp tra cứu nhanh cho các bảng lớn.
    HDFS cung cấp xử lý theo lô với độ trễ cao; không có khái niệm xử lý theo lô. HBase cung cấp truy cập độ trễ thấp đến từng hàng từ hàng tỷ bản ghi (truy cập ngẫu nhiên).
    HDFS chỉ cung cấp truy cập tuần tự vào dữ liệu. HBase sử dụng bảng băm nội bộ và cung cấp truy cập ngẫu nhiên, và nó lưu trữ dữ liệu trong các tệp HDFS được lập chỉ mục để tra cứu nhanh hơn.

Sqoop("SQL-to-Hadoop")

  • Chức năng:
    • Công cụ để chuyển đổi dữ liệu giữa Hadoop và các cơ sở dữ liệu quan hệ (RDBMS).
    • Nhập dữ liệu từ một số cơ sở dữ liệu quan hệ, bao gồm MySQL, Oracle, SQL Server và PostgreSQL, vào HDFS là một trong những chức năng cốt lõi của Sqoop.

  • Đặc điểm:
    • Hỗ trợ import và export dữ liệu, giúp tích hợp dữ liệu giữa Hadoop và các hệ thống RDBMS.
    • Sqoop cho phép gửi dữ liệu đã xử lý hoặc phân tích từ HDFS trở lại cơ sở dữ liệu quan hệ, đảm bảo rằng kiến thức thu được từ phân tích dữ liệu lớn có thể được tích hợp vào hệ thống lưu trữ dữ liệu hiện tại mà không gặp bất kỳ khó khăn nào.

Pig

  • Chức năng:
    • Nó là một công cụ được sử dụng để phân tích dữ liệu lớn và biểu thị chúng dưới dạng luồng dữ liệu.
    • Là một sự trừu tượng hóa của MapReduce.
    • Để sử dụng Sqoop để phân tích dữ liệu, chúng ta cần viết một high-level language còn gọi là Pig Latin. Các script này được chuyển đổi nội bộ thành Map và Reduce tasks.
    • Apache Pig có một thành phần gọi là Pig Engine chấp nhận Pig Latin scripts làm đầu vào và chuyển đổi các script đó thành MapReduce jobs.

  • Đặc điểm: Cung cấp các công cụ để xử lý và biến đổi dữ liệu phức tạp thông qua các script Pig Latin.

Other components of Hadoop

Flume

  • Chức năng: Thu thập, tổng hợp và chuyển đổi dữ liệu log từ nhiều nguồn vào HDFS.
  • Đặc điểm: Được thiết kế để xử lý dòng dữ liệu lớn và không đồng nhất từ các nguồn khác nhau.

Zookeeper

  • Chức năng: Cung cấp dịch vụ điều phối và quản lý cấu hình cho các hệ thống phân tán.
  • Đặc điểm: Đảm bảo tính nhất quán và đồng bộ giữa các dịch vụ khác nhau trong Hadoop Ecosystem.

Ambari

  • Chức năng: Công cụ quản lý và giám sát các cụm Hadoop. Nó cung cấp giao diện người dùng để quản lý, giám sát, và cấu hình các dịch vụ Hadoop.
  • Đặc điểm: Hỗ trợ triển khai, quản lý và giám sát các cụm Hadoop một cách dễ dàng.

Hive

  • Chức năng: Cung cấp giao diện SQL để truy vấn và quản lý dữ liệu lưu trữ trong HDFS.
  • Đặc điểm: Cho phép người dùng thực hiện các truy vấn SQL trên dữ liệu lớn, hỗ trợ phân tích dữ liệu.

Mahout

  • Chức năng: Cung cấp các thuật toán học máy để phân tích dữ liệu lớn.
  • Đặc điểm: Hỗ trợ các thuật toán phân cụm, phân loại, và lọc cộng tác, giúp triển khai các ứng dụng học máy trên Hadoop.

R Connectors

  • Chức năng: Tích hợp R, một ngôn ngữ lập trình thống kê, với Hadoop để phân tích dữ liệu lớn.
  • Đặc điểm: Cho phép các nhà phân tích sử dụng các công cụ và thư viện của R để xử lý và phân tích dữ liệu trong HDFS.

Oozie

  • Chức năng: Hệ thống quản lý workflow và job scheduling cho Hadoop.
  • Đặc điểm: Cho phép lên lịch và quản lý các workflow phức tạp, bao gồm các job MapReduce, Pig, Hive,...

All rights reserved

Viblo
Hãy đăng ký một tài khoản Viblo để nhận được nhiều bài viết thú vị hơn.
Đăng kí