2011-01-26 30 views
13

Chúng tôi muốn triển khai Hadoop trên hệ thống của mình để cải thiện hiệu suất của nó.Tích hợp Hadoop và MySQL

Quy trình hoạt động như sau: Hadoop sẽ thu thập dữ liệu từ cơ sở dữ liệu MySQL sau đó xử lý. Đầu ra sau đó sẽ được xuất trở lại cơ sở dữ liệu MySQL.

Đây có phải là triển khai tốt không? Điều này có cải thiện hiệu suất tổng thể của hệ thống của chúng tôi không? Các yêu cầu và điều này đã được thực hiện trước đây? Một hướng dẫn tốt sẽ thực sự hữu ích.

Cảm ơn

Trả lời

1

Altough nó không phải là một cách sử dụng hadoop thường xuyên. Nó rất có ý nghĩa trong kịch bản sau:
a) Nếu bạn có cách tốt để phân vùng dữ liệu của bạn thành các đầu vào (như phân vùng hiện có).
b) Việc xử lý từng phân vùng tương đối nặng. Tôi sẽ đưa ra số lượng ít nhất 10 giây thời gian CPU trên mỗi phân vùng.
Nếu cả hai điều kiện được đáp ứng - bạn sẽ có thể áp dụng bất kỳ lượng CPU mong muốn nào để xử lý dữ liệu của bạn.
Nếu bạn đang thực hiện quét hoặc tập hợp đơn giản - tôi nghĩ rằng bạn sẽ không đạt được bất kỳ thứ gì. Mặt khác - nếu bạn sẽ chạy một số thuật toán chuyên sâu của CPU trên mỗi phân vùng - thì quả thực sự tăng của bạn có thể là đáng kể.
Tôi cũng sẽ đề cập đến một trường hợp riêng biệt- nếu quá trình xử lý của bạn yêu cầu phân loại dữ liệu lớn. Tôi không nghĩ rằng MySQL sẽ tốt trong việc phân loại hàng tỉ bản ghi. Hadoop sẽ làm điều đó.

+0

Đó là cách sử dụng Hadoop thông thường. Xem kiến ​​trúc Lamda. Sử dụng MySQL như một lớp tốc độ là tiêu chuẩn (mặc dù các công cụ khác cũng được sử dụng). SQOOP sẽ không tồn tại nếu điều này không mang tính chuẩn mực. – nick

+0

Thông thường hadoop có ý nghĩa khi chúng tôi thêm khả năng mở rộng lớn. Chạy hàng chục người lập bản đồ sẽ lặp lại một MySQL sẽ không mang lại nhiều lợi ích. Sử dụng thông thường là có hadoop để tiền xử lý và tổng hợp dữ liệu thô, và sau đó tải vào RDBMS ... –

2

Hadoop được sử dụng cho công việc hàng loạt dựa chủ yếu vào lớn cỡ bán cấu trúc dữ liệu .. hàng loạt theo nghĩa ngay cả những công việc ngắn nhất là theo thứ tự của độ lớn của phút. Loại vấn đề hiệu suất nào bạn đang gặp phải? Là nó dựa trên dữ liệu chuyển đổi hoặc báo cáo. Tùy thuộc vào kiến ​​trúc này có thể giúp hoặc làm cho mọi thứ tồi tệ hơn.

0

Tôi đồng ý với Sai. Tôi đang sử dụng Hadoop với MySql chỉ khi cần thiết. Tôi xuất bảng thành CSV và tải nó lên HDFS để xử lý dữ liệu nhanh hơn. Nếu bạn muốn duy trì dữ liệu đã xử lý của mình, bạn sẽ phải viết một công việc giảm tốc duy nhất sẽ thực hiện một số loại batchinserts để cải thiện hiệu suất chèn.
NHƯNG thực sự phụ thuộc vào loại điều bạn muốn làm.

+1

Tôi tin rằng việc xuất nó sang tệp csv và sau đó tải nó vào mysql sẽ nhanh hơn chèn trực tiếp hàng loạt đầu ra vào db từ hadoop.Latter sẽ là một cuộc gọi jdbc chậm so với tải phim. –

2

Như đã đề cập bởi Joe, Sqoop là một công cụ tuyệt vời của hệ sinh thái Hadoop để nhập và xuất dữ liệu từ và đến cơ sở dữ liệu SQL như MySQl.

Nếu bạn cần tích hợp phức tạp hơn của MySQL bao gồm ví dụ: lọc hoặc biến dạng, thì bạn nên sử dụng một khung tích hợp hoặc bộ tích hợp cho vấn đề này. Hãy xem bản trình bày của tôi "Big Data beyond Hadoop - How to integrate ALL your data" để biết thêm thông tin về cách sử dụng các khung tích hợp nguồn mở và các bộ tích hợp với Hadoop.

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