Impala - Tổng quan
Impala là gì?
Impala là một công cụ truy vấn SQL MPP (Massive Parallel Processing) để xử lý khối lượng dữ liệu khổng lồ được lưu trữ trong cụm Hadoop. Nó là một phần mềm mã nguồn mở được viết bằng C ++ và Java. Nó cung cấp hiệu suất cao và độ trễ thấp so với các công cụ SQL khác cho Hadoop.
Nói cách khác, Impala là công cụ SQL có hiệu suất cao nhất (mang lại trải nghiệm giống RDBMS), cung cấp cách nhanh nhất để truy cập dữ liệu được lưu trữ trong Hệ thống tệp phân tán Hadoop.
Tại sao Impala?
Impala kết hợp hỗ trợ SQL và hiệu suất đa người dùng của cơ sở dữ liệu phân tích truyền thống với khả năng mở rộng và tính linh hoạt của Apache Hadoop, bằng cách sử dụng các thành phần tiêu chuẩn như HDFS, HBase, Metastore, YARN và Sentry.
Với Impala, người dùng có thể giao tiếp với HDFS hoặc HBase bằng cách sử dụng các truy vấn SQL theo cách nhanh hơn so với các công cụ SQL khác như Hive.
Impala có thể đọc hầu hết các định dạng tệp như Parquet, Avro, RCFile mà Hadoop sử dụng.
Impala sử dụng cùng một siêu dữ liệu, cú pháp SQL (Hive SQL), trình điều khiển ODBC và giao diện người dùng (Hue Beeswax) như Apache Hive, cung cấp một nền tảng quen thuộc và thống nhất cho các truy vấn theo hướng hàng loạt hoặc thời gian thực.
Không giống như Apache Hive, Impala is not based on MapReduce algorithms. Nó thực hiện một kiến trúc phân tán dựa trêndaemon processes chịu trách nhiệm về tất cả các khía cạnh của việc thực thi truy vấn chạy trên cùng một máy.
Do đó, nó làm giảm độ trễ của việc sử dụng MapReduce và điều này làm cho Impala nhanh hơn Apache Hive.
Ưu điểm của Impala
Dưới đây là danh sách một số lợi thế đáng chú ý của Cloudera Impala.
Sử dụng impala, bạn có thể xử lý dữ liệu được lưu trữ trong HDFS với tốc độ cực nhanh với kiến thức SQL truyền thống.
Vì quá trình xử lý dữ liệu được thực hiện tại nơi dữ liệu cư trú (trên cụm Hadoop), nên không cần chuyển đổi dữ liệu và di chuyển dữ liệu đối với dữ liệu được lưu trữ trên Hadoop khi làm việc với Impala.
Sử dụng Impala, bạn có thể truy cập dữ liệu được lưu trữ trong HDFS, HBase và Amazon s3 mà không cần biết về Java (công việc MapReduce). Bạn có thể truy cập chúng với ý tưởng cơ bản về các truy vấn SQL.
Để viết các truy vấn trong các công cụ nghiệp vụ, dữ liệu phải trải qua một chu trình trích xuất-biến đổi-tải (ETL) phức tạp. Nhưng với Impala, thủ tục này được rút ngắn. Các giai đoạn tốn thời gian tải và sắp xếp lại được khắc phục bằng các kỹ thuật mới nhưexploratory data analysis & data discovery làm cho quá trình nhanh hơn.
Impala đang đi tiên phong trong việc sử dụng định dạng tệp Parquet, một bố cục lưu trữ dạng cột được tối ưu hóa cho các truy vấn quy mô lớn điển hình trong các kịch bản kho dữ liệu.
Đặc điểm của Impala
Dưới đây là các tính năng của cloudera Impala -
Impala có sẵn miễn phí dưới dạng mã nguồn mở theo giấy phép Apache.
Impala hỗ trợ xử lý dữ liệu trong bộ nhớ, tức là nó truy cập / phân tích dữ liệu được lưu trữ trên các nút dữ liệu Hadoop mà không cần di chuyển dữ liệu.
Bạn có thể truy cập dữ liệu bằng Impala bằng các truy vấn giống SQL.
Impala cung cấp khả năng truy cập dữ liệu trong HDFS nhanh hơn khi so sánh với các công cụ SQL khác.
Sử dụng Impala, bạn có thể lưu trữ dữ liệu trong các hệ thống lưu trữ như HDFS, Apache HBase và Amazon s3.
Bạn có thể tích hợp Impala với các công cụ thông minh kinh doanh như Tableau, Pentaho, chiến lược vi mô và dữ liệu thu phóng.
Impala hỗ trợ nhiều định dạng tệp khác nhau như, LZO, Tệp trình tự, Avro, RCFile và Parquet.
Impala sử dụng siêu dữ liệu, trình điều khiển ODBC và cú pháp SQL từ Apache Hive.
Cơ sở dữ liệu quan hệ và Impala
Impala sử dụng ngôn ngữ Truy vấn tương tự như SQL và HiveQL. Bảng sau đây mô tả một số điểm khác biệt chính giữa ngôn ngữ truy vấn SQL và Impala.
Impala | Cơ sở dữ liệu quan hệ |
---|---|
Impala sử dụng ngôn ngữ truy vấn giống SQL tương tự như HiveQL. | Cơ sở dữ liệu quan hệ sử dụng ngôn ngữ SQL. |
Trong Impala, bạn không thể cập nhật hoặc xóa các bản ghi riêng lẻ. | Trong cơ sở dữ liệu quan hệ, có thể cập nhật hoặc xóa các bản ghi riêng lẻ. |
Impala không hỗ trợ giao dịch. | Cơ sở dữ liệu quan hệ hỗ trợ các giao dịch. |
Impala không hỗ trợ lập chỉ mục. | Cơ sở dữ liệu quan hệ hỗ trợ lập chỉ mục. |
Impala lưu trữ và quản lý một lượng lớn dữ liệu (petabyte). | Cơ sở dữ liệu quan hệ xử lý lượng dữ liệu nhỏ hơn (terabyte) khi so sánh với Impala. |
Hive, Hbase và Impala
Mặc dù Cloudera Impala sử dụng cùng một ngôn ngữ truy vấn, phổ biến và giao diện người dùng như Hive, nó khác với Hive và HBase ở một số khía cạnh nhất định. Bảng sau đây trình bày phân tích so sánh giữa HBase, Hive và Impala.
HBase | Hive | Impala |
---|---|---|
HBase là cơ sở dữ liệu cửa hàng cột rộng dựa trên Apache Hadoop. Nó sử dụng các khái niệm của BigTable. | Hive là một phần mềm kho dữ liệu. Sử dụng điều này, chúng tôi có thể truy cập và quản lý các tập dữ liệu phân tán lớn, được xây dựng trên Hadoop. | Impala là công cụ quản lý, phân tích dữ liệu được lưu trữ trên Hadoop. |
Mô hình dữ liệu của HBase là kho lưu trữ cột rộng. | Hive theo mô hình Quan hệ. | Impala tuân theo mô hình quan hệ. |
HBase được phát triển bằng ngôn ngữ Java. | Hive được phát triển bằng ngôn ngữ Java. | Impala được phát triển bằng C ++. |
Mô hình dữ liệu của HBase là không có giản đồ. | Mô hình dữ liệu của Hive dựa trên lược đồ. | Mô hình dữ liệu của Impala dựa trên Lược đồ. |
HBase cung cấp API của Java, RESTful và Thrift. | Hive cung cấp JDBC, ODBC, Thrift API's. | Impala cung cấp API JDBC và ODBC. |
Hỗ trợ các ngôn ngữ lập trình như C, C #, C ++, Groovy, Java PHP, Python và Scala. | Hỗ trợ các ngôn ngữ lập trình như C ++, Java, PHP và Python. | Impala hỗ trợ tất cả các ngôn ngữ hỗ trợ JDBC / ODBC. |
HBase cung cấp hỗ trợ cho các trình kích hoạt. | Hive không cung cấp bất kỳ hỗ trợ nào cho trình kích hoạt. | Impala không cung cấp bất kỳ hỗ trợ nào cho các trình kích hoạt. |
Tất cả ba cơ sở dữ liệu này -
Là cơ sở dữ liệu NOSQL.
Có sẵn dưới dạng mã nguồn mở.
Hỗ trợ tập lệnh phía máy chủ.
Theo dõi các thuộc tính ACID như Độ bền và Đồng tiền.
Sử dụng sharding cho partitioning.
Hạn chế của Impala
Một số hạn chế của việc sử dụng Impala như sau:
- Impala không cung cấp bất kỳ hỗ trợ nào cho Serialization và Deserialization.
- Impala chỉ có thể đọc các tệp văn bản, không phải tệp nhị phân tùy chỉnh.
- Bất cứ khi nào các bản ghi / tệp mới được thêm vào thư mục dữ liệu trong HDFS, bảng cần được làm mới.