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

HBase znodes là gì?

Apache ZooKeeper là một hệ thống máy khách / máy chủ để điều phối phân tán có giao diện tương tự như hệ thống tệp, trong đó mỗi nút (được gọi là znode ) có thể chứa dữ liệu và một tập hợp con. Mỗi znode có một tên và có thể được xác định bằng đường dẫn giống hệ thống tệp (ví dụ:/ root-znode / sub-znode / my-znode).

Trong Apache HBase, ZooKeeper điều phối, giao tiếp và chia sẻ trạng thái giữa Master và RegionServer. HBase có chính sách thiết kế chỉ sử dụng ZooKeeper cho dữ liệu tạm thời (nghĩa là cho sự điều phối và giao tiếp trạng thái). Do đó, nếu dữ liệu ZooKeeper của HBase bị xóa, chỉ các hoạt động tạm thời bị ảnh hưởng - dữ liệu có thể tiếp tục được ghi và đọc đến / từ HBase.

Trong bài đăng trên blog này, bạn sẽ có một chuyến tham quan ngắn về cách sử dụng HBase znodes. Phiên bản HBase được sử dụng để tham khảo ở đây là 0,94 (được vận chuyển bên trong CDH 4.2 và CDH 4.3), nhưng hầu hết các znodes đều có mặt trong các phiên bản trước và cũng có khả năng như vậy trong các phiên bản tương lai.

Đường dẫn znode gốc HBase có thể được định cấu hình bằng cách sử dụng hbase-site.xml và theo mặc định, vị trí là “/ hbase”. Tất cả các znode được tham chiếu bên dưới sẽ được đặt tiền tố bằng cách sử dụng vị trí mặc định / hbase và thuộc tính cấu hình cho phép bạn đổi tên znode cụ thể sẽ được liệt kê bên cạnh tên znode mặc định và được đánh dấu bằng kiểu in đậm.

ZooKeeper cung cấp một trình bao tương tác cho phép bạn khám phá trạng thái ZooKeeper - chạy nó bằng cách sử dụng hbase zkcli và đi qua znode qua ls , như trong một hệ thống tệp điển hình. Bạn cũng có thể lấy một số thông tin về nội dung znode bằng cách sử dụng get lệnh.

$ hbase zkcli
[zk: localhost:2181(CONNECTED) 0] ls /
[hbase, zookeeper]
[zk: localhost:2181(CONNECTED) 1] ls /hbase
[splitlog, online-snapshot, unassigned, root-region-server, rs, backup-masters, draining, table, master, shutdown, hbaseid]
[zk: localhost:2181(CONNECTED) 2] get /hbase/root-region-server
3008@u1310localhost,60020,1382107614265
dataLength = 44
numChildren = 0
...

Hoạt động

Các znodes mà bạn thường thấy nhất là các znodes điều phối các hoạt động như Gán khu vực, Tách nhật ký và Chuyển đổi dự phòng chính hoặc theo dõi trạng thái cụm chẳng hạn như vị trí bảng ROOT, danh sách Máy chủ khu vực trực tuyến và danh sách các Khu vực chưa được chỉ định .

