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.

  • 🐝 Những gì nó là: Một công cụ ETL và kho dữ liệu giúp bổ sung các bảng, hàng và cột vào các tập tin được lưu trữ trong HDFS.
  • 🗂️ Metastore: Thông tin lược đồ được lưu trữ trong một siêu kho dữ liệu quan hệ, được hỗ trợ bởi Derby cho một người dùng và bởi... MySQL Để truy cập chung.
  • 🆚 Đối đầu với hệ quản trị cơ sở dữ liệu quan hệ (RDBMS): Hive xác thực lược đồ khi đọc, mở rộng theo chiều ngang và ưu tiên quét toàn bộ dữ liệu lớn hơn là cập nhật từng hàng mà cơ sở dữ liệu xử lý.
  • 🏗️ Ba lớp: Kiến trúc bao gồm các máy khách, dịch vụ và bộ nhớ lưu trữ, trong đó trình điều khiển đóng vai trò điều phối trình biên dịch, siêu dữ liệu và công cụ thực thi.
  • 🔀 Hai chế độ: Chế độ cục bộ phù hợp với một nút dữ liệu duy nhất và các tệp nhỏ, trong khi chế độ MapReduce phân tán việc thực thi trên một cụm nhiều nút.
  • 🔌 HiveServer2: Giao diện HS2 dựa trên Thrift bổ sung khả năng xử lý đồng thời nhiều máy khách và xác thực cho các phiên làm việc từ xa.

Kiến trúc và các chế độ của tổ ong

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.

Sơ đồ kiến ​​trúc Apache Hive thể hiện các máy khách, dịch vụ, lưu trữ và tính toán.

Tổ ong chủ yếu bao gồm 3 phần cốt lõi:

  1. Khách hàng của Hive
  2. Dịch vụ tổ ong
  3. 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.

Sơ đồ quy trình thực thi công việc Hive tracgửi truy vấn từ giao diện người dùng đến các DataNodes

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.

  1. Thực thi truy vấn từ giao diện người dùng (UI).
  2. 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.)
  3. 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.
  4. Metastore 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 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.
  6. Trình điều khiển gửi kế hoạch thực thi đến công cụ thực thi.
  7. 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.
  1. Đang lấy 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 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.

Câu Hỏi Thường Gặp

Hive là một lớp truy vấn theo lô, quét các bảng lớn thông qua các tác vụ phân tán. HBase là một kho lưu trữ NoSQL được xây dựng để đọc và ghi ngẫu nhiên trên từng hàng dữ liệu trong mili giây. Chúng giải quyết các mô hình truy cập trái ngược nhau và thường chạy song song.

Hive chạy trên MapReduce, Apache Tez hoặc Apache. SparkMapReduce đã lỗi thời và Hive 4.x mặc định sử dụng Tez, phương pháp này lưu trữ kết quả trung gian trong bộ nhớ thay vì ghi chúng ra đĩa giữa các giai đoạn.

Bảng được quản lý cấp cho Hive quyền sở hữu siêu dữ liệu và tệp, vì vậy hãy xóa nó đi.ping Nó xóa dữ liệu khỏi thư mục kho dữ liệu. Bảng bên ngoài chỉ lưu trữ siêu dữ liệu và xóa.ping Nó không động chạm gì đến các tập tin gốc.

Các mô hình chi phí được học hỏi sẽ cung cấp số liệu thống kê thực thi trở lại cho công cụ lập kế hoạch để dự đoán khối lượng quét, thứ tự kết hợp và việc cắt tỉa phân vùng chính xác hơn so với các ước tính tĩnh. Các nền tảng đám mây cũng đưa ra các tín hiệu tương tự như các khuyến nghị về nén dữ liệu và bố cục phân vùng.

Copilot soạn thảo các phép nối HiveQL, các hàm cửa sổ và Java Các mẫu UDF được tạo từ một bình luận, giúp rút ngắn công việc viết mã lặp đi lặp lại. Tên cột, khóa phân vùng và kiểu dữ liệu vẫn cần được kiểm tra với metastore thực tế trước.

Đúng vậy. Hive 0.14 đã thêm các lệnh UPDATE và DELETE, và các phiên bản sau này đã cung cấp hỗ trợ ACID đầy đủ cho các bảng giao dịch. Hive 4.x mở rộng điều này thông qua các bảng Apache Iceberg với khả năng cách ly ảnh chụp nhanh và tiến hóa lược đồ.

Cả ba đều truy cập SQL trên cùng một tập tin. Hive ưu tiên các tác vụ xử lý hàng loạt dài và sở hữu siêu dữ liệu mà các hệ thống khác đọc. Spark SQL phù hợp với các quy trình xử lý dữ liệu hỗn hợp; Trino hướng đến các truy vấn tương tác trên nhiều nguồn dữ liệu khác nhau.

Đúng vậy, chủ yếu là thông qua Hive Metastore, vốn vẫn là tiêu chuẩn danh mục. SparkTrino, Presto và Flink đều đọc dữ liệu. Bản thân Hive vẫn phục vụ các chuyển đổi theo lô theo lịch trình và tải dữ liệu vào kho.

Tóm tắt bài viết này với: