Đối với những người đã theo dõi tin tức, bạn có thể biết rằng công ty khởi nghiệp mã nguồn mở Apache Hadoop cuối cùng đã trở thành một công nghệ có sẵn. Đó là một hành trình dài, nhưng giờ đây chúng ta đã đến thời điểm mà tất cả chúng ta đều có thể tận hưởng những lợi ích từ việc có thể xây dựng các trung tâm dữ liệu hiệu quả hơn ít phần cứng và phần mềm hơn. Nếu bạn vẫn đang loay hoay tìm cách xây dựng trung tâm dữ liệu của riêng mình so với việc phần cứng từ các nhà cung cấp lớn như Dell hoặc HP. Có nhiều lợi thế khi sở hữu phần cứng của riêng bạn, đặc biệt là khi nói đến việc triển khai kiến thức Hadoop mạnh mẽ. Bạn có thể lựa chọn từ nhiều nền tảng và kiến trúc lưu trữ khác nhau. Bạn cũng có thể chọn công thức tối ưu hóa nhất để chạy khối lượng công việc của mình.


Lịch sử của Hadoop

Hadoop là một khung phần mềm để xử lý dữ liệu. Nó được phát triển bởi Google vào cuối những năm 2002 và được phát hành lần đầu tiên vào năm 2009. Nó được thiết kế để trở thành một mã nguồn mở thay thế cho phần mềm Hadoop độc quyền được sử dụng bởi các công ty như Yahoo và Facebook. Hadoop được sử dụng để lưu trữ và xử lý một lượng lớn dữ liệu, chẳng hạn như dữ liệu từ các trang web, mạng xã hội và cảm biến. Nó cũng được sử dụng để phân tích các tập dữ liệu lớn. Hadoop được thiết kế để có thể mở rộng và linh hoạt. Điều này cho phép nó được sử dụng trong nhiều môi trường khác nhau,bao gồm các trung tâm dữ liệu quy mô lớn và các dịch vụ trực tuyến. Hadoop ban đầu được phát triển như một cách để lưu trữ và xử lý một lượng lớn dữ liệu. Tuy nhiên, nó đã được điều chỉnh để sử dụng cho nhiều mục đích khác nhau, bao gồm cả phân tích và lưu trữ.


Hadoop là gì?

Hadoop là một khung phần mềm cho phép bạn lưu trữ và phân tích một lượng lớn dữ liệu. Ban đầu , nó được phát triển bởi Google để giúp họ phân tích các tập dữ liệu lớn và hiểu chúng. Ngày nay, nó được nhiều công ty khác sử dụng để lưu trữ, xử lý và phân tích dữ liệu. Hadoop là một công cụ tuyệt vời cho các nhà khoa học dữ liệu vì nó cho phép bạn lưu trữ và phân tích lượng lớn dữ liệu một cách an toàn và hiệu quả. Nó cũng có thể được các công ty sử dụng để lưu trữ và phân tích dữ liệu của họ theo cách hiệu quả hơn các phương pháp truyền thống. Hadoop là một khung phần mềm cho phép bạn lưu trữ và phân tích một lượng lớn dữ liệu. Ban đầu, nó được phát triển bởi Google để giúp họ phân tích các tập dữ liệu lớn và hiểu chúng. Ngày nay, nó được nhiều công ty khác nhau sử dụng để lưu trữ, xử lý và phân tích dữ liệu.


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

Sơ đồ minh họa loại bỏ cách Hadoop tương tác với các thành phần khác của hệ sinh thái.

- HDFS: Giải pháp lưu trữ quy mô lớn này đã trở nên thiết yếu trong các trung tâm dữ liệu phân tán cao hiện nay. GFS của Google là một hệ thống tệp đầy đủ tính năng mang lại hiệu suất nhanh hơn gấp 4 lần so với HDFS. HDFS của Google là một giải pháp nguồn mở phổ biến để lưu trữ trệp Hadoop. Nó có thể mở rộng, được tối ưu hóa cho khối lượng lớn dữ liệu cần đọc và bao gồm phân tích tổng hợp để theo dõi việc sử dụng và lập kệ hoạch cho sự phát triển trong tương lai. Cách tiếp cận của Google để quản lý dữ liệu với GFS của nó đã dẫn đến một giải pháp lưu trữ dễ mở rộng quy mô và có thể xử lý nhanh chóng một lượng lớn dữ liệu được phân phối. Nó là một giải pháp hấp dẫn để phân tích và xử lý dữ liệu quy mô lớn.

- Yarn: Người lập lịch tài nguyên chịu trách nhiệm xác định ai nhận được tài nguyên nào vào thời điểm nào. Nó có thể chịu trách nhiệm xác định xem ai nhận được tài nguyên nào tại thời điểm đó, hoặc nó có thể chịu trách nhiệm xác định thời điểm có sẵn tài nguyên để sử dụng. Sự hỗ trợ lẫn nhau có thể được sử dụng để xác định ai sẽ nhận được những nguồn lực nào và khi nào. Có nhiều biến thể về chủ đề này.

- Map Reduce: Map-Reduce là một kỹ thuật xử lý dữ liệu ngày càng trở nên phổ biến trong những năm gần đây. Đây là một dạng tính toán song song cho phép bạn thực hiện các tác vụ quy mô lớn, lặp đi lặp lại trên các tập dữ liệu lớn một cách hiệu quả và hiệu quả. Trong hệ thống thu gọn bản đồ, mỗi tác vụ được cung cấp một tập dữ liệu đầu vào và một tập dữ liệu đầu ra. Các nhiệm vụ sau đó được yêu cầu kết hợp dữ liệu đầu vào với dữ liệu đầu ra để tạo ra dữ liệu mới. Kết quả cuối cùng sau đó được lưu trữ trong cơ sở dữ liệu, cơ sở dữ liệu này có thể được các ứng dụng khác truy vấn đề lấy thông tin cần thiết. Hệ thống thu nhỏ bản đồ đặc biệt hữu ích cho các tác vụ như khai thác dữ liệu, phân tích dữ liệu và học máy.

- Hadoop Common: Hadoop là một nền tảng máy tính phân tán, mã nguồn mở, có khả năng mở rộng cao, cho phép bạn lưu trữ và xử lý một lượng lớn dữ liệu. Nó được sử dụng để lưu trữ và phân tích dữ liệu từ nhiều nguồn khác nhau, bao gồm cơ sở dữ liệu, máy chủ web và hệ thống tệp. Hadoop được thiết kế để có thể mở rộng bằng cách phân phối quá trình xử lý dữ liệu trên một số lượng lớn máy tính. Nó cũng cho phép bạn lưu trữ và phân tích dữ liệu theo cách nhanh hơn so với các phương pháp truyền thống. Hadoop được sử dụng để lưu trữ và phân tích dữ liệu từ nhiều nguồn khác nhau, bao gồm cơ sở dữ liệu, máy chủ web và hệ thống tệp. Nó được thiết kế để có thể mở rộng bằng cách phân phối quá trình xử lý dữ liệu trên một số lượng lớn máy tính. Nó cũng cho phép bạn lưu trữ và phân tích dữ liệu theo cách nhanh hơn so với các phương pháp truyền thống.


Kiến trúc Hadoop

Hadoop là một nền tảng máy tính phân tán, mã nguồn mở, có khả năng mở rộng cao, cho phép bạn lưu trữ và xử lý một lượng lớn dữ liệu. Nó được sử dụng để lưu trữ và phân tích dữ liệu từ nhiều nguồn khác nhau, bao gồm cơ sở dữ liệu, máy chủ web và hệ thống tệp. Hadoop được thiết kế để có thể mở rộng bằng cách phân phối quá trình xử lý dữ liệu trên một số lượng lớn máy tính. Nó cũng cho phép bạn lưu trữ và phân tích dữ liệu theo cách nhanh hơn so với các phương pháp truyền thống. Hadoop được sử dụng để lưu trữ và phân tích dữ liệu từ nhiều nguồn khác nhau, bao gồm cơ sở dữ liệu, máy chủ web và hệ thống tệp. Nó được thiết kế để có thể mở rộng bằng cách phân phối quá trình xử lý dữ liệu trên một số lượng lớn máy tính. Nó cũng cho phép bạn lưu trữ và phân tích dữ liệu theo cách nhanh hơn so với các phương pháp truyền thống.

