大数据仓库理论(二)Kettle+Sqoop+Azkaban+Impala


大数据仓库理论(二)Kettle+Sqoop+Azkaban+Impala

一、Kettle

1、Kettle的介绍

Kettle是一款开源的、元数据驱动的ETL工具集,是开源ETL工具里功能比较强大的一个。

Kettle需要对数据进行 抽取、转换、装入和加载 ,它的中文名字可以称为水壶。

其名字的起源:希望把各种数据放到一个壶里然后以一种指定的格式流出。

2、Kettle程序启动

1)Kettle程序启动分为两种:作业、转换

2)作业调用启动脚本:kitchen.sh (kitchen.bat)

3)转换调用启动脚本:pan.sh (pan,bat)

3、Kettle的组件说明:JOB(作业调用)

分为串行执行和并行执行。
串行执行是先执行完其中一条线再执行另一条线;
并行是两条线同时执行,同一条线上的两个步聚会先执行前面的再执行后面的。
每个步骤执行结果分两种:true(成功)/false(失败),根据返回结果可以控制流程走向。

4、Kettle的组件说明:TRANSFORMATION(转换调用)

一开始所有步骤同时运行,记录会从最前端的步骤向后 传递
传递到相应步骤则该记录被该步骤作相应 处理
处理完成再把记录往后 传递
记录传递分 复制和分发两种模式

 5、Kettle常用组件

 6、Kettle输出日志说明

Nothing:不显示任何输出
Error:仅仅显示错误信息
Minimal:使用最小的日志
Basic:缺省的日志级别(一般上线的项目采用该日志)
Detailed:给出日志输出的细节(适用于未上线的项目)
Debug:调试目的,调试输出
Rowlevel:打印出每一行记录的信息

二、Sqoop

Sqoop是Apache旗下的一款“Hadoop和关系数据库服务器之间传送数据”的工具

三、Azkaban

1、Azkaban简介

Azkaban是LinkedIn开源的 任务调度框架,类似于JavaEE中的JBPM和Activiti工作流框架。
如ETL的过程:
Sqoop在凌晨1点从RDBMS中抽取数据(E),在凌晨2点用Hadoop或Spark转换数据(T),在凌晨3点用Sqoop再把结果数据加载(L)进RDBMS或NOSQL。
假设没有Azkaban这样的调度框架,一般用crontab+shell,
crontab+shell虽然简单易用,但也有明显的缺点,如 任务的依赖处理、任务监控、任务流的可视化等,就需要一个调度框架来统一。
常见的任务调度框架有 Apache Oozie、LinkedIn Azkaban、Apache Airflow、Alibaba Zeus
由于 Azkaban具有轻量可插拔、友好的WebUI、SLA告警、完善的权限控制、易于二次开发等优点,也得到了广泛应用。

2、Azkaban架构

 Relational Database: 存储元数据,如项目名称、项目描述、项目权限、任务状态、SLA规则等。
 Azkaban WebServer: 项目管理、权限授权、任务调度、监控executor
 Azkaban ExecutorServer: 作业流执行的Server

3、Azkaban的部署方式

1)solo-server模式
DB使用的是一个内嵌的H2,Web Server和Executor Server运行在同一个进程里。
这种模式包含Azkaban的所有特性,但一般用来学习和测试。
2)two-server模式
DB使用的是MySQL,MySQL支持master-slave架构,Web Server和ExecutorServer运行在不同的进程中。
3)分布式multiple-executor模式
DB使用的是MySQL,MySQL支持master-slave架构,Web Server和ExecutorServer运行在不同机器上,且有多个Executor Server。

四、Impala

1、Impala简介

基于GOOGLE的Dremel为原型的查询引擎, Cloudera公司推出, 提供对HDFS、HBase数据的高性能、低延迟的交互式SQL查询功能。
  • Impala服务器是一个分布式,大规模并行处理(MPP)的服务引擎。
  • 基于Hive使用内存计算,兼顾数据仓库、具有实时、批处理、多并发等优点。
  • 是CDH平台首选的PB级大数据实时查询分析引擎。

2、SMP和MPP

 3、Impala架构

注:Impala目前没有很好的容错机制
1)Statestore Daemon
  • 负责收集分布在集群中各个impalad进程的资源信息、各节点健康状况,同步节点信息。(存储元数据
  • 负责query的调度
2)Catalog Daemon
  • 分发表的元数据信息到各个impalad中
  • 接收来自statestore的所有请求
3)Impala Daemon
  • 接收client、hue、jdbc或者odbc请求、Query执行并返回给中心协调节点子节点上的守护进程,
  • 负责向statestore保持通信,汇报工作

详情参考: https://www.cnblogs.com/liuxinrong/articles/12918799.html

4、Impala的优势

1) Impala不需要把中间结果写入磁盘,省掉了大量的I/O开销。
2) 省掉了MR作业启动的开销。
      MR启动task的速度很慢,Impala直接通过相应的服务进程来进行作业调度,速度快了很多。
3)Impala完全抛弃了MR这个不太适合做SQL查询的范式,而是像Dremel一样借鉴了 MPP并行数据库的思想另起炉灶,
      因此 可做更多的查询优化,从而 省掉不必要的shuffle、sort等开销
4)用C++实现, 做了很多有针对性的硬件优化,例如使用SSE指令。
5) 使用了支持Data locality的I/O调度机制,尽可能地将数据和计算分配在同一台机器上进行, 减少了网络开销

5、Impala资源管理

注:因为impala没有很好的容错机制所以需要对其进行资源管理

1)静态资源池

2)动态资源池

3)资源管理相关参数配置


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM