Database
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Database

Tìm hiểu Hệ thống đầu ra đầu vào Hadoop

Không giống như bất kỳ hệ thống con I / O nào, Hadoop cũng đi kèm với một tập hợp các nguyên thủy. Những cân nhắc sơ khai này, mặc dù có bản chất chung chung, tất nhiên cũng đi kèm với hệ thống IO Hadoop với một số ý nghĩa đặc biệt của nó. Hadoop xử lý nhiều terabyte tập dữ liệu; một sự cân nhắc đặc biệt về các nguyên thủy này sẽ đưa ra ý tưởng về cách Hadoop xử lý đầu vào và đầu ra dữ liệu. Bài viết này lướt nhanh qua những nguyên thủy này để đưa ra quan điểm về hệ thống đầu ra đầu vào Hadoop.

Tính toàn vẹn của dữ liệu

Tính toàn vẹn của dữ liệu có nghĩa là dữ liệu phải luôn chính xác và nhất quán trong tất cả các hoạt động lưu trữ, xử lý và truy xuất. Để đảm bảo rằng không có dữ liệu nào bị mất hoặc bị hỏng trong quá trình tồn tại và xử lý, Hadoop duy trì các ràng buộc nghiêm ngặt về tính toàn vẹn của dữ liệu. Mọi thao tác đọc / ghi đều diễn ra trong đĩa, do đó, thông qua mạng dễ xảy ra lỗi. Và, khối lượng dữ liệu mà Hadoop xử lý chỉ làm trầm trọng thêm tình hình. Cách thông thường để phát hiện dữ liệu bị hỏng là thông qua tổng kiểm tra. A tổng kiểm tra được tính toán khi dữ liệu đi vào hệ thống lần đầu tiên và được gửi qua kênh trong quá trình truy xuất. Kết thúc truy xuất sẽ tính toán tổng kiểm tra một lần nữa và khớp với các tổng kiểm tra đã nhận. Nếu nó khớp chính xác thì dữ liệu được coi là không có lỗi, nếu không thì nó có lỗi. Nhưng vấn đề là - điều gì sẽ xảy ra nếu bản thân tổng kiểm tra được gửi đi bị hỏng? Điều này rất khó xảy ra vì nó là một dữ liệu nhỏ, nhưng không phải là một khả năng không thể phủ nhận. Sử dụng đúng loại phần cứng, chẳng hạn như bộ nhớ ECC có thể được sử dụng để giảm bớt tình huống.

Đây chỉ là phát hiện. Do đó, để sửa lỗi, một kỹ thuật khác, được gọi là CRC (Kiểm tra dự phòng theo chu kỳ), được sử dụng.

Hadoop đưa nó đi xa hơn và tạo ra một tổng kiểm tra riêng biệt cho mỗi 512 byte dữ liệu (mặc định). Bởi vì CRC-32 chỉ là 4 byte, chi phí lưu trữ không phải là một vấn đề. Tất cả dữ liệu đi vào hệ thống được xác nhận bởi các nút dữ liệu trước khi được chuyển tiếp để lưu trữ hoặc xử lý thêm. Dữ liệu được gửi đến đường dẫn datanode được xác minh thông qua tổng kiểm tra và bất kỳ lỗi nào được tìm thấy sẽ được thông báo ngay cho khách hàng bằng ChecksumException . Ứng dụng khách đọc từ datanode cũng trải qua cùng một bài tập. Các nút dữ liệu duy trì nhật ký xác minh tổng kiểm tra để theo dõi khối đã xác minh. Nhật ký được cập nhật bởi datanode khi nhận được tín hiệu xác minh khối thành công từ máy khách. Loại thống kê này giúp ngăn chặn ổ đĩa xấu.

Ngoài ra, xác minh định kỳ trên kho lưu trữ khối được thực hiện với sự trợ giúp của DataBlockScanner chạy cùng với luồng datanode trong nền. Điều này bảo vệ dữ liệu khỏi bị hỏng trong phương tiện lưu trữ vật lý.

Hadoop duy trì một bản sao hoặc các bản sao của dữ liệu. Điều này đặc biệt được sử dụng để khôi phục dữ liệu từ tham nhũng lớn. Sau khi máy khách phát hiện lỗi trong khi đọc một khối, nó ngay lập tức báo cáo với nút dữ liệu về khối bị lỗi từ nút tên trước khi ném ChecksumException . Sau đó, nút tên đánh dấu nó là một khối xấu và lên lịch cho bất kỳ tham chiếu nào khác tới khối đó thành các bản sao của nó. Bằng cách này, bản sao được duy trì với các bản sao khác và khối xấu được đánh dấu sẽ bị xóa khỏi hệ thống.

Đối với mọi tệp được tạo trong Hadoop LocalFileSystem , một tệp ẩn có cùng tên trong cùng thư mục với phần mở rộng là . .crc được tạo ra. Tệp này duy trì tổng kiểm tra của từng đoạn dữ liệu (512 byte) trong tệp. Việc duy trì siêu dữ liệu giúp phát hiện lỗi đọc trước khi ném ChecksumException bởi LocalFileSystem .

Nén

Hãy nhớ rằng khối lượng dữ liệu mà Hadoop xử lý, nén không phải là một điều gì đó xa xỉ mà là một yêu cầu. Có rất nhiều lợi ích rõ ràng của việc nén tệp được sử dụng đúng cách bởi Hadoop. Nó tiết kiệm các yêu cầu lưu trữ và là khả năng phải có để tăng tốc độ truyền dữ liệu qua mạng và đĩa. Có rất nhiều công cụ, kỹ thuật và thuật toán thường được sử dụng bởi Hadoop. Nhiều người trong số họ khá phổ biến và đã được sử dụng để nén tệp qua nhiều thời kỳ. Ví dụ:gzip, bzip2, LZO, zip, v.v. thường được sử dụng.

Serialization

Quá trình biến các đối tượng có cấu trúc thành dòng byte được gọi là tuần tự hóa . Điều này đặc biệt cần thiết để truyền dữ liệu qua mạng hoặc dữ liệu thô tồn tại trong đĩa. Hủy đăng ký chỉ là một quá trình ngược lại, trong đó một dòng byte được chuyển thành một đối tượng có cấu trúc. Điều này đặc biệt cần thiết cho việc triển khai đối tượng của các byte thô. Do đó, không có gì ngạc nhiên khi máy tính phân tán sử dụng điều này trong một số lĩnh vực riêng biệt:giao tiếp giữa các quá trình và tính bền vững của dữ liệu.

Hadoop sử dụng RPC (Cuộc gọi thủ tục từ xa) để thực hiện giao tiếp giữa các quá trình giữa các nút. Do đó, giao thức RPC sử dụng quá trình tuần tự hóa và giải mã hóa để kết xuất một thông điệp đến luồng byte và ngược lại và gửi nó qua mạng. Tuy nhiên, quy trình phải đủ nhỏ gọn để sử dụng tốt nhất băng thông mạng, cũng như nhanh chóng, có thể tương tác và linh hoạt để đáp ứng các bản cập nhật giao thức theo thời gian.

Hadoop có định dạng tuần tự hóa nhanh và nhỏ gọn của riêng mình, Writables , mà các chương trình MapReduce sử dụng để tạo khóa và các loại giá trị.

Cấu trúc dữ liệu của tệp

Có một số vùng chứa cấp cao xây dựng cấu trúc dữ liệu chuyên biệt trong Hadoop để chứa các loại dữ liệu đặc biệt. Ví dụ:để duy trì nhật ký nhị phân, SequenceFile vùng chứa cung cấp cấu trúc dữ liệu để duy trì các cặp khóa-giá trị nhị phân. Sau đó, chúng tôi có thể sử dụng khóa, chẳng hạn như dấu thời gian được đại diện bởi LongWille và có giá trị bằng Có thể đọc được , đề cập đến số lượng đã ghi.

Có một vùng chứa khác, một dẫn xuất được sắp xếp của SequenceFile , được gọi là MapFile . Nó cung cấp một chỉ mục để tra cứu thuận tiện theo khóa.

Hai vùng chứa này có thể tương tác với nhau và có thể được chuyển đổi cho nhau.

Kết luận

Đây chỉ là một cái nhìn tổng quan về hệ thống đầu vào / đầu ra của Hadoop. Chúng tôi sẽ đi sâu vào nhiều chi tiết phức tạp trong các bài viết tiếp theo. Sẽ không quá khó để hiểu hệ thống đầu vào / đầu ra Hadoop nếu một người có hiểu biết cơ bản về hệ thống I / O nói chung. Hadoop chỉ đơn giản là đưa thêm một chút nước vào nó để theo kịp với tính chất phân tán của nó, hoạt động với quy mô dữ liệu khổng lồ. Đó là tất cả.

Tham khảo

Trắng, Tom. Hadoop, Hướng dẫn cuối cùng, 2009 . O’Reilly Publications.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Giới thiệu về Mô hình Dữ liệu ER

  2. Lập kế hoạch năng lực sử dụng dữ liệu hiệu suất

  3. Tham số hóa đơn giản và các kế hoạch tầm thường - Phần 3

  4. Thống kê chờ Knee-Jerk:SOS_SCHEDULER_YIELD

  5. Tốc độ thông lượng tuần tự và nguồn cấp dữ liệu