HBase
 sql >> Cơ Sở Dữ Liệu >  >> NoSQL >> HBase

Cloudera Impala:Truy vấn thời gian thực trong Apache Hadoop, dành cho thực

Sau một thời gian dài nỗ lực kỹ thuật và phản hồi của người dùng, chúng tôi rất vui mừng và tự hào được thông báo về dự án Cloudera Impala. Công nghệ này là một công nghệ mang tính cách mạng đối với người dùng Hadoop và chúng tôi không xem nhẹ tuyên bố đó.

Khi Google xuất bản bài báo Dremel vào năm 2010, chúng tôi cũng như phần còn lại của cộng đồng được truyền cảm hứng bởi tầm nhìn kỹ thuật nhằm mang lại khả năng truy vấn đặc biệt, theo thời gian thực cho Apache Hadoop, bổ sung cho quá trình xử lý hàng loạt MapReduce truyền thống. Hôm nay, chúng tôi đang công bố một cơ sở mã nguồn mở, đầy đủ chức năng mang lại tầm nhìn đó - và, chúng tôi tin rằng, nhiều hơn một chút - mà chúng tôi gọi là Cloudera Impala. Bản nhị phân Impala hiện có sẵn ở dạng beta công khai, nhưng nếu bạn muốn lái thử Impala thông qua một máy ảo được tạo sẵn, chúng tôi cũng có một trong những cái đó cho bạn. Bạn cũng có thể xem lại mã nguồn và khai thác thử nghiệm tại Github ngay bây giờ.

Impala nâng cao hiệu suất truy vấn trong khi vẫn giữ được trải nghiệm người dùng quen thuộc. Với Impala, bạn có thể truy vấn dữ liệu, cho dù được lưu trữ trong HDFS hay Apache HBase - bao gồm các hàm SELECT, JOIN và tổng hợp - trong thời gian thực. Hơn nữa, nó 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. (Vì lý do đó, người dùng Hive có thể sử dụng Impala với chi phí thiết lập nhỏ.) Bản beta đầu tiên bao gồm hỗ trợ cho các tệp văn bản và SequenceFiles; SequenceFiles có thể được nén dưới dạng Snappy, GZIP và BZIP (với Snappy được khuyến nghị để có hiệu suất tối đa). Hỗ trợ các định dạng bổ sung bao gồm tệp văn bản Avro, RCFile, LZO và định dạng cột Parquet được lên kế hoạch cho việc giảm sản xuất.

Để tránh độ trễ, Impala đã vượt qua MapReduce để truy cập trực tiếp vào dữ liệu thông qua một công cụ truy vấn phân tán chuyên biệt rất giống với công cụ tìm thấy trong các RDBMS song song thương mại. Kết quả là hiệu suất nhanh hơn theo thứ tự độ lớn so với Hive, tùy thuộc vào loại truy vấn và cấu hình. (Xem Câu hỏi thường gặp bên dưới để biết thêm chi tiết.) Lưu ý rằng cải tiến hiệu suất này đã được xác nhận bởi một số công ty lớn đã thử nghiệm Impala trên khối lượng công việc trong thế giới thực trong vài tháng nay.

Dưới đây là một khung cảnh kiến ​​trúc cấp cao:

Có nhiều ưu điểm đối với phương pháp này so với các phương pháp thay thế để truy vấn dữ liệu Hadoop, bao gồm ::

  • Nhờ quá trình xử lý cục bộ trên các nút dữ liệu, nên tránh được tình trạng tắc nghẽn mạng.
  • Có thể sử dụng một kho siêu dữ liệu duy nhất, mở và hợp nhất.
  • Việc chuyển đổi định dạng dữ liệu tốn kém là không cần thiết và do đó không phát sinh chi phí.
  • Tất cả dữ liệu đều có thể truy vấn ngay lập tức, không có sự chậm trễ đối với ETL.
  • Tất cả phần cứng đều được sử dụng cho các truy vấn Impala cũng như cho MapReduce.
  • Chỉ cần một nhóm máy duy nhất để mở rộng quy mô.

Chúng tôi khuyến khích bạn đọc tài liệu để biết thêm chi tiết kỹ thuật.

Cuối cùng, chúng tôi muốn trả lời một số câu hỏi mà chúng tôi dự đoán sẽ phổ biến:

Impala có phải là nguồn mở không?
Vâng, Impala là 100% mã nguồn mở (Giấy phép Apache). Bạn có thể xem lại mã cho chính mình tại Github ngay hôm nay.

Impala khác với Dremel như thế nào?
Sự khác biệt đầu tiên và chính là Impala là mã nguồn mở và có sẵn cho mọi người sử dụng, trong khi Dremel là độc quyền của Google.