HFDS

Nút chính theo dõi trạng thái của tất cả các nút dữ liệu. Nếu một nút dữ liệu gặp trục trặc, nút chính sẽ đảm nhận việc xử lý khối đó. Các nút nô lệ tự xử lý dữ liệu. HDFS yêu cầu kết nối Internet tốc độ cao. Thông thường, tốt nhất là có kết nối mạng ít nhất 10 Mbps. HDFS hoạt động dựa trên thuật toán dựa trên thời gian, có nghĩa là mọi khối được xử lý trong một khoảng thời gian định trước. Điều này cung cấp khả năng mở rộng cao vì tất cả các nút xử lý dữ liệu trong thời gian thực. HDFS là một giải pháp tuyệt vời cho kho dữ liệu và các nhiệm vụ kinh doanh thông minh. Nó cũng là một giải pháp tốt để phân tích dữ liệu tần số cao, khối lượng lớn.

1. NameNode và DataNode

Khi nhận được kết nối máy khách từ máy chủ chính, Mã tên đang chạy trên máy chủ chính sẽ xem xét cả không gian tên cục bộ và không gian tên của máy chủ chính để tìm các bản ghi phù hợp. NameNode chạy trên máy chủ chính sau đó thực hiện tra cứu và trả về danh sách các bản ghi phù hợp với truy vấn. DataNodes sau đó lấy các bản ghi và bắt đầu lưu trữ chúng. Một khối dữ liệu là một bản ghi có dữ liệu. Các nút dữ liệu sử dụng các khối dữ liệu để lưu trữ các loại dữ liệu khác nhau, chẳng hạn như văn bản, hình ảnh, video, v.v. NameNode duy trì kết nối nút dữ liệu với các máy khách dựa trên trạng thái sao chép của DataNodes. Nếu một DataNode gặp sự cố, máy khách vẫn có thể giao tiếp với NameNode. Sau đó, máy khách nhận danh sách các khối dữ liệu mới nhất từ ​​NameNode và giao tiếp với DataNode có khối dữ liệu mới nhất.

Do đó, DataNode là một công việc đòi hỏi nhiều tính toán. Do đó, chúng tôi khuyên bạn nên sử dụng DataNode nhỏ nhất có thể. Vì DataNode lưu trữ dữ liệu, nên chọn một nút gần trung tâm của dữ liệu. Trong một hệ thống phân tán, tất cả các nút phải chạy cùng một phiên bản Java, vì vậy bạn nên sử dụng Java mã nguồn mở. Nếu có nhiều DataNodes, thì chúng phải hoạt động song song để đạt được một mức hiệu suất nhất định.

2. Chặn trong HDFS

Tệp được lưu trữ trong Hadoop có kích thước khối 128 MB hoặc 256 MB mặc định.

Chúng tôi phải đảm bảo rằng dung lượng mà ứng dụng của chúng tôi sử dụng không vượt quá mức lưu trữ dữ liệu. Nếu bộ nhớ mà ứng dụng của chúng tôi sử dụng quá nhiều, thì chúng tôi phải chọn kích thước khối của mình để tránh tăng siêu dữ liệu quá mức. Nếu bạn đang sử dụng kích thước khối tiêu chuẩn là 16KB, thì bạn đã sẵn sàng. Bạn thậm chí sẽ không phải nghĩ về nó. Kích thước khối HDFS của chúng tôi sẽ được chọn tự động. Tuy nhiên, nếu chúng ta đang sử dụng kích thước khối lớn, thì chúng ta phải nghĩ đến sự bùng nổ siêu dữ liệu. Chúng tôi có thể giữ siêu dữ liệu nhỏ nhất có thể hoặc giữ nó lớn nhất có thể. HDFS có tùy chọn giữ siêu dữ liệu càng lớn càng tốt.

