Урок за Sqoop: Какво е Apache Sqoop? Архитектура & Пример

Съдържание:

Anonim

Какво е SQOOP в Hadoop?

Apache SQOOP (SQL-to-Hadoop) е инструмент, предназначен да поддържа групов износ и импортиране на данни в HDFS от структурирани хранилища за данни като релационни бази данни, корпоративни хранилища за данни и NoSQL системи. Това е инструмент за мигриране на данни, базиран на архитектура на съединителя, която поддържа плъгини за осигуряване на свързаност с нови външни системи.

Примерен случай за използване на Hadoop Sqoop е предприятие, което изпълнява нощно импортиране на Sqoop, за да зарежда данните за деня от производствена транзакционна RDBMS в хранилище за данни на Hive за допълнителен анализ.

След това в този урок за Apache Sqoop ще научим за архитектурата на Apache Sqoop.

Архитектура на Sqoop

Всички съществуващи системи за управление на бази данни са проектирани с мисъл за стандарта SQL. Въпреки това, всяка СУБД се различава донякъде по отношение на диалекта. Така че, тази разлика създава предизвикателства, когато става въпрос за трансфери на данни в системите. Sqoop конекторите са компоненти, които помагат да се преодолеят тези предизвикателства.

Прехвърлянето на данни между Sqoop Hadoop и външна система за съхранение е възможно с помощта на конекторите на Sqoop.

Sqoop има конектори за работа с редица популярни релационни бази данни, включително MySQL, PostgreSQL, Oracle, SQL Server и DB2. Всеки от тези конектори знае как да си взаимодейства със свързаната СУБД. Има и общ JDBC конектор за свързване към всяка база данни, която поддържа JDBC протокола на Java. В допълнение, Sqoop Big data предоставя оптимизирани конектори MySQL и PostgreSQL, които използват специфични за базата данни API за ефективно извършване на групови трансфери.

Архитектура на Sqoop

В допълнение към това, Sqoop в големи данни има различни конектори на трети страни за хранилища за данни, вариращи от корпоративни хранилища за данни (включително Netezza, Teradata и Oracle) до NoSQL магазини (като Couchbase). Тези конектори обаче не се доставят с пакет Sqoop; те трябва да бъдат изтеглени отделно и могат лесно да бъдат добавени към съществуваща инсталация на Sqoop.

Защо ни трябва Sqoop?

Аналитичната обработка с помощта на Hadoop изисква зареждане на огромни количества данни от различни източници в клъстерите на Hadoop. Този процес на насипно зареждане на данни в Hadoop, от хетерогенни източници и след това обработката им, идва с определен набор от предизвикателства. Поддържането и осигуряването на последователност на данните и осигуряването на ефективно използване на ресурсите са някои фактори, които трябва да се вземат предвид, преди да се избере правилният подход за зареждане на данни.

Основни проблеми:

1. Зареждане на данни с помощта на скриптове

Традиционният подход за използване на скриптове за зареждане на данни не е подходящ за групово зареждане на данни в Hadoop; този подход е неефективен и отнема много време.

2. Директен достъп до външни данни чрез приложението Map-Reduce

Предоставянето на директен достъп до данните, намиращи се във външни системи (без зареждане в Hadoop) за приложения за намаляване на карти, усложнява тези приложения. Така че, този подход не е осъществим.

3. В допълнение към възможността да работи с огромни данни, Hadoop може да работи и с данни в няколко различни форми. Така че, за да заредите такива разнородни данни в Hadoop, са разработени различни инструменти. Sqoop и Flume са два такива инструмента за зареждане на данни.

След това в този урок за Sqoop с примери ще научим за разликата между Sqoop, Flume и HDFS.

Sqoop срещу Flume срещу HDFS в Hadoop

Sqoop Флум HDFS
Sqoop се използва за импортиране на данни от структурирани източници на данни като RDBMS. Flume се използва за преместване на масивни поточни данни в HDFS. HDFS е разпределена файлова система, използвана от екосистемата на Hadoop за съхраняване на данни.
Sqoop има архитектура, базирана на конектор. Конекторите знаят как да се свържат със съответния източник на данни и да извлекат данните. Flume има архитектура, базирана на агенти. Тук е написан код (който се нарича „агент“), който се грижи за извличането на данни. HDFS има разпределена архитектура, при която данните се разпределят в множество възли на данни.
HDFS е дестинация за импортиране на данни с помощта на Sqoop. Данните преминават към HDFS през нула или повече канали. HDFS е крайната дестинация за съхранение на данни.
Зареждането на данни в Sqoop не се управлява от събития. Натоварването на данните от Flume може да бъде управлявано от събитие. HDFS просто съхранява данните, предоставени му по какъвто и да е начин.
За да импортирате данни от структурирани източници на данни, трябва да използвате само команди Sqoop, защото неговите съединители знаят как да взаимодействат със структурирани източници на данни и да извличат данни от тях. За да заредите поточни данни, като туитове, генерирани в Twitter, или регистрационни файлове на уеб сървър, трябва да се използва Flume. Flume агентите са създадени за извличане на поточни данни. HDFS има собствени вградени команди на черупката, за да съхранява данни в него. HDFS не може да импортира поточни данни