/ hbase (Zookeeper.znode.parent) Znode gốc sẽ chứa tất cả các znode được HBase tạo / sử dụng
/ hbase / hbaseid (Zookeeper.znode.clusterId) Do Master khởi tạo với UUID xác định cụm. ID cũng được lưu trữ trên HDFS trong hdfs:/ : /hbase/hbase.id.
/ hbase / root-region-server (zookeeper.znode.osystemerver) Chứa vị trí của máy chủ lưu trữ vùng ROOT. Nó được khách hàng truy vấn để xác định Máy chủ khu vực chịu trách nhiệm ROOT và yêu cầu các vị trí META. (Vào năm 0.96, bảng ROOT đã bị xóa như một phần của HBASE-3171 và znode này được thay thế bằng / hbase / meta-region-server [zookeeper.znode.metaserver] chứa vị trí của máy chủ lưu trữ META.)
/ hbase / rs (Zookeeper.znode.rs) Khi khởi động, mỗi RegionServer sẽ tạo một znode con (ví dụ:/hbase/rs/m1.host) được cho là mô tả trạng thái “trực tuyến” của RegionServer. Thạc sĩ giám sát znode này để lấy danh sách Máy chủ Vùng “trực tuyến” và sử dụng danh sách đó trong quá trình Phân công / Cân bằng.
/ hbase / chưa giao (Zookeeper.znode.unassigned) Chứa znode con cho mỗi vùng chưa được gán (ví dụ:/ hbase / unassigned / ). Znode này được Người quản lý phân công sử dụng để khám phá các khu vực cần phân công. (Đọc phần này để tìm hiểu thêm về Trình quản lý nhiệm vụ.)
/ hbase / master (Zookeeper.znode.master) Cái "đang hoạt động" sẽ đăng ký địa chỉ của chính nó trong znode này khi khởi động, làm cho znode này trở thành nguồn trung thực để xác định máy chủ nào là Máy chủ.
/ hbase / backup-master (Zookeeper.znode.backup.masters) Mỗi Master không hoạt động sẽ tự đăng ký làm Master dự phòng bằng cách tạo một znode con (hbase / backup-master / m1.host). Znode này chủ yếu được sử dụng để theo dõi máy nào có sẵn để thay thế Master trong trường hợp hỏng hóc.
/ hbase / tắt máy (Zookeeper.znode.state) Mô tả trạng thái cụm, "Cụm có lên không?" Nó được tạo bởi Master khi khởi động và được Master xóa khi tắt máy. Nó được theo dõi bởi RegionServers.
/ hbase / draining (Zookeeper.znode.draining.rs) Được sử dụng để hủy truyền nhiều hơn một RegionServer cùng một lúc bằng cách tạo các znodes con có dạng serverName, port, startCode (ví dụ:/hbase/draining/m1.host,60020,1338936306752). Điều này cho phép bạn ngừng hoạt động nhiều Máy chủ Vùng mà không gặp rủi ro các vùng tạm thời được chuyển sang Máy chủ Vùng sẽ ngừng hoạt động sau này. Đọc phần này để tìm hiểu thêm về / hbase / draining.
/ hbase / bảng (Zookeeper.znode.masterTableEnableDisable) Được cái chủ sử dụng để theo dõi trạng thái bảng trong quá trình gán (ví dụ:trạng thái tắt / bật).
/ hbase / splitlog (Zookeeper.znode.splitlog) Được sử dụng bởi bộ tách nhật ký để theo dõi nhật ký đang chờ phát lại và nhiệm vụ của nó. (Đọc phần này để tìm hiểu thêm về cách tách nhật ký).

Bảo mật

Danh sách kiểm soát truy cập (ACL) và bộ đồng xử lý của Nhà cung cấp mã thông báo thêm hai znodes nữa:một để đồng bộ hóa quyền truy cập vào các ACL của bảng và một để đồng bộ hóa khóa mã hóa mã thông báo trên các nút cụm.

/ hbase / acl (Zookeeper.znode.acl.parent) Acl znode được sử dụng để đồng bộ hóa các thay đổi được thực hiện đối với bảng _acl_ bằng lệnh cấp / thu hồi. Mỗi bảng sẽ có một znode con (/ hbase / acl / tableName) chứa các ACL của bảng. (Đọc phần này để biết thêm thông tin về bộ điều khiển truy cập và tương tác ZooKeeper.)
/ hbase / tokenauth (Zookeeper.znode.tokenauth.parent) Nhà cung cấp mã thông báo thường được sử dụng để cho phép một công việc MapReduce truy cập vào cụm HBase. Khi người dùng yêu cầu mã thông báo mới, thông tin sẽ được lưu trữ trong znode phụ được tạo cho khóa (/ hbase / tokenauth / keys / key-id).

Nhân rộng

Theo nguyên tắc chung, tất cả các znodes là tạm thời, có nghĩa là chúng đang mô tả trạng thái "tạm thời" - vì vậy, ngay cả khi bạn xóa mọi thứ khỏi ZooKeeper, HBase vẫn có thể tạo lại chúng. Mặc dù các znodes của Replication không mô tả trạng thái tạm thời, nhưng chúng có nghĩa là nguồn chân lý cho trạng thái sao chép, mô tả trạng thái sao chép của mỗi máy. (Đọc phần này để tìm hiểu thêm về sao chép).

