Hive là gì? Kiến trúc & Các chế độ

Mục lục:

Anonim

Trong hướng dẫn này, bạn sẽ học-

  • Hive là gì?
  • Kiến trúc Hive
  • Các chế độ khác nhau của Hive
  • Hive Server2 (HS2) là gì?

Hive là gì?

Hive là một ETL và công cụ lưu trữ dữ liệu được phát triển trên Hệ thống tệp phân tán Hadoop (HDFS). Hive giúp dễ dàng thực hiện các hoạt động như

  • Đóng gói dữ liệu
  • Truy vấn đặc biệt
  • Phân tích bộ dữ liệu khổng lồ

Các đặc điểm quan trọng của Hive

  • Trong Hive, các bảng và cơ sở dữ liệu được tạo trước và sau đó dữ liệu được tải vào các bảng này.
  • Hive làm kho dữ liệu được thiết kế để chỉ quản lý và truy vấn dữ liệu có cấu trúc được lưu trữ trong các bảng.
  • Trong khi xử lý dữ liệu có cấu trúc, Map Reduce không có các tính năng tối ưu hóa và khả năng sử dụng như UDF nhưng khung công tác Hive thì có. Tối ưu hóa truy vấn đề cập đến một cách thực thi truy vấn hiệu quả về mặt hiệu suất.
  • Ngôn ngữ lấy cảm hứng từ SQL của Hive tách người dùng khỏi sự phức tạp của lập trình Map Reduce. Nó sử dụng lại các khái niệm quen thuộc từ thế giới cơ sở dữ liệu quan hệ, chẳng hạn như bảng, hàng, cột và lược đồ, v.v. để dễ học.
  • Lập trình của Hadoop hoạt động trên các tệp phẳng. Vì vậy, Hive có thể sử dụng cấu trúc thư mục để "phân vùng" dữ liệu nhằm cải thiện hiệu suất trên các truy vấn nhất định.
  • Một thành phần mới và quan trọng của Hive tức là Metastore được sử dụng để lưu trữ thông tin lược đồ. Metastore này thường nằm trong một cơ sở dữ liệu quan hệ. Chúng ta có thể tương tác với Hive bằng các phương pháp như
    • GUI web
    • Giao diện kết nối cơ sở dữ liệu Java (JDBC)
  • Hầu hết các tương tác có xu hướng diễn ra trên giao diện dòng lệnh (CLI). Hive cung cấp CLI để viết các truy vấn Hive bằng Ngôn ngữ truy vấn Hive (HQL)
  • Nói chung, cú pháp HQL tương tự như cú pháp SQL mà hầu hết các nhà phân tích dữ liệu đều quen thuộc. Truy vấn mẫu bên dưới hiển thị tất cả các bản ghi có trong tên bảng được đề cập.
    • Truy vấn mẫu : Chọn * từ
  • Hive hỗ trợ bốn định dạng tệp là TEXTFILE, SEQUENCEFILE, ORC và RCFILE (Record Columnar File).
  • Đối với lưu trữ siêu dữ liệu của một người dùng, Hive sử dụng cơ sở dữ liệu derby và đối với trường hợp Siêu dữ liệu nhiều người dùng hoặc trường hợp Siêu dữ liệu được chia sẻ, Hive sử dụng MYSQL.

Để thiết lập MySQL làm cơ sở dữ liệu và lưu trữ thông tin siêu dữ liệu, hãy kiểm tra Hướng dẫn "Cài đặt và cấu hình HIVE và MYSQL"

Một số điểm chính về Hive:

  • Sự khác biệt chính giữa HQL và SQL là truy vấn Hive thực thi trên cơ sở hạ tầng của Hadoop chứ không phải cơ sở dữ liệu truyền thống.
  • Việc thực thi truy vấn Hive sẽ giống như một loạt các Công việc giảm bản đồ được tạo tự động.
  • Hive hỗ trợ các khái niệm phân vùng và nhóm để dễ dàng truy xuất dữ liệu khi máy khách thực hiện truy vấn.
  • Hive hỗ trợ UDF cụ thể tùy chỉnh (Các chức năng do người dùng xác định) để làm sạch, lọc dữ liệu, v.v. Theo yêu cầu của lập trình viên, người ta có thể xác định các UDF của Hive.

Cơ sở dữ liệu quan hệ Hive Vs: -

Bằng cách sử dụng Hive, chúng tôi có thể thực hiện một số chức năng đặc biệt không đạt được trong Cơ sở dữ liệu quan hệ. Đối với một lượng lớn dữ liệu tính bằng peta-byte, việc truy vấn nó và nhận kết quả trong vài giây là rất quan trọng. Và Hive thực hiện điều này khá hiệu quả, nó xử lý các truy vấn nhanh chóng và tạo ra kết quả trong thời gian thứ hai.

Bây giờ hãy xem điều gì làm cho Hive trở nên nhanh chóng như vậy.

Sau đây là một số điểm khác biệt chính giữa Hive và cơ sở dữ liệu quan hệ;

