Урок за Sqoop: Какво е Apache Sqoop? Archiтекстура и пример
Какво е SQOOP в Hadoop?
Apache SQOOP (SQL-to-Hadoop) е инструмент, предназначен да поддържа групово експортиране и импортиране на данни в HDFS от структурирани хранилища на данни като релационни бази данни, складове за корпоративни данни и NoSQL системи. Това е инструмент за мигриране на данни, базиран на конекторна архитектура, която поддържа плъгини за осигуряване на свързаност към нови външни системи.
Примерен случай на използване на Hadoop Sqoop е предприятие, което изпълнява нощен импорт на Sqoop, за да зареди данните за деня от производствена транзакционна RDBMS в Кошер хранилище на данни за допълнителен анализ.
След това в този урок за Apache Sqoop ще научим за архитектурата на Apache Sqoop.
Sqoop Archiтекстура
Всички съществуващи Системи за управление на бази данни са проектирани с SQL стандарт в ума. Въпреки това, всяка СУБД се различава до известна степен по отношение на диалекта. Така че тази разлика създава предизвикателства, когато става въпрос за трансфер на данни между системите. Sqoop Connectors са компоненти, които помагат за преодоляване на тези предизвикателства.
Трансферът на данни между Sqoop Hadoop и външна система за съхранение е възможен с помощта на конекторите на Sqoop.
Sqoop има конектори за работа с редица популярни релационни бази данни, включително MySQL, PostgreSQL, Oracle, SQL Server и DB2. Всеки от тези конектори знае как да взаимодейства със свързаната с него СУБД. Има и общ JDBC конектор за свързване към всяка база данни, която поддържа JavaJDBC протокол на. В допълнение, 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 намлява воденичен улей са два такива инструмента за зареждане на данни.
След това в този урок за Sqoop с примери ще научим за разликата между Sqoop, Flume и HDFS.
Sqoop срещу Flume срещу HDFS в Hadoop
Sqoop | воденичен улей | HDFS |
---|---|---|
Sqoop се използва за импортиране на данни от източници на структурирани данни като RDBMS. | Flue се използва за преместване на групови поточни данни в HDFS. | HDFS е разпределена файлова система, използвана от екосистемата Hadoop за съхраняване на данни. |
Sqoop има архитектура, базирана на конектори. Конекторите знаят как да се свържат със съответния източник на данни и да извлекат данните. | Flume има базирана на агент архитектура. Тук е написан код (който се нарича „агент“), който се грижи за извличането на данни. | HDFS има разпределена архитектура, при която данните се разпределят между множество възли за данни. |
HDFS е дестинация за импортиране на данни с помощта на Sqoop. | Данните протичат към HDFS през нула или повече канали. | HDFS е крайната дестинация за съхранение на данни. |
Зареждането на данни от Sqoop не се управлява от събития. | Зареждането на данни на Flume може да бъде управлявано от събитие. | HDFS просто съхранява данни, предоставени му по какъвто и да е начин. |
За да импортирате данни от източници на структурирани данни, трябва да използвате само команди на Sqoop, тъй като неговите конектори знаят как да взаимодействат с източници на структурирани данни и да извличат данни от тях. | За да заредите поточни данни като туитове, генерирани в Twitter или регистрационни файлове на уеб сървър, трябва да се използва Flume. Flume агентите са създадени за извличане на поточни данни. | HDFS има свои собствени вградени команди на обвивката за съхраняване на данни в него. HDFS не може да импортира поточни данни |