3. Quản lý nhân rộng

Khi một nút bị lỗi, dữ liệu được lưu trữ trên đó sẽ được sao chép sang một nút khỏe khác. Quá trình này được gọi là "sao chép". Nếu một DataNode bị lỗi, dữ liệu được lưu trữ trên nó sẽ không bị mất. Nó chỉ được lưu trữ trên một DataNode khác. Đây là một điều tốt vì nó giúp ích cho việc cung cấp dữ liệu cao. Khi bạn đang sử dụng DataNode làm nơi lưu trữ chính cho dữ liệu của mình, bạn phải lưu ý rằng nó là một tài nguyên có tính khả dụng cao. Nếu bộ nhớ chính cho dữ liệu của bạn là DataNode, bạn phải đảm bảo có cơ chế sao lưu và phục hồi thích hợp.

Một tệp nhất định có thể có hệ số nhân bản là 3 hoặc 1, nhưng nó sẽ yêu cầu dung lượng gấp 3 lần nếu chúng ta tiếp tục sử dụng hệ số nhân bản là 3. NameNode theo dõi báo cáo khối của mỗi nút dữ liệu và bất cứ khi nào khối thiếu hoặc quá mức -replicated, nó thêm hoặc loại bỏ các bản sao cho phù hợp.

4. Nhận thức về Rack

Khi một khối bị xóa khỏi giá đỡ, khối có sẵn tiếp theo sẽ được đặt trên giá. Khi một khối được cập nhật, khối trước đó sẽ tự động được cập nhật trong cùng một giá. Điều này đảm bảo tính nhất quán của dữ liệu trên toàn bộ mạng lưu trữ. Trong trường hợp có lỗi ở bất kỳ nút nào trong số các nút lưu trữ dữ liệu, các nút lưu trữ khác có thể được cảnh báo thông qua thuật toán nhận biết giá đỡ để đảm nhận trách nhiệm của nút bị lỗi. Điều này giúp cung cấp khả năng chuyển đổi dự phòng trên mạng lưu trữ. Điều này giúp cung cấp khả năng lưu trữ dữ liệu sẵn có cao. Vì dữ liệu được lưu trữ trong HDFS rất lớn, nên sử dụng nhiều nút lưu trữ để truy cập dữ liệu tốc độ cao là điều hợp lý. HDFS sử dụng kiến ​​trúc lưu trữ dữ liệu phân tán để cung cấp khả năng truy cập dữ liệu tốc độ cao cho người dùng. Kiến trúc lưu trữ dữ liệu phân tán này cho phép xử lý song song dữ liệu trong nhiều nút dữ liệu.

MapReduce

MapReduce là một ngôn ngữ xử lý dữ liệu và một khung phần mềm cho phép bạn xử lý một lượng lớn dữ liệu một cách đáng tin cậy và hiệu quả. Nó rất phù hợp cho các ứng dụng sử dụng nhiều dữ liệu, thời gian thực và / hoặc phát trực tuyến. Về cơ bản, MapReduce cho phép bạn phân vùng dữ liệu của mình và chỉ xử lý các mục khi chúng cần thiết.

Một công việc thu nhỏ bản đồ bao gồm một số bản đồ và giảm các chức năng. Mỗi hàm bản đồ tạo, phân tích cú pháp, chuyển đổi và lọc dữ liệu trước khi chuyển nó cho hàm tiếp theo. Giảm các nhóm chức năng, tổng hợp và phân vùng dữ liệu trung gian này từ các chức năng bản đồ. Tác vụ bản đồ chạy trên cùng một nút với nguồn đầu vào. Tác vụ bản đồ chịu trách nhiệm tạo thống kê tóm tắt về dữ liệu dưới dạng báo cáo. Báo cáo có thể được xem trên trình duyệt web hoặc được in ra.

