2012-04-03 38 views
5

Tôi đang sử dụng trình điều khiển HST JDBC để thực hiện truy vấn sql giống với kho dữ liệu HDFS của tôi. Tôi đã cố gắng sử dụng c3p0 để xử lý kết nối tổng hợp. Tôi không chắc chắn đó là cách tiếp cận phù hợp vì truy vấn Hive có thể mất thời gian khá lâu, điều này có nghĩa là kết nối sẽ được giữ lâu không được phát hành trở lại hồ bơi, tôi đang cố gắng nghĩ ra một số thiết lập phù hợp với số lượng tối đa các kết nối trong cấu hình c3p0.thực tiễn tốt nhất để kết hợp các kết nối Hive JDBC là gì

Có cách nào tốt nhất để gộp kết nối jdbc hive không? c3p0? DBCP?

Còn MAX_POOL_SIZE thì sao? Nó có nên lớn hơn cài đặt bình thường cho RDB không?

Trả lời

4

Rất tuyệt, vì vậy câu hỏi trong chuỗi bạn đề cập đã thực sự được tôi hỏi từ lâu :) Thật thú vị khi xem cách sử dụng trong trường hợp sử dụng của bạn.

Nhưng hãy để tôi cho bạn biết Hive khởi chạy công việc Hadoop bất cứ khi nào bắt buộc tùy thuộc vào truy vấn của bạn. Vì vậy, nếu bạn muốn thực hiện nhiều truy vấn, mà tôi tin là những gì bạn muốn làm ở đây, bạn cần phải sử dụng một công cụ lên lịch có thể chạy nhiều công việc đồng thời. Hadoop theo mặc định sử dụng trình lên lịch đầu tiên trong lần đầu tiên (FIFO), kéo công việc từ một hàng đợi công việc. Vì vậy, muốn chuyển sang Trình lên lịch công bằng hoặc Trình lên lịch công suất.

Ý tưởng cốt lõi đằng sau công cụ lập lịch chia sẻ công bằng là gán tài nguyên cho công việc sao cho trung bình theo thời gian, mỗi công việc nhận được một phần bằng nhau của các tài nguyên có sẵn.

Trình lên lịch khả năng chia sẻ một số nguyên tắc của trình lên lịch công bằng nhưng cũng có những khác biệt riêng biệt. Đầu tiên, khả năng lập kế hoạch dung lượng được xác định cho các cụm lớn, có thể có nhiều người tiêu dùng độc lập và các ứng dụng đích. Trong tính năng lập lịch, thay vì các hồ bơi, một số hàng đợi được tạo ra, mỗi hàng có một số vị trí bản đồ và giảm số cấu hình. Mỗi hàng đợi cũng được gán một dung lượng được bảo đảm (trong đó tổng công suất của cụm là tổng dung lượng của mỗi hàng đợi). Thứ hai, khả năng ưu tiên công việc trong một hàng đợi. Cuối cùng, là sự hiện diện của các điều khiển truy cập nghiêm ngặt trên hàng đợi.

+0

Cảm ơn thông tin. Tôi vẫn còn hơi bối rối ở đây, Nếu tôi gộp 10 kết nối JDBC với Hive, điều đó có nghĩa là tôi đã mở ra 10 công việc hive song song? Điều gì xảy ra với nó sau khi công việc được thực hiện? rằng kết nối jdbc được phát hành trở lại hồ bơi? Lần sau, một truy vấn mới sẽ có kết nối jdbc và có một công việc mới hive? lợi ích gì tôi đạt được sau đó bằng cách sử dụng kết nối jdbc tổng hợp ở đây, chỉ là việc tạo/xóa các kết nối jdbc? – Shengjie

+0

Những gì tôi đã hiểu cho đến nay là, bạn có thể mở nhiều kết nối tới MySql hoặc bất kỳ DBMS nào được sử dụng bởi Hive như một metastore nhưng, dòng dưới cùng là, khi bạn kích hoạt các truy vấn phức tạp, hive sẽ lần lượt tạo ra các công việc MapReduce để tìm nạp kết quả từ kho Hive, trong trường hợp của bạn là trong HDFS. –

+0

Tiếp tục ... Tạo nhóm tôi đã sử dụng giống như chủ đề. Tôi đã nói 10 chủ đề kết nối để tổ chức một máy chủ, tùy thuộc vào khả năng của cụm của tôi. Truy vấn cho biết, 'chọn tên từ nhân viên' sẽ tiêu thụ một chuỗi. Một truy vấn như vậy, sẽ nói, chiếm một sợi nữa và vân vân. Khi một truy vấn kết thúc, tôi sẽ trả về (checkin) luồng, được kết hợp với truy vấn đó, quay trở lại nhóm chủ đề. –

0

Kinda tìm thấy câu trả lời trong this thread. Tôi sẽ thử nó và xem nó như thế nào.

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