Hướng dẫn về Sqoop: Apache Sqoop là gì? Archikiến trúc & Ví dụ
SQOOP trong Hadoop là gì?
Apache SQOOP (SQL-to-Hadoop) là một công cụ được thiết kế để hỗ trợ xuất và nhập dữ liệu hàng loạt vào HDFS từ các kho dữ liệu có cấu trúc như cơ sở dữ liệu quan hệ, kho dữ liệu doanh nghiệp và hệ thống NoSQL. Đây là một công cụ di chuyển dữ liệu dựa trên kiến trúc kết nối hỗ trợ các plugin để cung cấp kết nối với các hệ thống bên ngoài mới.
Một trường hợp sử dụng mẫu của Hadoop Sqoop là một doanh nghiệp thực hiện nhập Sqoop hàng đêm để tải dữ liệu trong ngày từ RDBMS giao dịch sản xuất vào một Tổ ong kho dữ liệu để phân tích sâu hơn.
Tiếp theo trong hướng dẫn về Apache Sqoop này, chúng ta sẽ tìm hiểu về kiến trúc Apache Sqoop.
sqoop Archikiến trúc
Tất cả những gì hiện có Hệ thống Quản lý Dữ liệu được thiết kế với SQL tiêu chuẩn trong tâm trí. Tuy nhiên, mỗi DBMS khác nhau về phương ngữ ở một mức độ nào đó. Vì vậy, sự khác biệt này đặt ra những thách thức khi truyền dữ liệu trên các hệ thống. Trình kết nối Sqoop là các thành phần giúp vượt qua những thách thức này.
Việc truyền dữ liệu giữa Sqoop Hadoop và hệ thống lưu trữ bên ngoài được thực hiện nhờ sự trợ giúp của các đầu nối của Sqoop.
Sqoop có các trình kết nối để làm việc với nhiều cơ sở dữ liệu quan hệ phổ biến, bao gồm MySQL, PostgreSQL, Oracle, Máy chủ SQL và DB2. Mỗi trình kết nối này biết cách tương tác với DBMS liên quan của nó. Ngoài ra còn có một trình kết nối JDBC chung để kết nối với bất kỳ cơ sở dữ liệu nào hỗ trợ Javagiao thức JDBC của. Ngoài ra, dữ liệu lớn của Sqoop cung cấp khả năng tối ưu hóa MySQL và PostgreSQL trình kết nối sử dụng API dành riêng cho cơ sở dữ liệu để thực hiện chuyển hàng loạt một cách hiệu quả.
Ngoài ra, Sqoop trong dữ liệu lớn còn có nhiều trình kết nối bên thứ ba khác nhau cho các kho dữ liệu, từ doanh nghiệp Kho dữ liệu (bao gồm Netezza, Teradata và Oracle) đến các cửa hàng NoSQL (chẳng hạn như Couchbase). Tuy nhiên, những đầu nối này không đi kèm với gói Sqoop; những thứ này cần được tải xuống riêng và có thể dễ dàng thêm vào bản cài đặt Sqoop hiện có.
Tại sao chúng ta cần Sqoop?
Xử lý phân tích bằng Hadoop đòi hỏi phải tải một lượng lớn dữ liệu từ nhiều nguồn khác nhau vào các cụm Hadoop. Quá trình tải dữ liệu hàng loạt vào Hadoop này, từ nhiều nguồn không đồng nhất rồi xử lý dữ liệu, đi kèm với một số thách thức nhất định. Duy trì và đảm bảo tính nhất quán của dữ liệu và đảm bảo sử dụng hiệu quả tài nguyên là một số yếu tố cần cân nhắc trước khi lựa chọn phương pháp tiếp cận phù hợp để tải dữ liệu.
Những vấn đề chính:
1. Tải dữ liệu bằng Script
Cách tiếp cận truyền thống là sử dụng tập lệnh để tải dữ liệu không phù hợp để tải dữ liệu số lượng lớn vào Hadoop; Cách tiếp cận này không hiệu quả và rất tốn thời gian.
2. Truy cập trực tiếp dữ liệu ngoài thông qua ứng dụng Map-Reduce
Việc cung cấp quyền truy cập trực tiếp vào dữ liệu lưu trữ tại các hệ thống bên ngoài (không tải vào Hadoop) cho các ứng dụng thu nhỏ bản đồ sẽ làm phức tạp các ứng dụng này. Vì vậy, cách tiếp cận này là không khả thi.
3. Ngoài khả năng làm việc với dữ liệu khổng lồ, Hadoop có thể làm việc với dữ liệu ở nhiều dạng khác nhau. Vì vậy, để tải dữ liệu không đồng nhất như vậy vào Hadoop, nhiều công cụ khác nhau đã được phát triển. sqoop và Dòng chảy là hai công cụ tải dữ liệu như vậy.
Tiếp theo trong hướng dẫn Sqoop kèm các ví dụ này, chúng ta sẽ tìm hiểu về sự khác biệt giữa Sqoop, Flume và HDFS.
Sqoop vs Flume vs HDFS trong Hadoop
sqoop | Dòng chảy | HDFS |
---|---|---|
Sqoop được sử dụng để nhập dữ liệu từ các nguồn dữ liệu có cấu trúc như RDBMS. | Flume được sử dụng để di chuyển dữ liệu phát trực tuyến số lượng lớn vào HDFS. | HDFS là hệ thống tệp phân tán được hệ sinh thái Hadoop sử dụng để lưu trữ dữ liệu. |
Sqoop có kiến trúc dựa trên trình kết nối. Trình kết nối biết cách kết nối với nguồn dữ liệu tương ứng và lấy dữ liệu. | Flume có kiến trúc dựa trên tác nhân. Ở đây, một mã được viết (được gọi là 'tác nhân') để xử lý việc lấy dữ liệu. | HDFS có kiến trúc phân tán trong đó dữ liệu được phân bổ trên nhiều nút dữ liệu. |
HDFS là đích để nhập dữ liệu bằng Sqoop. | Dữ liệu truyền tới HDFS thông qua 0 hoặc nhiều kênh. | HDFS là điểm đến cuối cùng để lưu trữ dữ liệu. |
Tải dữ liệu Sqoop không theo hướng sự kiện. | Tải dữ liệu Flume có thể được điều khiển bởi một sự kiện. | HDFS chỉ lưu trữ dữ liệu được cung cấp cho nó bằng bất kỳ phương tiện nào. |
Để nhập dữ liệu từ các nguồn dữ liệu có cấu trúc, người ta chỉ phải sử dụng lệnh Sqoop vì trình kết nối của nó biết cách tương tác với các nguồn dữ liệu có cấu trúc và tìm nạp dữ liệu từ chúng. | Để tải dữ liệu phát trực tuyến chẳng hạn như các tweet được tạo trên Twitter hoặc tệp nhật ký của máy chủ web, nên sử dụng Flume. Tác nhân Flume được xây dựng để tìm nạp dữ liệu phát trực tuyến. | HDFS có các lệnh shell tích hợp sẵn để lưu trữ dữ liệu vào đó. HDFS không thể nhập dữ liệu phát trực tuyến |