Đầu ra của một nhiệm vụ bản đồ giống như kết quả của một nhiệm vụ rút gọn. Sự khác biệt duy nhất là tác vụ bản đồ trả về một kết quả trong khi tác vụ rút gọn trả về một cấu trúc dữ liệu có thể áp dụng để phân tích thêm. Tác vụ bản đồ thường lặp lại và được kích hoạt khi khối lượng dữ liệu trên nguồn lớn hơn khối lượng dữ liệu có thể được xử lý trong một khoảng thời gian ngắn.

Yarn

YARN, còn được gọi là Yet Another Resource Negotiator, là một trình nền quản lý tài nguyên và lập lịch / giám sát công việc trong Hadoop. Trình quản lý tài nguyên trong YARN tách biệt việc quản lý tài nguyên khỏi việc lên lịch và giám sát công việc. Một ResourceManager toàn cầu giám sát các hoạt động cho toàn bộ mạng YARN, bao gồm cả ApplicationMaster cho mỗi ứng dụng. Một công việc hoặc một DAG công việc có thể được định nghĩa là một ứng dụng. ResourceManager quản lý tài nguyên cho tất cả các ứng dụng cạnh tranh trong khuôn khổ YARN. NodeManager giám sát việc sử dụng tài nguyên của vùng chứa và chuyển nó cho ResourceManger. Có các tài nguyên như CPU, bộ nhớ, đĩa và kết nối, trong số những tài nguyên khác. Để thực hiện và giám sát ứng dụng, ApplcationMaster nói chuyện với ResourceManager và NodeManager để xử lý và quản lý tài nguyên.


Ưu điểm của kiến trúc Hadoop

- Các tập dữ liệu khổng lồ mà Hadoop có thể lưu trữ và phân phối trên hàng trăm máy chủ rẻ tiền cũng có khả năng xử lý rất nhiều dữ liệu. Không giống như các RDBMS không thể hoạt động như một nền tảng lưu trữ mở rộng, Hadoop cho phép các doanh nghiệp chạy các ứng dụng trên hàng nghìn nút nơi có hàng nghìn terabyte dữ liệu đang được xử lý.

- Bộ dữ liệu bùng nổ của một công ty là một vấn đề tốn kém trong các hệ quản trị cơ sở dữ liệu quan hệ truyền thống. Điều này là do việc tính toán số lượng dữ liệu khổng lồ như vậy là cực kỳ tốn kém. Để cắt giảm chi phí, một số công ty đã dán dữ liệu xuống mẫu như họ mong muốn, giả định rằng một số loại dữ liệu nhất định quan trọng hơn những loại dữ liệu khác. Thủ tục này có thể có hiệu quả trong ngắn hạn, nhưng nó có thể đã phá hủy toàn bộ tập dữ liệu thô vì nó quá tốn kém để lưu giữ.

- Một nguồn dữ liệu duy nhất (chẳng hạn như phương tiện truyền thông xã hội) có thể được truy cập bởi doanh nghiệp sử dụng Hadoop, cung cấp quyền truy cập vào nhiều loại dữ liệu khác nhau (có cấu trúc và không có cấu trúc). Các doanh nghiệp có thể sử dụng Hadoop để có được những hiểu biết mới về doanh nghiệp từ các nguồn dữ liệu như phương tiện truyền thông xã hội, thông tin liên lạc qua email. Hadoop có thể được sử dụng cho nhiều mục đích, từ xử lý nhật ký đến lưu trữ dữ liệu để phát hiện gian lận, trong số những mục đích khác.

