2013-05-26 37 views
45

Gần đây tôi đã bắt đầu tìm kiếm truy vấn tập dữ liệu CSV lớn nằm trên HDFS bằng cách sử dụng Hive và Impala. Như tôi đã mong đợi, tôi nhận được thời gian phản ứng tốt hơn với Impala so với Hive cho các truy vấn tôi đã sử dụng cho đến nay.Làm thế nào để cung cấp phản hồi truy vấn nhanh hơn so với hive

Tôi tự hỏi nếu có một số loại truy vấn/trường hợp sử dụng vẫn cần Hive và nơi Impala không phù hợp.

Impala cung cấp phản hồi truy vấn nhanh hơn so với Hive cho cùng một dữ liệu trên HDFS như thế nào?

Trả lời

92

Bạn sẽ thấy Impala là "SQL trên HDFS", trong khi Hive là "SQL trên Hadoop" nhiều hơn.

Nói cách khác, Impala thậm chí không sử dụng Hadoop. Nó đơn giản có các trình tiện ích chạy trên tất cả các nút của bạn để lưu trữ một số dữ liệu trong HDFS, để các trình tiện ích này có thể trả về dữ liệu nhanh chóng mà không phải trải qua toàn bộ công việc Map/Reduce.

Lý do cho điều này là có một số phí nhất định liên quan đến việc chạy một công việc Map/Reduce, do đó, bằng cách ngắn mạch Map/Reduce hoàn toàn, bạn có thể nhận được một số tăng khá lớn trong thời gian chạy.

Điều đó đang được nói, Impala không thay thế Hive, nó là tốt cho các trường hợp sử dụng rất khác nhau. Impala không cung cấp khả năng chịu lỗi so với Hive, vì vậy nếu có vấn đề trong quá trình truy vấn của bạn thì nó sẽ biến mất. Chắc chắn đối với loại công việc ETL mà thất bại của một công việc sẽ tốn kém, tôi muốn giới thiệu Hive, nhưng Impala có thể tuyệt vời cho các truy vấn đặc biệt nhỏ, ví dụ cho các nhà khoa học dữ liệu hoặc nhà phân tích kinh doanh, những người chỉ muốn xem xét và phân tích một số dữ liệu mà không xây dựng công việc mạnh mẽ. Ngoài kinh nghiệm cá nhân của tôi, Impala vẫn chưa trưởng thành, và đôi khi tôi gặp một số sự cố khi lượng dữ liệu lớn hơn bộ nhớ có sẵn.

+0

Cảm ơn Charles vì ​​lời giải thích này. "Impala không cung cấp khả năng chịu lỗi so với Hive", có nghĩa là nếu một nút đi trong khi truy vấn đang xử lý thì nó không thành công. Bạn đã có một số kịch bản khác trong tâm trí. – techuser

+3

@Integrator Từ một cuộc phỏng vấn vào tháng 5 năm 2013, một trong những người quản lý sản phẩm tại Cloudera đã xác nhận rằng trong quá trình thực hiện hiện tại, nếu nút không truy vấn trung bình, truy vấn đó sẽ bị hủy và người dùng sẽ cần phát hành lại truy vấn đó (http: //www.datanami.com/datanami/2013-05-01/cloudera_releases_impala_into_the_wild.html) –

+0

Cảm ơn bạn đã trả lời. – techuser

28

IMHO, SQL trên HDFS và SQL trên Hadoop giống nhau. Sau khi tất cả Hadoop là HDFS + MapReduce. Vì vậy, khi chúng ta nói SQL trên HDFS, nó được hiểu rằng đó là SQL trên Hadoop.

Quay lại câu hỏi thực tế, Impala cung cấp phản hồi nhanh hơn khi sử dụng MPP (xử lý song song) không giống Hive sử dụng MapReduce dưới mui xe, bao gồm một số chi phí ban đầu (như Charles sir đã chỉ định). Xử lý song song lớn là một loại máy tính sử dụng nhiều CPU riêng biệt chạy song song để thực thi một chương trình duy nhất mà mỗi CPU có bộ nhớ riêng của nó. Thực tế là Impala, dựa trên MPP, không liên quan đến chi phí của một công việc MapReduce viz. thiết lập công việc và tạo, phân bổ vùng, tạo phân chia, tạo bản đồ, v.v.

Nhưng điều đó không có nghĩa là Impala là giải pháp cho mọi vấn đề của bạn. Có dung lượng bộ nhớ cao (MPP), nó không phù hợp cho các tác vụ yêu cầu các thao tác dữ liệu nặng như join, vv vì bạn không thể vừa với mọi thứ trong bộ nhớ. Đây là nơi Hive phù hợp hơn.

Vì vậy, nếu bạn cần thời gian thực, truy vấn đặc biệt trên một tập hợp con dữ liệu của bạn đi cho Impala. Và nếu bạn có nhu cầu xử lý hàng loạt các loại dữ liệu lớn, hãy truy cập Hive.

HTH

+11

"SQL trên HDFS và SQL trên Hadoop giống nhau": tốt, không thực sự, vì (như bạn nói) "SQL trên hadoop" = "SQL trên hdfs sử dụng m/r" nghĩa là "SQL trên hdfs" bỏ qua m/r hoàn toàn. – davek

+1

Impala, Presto và các công cụ truy vấn mới nhanh khác sử dụng dữ liệu trong HDFS, nhưng * không * dựa trên MapReduce. Họ hoàn toàn vượt qua nó. – btubbs

+1

Tôi không bao giờ nói rằng impala là SQL trên HDFS sử dụng MR. Nó được xác định rõ ràng trong câu trả lời của tôi rằng nó sử dụng MPP. – Tariq

6

Có một số tính năng chính trong impala làm cho nó nhanh.

  1. Không sử dụng bản đồ/giảm giá rất đắt đối với ngã ba ở riêng biệt jvms.Nó chạy riêng biệt Impala Daemon mà tách truy vấn và chạy chúng trong song song và kết quả hợp nhất thiết lập ở cuối.

  2. Phần lớn hoạt động của nó trong bộ nhớ.

  3. Nó sử dụng hdfs để lưu trữ nhanh chóng cho các tệp lớn. Nó lưu trữ càng nhiều càng tốt từ các truy vấn đến kết quả đến dữ liệu.

  4. Nó hỗ trợ định dạng tệp mới như sàn lát gỗ, là định dạng tệp cột . Vì vậy, nếu bạn sử dụng định dạng này, các truy vấn sẽ nhanh hơn đối với các truy vấn trong đó bạn chỉ truy cập vài cột phần lớn thời gian.

+0

Nhưng cách định dạng tệp lát gỗ sẽ giúp truy vấn các truy vấn RDBMS ... Tôi đang khám phá Impala, vì vậy chỉ cần curios. Hãy chia sẻ nếu bạn có bất kỳ tài liệu rõ ràng nào. Cảm ơn –

+0

sàn gỗ là cột lưu trữ và sử dụng sàn gỗ bạn sẽ có được tất cả những lợi thế bạn có thể nhận được trong cơ sở dữ liệu cột. Nhanh hơn rất nhiều khi bạn đang sử dụng ít cột hơn tất cả các cột trong bảng trong hầu hết các truy vấn của bạn. –

+0

Hive giờ đây cũng hỗ trợ sàn gỗ, vì vậy điểm thứ 4 của bạn không còn là sự khác biệt giữa Impala và Hive. –

Các vấn đề liên quan