1. Apache Knox

Apache Knox Gateway là REST API Getway để tương tác với Apache Hadoop. Nó cung cấp 1 điểm truy cập duy nhất cho tất cả các REST tương tác với các Apache Hadoop cluster.

Knox tích hợp với các hệ thống: Identity Management, SSO.

1.1 Luồng bảo mật

Typical Security Flow via Knox

Knox có thể sử dụng cho cả với Hadoop clusters không thiết lập bảo mật và có thiết lập bảo mật. Hình trên là luồng bảo mật khi ứng dụng Knox vào các cluster thiết lập bảo mật với Kerberos:

  • Knox tích hợp tốt với các giải pháp quản lý định danh (identity management solutions) như LDAP, Kerberos
  • Bảo vệ các thông tin chi tiết của Hadoop cluster: người dùng cuối truy cập qua 1 điểm duy nhất – Knox, các thông tin cụ thể về các host port được ẩn đi
  • Đơn giản hóa việc tương tác với các dịch vụ: như ảnh dưới, thay vì phải biết nhiều host và port khác nhau để tương tác với các dịch vụ, người dùng chỉ cần biết 1 host và 1 port duy nhất

Knox Overview

1.2 Điểm mạnh

  • Truy cập đơn giản với một host, một port duy nhất

Như ảnh dưới, có thể thấy trong Hadoop cluster, các dịch vụ có thể nằm trên các host khác nhau, với các port khác nhau. Với Knox, việc sử dụng các dịch vụ này đơn giản hơn nhiều khi chỉ cần biết một host và một port duy nhất.

Knox Service URLs vs. direct URLs

Và khi làm việc với hệ thống Multi-Cluster, việc dùng Knox với một host một port cho nhiều cluster khiến việc truy cập các dịch vụ thuận tiện hơn.

Multi-Cluster support

  • Tăng cường bảo mật

Với Knox, thông tin chi tiết về hệ thống sẽ được ẩn đi (các host, port). Ngoài ra, Knox có thể tích hợp các plugin Vulnerability filter. Và có thể thiết lập SSL cho các dịch vụ không có thiết lập SSL (như hình dưới).

Partial SSL for non-SSL services

  • Kiểm soát tập trung

Với Knox, việc kiểm soát truy nhập/truy xuất hệ thống được tập trung hơn, thuận tiện cho việc quản lý hệ thống.

Centralized control

  • Tích hợp hệ thống xác thực

Hỗ trợ LDAP, Active Directory, SSO, SAML và các hệ thống xác thực khác.

2. Các Hadoop Service được hỗ trợ

2.1 Hadoop Services

  • Ambari
  • WebHDFS (HDFS)
  • Templeton (HCatalog)
  • Stargate (HBase)
  • Oozie
  • Hive/JDBC
  • Yarn RM
  • Storm

2.2 Hadoop UIs

  • Name Node UI
  • Job History UI
  • Oozie UI
  • HBase UI
  • Yarn UI
  • Spark UI
  • Ambari UI
  • Ranger Admin Console

3. Kết nối Hive Server 2 với JDBC qua Knox

3.1 Hive Server2

Hive là component dùng để truy xuất SQL cho Hadoop. Và Hive Server 2 hỗ trợ kết nối JDBC  qua giao thức HTTP.

Sau đây là cách thiết lập cho phép JDBC client kết nối với Hive Server 2 qua Knox với flow:

Beeline (JDBC client) -> JDBC over HTTPS -> Knox -> HTTP -> Hive Server2

3.2 Thiết lập cho Hive

Dùng Ambari (WebUI cho Hadoop), chọn Hive Service > Config và thêm các thiết lập sau:

Knox Hive Setting

Lưu thiết lập và restart Hive Service với Ambari.

3.3 Thiết lập cho Knox

Dùng Ambari, chọn Knox > Config > Advanced topology và thêm thiết lập

<service>
 <role>HIVE</role>
 <url>http://{{hive_server_host}}:{{hive_http_port}}/{{hive_http_path}}</url>
</service>

Lưu thiết lập và restart Knox với Ambari.

3.4 Kết nối Hive Server 2 với JDBC

# Chạy beeline client 
/usr/bin/beeline 
Hoặc 
beeline 

# Kết nối Hive Server2 
beeline> !connect jdbc:hive2://{{server hostname}}:8443/;ssl=true;sslTrustStore={{SSL TrustStore File}};trustStorePassword=knox;transportMode=http;httpPath=gateway/default/hive 

# Ví dụ: beeline> !connect jdbc:hive2://oide-hdp24-m1:8443/;ssl=true;sslTrustStore=/var/lib/knox/data-2.4.0.0-169/security/keystores/gateway.jks;trustStorePassword=knox;transportMode=http;httpPath=gateway/default/hive 

# Dùng tài khoản guest 
# user: guest 
# password: guest-password 
# Test 
beeline> !connect jdbc:hive2://dev-m1:8443/;ssl=true;sslTrustStore=/var/lib/knox/data-2.3.2.0-2950/security/keystores/gateway.jks;trustStorePassword=knox;transportMode=http;httpPath=gateway/default/hive 
Connecting to jdbc:hive2://dev-m1:8443/;ssl=true;sslTrustStore=/var/lib/knox/data-2.3.2.0-2950/security/keystores/gateway.jks;trustStorePassword=knox;transportMode=http;httpPath=gateway/default/hive 
Enter username for jdbc:hive2://dev-m1:8443/;ssl=true;sslTrustStore=/var/lib/knox/data-2.3.2.0-2950/security/keystores/gateway.jks;trustStorePassword=knox;transportMode=http;httpPath=gateway/default/hive: guest 
Enter password for jdbc:hive2://dev-m1:8443/;ssl=true;sslTrustStore=/var/lib/knox/data-2.3.2.0-2950/security/keystores/gateway.jks;trustStorePassword=knox;transportMode=http;httpPath=gateway/default/hive: ************** 
Connected to: Apache Hive (version 1.2.1.2.3.2.0-2950) 
Driver: Hive JDBC (version 1.2.1.2.3.2.0-2950) 
Transaction isolation: TRANSACTION_REPEATABLE_READ 
0: jdbc:hive2://dev-m1:8443/> # Kết nối thành công 
0: jdbc:hive2://dev-m1:8443/> show databases; 
+------------------+--+ 
| database_name | 
+------------------+--+ 
| default | 
| test_db | 
+------------------+--+ 
7 rows selected (0.119 seconds)

4. Kết luận

  • Knox cung cấp 1 điểm truy cập an toàn duy nhất cho tất cả các tương tác REST với Hadoop.
  • Từ đó giúp cho việc kiểm soát, tích hợp, giám sát và tự động hóa việc quản lý, phân tích

5. Tham khảo