2013-06-25 44 views
41

Tôi muốn thực hiện một số phân tích dữ liệu "gần thời gian thực" (giống OLAP) trên dữ liệu trong HDFS.
Nghiên cứu của tôi cho thấy rằng ba khung được đề cập báo cáo mức tăng hiệu suất đáng kể so với Apache Hive. Có ai có kinh nghiệm thực tế với một trong số đó không? Không chỉ liên quan đến hiệu suất, mà còn đối với sự ổn định?Phân tích Hadoop nhanh (Cloudera Impala vs Spark/Shark vs Apache Drill)

Trả lời

58

So sánh giữa Hive và Impala hoặc Spark hoặc Drill đôi khi có vẻ không phù hợp với tôi. Các mục tiêu đằng sau việc phát triển Hive và những công cụ này khác nhau. Hive không bao giờ được phát triển trong thời gian thực, trong xử lý bộ nhớ và dựa trên MapReduce. Nó được xây dựng cho công cụ xử lý hàng loạt ngoại tuyến. Phù hợp nhất khi bạn cần các công việc chạy dài thực hiện các thao tác dữ liệu nặng như tham gia trên các tập dữ liệu rất lớn.

Mặt khác, các công cụ này được phát triển theo ý muốn giữ real-timeness. Đi cho họ khi bạn cần truy vấn dữ liệu không phải rất lớn, có thể phù hợp với bộ nhớ, thời gian thực. Tôi không nói rằng bạn không thể chạy truy vấn trên BigData của bạn bằng cách sử dụng những công cụ này, nhưng bạn sẽ đẩy giới hạn nếu bạn đang chạy truy vấn thời gian thực trên PBs dữ liệu, IMHO.

Khá thường xuyên bạn sẽ thấy (hoặc đọc) rằng một công ty cụ thể có một số PB dữ liệu và họ đang cung cấp thành công nhu cầu thời gian thực của khách hàng của họ. Nhưng thực tế các công ty này không truy vấn toàn bộ dữ liệu của họ hầu hết thời gian. Vì vậy, điều quan trọng là lập kế hoạch thích hợp, when to use what. Tôi hy vọng bạn có được điểm tôi đang cố gắng thực hiện.

Quay lại câu hỏi thực tế của bạn, theo quan điểm của tôi, thật khó để cung cấp một so sánh hợp lý vào thời điểm này vì hầu hết các dự án này đều chưa được hoàn thành. Họ chưa sẵn sàng sản xuất, trừ khi bạn sẵn sàng làm một số (hoặc có thể rất nhiều) công việc một mình. Và, đối với mỗi dự án này, có một số mục tiêu cụ thể rất cụ thể cho dự án cụ thể đó.

For example, Impala được phát triển để tận dụng cơ sở hạ tầng Hive hiện có để bạn không phải bắt đầu từ đầu. Nó sử dụng cùng một siêu dữ liệu mà Hive sử dụng. Mục tiêu của nó là chạy các truy vấn thời gian thực trên đầu kho Hadoop hiện tại của bạn. Trong khi đó, Drill được phát triển thành dự án not only Hadoop. Và để cung cấp cho chúng tôi khả năng truy vấn phân tán trên nhiều nền tảng dữ liệu lớn bao gồm MongoDB, Cassandra, Riak và Splunk. Shark tương thích với Apache Hive, có nghĩa là bạn có thể truy vấn nó bằng cách sử dụng cùng một câu lệnh HiveQL như bạn sẽ làm trong Hive. Sự khác biệt là Shark có thể trả về kết quả nhanh hơn 30 lần so với các truy vấn tương tự chạy trên Hive.

Impala hiện đang hoạt động tốt và một số người đã sử dụng nó, nhưng tôi không tự tin về phần còn lại của 2. Tất cả các công cụ này đều tốt nhưng so sánh công bằng chỉ có thể được thực hiện sau khi bạn thử dữ liệu và nhu cầu xử lý của bạn. Nhưng theo kinh nghiệm của tôi, Impala sẽ là cược tốt nhất vào lúc này. Tôi không nói các công cụ khác không tốt, nhưng chúng chưa đủ trưởng thành. Nhưng nếu bạn muốn sử dụng nó với cụm Hadoop đang chạy của bạn (hadoop của Apache cho cũ), bạn có thể phải thực hiện thêm một số công việc vì Impala được mọi người sử dụng gần như là một tính năng CDH.

Lưu ý: Tất cả những điều này chỉ dựa trên kinh nghiệm của tôi. Nếu bạn tìm thấy một cái gì đó sai hoặc không phù hợp xin vui lòng cho tôi biết. Nhận xét và đề nghị được chào đón. Và tôi hy vọng điều này sẽ trả lời một số truy vấn của bạn.

+2

Thx cho câu trả lời toàn diện. Có vẻ như để xác nhận kết quả nghiên cứu của tôi ở hầu hết các điểm. Ngay bây giờ tôi đang POCing một số trường hợp sử dụng của tôi trong Spark để có được một số kinh nghiệm thực hành.Đối với tôi, có vẻ như cách viết tài liệu tốt hơn Impala (tất cả các tài liệu nghiên cứu về nó đều có sẵn) và API là rõ ràng và súc tích. Nhưng chúng ta sẽ thấy .. Ngoài ra tôi đã so sánh Hive với các khung thời gian thực, bởi vì chúng có khuynh hướng so sánh chúng với nhau thay cho nhau. Có lẽ để thể hiện hiệu suất tốt đẹp đạt được .. – user2306380

+0

Ồ, tuyệt đối .. Bạn có điểm :) .. Chúc may mắn với POC của bạn. – Tariq

+1

Một điều cần ghi nhớ - Impala có một hạn chế lớn: truy vấn trung gian của bạn phải phù hợp với bộ nhớ. Vì vậy, nếu nhóm của bạn theo truy vấn vượt quá 30 GB (ví dụ ram máy của bạn), trước khi áp dụng mệnh đề HAVING có hiệu quả để cắt nó thành 1MB dữ liệu, truy vấn sẽ thất bại. Đây không phải là trường hợp trong các động cơ MPP khác như Apache Drill. –