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

HBase trong CDP có thể tận dụng S3 của Amazon như thế nào

Nền tảng dữ liệu Cloudera (CDP) cung cấp giải pháp ngoại vi cho phép triển khai Apache HBase sử dụng Amazon Simple Storage Service (S3) làm lớp bền vững chính để lưu dữ liệu bảng. Amazon S3 là một cửa hàng đồ vật có độ bền cao với cấu trúc chi phí trả cho mỗi lần sử dụng. Không có thành phần phía máy chủ nào để chạy hoặc quản lý cho S3 - tất cả những gì cần thiết là thư viện máy khách S3 và thông tin đăng nhập AWS. Tuy nhiên, HBase yêu cầu một hệ thống tệp nhất quán và nguyên tử, có nghĩa là nó không thể trực tiếp sử dụng S3 vì nó là một kho lưu trữ đối tượng nhất quán cuối cùng. Cả CDH và HDP đều chỉ cung cấp HBase chỉ sử dụng HDFS vì đã có những trở ngại lâu đời ngăn cản HBase sử dụng S3. Để giải quyết những vấn đề này, chúng tôi đã xây dựng một giải pháp ngoại vi mà chúng tôi đang cung cấp lần đầu tiên qua CDP. Khi bạn khởi chạy cụm Cơ sở dữ liệu hoạt động (HBase) trên CDP, HBase StoreFiles (tệp hỗ trợ cho bảng HBase) được lưu trữ trong S3 và HBase ghi trước nhật ký (WAL) được lưu trữ trong phiên bản HDFS chạy cùng với HBase theo thông lệ.

Chúng tôi sẽ mô tả ngắn gọn từng thành phần đi vào kiến ​​trúc này và vai trò của từng thành phần.

Bộ điều hợp hệ thống tệp S3A được Hadoop cung cấp để truy cập dữ liệu trong S3 thông qua các API hệ thống tệp tiêu chuẩn. Bộ điều hợp S3A cho phép các ứng dụng được viết dựa trên các API Hadoop truy cập dữ liệu trong S3 bằng cách sử dụng URI có dạng “s3a:// my_bucket /” thay vì “hdfs:// namenode:8020 /” như với HDFS. Khả năng chỉ định một “hệ thống tệp” mặc định để sử dụng làm cho việc di chuyển kiểu “nâng và chuyển” từ các cụm tại chỗ với HDFS sang các cụm dựa trên đám mây với S3 trở nên vô cùng đơn giản. HBase có thể được định cấu hình với vị trí lưu trữ cơ sở (ví dụ:thư mục trong HDFS hoặc thùng S3) cho tất cả dữ liệu ứng dụng cho phép HBase hoạt động giống nhau, bất kể dữ liệu đó ở HDFS hay S3.

S3Guard là một phần của dự án Apache Hadoop cung cấp danh sách thư mục nhất quán và trạng thái đối tượng cho bộ điều hợp S3A, minh bạch với ứng dụng. Để thực hiện điều này, S3Guard sử dụng cơ sở dữ liệu nhất quán, phân tán để theo dõi các thay đổi được thực hiện đối với S3 và đảm bảo rằng máy khách luôn nhìn thấy trạng thái chính xác từ S3. Nếu không có S3Guard, HBase có thể không thấy StoreFile mới được thêm vào bảng HBase. Nếu HBase thậm chí tạm thời không quan sát một tệp, điều này có thể gây mất dữ liệu trong HBase. Tuy nhiên, S3guard không cung cấp mọi thứ mà HBase yêu cầu để sử dụng S3.

HBase Object Store Semantics (hay chỉ là “HBOSS”) là một dự án phần mềm mới thuộc dự án Apache HBase được xây dựng đặc biệt để thu hẹp khoảng cách giữa S3Guard và HBase. HBOSS là mặt tiền trên đầu bộ điều hợp S3A và S3Guard sử dụng khóa phân tán để đảm bảo rằng các hoạt động của HBase có thể nguyên tử thao tác các tệp của nó trên S3. Một ví dụ mà HBase yêu cầu tính nguyên tử là đổi tên thư mục. Với máy khách S3, việc đổi tên được thực hiện như một bản sao của dữ liệu nguồn đến đích, sau đó là xóa dữ liệu nguồn. Nếu không có khóa mà HBOSS cung cấp, HBase có thể thấy hoạt động đổi tên đang diễn ra có thể gây mất dữ liệu. Để thực hiện khóa phân tán này, HBOSS sử dụng Apache ZooKeeper. Việc sử dụng lại ZooKeeper là theo thiết kế vì HBase đã yêu cầu phiên bản ZooKeeper để đảm bảo rằng tất cả các dịch vụ HBase đang hoạt động cùng nhau. Do đó, việc kết hợp HBOSS không yêu cầu thêm gánh nặng quản lý dịch vụ và thu hẹp khoảng cách về những gì HBase yêu cầu để sử dụng S3 với S3Guard.

Việc định cấu hình HBase để sử dụng S3 cho StoreFiles của nó mang lại nhiều lợi ích cho người dùng của chúng tôi. Một trong những lợi ích đó là người dùng có thể tách bộ nhớ và tính toán của họ. Nếu có những thời điểm không cần truy cập vào HBase, HBase có thể bị tắt hoàn toàn và tất cả các tài nguyên máy tính được thu hồi để loại bỏ mọi chi phí vận hành. Khi cần truy cập lại HBase, cụm HBase có thể được tạo lại, trỏ đến cùng một dữ liệu trong S3. Khi khởi động, HBase có thể tự khởi tạo lại chỉ từ dữ liệu trong S3.

Sử dụng S3 để lưu trữ HBase StoreFiles có một số thách thức. Một trong những vấn đề như vậy là độ trễ tăng lên khi tra cứu ngẫu nhiên một tệp trong S3 so với HDFS. Độ trễ tăng lên trong truy cập S3 sẽ dẫn đến việc Lấy và quét HBase mất nhiều thời gian hơn so với bình thường với HDFS. Độ trễ của S3 thay đổi từ 10 đến 100 mili giây so với phạm vi 0,1 đến 9 mili giây với HDFS. CDP có thể giảm tác động của độ trễ S3 này bằng cách tự động định cấu hình HBase để sử dụng BucketCache. Với BucketCache được bật, độ trễ của S3 chỉ gặp phải lần đầu tiên StoreFile được đọc ra khỏi S3. Sau khi HBase đọc một tệp, nó sẽ cố gắng lưu vào bộ đệm dữ liệu thô để thay thế các lần đọc S3 chậm bằng các lần đọc bộ nhớ cục bộ nhanh. Khi một cụm HBase được khởi chạy qua CDP, nó sẽ tự động được định cấu hình để lưu vào bộ đệm dữ liệu đã đọc gần đây từ bộ nhớ trong S3 để đọc nhanh hơn dữ liệu “nóng”.

Chúng tôi vô cùng vui mừng được cung cấp những khả năng mới này cho người dùng của mình. Hãy dùng thử HBase chạy trên S3 trong mẫu Cơ sở dữ liệu hoạt động trong CDP ngay hôm nay!


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Cách thực hiện:Sử dụng Giao diện Tiết kiệm HBase, Phần 1

  2. Lớp giảm tốc Hadoop trong MapReduce là gì?

  3. Triển khai ứng dụng trên Cơ sở dữ liệu hoạt động CDP (COD)

  4. Tổng quan về nhân bản Apache HBase

  5. Đường dẫn ghi Apache HBase