Cơ sở dữ liệu quan hệ là " Lược đồ khi ĐỌC và Lược đồ khi Viết ". Đầu tiên tạo một bảng sau đó chèn dữ liệu vào bảng cụ thể. Trên các bảng cơ sở dữ liệu quan hệ, các chức năng như Chèn, Cập nhật và Sửa đổi có thể được thực hiện.

Hive là " Lược đồ chỉ trên ĐỌC ". Vì vậy, các chức năng như cập nhật, sửa đổi, v.v. không hoạt động với điều này. Vì truy vấn Hive trong một cụm điển hình chạy trên nhiều Nút dữ liệu. Vì vậy, không thể cập nhật và sửa đổi dữ liệu trên nhiều nút. (Phiên bản Hive dưới 0,13)

Ngoài ra, Hive hỗ trợ mô hình " ĐỌC Nhiều VIẾT một lần ". Có nghĩa là sau khi chèn bảng, chúng tôi có thể cập nhật bảng trong các phiên bản Hive mới nhất.

LƯU Ý : Tuy nhiên, phiên bản mới của Hive đi kèm với các tính năng được cập nhật. Các phiên bản Hive (Hive 0.14) đi kèm với các tùy chọn Cập nhật và Xóa như các tính năng mới

Kiến trúc Hive

Ảnh chụp màn hình ở trên giải thích chi tiết về kiến ​​trúc Apache Hive

Hive Chủ yếu bao gồm 3 phần cốt lõi

  1. Hive khách hàng
  2. Dịch vụ Hive
  3. Máy tính và lưu trữ Hive

Khách hàng Hive:

Hive cung cấp các trình điều khiển khác nhau để giao tiếp với một loại ứng dụng khác nhau. Đối với các ứng dụng dựa trên Thrift, nó sẽ cung cấp ứng dụng khách Thrift để liên lạc.

Đối với các ứng dụng liên quan đến Java, nó cung cấp Trình điều khiển JDBC. Khác với bất kỳ loại ứng dụng nào được cung cấp trình điều khiển ODBC. Những khách hàng và trình điều khiển này lại giao tiếp với máy chủ Hive trong các dịch vụ Hive.

Dịch vụ Hive:

Tương tác của khách hàng với Hive có thể được thực hiện thông qua Dịch vụ Hive. Nếu khách hàng muốn thực hiện bất kỳ hoạt động nào liên quan đến truy vấn trong Hive, nó phải giao tiếp thông qua Dịch vụ Hive.

CLI là giao diện dòng lệnh hoạt động như một dịch vụ Hive cho các hoạt động DDL (Ngôn ngữ định nghĩa dữ liệu). Tất cả các trình điều khiển giao tiếp với máy chủ Hive và với trình điều khiển chính trong các dịch vụ Hive như thể hiện trong sơ đồ kiến ​​trúc ở trên.

Trình điều khiển hiện diện trong các dịch vụ Hive đại diện cho trình điều khiển chính và nó giao tiếp tất cả các loại JDBC, ODBC và các ứng dụng khách cụ thể khác. Trình điều khiển sẽ xử lý các yêu cầu đó từ các ứng dụng khác nhau đến hệ thống cửa hàng meta và trường để xử lý thêm.

Máy tính và lưu trữ Hive:

Các dịch vụ Hive như Meta store, File system và Job Client lần lượt giao tiếp với Hive lưu trữ và thực hiện các hành động sau

  • Thông tin siêu dữ liệu của các bảng được tạo trong Hive được lưu trữ trong "Cơ sở dữ liệu lưu trữ siêu dữ liệu" của Hive.
  • Kết quả truy vấn và dữ liệu được tải trong bảng sẽ được lưu trữ trong cụm Hadoop trên HDFS.

Luồng công việc:

Từ ảnh chụp màn hình ở trên, chúng ta có thể hiểu quy trình thực thi Công việc trong Hive với Hadoop