Về mặt kỹ thuật, Dremel đạt được thời gian phản hồi tương tác trên các tập dữ liệu rất lớn thông qua việc sử dụng hai kỹ thuật:

  • Một định dạng lưu trữ cột mới cho dữ liệu quan hệ lồng nhau / dữ liệu có cấu trúc lồng nhau
  • Các thuật toán tổng hợp có thể mở rộng phân tán, cho phép tính toán song song kết quả của một truy vấn trên hàng nghìn máy.

Cái thứ hai được vay mượn từ các kỹ thuật được phát triển cho các DBMS song song, cũng là nguồn cảm hứng cho việc tạo ra Impala. Không giống như Dremel như được mô tả trong bài báo năm 2010, vốn chỉ có thể xử lý các truy vấn một bảng, Impala đã hỗ trợ tập hợp đầy đủ các toán tử nối là một trong những yếu tố khiến SQL trở nên phổ biến.

Để nhận ra những lợi ích hiệu suất đầy đủ do Dremel chứng minh, Hadoop sẽ sớm có một định dạng lưu trữ nhị phân cột hiệu quả được gọi là Parquet. Nhưng trái với Dremel, Impala hỗ trợ một loạt các định dạng tệp phổ biến. Điều này cho phép người dùng chạy Impala trên dữ liệu hiện có của họ mà không cần phải "tải" hoặc chuyển đổi nó. Nó cũng cho phép người dùng quyết định xem họ muốn tối ưu hóa để có tính linh hoạt hay chỉ là hiệu suất thuần túy.

Tóm lại, Impala plus Parquet sẽ đạt được hiệu suất truy vấn được mô tả trong bài báo của Dremel, nhưng vượt qua những gì được mô tả ở đó trong chức năng SQL.

Thực sự thì các truy vấn Impala nhanh hơn bao nhiêu so với các truy vấn Hive?
Mức độ cải thiện hiệu suất chính xác phụ thuộc nhiều vào một số yếu tố:

  • Cấu hình phần cứng:Impala thường có thể tận dụng tối đa tài nguyên phần cứng và đặc biệt tạo ra ít tải CPU hơn Hive, điều này thường chuyển thành băng thông I / O tổng hợp quan sát được cao hơn so với Hive. Tất nhiên, Impala không thể chạy nhanh hơn mức cho phép của phần cứng, vì vậy bất kỳ sự tắc nghẽn phần cứng nào cũng sẽ hạn chế tốc độ tăng tốc quan sát được. Đối với các truy vấn ràng buộc I / O thuần túy, chúng tôi thường thấy hiệu suất tăng trong khoảng 3-4 lần.
  • Độ phức tạp của truy vấn:Các truy vấn yêu cầu nhiều giai đoạn MapReduce trong Hive hoặc yêu cầu các phép kết hợp bên rút gọn sẽ có tốc độ cao hơn so với các truy vấn tổng hợp một bảng đơn giản. Đối với các truy vấn có ít nhất một phép tham gia, chúng tôi có vẻ như hiệu suất tăng gấp 7-45 lần.
  • Sẵn có bộ nhớ chính làm bộ nhớ đệm cho dữ liệu bảng:Nếu dữ liệu được truy cập thông qua truy vấn thoát ra khỏi bộ nhớ đệm, thì tốc độ tăng tốc sẽ ấn tượng hơn nhờ hiệu quả vượt trội của Impala. Trong các tình huống đó, chúng tôi đã thấy tốc độ tăng gấp 20 lần so với Hive từ 20x-90 lần ngay cả đối với các truy vấn tổng hợp đơn giản.

Liệu Impala có phải là sự thay thế cho MapReduce hoặc Hive - hay cho cơ sở hạ tầng kho dữ liệu truyền thống cho vấn đề đó không?
Không. Sẽ tiếp tục có nhiều trường hợp sử dụng khả thi cho MapReduce và Hive (ví dụ:đối với khối lượng công việc chuyển đổi dữ liệu chạy dài) cũng như các khuôn khổ kho dữ liệu truyền thống (ví dụ:đối với phân tích phức tạp trên các tập dữ liệu có cấu trúc, giới hạn). Impala là sự bổ sung cho các phương pháp tiếp cận đó, hỗ trợ các trường hợp sử dụng trong đó người dùng cần tương tác với các tập dữ liệu rất lớn, trên tất cả các silo dữ liệu, để nhanh chóng nhận được các tập kết quả tập trung.

