HBase
 sql >> Cơ Sở Dữ Liệu >  >> NoSQL >> HBase

Hadoop hoạt động như thế nào - Hiểu hoạt động của Hadoop

Bạn muốn biết cách Hadoop thực sự lưu trữ và xử lý một lượng lớn dữ liệu?

Trong bài viết này, chúng ta sẽ nghiên cứu cách Hadoop hoạt động Nội bộ. Chúng ta sẽ xem cách Hadoop lưu trữ và xử lý các tập dữ liệu lớn. Bài viết giải thích chi tiết về hoạt động của Hadoop. Trước tiên, bài viết giới thiệu ngắn gọn về Hadoop.

Sau đó, chúng ta sẽ thấy các thành phần cốt lõi của Hadoop và Daemon đang chạy trong cụm Hadoop. Sau đó, bài viết giải thích hoạt động của Hadoop bao gồm tất cả các thành phần cốt lõi của nó như HDFS, MapReduce và YARN.

Vì vậy, trước tiên chúng ta hãy xem phần giới thiệu ngắn về Hadoop.

Giới thiệu về Hadoop

Với sự gia tăng của dữ liệu lớn, Apache Software Foundation vào năm 2008 đã phát triển một khuôn khổ mã nguồn mở được gọi là Apache Hadoop, đây là một giải pháp cho tất cả các vấn đề về dữ liệu lớn.

Apache Hadoop là một khuôn khổ có thể lưu trữ và xử lý một lượng lớn dữ liệu phi cấu trúc có kích thước từ terabyte đến petabyte. Đây là một hệ thống có khả năng chịu lỗi cao và có tính khả dụng cao.

Hadoop lưu trữ một lượng lớn dữ liệu theo cách phân tán trong HDFS. Hadoop MapReduce là đơn vị xử lý trong Hadoop, xử lý dữ liệu song song.

Hadoop YARN là một thành phần cốt lõi khác trong khuôn khổ Hadoop, chịu trách nhiệm quản lý tài nguyên giữa các ứng dụng đang chạy trong cụm và lên lịch tác vụ.

Trước khi nghiên cứu cách Hadoop hoạt động bên trong, trước tiên chúng ta hãy xem các thành phần chính và daemon của Hadoop.

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

Hadoop bao gồm ba thành phần chính là HDFS, MapReduce và YARN.

1. Hadoop HDFS

Nó là lớp lưu trữ cho Hadoop. Hệ thống tệp phân tán Hadoop lưu trữ dữ liệu trên các nút khác nhau trong một cụm. Nó chia dữ liệu thành các khối và lưu trữ chúng trên các nút khác nhau. Kích thước khối là 128 MB theo mặc định . Chúng tôi có thể định cấu hình kích thước khối theo yêu cầu của chúng tôi.

2. Hadoop MapReduce

Nó là lớp xử lý trong Hadoop. Hadoop MapReduce xử lý dữ liệu được lưu trữ trong Hadoop HDFS song song trên các nút khác nhau trong cụm. Nó chia nhiệm vụ do người dùng gửi thành tác vụ độc lập và xử lý chúng như các nhiệm vụ phụ trên phần cứng hàng hóa.

3. SỢI Hadoop

Nó là lớp quản lý tài nguyên và quy trình của Hadoop. YARN chịu trách nhiệm chia sẻ tài nguyên giữa các ứng dụng đang chạy trong cụm và lên lịch tác vụ trong cụm.

Đây là ba thành phần cốt lõi trong Hadoop.

Daemon đang chạy trong Cụm Hadoop

Có một số Daemon chạy trên Hadoop Cluster. Daemons là quá trình nhẹ chạy trong nền.

Một số Daemon chạy trên nút Master và một số trên nút Slave. Bây giờ chúng ta hãy nghiên cứu Hadoop Daemons.

Các Daemon Hadoop chính là:

1. Master Daemons

  • Mã Tên: Nó là Daemon chính trong Hadoop HDFS. Nó duy trì không gian tên hệ thống tệp. Nó lưu trữ siêu dữ liệu về từng khối tệp.
  • ResourceManager: Nó là daemon chính của YARN. Nó phân xử tài nguyên giữa tất cả các ứng dụng đang chạy trong cụm.

2. Daemons nô lệ

  • Mã dữ liệu: DataNode là daemon nô lệ của Hadoop HDFS. Nó chạy trên máy nô lệ. Nó lưu trữ dữ liệu hoặc khối thực tế.
  • NodeManager: Nó là daemon nô lệ của YARN. Nó quản lý tất cả các nút máy tính riêng lẻ trong cụm.

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

Hadoop lưu trữ và xử lý dữ liệu theo cách phân tán trên toàn bộ cụm phần cứng hàng hóa. Để lưu trữ và xử lý bất kỳ dữ liệu nào, khách hàng gửi dữ liệu và chương trình đến cụm Hadoop.

Hadoop HDFS lưu trữ dữ liệu, MapReduce xử lý dữ liệu được lưu trữ trong HDFS và YARN phân chia nhiệm vụ và chỉ định tài nguyên.

Bây giờ chúng ta hãy xem xét các thành phần này một cách chi tiết.

1. HDFS

Dữ liệu trong Hadoop được lưu trữ trong Hệ thống tệp phân tán Hadoop. Có hai daemon đang chạy trong Hadoop HDFS là NameNode và DataNode.

a. NameNode

NameNode là daemon chính trong HDFS. Nó chạy trên các nút chính. Nó duy trì không gian tên hệ thống tệp. NameNode không lưu trữ dữ liệu thực tế. Nó lưu trữ siêu dữ liệu, chẳng hạn như thông tin về khối tệp, quyền đối với tệp, vị trí chặn, v.v.

NameNode quản lý DataNode và cung cấp hướng dẫn cho chúng. NameNode nhận được nhịp tim từ DataNodes cứ 3 giây một lần, điều này chỉ định rằng DataNode còn sống.

b. Mã dữ liệu

DataNode là daemon nô lệ trong HDFS. DataNodes là các nút phụ lưu trữ dữ liệu kinh doanh thực tế. Họ chịu trách nhiệm phục vụ các yêu cầu đọc / ghi của khách hàng dựa trên các hướng dẫn từ NameNode. Các DataNodes gửi thông điệp nhịp tim đến NameNode để đảm bảo rằng chúng vẫn còn sống.

c. Mã tên phụ

Nó là một daemon khác trong Hadoop HDFS. Nó là nút trợ giúp cho NameNode chính. NameNode phụ tải xuống nhật ký chỉnh sửa và tệp Fsimage từ NameNode chính và áp dụng định kỳ các nhật ký chỉnh sửa cho Fsimage .

Sau đó, nó sẽ gửi lại tệp Fsimage đã cập nhật tới NameNode. Vì vậy, nếu NameNode chính bị lỗi, Fsimage lưu cuối cùng trên NameNode phụ sẽ được sử dụng để khôi phục siêu dữ liệu hệ thống tệp.

Bất cứ khi nào máy khách muốn đọc hoặc ghi dữ liệu vào Hadoop HDFS, trước tiên nó sẽ tương tác với NameNode. NameNode trước tiên sẽ kiểm tra các đặc quyền của máy khách và nếu máy khách có đủ đặc quyền, thì NameNode sẽ cung cấp địa chỉ của DataNodes từ đó máy khách có thể đọc hoặc ghi dữ liệu.

Tệp của khách hàng trong HDFS được chia thành các khối. Kích thước khối là 128 MB theo mặc định. DataNode lưu trữ các khối tệp. Để cung cấp khả năng chịu lỗi, HDFS tạo ra các bản sao của các khối tùy thuộc vào yếu tố sao chép.

Theo mặc định, hệ số sao chép là 3, có nghĩa là 3 bản sao của một khối được lưu trữ trong HDFS. HDFS lưu trữ các bản sao của khối trên các DataNodes khác nhau bằng cách tuân theo thuật toán Rack Awareness.

Trong quá trình đọc tệp, nếu bất kỳ DataNode nào gặp sự cố, NameNode sẽ cung cấp địa chỉ của DataNode khác có chứa bản sao của khối từ đó khách hàng có thể đọc dữ liệu của nó mà không cần bất kỳ thời gian chết nào.

2. MapReduce

MapReduce là lớp xử lý trong Hadoop. Nó xử lý dữ liệu song song trên nhiều máy trong cụm. Nó hoạt động bằng cách chia nhiệm vụ thành các nhiệm vụ con độc lập và thực hiện chúng song song trên các DataNode khác nhau.

MapReduce xử lý dữ liệu thành hai giai đoạn, nghĩa là Giai đoạn lập bản đồ Giai đoạn giảm . Đầu vào và đầu ra của cả hai pha là các cặp giá trị, khóa. Loại khóa, cặp giá trị được người lập trình chỉ định thông qua lớp InputFormat . Theo mặc định, định dạng nhập văn bản được sử dụng.

Lập trình viên chỉ định hai chức năng, đó là chức năng bản đồ chức năng giảm . Trong chức năng bản đồ, lập trình viên viết logic nghiệp vụ để xử lý dữ liệu.

Trong hàm Reduce, lập trình viên viết logic để tóm tắt và tổng hợp đầu ra trung gian của hàm bản đồ và tạo ra đầu ra.

Hoạt động của Hadoop MapReduce

Bất cứ khi nào khách hàng muốn thực hiện bất kỳ quá trình xử lý nào đối với dữ liệu của nó trong cụm Hadoop, thì trước tiên nó sẽ lưu trữ dữ liệu trong Hadoop HDFS và sau đó viết chương trình MapReduce để xử lý Dữ liệu. Hadoop MapReduce hoạt động như sau:

1. Hadoop chia công việc thành các nhiệm vụ làm hai loại, đó là lập bản đồ nhiệm vụ và giảm bớt nhiệm vụ. YARN đã lên lịch cho các tác vụ này (chúng ta sẽ thấy ở phần sau của bài viết này). Các tác vụ này chạy trên các Mã dữ liệu khác nhau.

2. Đầu vào cho công việc MapReduce được chia thành các phần có kích thước cố định được gọi là phần tách đầu vào.

3. Một tác vụ bản đồ chạy chức năng bản đồ do người dùng xác định cho mỗi bản ghi trong phần tách đầu vào được tạo cho mỗi phần tách đầu vào. Các tác vụ bản đồ này chạy trên DataNodes nơi chứa dữ liệu đầu vào.

4. Đầu ra của tác vụ bản đồ là đầu ra trung gian và được ghi vào đĩa cục bộ.

5. Các kết quả đầu ra trung gian của các tác vụ bản đồ được xáo trộn và sắp xếp, sau đó được chuyển đến trình giảm tốc.

6. Đối với một tác vụ giảm đơn lẻ, đầu ra trung gian được sắp xếp của trình ánh xạ được chuyển tới nút nơi tác vụ giảm tốc đang chạy. Các kết quả đầu ra này sau đó được hợp nhất và sau đó được chuyển đến hàm giảm do người dùng xác định.

7. Hàm rút gọn tóm tắt kết quả đầu ra của trình ánh xạ và tạo ra kết quả đầu ra. Đầu ra của bộ giảm tốc được lưu trữ trên HDFS.

8. Đối với nhiều chức năng giảm, người dùng chỉ định số lượng bộ giảm. Khi có nhiều tác vụ giảm, các tác vụ bản đồ sẽ phân vùng đầu ra của chúng, tạo một phân vùng cho mỗi tác vụ giảm.

SỢI

YARN là lớp quản lý tài nguyên trong Hadoop. Nó lên lịch tác vụ trong cụm Hadoop và gán tài nguyên cho các ứng dụng đang chạy trong cụm. Nó chịu trách nhiệm cung cấp các tài nguyên tính toán cần thiết để thực thi các ứng dụng.

