Đối với những người mới sử dụng Apache HBase (phiên bản 0.90 trở lên), cấu hình cổng mạng mà hệ thống sử dụng có thể hơi quá sức.
Trong bài đăng trên blog này, bạn sẽ tìm hiểu tất cả các cổng TCP được sử dụng bởi các quy trình HBase khác nhau cũng như cách thức và lý do chúng được sử dụng (tất cả ở một nơi) - để giúp quản trị viên khắc phục sự cố và thiết lập cài đặt tường lửa, đồng thời giúp các nhà phát triển mới cách gỡ lỗi.
Một cụm HBase điển hình có một bản chính đang hoạt động, một hoặc một số bản chính dự phòng và danh sách các máy chủ khu vực. Các bản chính dự phòng là các bản chính dự phòng đang chờ trở thành bản chính hoạt động tiếp theo. Trước khi chúng hoạt động, chúng không lắng nghe trên bất kỳ cổng nào. (Tìm hiểu thêm về cách hoạt động của khả năng mở rộng HBase tại đây.)
Mỗi máy chủ trong cụm lắng nghe một cổng chính cho các yêu cầu từ máy khách và / hoặc máy chủ HBase khác. Mỗi máy chủ cũng có một máy chủ giao diện người dùng web Jetty được nhúng.
Sơ đồ sau đây cho thấy giao tiếp giữa các thành phần khác nhau. (Các thành phần màu xanh lam thuộc về cụm HBase, thường nằm sau tường lửa; các thành phần màu xám là các máy khách bên ngoài, thường nằm ngoài tường lửa cụm HBase; thành phần màu xanh lục là trình duyệt web, cũng thường nằm ngoài tường lửa.)
- Các ứng dụng khách nói chuyện với Apache ZooKeeper để tìm ra vị trí của máy chủ chính và máy chủ vùng meta (vùng gốc bị xóa trong HBase phiên bản 0.96).
- Các ứng dụng khách giao tiếp với các máy chủ trong khu vực để đọc / ghi vào / quét bảng.
- Ứng dụng khách nói chuyện với cái chính để nhận thông tin về bảng hiện có, tạo / xóa động một bảng, thêm / xóa họ cột.
- Máy chủ nói chuyện với các máy chủ khu vực để mở / đóng / di chuyển / chia nhỏ / xóa / nén các vùng.
- Cái chính đặt dữ liệu vào ZooKeeper để lưu trữ vị trí máy chủ khu vực chính và meta đang hoạt động, tạo tác vụ phân chia nhật ký, theo dõi trạng thái của máy chủ khu vực.
- Máy chủ khu vực đọc dữ liệu trong ZooKeeper để thực hiện chia nhỏ nhật ký, theo dõi vị trí chính và trạng thái cụm.
- Máy chủ khu vực nói chuyện với máy chủ để báo cáo các lần khởi động, tải của máy chủ khu vực.
- Đôi khi, máy chủ khu vực nói chuyện với khu vực meta để kiểm tra trạng thái của một khu vực, tạo các khu vực con mới trong việc phân chia khu vực.
- Máy khách REST nói chuyện với máy chủ REST để truy cập HBase.
- Máy khách Thrift nói chuyện với máy chủ Thrift để truy cập HBase.
- Người dùng truy cập giao diện người dùng web chính từ các trình duyệt.
- Người dùng truy cập giao diện người dùng web của máy chủ khu vực từ trình duyệt.
- Người dùng truy cập giao diện người dùng web của máy chủ REST từ trình duyệt.
- Người dùng truy cập giao diện người dùng web của máy chủ Thrift từ trình duyệt.
Một số cụm HBase có thể có danh sách các máy chủ REST hoặc Thrift. Cả máy chủ REST và máy chủ Thrift đều là tùy chọn; chúng chỉ cần thiết nếu bạn muốn cung cấp quyền truy cập REST / Thrift vào cụm HBase của mình. Đối với HBase, chúng chỉ là những ứng dụng khách khác. Cũng giống như các máy chủ HBase khác, chúng cũng lắng nghe một cổng chính cho các yêu cầu của khách hàng và một cổng giao diện người dùng web.
Bảng sau đây cho thấy các cổng được các ứng dụng khách sử dụng để nói chuyện với một cụm HBase, người dùng để kiểm tra thông tin cụm và các thành phần HBase khác nhau để nói chuyện với nhau.
Thành phần | Tham số cấu hình | Giá trị mặc định | Địa điểm đã sử dụng |
ZooKeeper | | 2181 | 1,5,6 |
Master | | 60000 | 3,7 |
Master | | 60010 | 11 |
Máy chủ khu vực | | 60020 | 2,4,8 |
Máy chủ khu vực | | 60030 | 12 |
Máy chủ REST | | 8080 | 9 |
Máy chủ REST | | 8085 | 13 |
Máy chủ tiết kiệm | | 9090 | 10 |
Máy chủ tiết kiệm | | 9095 | 14 |
* Được giới thiệu trong phiên bản HBase 0.94.5. Chúng cũng có thể được chỉ định bằng tùy chọn dòng lệnh --infoport
khi khởi động máy chủ tương ứng.
** Chúng cũng có thể được chỉ định bằng tùy chọn dòng lệnh -p
khi khởi động máy chủ tương ứng.
Một cổng không được liệt kê trong bảng - cổng nút tên HDFS - bởi vì đây không phải là một tham số riêng cho nó. Nó được định cấu hình như một phần của “hbase.root” (ví dụ:“hdfs://namenode.foobar.com:35802 / hbase”) với cổng HDFS NameNode được định cấu hình là 35802. Trừ khi được chỉ định khác trong giá trị của “ hbase.root ”, mặc định là 8020.
Bên cạnh cổng chính, mỗi máy chủ trong cụm (ngoại trừ ZooKeeper) cũng lắng nghe một cổng giao diện người dùng web. Giao diện người dùng web là một máy chủ Jetty được nhúng trong máy chủ tương ứng của nó. Giao diện người dùng web cung cấp thông tin con người có thể đọc được về máy chủ tương ứng - ví dụ:kết xuất chuỗi và nhật ký cục bộ. Giao diện người dùng web chính có các liên kết đến tất cả các giao diện người dùng web của máy chủ khu vực, điều này làm cho nó trở thành điểm vào hoàn hảo để kiểm tra trạng thái hiện tại của một cụm HBase.
Máy chủ REST / Thrift là proxy tùy chọn cho HBase. Họ nói chuyện với HBase giống như cách các ứng dụng khách HBase khác làm. Tuy nhiên, chúng thường được triển khai bên trong cụm HBase, cùng với các máy chủ HBase khác.
Các ứng dụng khách thường được triển khai ngoài cụm HBase. Máy khách REST / Thrift cũng được triển khai bên ngoài cụm. Nếu cụm HBase nằm sau tường lửa, các cổng tương ứng này sẽ được mở theo mặc định:
Để cho phép ứng dụng khách truy cập:
- 2181 (hbase.zookeeper.property.clientPort)
- 60000 (hbase.master.port)
- 60020 (hbase.regionserver.port)
Để cho phép truy cập ứng dụng khách REST / Thrift:
- 8080 (hbase.rest.port)
- 9090 (hbase.regionserver.thrift.port)
Nếu quyền truy cập giao diện người dùng web từ bên ngoài tường lửa được phép, các cổng giao diện người dùng web tương ứng cũng phải mở:
- 60010 (hbase.master.info.port)
- 60030 (hbase.regionserver.info.port)
- 8085 (hbase.rest.info.port)
- 9095 (hbase.thrift.info.port)
Kết luận
Trong bài đăng này, bạn có một bản tóm tắt về các cổng được sử dụng bởi các thành phần nội bộ của HBase, ứng dụng khách và người dùng / quản trị viên, được sắp xếp theo trường hợp sử dụng.
Tuy nhiên, vì HBase chạy trên HDFS nên cũng cần biết các cổng HDFS. Để chạy MapReduce với HBase, bạn cũng cần biết các cổng của MapReduce. Đối với các cổng liên quan đến Hadoop này, vui lòng tham khảo Tham khảo nhanh về các cổng mặc định của Hadoop .
Jimmy Xiang là Kỹ sư phần mềm trong nhóm Nền tảng.
> Bạn có câu hỏi? Đăng chúng lên Diễn đàn cộng đồng cho HBase.