Hướng dẫn sử dụng Sqoop: Apache Sqoop là gì? Kiến trúc & Thí dụ

Mục lục:

Anonim

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. Nó là một công cụ di chuyển dữ liệu dựa trên kiến ​​trúc trình 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 ví dụ của Hadoop Sqoop là một doanh nghiệp chạy quá trình 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 kho dữ liệu Hive để phân tích thêm.

Tiếp theo trong hướng dẫn Apache Sqoop này, chúng ta sẽ tìm hiểu về kiến ​​trúc Apache Sqoop.

Kiến trúc Sqoop

Tất cả các Hệ thống quản lý cơ sở dữ liệu hiện có đều được thiết kế với tiêu chuẩn SQL. 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 chuyển dữ liệu qua các hệ thống. Kết nối Sqoop là 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 với 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 một loạt cơ sở dữ liệu quan hệ phổ biến, bao gồm MySQL, PostgreSQL, Oracle, SQL Server 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ợ giao thức JDBC của Java. Ngoài ra, Sqoop Big data cung cấp các trình kết nối MySQL và PostgreSQL được tối ưu hóa sử dụng các 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ả.

Kiến trúc Sqoop

Ngoài ra, Sqoop trong dữ liệu lớ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ừ kho dữ liệu doanh nghiệp (bao gồm Netezza, Teradata và Oracle) đến các cửa hàng NoSQL (chẳng hạn như Couchbase). Tuy nhiên, các đầu nối này không đi kèm với gói Sqoop; chúng cần được tải xuống riêng và có thể được thêm dễ dàng vào cài đặt Sqoop hiện có.

Tại sao chúng ta cần Sqoop?

Xử lý phân tích sử dụng Hadoop yêu cầu tải một lượng lớn dữ liệu từ các nguồn khác nhau vào các cụm Hadoop. Quá trình tải dữ liệu hàng loạt này vào Hadoop, từ các nguồn không đồng nhất và sau đó xử lý nó, đ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 xem xét trước khi lựa chọn cách 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 Scripts

Cách tiếp cận truyền thống của việc sử dụng tập lệnh để tải dữ liệu không phù hợp với việc tải dữ liệu hàng loạt 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 vào dữ liệu bên 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 ở các hệ thống bên ngoài (mà không cần 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 làm này 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, các công cụ khác nhau đã được phát triển. SqoopFlume là hai công cụ tải dữ liệu như vậy.

Tiếp theo trong hướng dẫn Sqoop này với các ví dụ, 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 Flume 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 để chuyển dữ liệu phát trực tuyến hàng loạt sang HDFS. HDFS là một hệ thống tệp phân tán được sử dụng bởi hệ sinh thái Hadoop để 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à tìm nạp dữ liệu. Flume có kiến ​​trúc dựa trên tác nhân. Ở đây, một đoạn mã được viết (được gọi là 'tác nhân') đảm nhiệm việc tìm nạp dữ liệu. HDFS có kiến ​​trúc phân tán nơi dữ liệu được phân phối trên nhiều nút dữ liệu.
HDFS là điểm đến để nhập dữ liệu bằng Sqoop. Dữ liệu chuyển đến HDFS thông qua không 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 thúc đẩy 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 các lệnh Sqoop, vì các 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 như 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 truyền trực tuyến. HDFS có các lệnh shell tích hợp riêng để lưu trữ dữ liệu vào đó. HDFS không thể nhập dữ liệu phát trực tuyến