- Hệ thống tệp phân tán của Hadoop “lập bản đồ” dữ liệu ở bất kỳ đâu trên một cụm, do đó giảm chi phí lưu trữ. Nó cũng làm cho việc xử lý dữ liệu nhanh hơn vì các công cụ để xử lý dữ liệu thường nằm trên cùng một máy chủ nơi dữ liệu được đặt. Khối lượng lớn dữ liệu phi cấu trúc có thể được xử lý hiệu quả bằng Hadoop trong vài phút hoặc vài giờ, tùy thuộc vào lượng dữ liệu có liên quan.

- Khả năng chịu lỗi của Hadoop là một lợi thế đáng kể. Khi dữ liệu được chuyển đến các nút riêng lẻ trong cụm, nó cũng được nhân bản sang các nút khác trong trường hợp bị lỗi, để khi nút đó bị hỏng, sẽ có một bản sao khác có sẵn để sử dụng.


Nhược điểm của kiến trúc Hadoop

- Rất khó để quản lý một ứng dụng Hadoop phức tạp như bảo mật. Hầu như không có bất kỳ ví dụ đơn giản nào có thể được tìm thấy trong mô hình bảo mật. Nếu bất kỳ ai không có khả năng bật nó, dữ liệu của bạn có thể gặp rủi ro. Hadoop cũng thiếu mã hóa ở cấp độ lưu trữ và mạng, mặc dù nó phổ biến như một công cụ giám sát của chính phủ.

- Bản chất của Hadoop khiến việc vận hành nó trở thành một nỗ lực đầy rủi ro. Do việc sử dụng rộng rãi và gây tranh cãi liên tục của Java, nó đã bị lạm dụng rộng rãi bởi tội phạm mạng và những kẻ xấu khác.

- Dữ liệu lớn không chủ yếu được sử dụng bởi các tập đoàn lớn, tuy nhiên các nền tảng dữ liệu nhỏ như Hadoop không được trang bị cho nó. Hệ thống tệp phân tán Hadoop, vì dung lượng của nó, không thể xử lý hiệu quả các tệp nhỏ. Ví dụ, một lượng nhỏ dữ liệu không thể được lưu trữ trong Hệ thống tệp phân tán Hadoop.

- Điều quan trọng là các tổ chức phải đảm bảo rằng họ đang chạy phiên bản ổn định mới nhất của Hadoop hoặc họ sử dụng nhà cung cấp bên thứ ba có thể giải quyết các vấn đề như thế này.

- Một giải pháp khả thi được mô tả trong bài báo. Mỗi nền tảng này có thể cải thiện hiệu quả và độ tin cậy của việc thu thập, tổng hợp và tích hợp dữ liệu bằng cách tăng thêm giá trị cho nó. Ý tưởng chính là các công ty có thể bỏ lỡ những lợi ích lớn nếu chỉ sử dụng Hadoop.


Kết luận

Hadoop là một khung phần mềm để xử lý dữ liệu. Nó được thiết kế để có thể mở rộng, linh hoạt và dễ sử dụng. Nó được sử dụng để lưu trữ và xử lý một lượng lớn dữ liệu, chẳng hạn như từ cơ sở dữ liệu, dịch vụ web và tệp hàng loạt. Hadoop được sử dụng trong nhiều ứng dụng khác nhau, bao gồm lưu trữ dữ liệu, phân tích Dữ liệu lớn và điện toán đám mây.
Hadoop có một số thành phần hoạt động cùng nhau để xử lý dữ liệu. Thành phần cốt lõi là khung công tác MapReduce. Khuôn khổ này cho phép xử lý dữ liệu bằng cách chia các nhiệm vụ thành các phần nhỏ và sau đó kết hợp chúng lại thành các nhiệm vụ lớn hơn. Hadoop cũng sử dụng một hệ thống tệp phân tán được gọi là HDFS để lưu trữ dữ liệu. HDFS cho phép lượng lớn dữ liệu được lưu trữ hiệu quả trên nhiều máy. Hadoop được thiết kế để dễ sử dụng và linh hoạt. Nó có thể được sử dụng trong nhiều môi trường khác nhau, bao gồm đám mây, cài đặt tại chỗ và trong trung tâm dữ liệu