/ hbase / sao chép (Zookeeper.znode.replication) Znode gốc chứa tất cả thông tin trạng thái sao chép HBase
/ hbase / sao chép / ngang hàng (Zookeeper.znode.replication.peers) Mỗi người ngang hàng sẽ có một znode con (ví dụ:/ hbase / replication / peer / ) chứa địa chỉ của nhóm ZK cho phép liên hệ với người ngang hàng.
/ hbase / sao chép / ngang hàng / / peer-state (Zookeeper.znode.replication.peers.state) Phản chiếu của znode / hbase / replication / ngang hàng, nhưng ở đây mỗi znode con (/ hbase / replication / peer-state / ) sẽ theo dõi trạng thái đã bật / tắt ngang hàng.
/ hbase / replication / state (Zookeeper.znode.replication.state) Cho biết tính năng sao chép có được bật hay không. Sao chép có thể được kích hoạt bằng cách đặt cấu hình hbase.replication thành true, hoặc có thể được bật / tắt bằng cách sử dụng lệnh start / stop trong HBase shell. (Trong 0,96, znode này đã bị loại bỏ và znode trạng thái ngang hàng ở trên được sử dụng làm tham chiếu.)
/ hbase / replication / rs (Zookeeper.znode.replication.rs) Chứa danh sách Máy chủ Vùng trong cụm chính (/ hbase / replication / rs / ). Và đối với mỗi znode của RegionServer có một znode con cho mỗi đồng đẳng mà nó đang sao chép. Bên trong znode con ngang hàng, các hlog đang chờ được sao chép (/ hbase / replication / rs / / / ).

Quy trình Chụp nhanh Trực tuyến

Ảnh chụp nhanh trực tuyến được điều phối bởi Master bằng cách sử dụng ZooKeeper để giao tiếp với các Máy chủ vùng bằng cách sử dụng giao dịch giống như cam kết hai giai đoạn. (Đọc phần này để biết thêm chi tiết về ảnh chụp nhanh.)

/ hbase / ảnh chụp nhanh trực tuyến / có được Znode có được mô tả bước đầu tiên của một giao dịch chụp nhanh. Master sẽ tạo một znode con cho ảnh chụp nhanh (/ hbase / online-snapshot / thu được / ). Mỗi RegionServer sẽ được thông báo về việc tạo znode và chuẩn bị ảnh chụp nhanh; khi hoàn tất, họ sẽ tạo một znode con với tên RegionServer có nghĩa là "Tôi đã xong" (/ hbase / online-snapshot / Get / /m1.host).
/ hbase / ảnh chụp nhanh trực tuyến / đạt được Khi mỗi RegionServer đã tham gia znode có được, Master sẽ tạo znode đã đạt được cho snapshot (/ hbase / online-snapshot / đạt / ) cho mỗi RegionServer biết rằng đã đến lúc hoàn thiện / cam kết ảnh chụp nhanh. Một lần nữa, mỗi RegionServer sẽ tạo một sub-znode để thông báo cho master rằng công việc đã hoàn tất.
/ hbase / ảnh chụp nhanh trực tuyến / hủy bỏ Nếu có điều gì đó không thành công ở phía Master hoặc phía RegionServer, znode hủy bỏ sẽ được tạo cho ảnh chụp nhanh cho mọi người biết rằng đã xảy ra sự cố với ảnh chụp nhanh và hủy bỏ công việc.

Kết luận

Như bạn có thể thấy, ZooKeeper là một phần cơ bản của HBase. Tất cả các hoạt động yêu cầu phối hợp, chẳng hạn như gán khu vực, chuyển đổi dự phòng chính, sao chép và ảnh chụp nhanh, đều được xây dựng trên ZooKeeper. (Bạn có thể tìm hiểu thêm về lý do / cách bạn sử dụng ZooKeeper trong các ứng dụng của mình tại đây.)

Mặc dù hầu hết các znodes chỉ hữu ích với HBase, một số - chẳng hạn như danh sách Máy chủ Vùng (/ hbase / rs) hoặc danh sách Vùng chưa được chỉ định (/ hbase / chưa được gán) - có thể được sử dụng cho mục đích gỡ lỗi hoặc giám sát. Hoặc, như trong trường hợp với / hbase / draining, bạn có thể tương tác với họ để cho HBase biết bạn đang làm gì với cụm.

Matteo Bertozzi là Kỹ sư phần mềm tại Cloudera và là Người cam kết của dự án HBase.


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Hadoop - Hướng dẫn Apache Hadoop cho người mới bắt đầu

  2. Bên trong Hỗ trợ mới của Apache HBase cho MOB

  3. Xây dựng ứng dụng web CRUD đơn giản và kho lưu trữ hình ảnh bằng Cơ sở dữ liệu hoạt động Cloudera và Flask

  4. Điều gì tiếp theo cho Impala sau khi phát hành 1.1

  5. Hướng dẫn sử dụng cổng HBase của Apache