Какво е 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 в големи данни има различни конектори на трети страни за хранилища за данни, вариращи от корпоративни хранилища за данни (включително 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 не може да импортира поточни данни |