Luồng dữ liệu trong Hive hoạt động theo mẫu sau;

  1. Thực thi truy vấn từ giao diện người dùng (Giao diện người dùng)
  2. Trình điều khiển đang tương tác với Trình biên dịch để nhận kế hoạch. (Ở đây kế hoạch đề cập đến quá trình thực thi truy vấn) và thu thập thông tin siêu dữ liệu liên quan của nó
  3. Trình biên dịch tạo kế hoạch cho một công việc được thực thi. Trình biên dịch giao tiếp với Meta store để nhận yêu cầu siêu dữ liệu
  4. Cửa hàng siêu dữ liệu gửi thông tin siêu dữ liệu trở lại trình biên dịch
  5. Trình biên dịch giao tiếp với Trình điều khiển với kế hoạch được đề xuất để thực hiện truy vấn
  6. Trình điều khiển Gửi kế hoạch thực thi tới công cụ Thực thi
  7. Execution Engine (EE) hoạt động như một cầu nối giữa Hive và Hadoop để xử lý truy vấn. Đối với các hoạt động DFS.
  • Đầu tiên EE phải liên hệ với Nút tên và sau đó đến các nút Dữ liệu để nhận các giá trị được lưu trữ trong bảng.
  • EE sẽ tìm nạp các bản ghi mong muốn từ các Nút dữ liệu. Dữ liệu thực tế của bảng chỉ nằm trong nút dữ liệu. Trong khi từ Name Node, nó chỉ lấy thông tin siêu dữ liệu cho truy vấn.
  • Nó thu thập dữ liệu thực tế từ các nút dữ liệu liên quan đến truy vấn được đề cập
  • Công cụ thực thi (EE) giao tiếp hai chiều với cửa hàng Meta có mặt trong Hive để thực hiện các hoạt động DDL (Ngôn ngữ định nghĩa dữ liệu). Ở đây các hoạt động DDL như CREATE, DROP và ALTERING các bảng và cơ sở dữ liệu được thực hiện. Meta store sẽ chỉ lưu trữ thông tin về tên cơ sở dữ liệu, tên bảng và tên cột. Nó sẽ tìm nạp dữ liệu liên quan đến truy vấn được đề cập.
  • Công cụ thực thi (EE) lần lượt giao tiếp với các daemon Hadoop như nút Tên, nút Dữ liệu và trình theo dõi công việc để thực hiện truy vấn trên đầu hệ thống tệp Hadoop
  1. Tìm nạp kết quả từ trình điều khiển
  2. Gửi kết quả đến công cụ Thực thi. Sau khi kết quả được tìm nạp từ các nút dữ liệu đến EE, nó sẽ gửi kết quả trở lại trình điều khiển và tới giao diện người dùng (giao diện người dùng)

Hive Liên tục tiếp xúc với hệ thống tệp Hadoop và các daemon của nó thông qua công cụ Execution. Mũi tên chấm trong sơ đồ luồng Công việc hiển thị giao tiếp của công cụ Thực thi với các daemon Hadoop.

Các chế độ khác nhau của Hive

Hive có thể hoạt động ở hai chế độ tùy thuộc vào kích thước của các nút dữ liệu trong Hadoop.

Các chế độ này là,

  • Chế độ cục bộ
  • Chế độ thu nhỏ bản đồ

Khi nào sử dụng chế độ Cục bộ:

  • Nếu Hadoop được cài đặt ở chế độ giả có một nút dữ liệu, chúng tôi sử dụng Hive trong chế độ này
  • Nếu kích thước dữ liệu nhỏ hơn trong giới hạn đối với một máy cục bộ, chúng tôi có thể sử dụng chế độ này
  • Quá trình xử lý sẽ rất nhanh trên các tập dữ liệu nhỏ hơn có trong máy cục bộ

Khi nào sử dụng chế độ thu nhỏ bản đồ:

  • Nếu Hadoop có nhiều nút dữ liệu và dữ liệu được phân phối trên các nút khác nhau, chúng tôi sử dụng Hive trong chế độ này
  • Nó sẽ thực hiện trên một lượng lớn tập dữ liệu và truy vấn sẽ thực thi song song
  • Có thể đạt được việc xử lý các tập dữ liệu lớn với hiệu suất tốt hơn thông qua chế độ này

Trong Hive, chúng ta có thể đặt thuộc tính này để đề cập đến chế độ nào Hive có thể hoạt động? Theo mặc định, nó hoạt động trên chế độ Map Reduce và đối với chế độ cục bộ, bạn có thể có cài đặt sau.

Làm việc ở chế độ cục bộ đã đặt

SET mapred.job.tracker = cục bộ;

Từ phiên bản Hive 0.7, nó hỗ trợ chế độ tự động chạy các công việc giảm bản đồ ở chế độ cục bộ.

Hive Server2 (HS2) là gì?

HiveServer2 (HS2) là một giao diện máy chủ thực hiện các chức năng sau:

  • Cho phép máy khách từ xa thực hiện truy vấn chống lại Hive
  • Lấy kết quả của các truy vấn đã đề cập

Từ phiên bản mới nhất, nó có một số tính năng nâng cao Dựa trên Thrift RPC như;

  • Đồng thời nhiều khách hàng
  • Xác thực

Tóm lược:

Hive là một ETL và công cụ kho dữ liệu trên hệ sinh thái Hadoop và được sử dụng để xử lý dữ liệu có cấu trúc và bán cấu trúc.

  • Hive là một cơ sở dữ liệu có trong hệ sinh thái Hadoop thực hiện các hoạt động DDL và DML và nó cung cấp ngôn ngữ truy vấn linh hoạt như HQL để truy vấn và xử lý dữ liệu tốt hơn.
  • Nó cung cấp rất nhiều tính năng so với RDMS có những hạn chế nhất định.

Đối với logic cụ thể của người dùng để đáp ứng các yêu cầu của khách hàng.

  • Nó cung cấp tùy chọn viết và triển khai các tập lệnh được xác định tùy chỉnh và các chức năng do Người dùng xác định.
  • Ngoài ra, nó cung cấp các phân vùng và thùng để lưu trữ các lôgic cụ thể.