Sqoop 튜토리얼: Apache Sqoop이란 무엇입니까? 아키텍처 및 예시

하둡의 SQOOP란 무엇입니까?

아파치 SQOOP (SQL-to-Hadoop)은 관계형 데이터베이스, 엔터프라이즈 데이터 웨어하우스 및 NoSQL 시스템과 같은 구조화된 데이터 저장소에서 HDFS로 데이터를 대량으로 내보내고 가져오는 것을 지원하도록 설계된 도구입니다. 새로운 외부 시스템에 대한 연결을 제공하기 위해 플러그인을 지원하는 커넥터 아키텍처를 기반으로 하는 데이터 마이그레이션 도구입니다.

Hadoop Sqoop의 예시 사용 사례는 야간에 Sqoop 가져오기를 실행하여 프로덕션 트랜잭션 RDBMS의 당일 데이터를 하이브 추가 분석을 위한 데이터 웨어하우스.

다음으로 이 Apache Sqoop 튜토리얼에서는 Apache Sqoop 아키텍처에 대해 알아봅니다.

스쿱 아키텍처

기존의 모든 데이터베이스 관리 시스템 로 설계되었습니다 SQL 표준을 염두에 두고 있습니다. 그러나 각 DBMS는 방언에 있어서 어느 정도 차이가 있습니다. 따라서 이러한 차이는 시스템 간 데이터 전송과 관련하여 문제를 야기합니다. Sqoop 커넥터는 이러한 문제를 극복하는 데 도움이 되는 구성 요소입니다.

Sqoop Hadoop과 외부 스토리지 시스템 간의 데이터 전송은 Sqoop의 커넥터를 통해 가능해집니다.

Sqoop에는 MySQL, PostgreSQL, Oracle, SQL Server 및 DB2를 포함하여 널리 사용되는 다양한 관계형 데이터베이스로 작업할 수 있는 커넥터가 있습니다. 이러한 각 커넥터는 연결된 DBMS와 상호 작용하는 방법을 알고 있습니다. Java의 JDBC 프로토콜을 지원하는 데이터베이스에 연결하기 위한 일반 JDBC 커넥터도 있습니다. 또한 Sqoop Big data는 데이터베이스별 API를 사용하여 대량 전송을 효율적으로 수행하는 최적화된 MySQL 및 PostgreSQL 커넥터를 제공합니다.

스쿱 아키텍처
스쿱 아키텍처

이 외에도 빅데이터 분야의 Sqoop에는 기업부터 기업까지 데이터 저장소를 위한 다양한 타사 커넥터가 있습니다. 데이터웨어 하우스 (Netezza, Teradata 및 Oracle 포함)을 NoSQL 저장소(예: Couchbase)로 변환합니다. 그러나 이러한 커넥터는 Sqoop 번들과 함께 제공되지 않습니다. 이는 별도로 다운로드해야 하며 기존 Sqoop 설치에 쉽게 추가할 수 있습니다.

왜 Sqoop이 필요한가요?

Hadoop을 사용한 분석 처리에는 다양한 소스의 막대한 양의 데이터를 Hadoop 클러스터로 로드해야 합니다. 이종종에서 Hadoop으로 대량 데이터를 로드하는 프로세스입니다.neo우리가 그것을 소스로 삼아 처리하는 데는 몇 가지 어려움이 따릅니다. 데이터 일관성을 유지 및 보장하고 리소스의 효율적인 활용을 보장하는 것은 데이터 로드에 대한 올바른 접근 방식을 선택하기 전에 고려해야 할 몇 가지 요소입니다.

주요 이슈:

1. 스크립트를 이용한 데이터 로드

스크립트를 사용하여 데이터를 로드하는 기존 접근 방식은 Hadoop에 대량 데이터를 로드하는 데 적합하지 않습니다. 이 접근 방식은 비효율적이고 시간이 많이 걸립니다.

2. Map-Reduce 애플리케이션을 통해 외부 데이터에 직접 액세스

맵 축소 애플리케이션을 위해 (Hadoop에 로드하지 않고) 외부 시스템에 있는 데이터에 대한 직접 액세스를 제공하면 이러한 애플리케이션이 복잡해집니다. 따라서 이 접근법은 실현 가능하지 않습니다.

3. Hadoop은 막대한 데이터를 처리할 수 있는 능력 외에도 다양한 형태의 데이터를 처리할 수 있습니다. 그래서 이러한 이질적인 것을 로드하려면neo데이터를 Hadoop으로 변환하면서 다양한 도구가 개발되었습니다. 스쿱독감 이러한 데이터 로딩 도구는 두 가지입니다.

다음으로 예제가 포함된 Sqoop 튜토리얼에서는 Sqoop, Flume 및 HDFS의 차이점에 대해 알아봅니다.

Hadoop의 Sqoop과 Flume 및 HDFS

스쿱 독감 HDFS
Sqoop은 RDBMS와 같은 구조화된 데이터 소스에서 데이터를 가져오는 데 사용됩니다. Flume은 대량 스트리밍 데이터를 HDFS로 이동하는 데 사용됩니다. HDFS는 Hadoop에서 사용되는 분산 파일 시스템입니다. ecos데이터를 저장하는 시스템입니다.
Sqoop에는 커넥터 기반 아키텍처가 있습니다. 커넥터는 해당 데이터 소스에 연결하고 데이터를 가져오는 방법을 알고 있습니다. Flume에는 에이전트 기반 아키텍처가 있습니다. 여기에는 데이터 가져오기를 담당하는 코드('에이전트'라고 함)가 작성됩니다. HDFS에는 데이터가 여러 데이터 노드에 분산되는 분산 아키텍처가 있습니다.
HDFS는 Sqoop을 사용하여 데이터를 가져오는 대상입니다. 데이터는 XNUMX개 이상의 채널을 통해 HDFS로 흐릅니다. HDFS는 데이터 저장을 위한 궁극적인 대상입니다.
Sqoop 데이터 로드는 이벤트 중심이 아닙니다. Flume 데이터 로드는 이벤트에 의해 구동될 수 있습니다. HDFS는 어떤 수단으로든 제공된 데이터를 저장합니다.
구조화된 데이터 소스에서 데이터를 가져오려면 Sqoop 명령만 사용해야 합니다. 그 이유는 커넥터가 구조화된 데이터 소스와 상호 작용하고 여기에서 데이터를 가져오는 방법을 알고 있기 때문입니다. 트위터에서 생성된 트윗이나 웹 서버의 로그 파일과 같은 스트리밍 데이터를 로드하려면 Flume을 사용해야 합니다. Flume 에이전트는 스트리밍 데이터를 가져오기 위해 구축되었습니다. HDFS에는 데이터를 저장하기 위한 자체 내장 셸 명령이 있습니다. HDFS는 스트리밍 데이터를 가져올 수 없습니다.