Có hai daemon YARN đang chạy trong cụm Hadoop để phục vụ các dịch vụ cốt lõi của YARN. Đó là:

a. ResourceManager

Nó là daemon chính của YARN. Nó chạy trên nút chính trên mỗi cụm để quản lý các tài nguyên trên toàn cụm. ResourceManager có hai thành phần chính là Bộ lập lịch ApplicationManager.

Bộ lập lịch phân bổ tài nguyên cho các ứng dụng khác nhau đang chạy trong cụm.

ApplicationManager tiếp nhận công việc do khách hàng gửi và thương lượng vùng chứa để thực thi ApplicationMaster dành riêng cho ứng dụng và khởi động lại vùng chứa ApplicationMaster nếu không thành công.

b. NodeManager

NodeManager là daemon nô lệ của YARN. Nó chạy trên tất cả các nút nô lệ trong cụm. Nó chịu trách nhiệm khởi chạy và quản lý các vùng chứa trên các nút. Vùng chứa thực thi các quy trình dành riêng cho ứng dụng với một tập hợp tài nguyên hạn chế như bộ nhớ, CPU, v.v.

Khi NodeManager khởi động, nó sẽ tự thông báo cho ResourceManager. Nó định kỳ gửi một nhịp tim đến ResourceManager. Nó cung cấp tài nguyên cho cụm.

c. ApplicationMaster

ApplicationMaster cho mỗi ứng dụng thương lượng các bộ lập lịch biểu mẫu vùng chứa và theo dõi trạng thái vùng chứa cũng như giám sát tiến trình của vùng chứa.

Khách hàng nộp đơn đăng ký tới ResourceManager. ResourceManager liên hệ với NodeManager khởi chạy và giám sát các vùng chứa tính toán trên các nút trong cụm. Vùng chứa thực thi ApplicationMaster.

Tác vụ MapReduce và ApplicationMaster chạy trong các vùng chứa được lên lịch bởi ResourceManager và được quản lý bởi NodeManagers.

Bây giờ chúng ta hãy tóm tắt cách Hadoop hoạt động nội bộ:

1. HDFS chia dữ liệu đầu vào của máy khách thành các khối có kích thước 128 MB. Tùy thuộc vào yếu tố sao chép, các bản sao của các khối được tạo ra. Các khối và bản sao của chúng được lưu trữ trên các DataNodes khác nhau.

2. Khi tất cả các khối được lưu trữ trên HDFS DataNodes, người dùng có thể xử lý dữ liệu.

3. Để xử lý dữ liệu, khách hàng gửi chương trình MapReduce cho Hadoop.

4. Sau đó ResourceManager lên lịch chương trình do người dùng gửi trên các nút riêng lẻ trong cụm.

5. Sau khi tất cả các nút hoàn tất quá trình xử lý, đầu ra được ghi trở lại HDFS.

Tóm tắt

Trong bài viết này, chúng tôi đã nghiên cứu toàn bộ hoạt động của Hadoop. Tôi hy vọng sau khi đọc bài viết này, bạn hiểu cách Hadoop lưu trữ và xử lý một lượng lớn dữ liệu.

Bài báo cũng giải thích cách tài nguyên được lập lịch giữa các ứng dụng trong tài nguyên. Bài viết mô tả các daemon chính chạy trong cụm Hadoop và các thành phần cốt lõi của Hadoop.

Tôi hy vọng bạn hiểu cách Hadoop hoạt động nội bộ.

Tiếp tục học tập !!


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Tách và hợp nhất vùng Apache HBase

  2. NameNode Automatic Failover trong Hadoop HDFS là gì?

  3. Công việc của Map Only trong Hadoop là gì?

  4. Sự khác biệt giữa InputSplit và Blocks trong Hadoop

  5. Cách thực hiện:Sử dụng Giao diện Tiết kiệm HBase, Phần 1