Hive là gì? Archikiến trúc & chế độ
⚡ Tóm tắt thông minh
Hive là lớp SQL của hệ sinh thái Hadoop, chuyển đổi các câu lệnh HiveQL thành các tác vụ phân tán đọc dữ liệu có cấu trúc đã có sẵn trên HDFS, cho phép các nhà phân tích truy vấn các bảng có dung lượng petabyte mà không cần tự viết mã MapReduce.

Hive là gì?
Hive là một công cụ ETL và kho dữ liệu được phát triển trên nền tảng Hệ thống tệp phân tán Hadoop (HDFS). Hive giúp đơn giản hóa công việc thực hiện các thao tác 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 điểm quan trọng của Hive
Các điểm dưới đây giải thích điều gì làm cho Hive khác biệt so với một chương trình MapReduce thông thường.
- Trong Hive, các bảng và cơ sở dữ liệu được tạo trước tiên, sau đó dữ liệu được tải vào các bảng này.
- Hive là một kho dữ liệu được thiết kế để quản lý và truy vấn dữ liệu có cấu trúc được lưu trữ trong các bảng.
- Khi xử lý dữ liệu có cấu trúc, MapReduce 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 framework Hive thì có. Tối ưu hóa truy vấn đề cập đến một phương pháp thực thi truy vấn hiệu quả về mặt hiệu năng.
- Ngôn ngữ lập trình lấy cảm hứng từ SQL của Hive giúp người dùng tránh khỏi sự phức tạp của lập trình MapReduce. Nó tái sử dụng 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 đồ, để dễ học hơn.
- Lập trình của Hadoop hoạt động trên các tập tin 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 để cải thiện hiệu suất trên một số truy vấn nhất định.
- Một thành phần quan trọng của Hive là metastore, được sử dụng để lưu trữ thông tin lược đồ. Metastore này thường nằm trong 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 thức như...
- GUI web
- Java Giao diện kết nối cơ sở dữ liệu (JDBC)
- Hầu hết các tương tác thường diễn ra thông qua 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ư SQL Cú pháp 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ậ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 (Ghi tệp cột).
- Đối với việc lưu trữ siêu dữ liệu cho người dùng đơn lẻ, Hive sử dụng cơ sở dữ liệu Derby, còn đối với siêu dữ liệu cho nhiều người dùng hoặc được chia sẻ, Hive sử dụng... MySQL.
Để thiết lập MySQL Để sử dụng cơ sở dữ liệu và lưu trữ thông tin siêu dữ liệu, hãy xem hướng dẫn về... cấu hình siêu dữ liệu Hive với MySQL, tiếp nối từ Hướng dẫn cài đặt Hive.
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 được thực thi trên cơ sở hạ tầng của Hadoop chứ không phải trên cơ sở dữ liệu truyền thống.
- Việc thực thi truy vấn Hive là một chuỗi các thao tác được tạo tự động. Bản đồGiảm việc làm.
- Hive hỗ trợ các khái niệm về phân vùng và nhóm (bucket) để dễ dàng truy xuất dữ liệu khi máy khách thực hiện truy vấn.
- Hive hỗ trợ tùy chỉnh Các hàm do người dùng định nghĩa (UDF) Dùng để làm sạch dữ liệu, lọc dữ liệu và các công việc tương tự. Theo yêu cầu của lập trình viên, người ta có thể định nghĩa các hàm UDF trong Hive.
Cơ sở dữ liệu quan hệ Hive Vs
Hive thực hiện các chức năng mà cơ sở dữ liệu quan hệ không thể. Khi dữ liệu lên đến petabyte, việc trả về kết quả trong vài giây là rất quan trọng, và Hive thực hiện điều này một cách hiệu quả. Những điểm khác biệt chính như sau:
Cơ sở dữ liệu quan hệ là “lược đồ khi đọc và lược đồ khi ghi”Đầu tiên, một bảng được tạo ra, sau đó dữ liệu được chèn vào bảng đó. 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.
Tổ ong là “lược đồ chỉ đọc”Vì vậy, các chức năng như cập nhật và sửa đổi không hoạt động trong các phiên bản đầu tiên, bởi vì một truy vấn Hive trong một cụm điển hình chạy trên nhiều DataNode, điều này khiến việc cập nhật và sửa đổi dữ liệu trên nhiều node trở nên bất khả thi (các phiên bản Hive dưới 0.13).
Hive cũng hỗ trợ “Đọc nhiều, viết một lần” Theo mẫu này, trong các phiên bản gần đây, bảng có thể được cập nhật sau khi chèn dữ liệu.
LƯU Ý: Các phiên bản Hive mới hơn đi kèm với các tính năng được cập nhật. Hive 0.14 đã giới thiệu các tính năng UPDATE và DELETE mới, và các phiên bản sau này đã bổ sung hỗ trợ đầy đủ cho giao dịch ACID.
Bảng dưới đây tóm tắt sự so sánh đó.
| Yếu tố | Cơ sở dữ liệu quan hệ | Tổ ong Apache |
|---|---|---|
| Xác thực lược đồ | Khi viết | Đã đọc |
| Khối lượng dữ liệu điển hình | Từ gigabyte đến terabyte | Từ terabyte đến petabyte |
| Khối lượng công việc | Đọc và ghi dữ liệu OLTP ở cấp độ hàng. | Phân tích hàng loạt quét toàn diện |
| Ngôn ngữ truy vấn | SQL | HQL, một phương ngữ lấy cảm hứng từ SQL. |
| Thực hiện | Cơ sở dữ liệu | Công việc phân tán theo cụm |
Tổ ong Archikiến trúc
Sơ đồ bên dưới giải thích Apache Kiến trúc tổ ong được mô tả chi tiết.
Tổ ong chủ yếu bao gồm 3 phần cốt lõi:
- Khách hàng của Hive
- Dịch vụ tổ ong
- Lưu trữ và điện toán Hive
Khách hàng tổ ong
Hive cung cấp các trình điều khiển khác nhau để giao tiếp với các loại ứng dụng khác nhau. Đối với các ứng dụng dựa trên Thrift, nó cung cấp một máy khách Thrift để giao tiếp.
Trong cáp Java Đối với các ứng dụng liên quan, nó cung cấp trình điều khiển JDBC. Đối với bất kỳ loại ứng dụng nào khác, nó cung cấp trình điều khiển ODBC. Các máy khách và trình điều khiển này lần lượt giao tiếp với máy chủ Hive trong các dịch vụ Hive.
dịch vụ tổ ong
Việc tương tác giữa máy khách và Hive được thực hiện thông qua các dịch vụ của Hive. Nếu máy khách muốn thực hiện bất kỳ thao tác truy vấn nào trong Hive, nó phải giao tiếp thông qua các dịch vụ của Hive.
Giao diện dòng lệnh (CLI) đóng vai trò là dịch vụ Hive cho các thao tác DDL. Tất cả các trình điều khiển đều giao tiếp với máy chủ Hive và trình điều khiển chính trong các dịch vụ Hive, như được thể hiện trong sơ đồ kiến trúc ở trên.
Trình điều khiển trong các dịch vụ Hive là trình điều khiển chính: nó giao tiếp với JDBC, ODBC và các ứng dụng dành riêng cho máy khách khác, sau đó chuyển các yêu cầu của chúng đến metastore và hệ thống tập tin để xử lý tiếp.
Lưu trữ và tính toán Hive
Các dịch vụ của Hive, chẳng hạn như metastore, hệ thống tập tin và máy khách tác vụ, lần lượt giao tiếp với bộ lưu trữ Hive và thực hiện các hành động sau:
- Thông tin siêu dữ liệu về các bảng được tạo trong Hive được lưu trữ trong Hive. cơ sở dữ liệu metastore.
- Kết quả truy vấn và dữ liệu được tải vào các bảng được lưu trữ trong cụm Hadoop. HDFS.
Luồng thực thi công việc
Sơ đồ bên dưới tracChỉ cần một truy vấn từ giao diện người dùng đến các DataNode và ngược lại.
Từ sơ đồ trên, chúng ta có thể hiểu được luồng thực thi công việc trong Hive với Hadoop. Luồng dữ liệu trong Hive hoạt động theo mô hình sau.
- Thực thi truy vấn từ giao diện người dùng (UI).
- Trình điều khiển tương tác với trình biên dịch để lấy kế hoạch. (Ở đây, kế hoạch đề cập đến quá trình thực thi truy vấn và việc thu thập thông tin siêu dữ liệu liên quan.)
- Trình biên dịch tạo ra kế hoạch cho công việc cần thực thi. Trình biên dịch giao tiếp với kho siêu dữ liệu để lấy yêu cầu siêu dữ liệu.
- Metastore gửi thông tin siêu dữ liệu trở lại trình biên dịch.
- Trình biên dịch liên lạc với trình điều khiển để cung cấp kế hoạch đề xuất thực thi truy vấn.
- Trình điều khiển gửi kế hoạch thực thi đến công cụ thực thi.
- Công cụ thực thi (EE) đóng vai trò là cầu nối giữa Hive và Hadoop để xử lý truy vấn, bao gồm cả các thao tác DFS:
- EE trước tiên liên hệ với NameNode, sau đó là các DataNode để lấy các giá trị được lưu trữ trong các bảng.
- EE lấy các bản ghi cần thiết từ các DataNode. Dữ liệu bảng thực tế chỉ nằm trên các DataNode; từ NameNode, nó chỉ lấy 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ập.
- EE giao tiếp hai chiều với metastore để thực hiện các thao tác DDL (ngôn ngữ định nghĩa dữ liệu) như sau: TẠO, XÓA và CHỈNH SỬA Trên các bảng và cơ sở dữ liệu. Metastore chỉ lưu trữ tên cơ sở dữ liệu, tên bảng và tên cột.
- Ngược lại, EE sẽ giao tiếp với các tiến trình nền của Hadoop như NameNode, DataNodes và job. tracker để thực thi truy vấn trên hệ thống tệp Hadoop.
- Đang lấy kết quả từ trình điều khiển
- Gửi kết quả đến công cụ thực thi. Sau khi kết quả được lấy từ các nút dữ liệu đến công cụ thực thi, nó sẽ gửi kết quả trở lại trình điều khiển và giao diện người dùng (giao diện trước).
Hive duy trì liên lạc với hệ thống tệp Hadoop và các tiến trình nền của nó thông qua công cụ thực thi. Mũi tên chấm chấm trong sơ đồ thể hiện sự liên lạc đó.
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ế độ đó là:
- Chế độ cục bộ
- Chế độ MapReduce
Khi nào nên sử dụng chế độ cục bộ
- Nếu Hadoop được cài đặt ở chế độ giả phân tán với một nút dữ liệu, chúng ta sẽ sử dụng Hive ở chế độ này.
- Nếu kích thước dữ liệu đủ nhỏ để chỉ giới hạn trong một máy cục bộ duy nhất, chúng ta 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 nên sử dụng chế độ MapReduce?
- Nếu Hadoop có nhiều nút dữ liệu và dữ liệu được phân tán trên các nút khác nhau, chúng ta sẽ sử dụng Hive trong chế độ này.
- Nó xử lý lượng lớn dữ liệu và truy vấn được 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ể thiết lập một thuộc tính để chỉ định chế độ hoạt động của Hive. Theo mặc định, nó hoạt động ở chế độ MapReduce, và đối với chế độ cục bộ, bạn có thể sử dụng thiết lập sau:
SET mapred.job.tracker=local;
Từ phiên bản Hive 0.7 trở đi, nó hỗ trợ chế độ tự động chạy các tác vụ MapReduce ở chế độ cục bộ. Trên Hive 4.x, công cụ mặc định là Apache Tez, vì vậy thuộc tính này áp dụng cho đường dẫn MapReduce cũ.
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 đối với Hive
- Truy xuất kết quả của các truy vấn đó.
Các phiên bản hiện tại bổ sung các tính năng nâng cao dựa trên Thrift RPC, chẳng hạn như:
- Đồng thời nhiều khách hàng
- Xác thực
HS2 hoạt động phía sau Beeline và mọi phiên JDBC hoặc ODBC, đó là lý do tại sao nó thay thế giao diện dòng lệnh Hive dành cho người dùng đơn lẻ. Các toán tử và hàm tích hợp của HiveQL Việc tham khảo tài liệu là bước tiếp theo tất yếu.