Bản phát hành Impala Beta có bất kỳ giới hạn kỹ thuật nào không?
Như đã đề cập trước đây, các định dạng tệp được hỗ trợ trong bản beta đầu tiên bao gồm tệp văn bản và SequenceFiles, với nhiều định dạng khác sẽ được hỗ trợ trong bản phát hành sản xuất sắp tới. Hơn nữa, hiện tại tất cả các phép nối được thực hiện trong không gian bộ nhớ không lớn hơn vùng nhớ của nút nhỏ nhất trong cụm; trong quá trình sản xuất, các phép nối sẽ được thực hiện trong bộ nhớ tổng hợp. Cuối cùng, không có UDF nào khả dụng vào lúc này.

Yêu cầu kỹ thuật đối với Bản phát hành Impala Beta là gì?
Bạn sẽ cần cài đặt CDH4.1 trên RHEL / CentOS 6.2. Chúng tôi thực sự khuyên bạn nên sử dụng Cloudera Manager (Phiên bản miễn phí hoặc dành cho doanh nghiệp) để triển khai và quản lý Impala vì nó tự động xử lý các chi tiết giám sát và triển khai phân tán.

Chính sách hỗ trợ cho Bản phát hành Impala Beta là gì?
Nếu bạn là khách hàng hiện tại của Cloudera bị lỗi, bạn có thể yêu cầu Hỗ trợ khách hàng yêu cầu hỗ trợ khách hàng và chúng tôi sẽ cố gắng giải quyết vấn đề đó trên cơ sở nỗ lực cao nhất. Nếu bạn không phải là khách hàng hiện tại của Cloudera, bạn có thể sử dụng phiên bản JIRA công khai của chúng tôi hoặc danh sách gửi thư người dùng impala, sẽ được nhân viên Cloudera giám sát.

Khi nào Impala thường có sẵn để sử dụng trong sản xuất?
Kế hoạch ngừng sản xuất vào quý đầu tiên của năm 2013. Khách hàng có thể nhận được hỗ trợ thương mại dưới dạng đăng ký Cloudera Enterprise RTQ vào thời điểm đó.

Chúng tôi hy vọng rằng bạn có cơ hội để xem lại mã nguồn Impala, khám phá bản phát hành beta, tải xuống và cài đặt VM hoặc bất kỳ sự kết hợp nào ở trên. Phản hồi của bạn trong mọi trường hợp được đánh giá cao; chúng tôi cần sự giúp đỡ của bạn để cải thiện Impala hơn nữa.

Chúng tôi sẽ cung cấp cho bạn thông tin cập nhật thêm về Impala khi chúng tôi tiến gần hơn đến khả năng sản xuất. (Cập nhật:Đọc về Impala 1.0.)

Tài nguyên Impala:
- Mã nguồn Impala
- Tải xuống Impala (Bản phát hành Beta và VM)
- Tài liệu Impala
- JIRA công khai
- Danh sách gửi thư Impala
- Impala miễn phí đào tạo (Screencast)

(Đã thêm 30/10/2012) Bài viết của bên thứ ba về Impala:
- GigaOm:Truy vấn thời gian thực cho Hadoop dân chủ hóa quyền truy cập vào phân tích dữ liệu lớn (22 tháng 10 năm 2012)
- Wired:Man Busts Out of Google, Rebuilds Top-Secret Query Machine (24 tháng 10, 2012)
- InformationWeek:Cloudera ra mắt truy vấn Hadoop thời gian thực (ngày 24 tháng 10 năm 2012)
- GigaOm:Cloudera biến SQL trở thành công dân hạng nhất trên Hadoop (ngày 24 tháng 10 năm 2012)
- ZDNet:Cloudera's Impala đưa Hadoop sang SQL và BI (ngày 25 tháng 10 năm 2012)
- Có dây:Hồ sơ Marcel Kornacker (ngày 29 tháng 10 năm 2012)
- Tiến sĩ Dobbs:Cloudera Impala - Xử lý Petabyte với tốc độ nhanh Thought (ngày 29 tháng 10 năm 2012)

Marcel Kornacker là kiến ​​trúc sư của Impala. Trước khi gia nhập Cloudera, anh ấy là nhà phát triển chính cho công cụ truy vấn của dự án F1 của Google.

Justin Erickson là giám đốc sản phẩm của Impala.


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Điều chỉnh hiệu suất trong MapReduce để cải thiện hiệu suất

  2. Sao chép cơ sở dữ liệu hoạt động của Cloudera trong một Nutshell

  3. Apache HBase I / O - HFile

  4. Tuần tự hóa thư mạnh mẽ trong Apache Kafka bằng Apache Avro, Phần 1

  5. Sao lưu Apache HBase trực tuyến với CopyTable