数仓工具

数仓工具

1、ETL

1.1ETL介绍

​ ETL(Extract-Transform-Load)是将数据从来源端经过抽取(extract)、转换(transform)、加载(load)至目的端的过程,ETL较常用的数据仓库,从数据源抽取出来所需要的原始数据,经过数据清洗,最终将清洗后的数据加载到数据仓库中去。

image-20210320141033425

1.2数据抽取

​ 数据抽取是从数据源抽取需要的原始数据,抽取的方式多种多样,要根据数据源的特点来确定,通常有如下几种数据抽取的方式:

​ 1、从关系数据抽取数据

​ 通过OLTP系统采用关系数据库存储业务操作数据,从关系数据库抽取操作型数据是最多一种数据抽取方式。

​ 数据从关系数据库抽取后通常会先以文件存储到分布式文件系统中(例如HDFS),方便ETL程序读取原始数据。也有的是将抽取后的数据直接存储到数据仓库中,采用第二种方法需要提前在数据仓库创建与原始数据相同结构的数据仓库模型。

​ 2、从日志文件抽取

​ OLTP系统通过日志系统将日志的操作日志、系统日志等存储在OLTP服务器上,由专门的采集程序从服务器上采集日志文件信息。

​ 3、从数据流接口抽取

​ OLTP系统提供对外输出数据的接口(比如telnet),采用系统与该接口对接,从数据流接口抽取需要的数据。

1.3 数据转换

​ 数据转换也叫数据清洗转换,是将采集过来的原始数据(通过原始数据存在一定的脏数据)请洗(过滤)掉不符合要求的脏数据,根据数据仓库的要求进行转换,经过数据清洗转换后是符合数据仓库要求的数据。

​ 要清洗的脏数据的形式有:

​ 1、错误的数据

​ 存在数据内容错误的信息,比如学生选课信息中课程标识错误或选课日志非法等。

​ 2、不完整的数据

​ 是指信息不完整,比如学生选课信息中缺少学生或者缺少课程的信息,这类信息是不符合学生选课数据模型的要求的。

​ 3、重复数据

​ 第三类数据是要根据具体的业务进行单独去重新操作,比如:同一个课程学习会话中只允许有一条学生学生记录,这里就要根据会话ID对数据进行去重操作。

​ 数据转换的形式有:

​ 1、数据格式转换

​ 对数据的格式进行转换,通常转换后数据内容是不变的,比如:数据仓库要求的日期格式是yyyymmdd,而采集过来的数据格式是yyyy-mm-dd,这里需要将yyyy-mm-dd的格式转换为yyyymmdd。

​ 2、数据内容转换

​ 对数据内容进行转换,通常数据内容转换后是不会改变原始数据内容的意义的,比如:数据仓库要求存储用户所在区域,这里就需要根据采集过来的用户IP地址从ip库中查找出用户的ip地址所对应的区域信息,这里根据IP地址换换为区域就是数据内容并的转换。

1.4数据加载

​ 数据加载就是清洗转换后的数据存储到数据仓库中,数据加载的方式包括:全量加载、增量加载。

​ 全量加载:

​ 全量架子啊相当于覆盖架子啊的方式,每个架子都会覆盖原始数据将数据全部加载到数据仓库,此类加载方式通常用于维度数据。

​ 增量加载:

​ 增量加载按照一定的计划(通常是时间计划)逐步的一批一批的将数据加载到数据仓库,此类加载方式通常用于OLAP的业务操作数据。

1.5 ETL工具

1.5.1有哪些工具

​ 我们常用的ETL工具有Sqoop、Kettle、Nifi。

1.5.1.1 Kettle

​ kettle是一款国外开源的ETL工具,纯java编写,可以在Windows、Linux、Unix上运行,数据抽取与传输高效稳定,纯java编写,无需安装。

官网地址:https://community.hitachivantara.com/docs/DOC-1009855

优点:

a、最大的优点是开源免费。

b、部署简单

c、转换过程比较灵活,可以是手工编写的SQL语句、Java代码、正则表达式等。

d、kettle支持广泛的数据库、数据文件等,同时支持扩展。

缺点

a、由于是基于JVM的,所以当处理大数据量的时候瓶颈问题比较突出。

b、客户端和服务端在一起,耦合性太强导致其跨平台能力较差。

c、监控日志粒度比较粗、问题比较难追踪。

1.5.1.2 NiFi

​ Apache NiFi是一个易于使用,功能强大且可靠的系统,用于处理和分发数据。可以自动化管理系统间的数据流。它使用高度可配置的指示图来管理数据路由、转换和系统中介逻辑,支持从多种数据源动态拉取数据。NiFi原来是NSA的一个项目,目前已经代码开源,是Apache基金会的顶级项目之一。

​ NiFi是基于Java的,使用Maven支持包的构建管理。NiFi基于web方式工作,后台在服务器上进行调度。用户可以将数据处理定义为一个流程,然后进行处理,Nifi后台具有数据处理引擎、任务调度等组件。

​ 简单的说,Nifi就是为了解决不同系统间数据自动流通问题而建立的。

优点

​ A、可视化的UI界面,各个模块组件之间高度可配置,且每个流程都有监控,可以通过界面直观的看到各个数据处理模块之间的数据流转情况,分析出程序性能瓶颈。

​ B、数据流可以在UI界面自由拖拽和扩展,各模块之间相互独立,互不影响。

​ C、可以在处理耗时时的地方创建多个处理模块并行执行,提升处理速度。类似于代码中加入了多线程,但是对于修改代码,界面配置操作十分简单。

​ D、修改方便,任意模块都可以在处理流转过程中随时启停,处理任务模块都可以实现热插拔。数据流向随时可变。

​ E、Nifi的对处理模块有对应的retry机制和错误分发机制,且可配置性强。

缺点

​ 各个步骤中间结果落地导致磁盘io称为NIFI的瓶颈,这个缺点在数据冗余量越大的时候表现的越明显。

1.5.1.3 Sqoop

​ Sqoop是Apache下的顶级项目,用来将Hadoop和关系型数据库中的数据相互转移,可以将一个关系型数据库(例如:Mysql、Oracle、PostgreSQL等)中的数据导入到Hadoop的HDFS中,也可以将HDFS的数据导入到关系型数据库中,目前在各个公司应用广泛,且发展前景比较乐观。其特点在于:

  1. 专门为Hadoop而生,随Hadoop版本更新支持程度好,且原本即是CDH版本孵化出来的开源项目,支持1) CDH的各个版本号。
  2. 它支持多种数据库,比如mysql、oracle、postgresql。
  3. 可以高效、控制的利用资源,可以通过调整任务数来控制任务的并发度,可以指定按某个字段进行拆分并行化导入过程。
  4. 可以自动的完成数据映射的转换。由于导入数据库是有类型的,它可以自动根据数据库中的类型转换到Hadoop中,当然用户也可以自定义它们之间的映射关系。
  5. 大部分企业还在使用sqoop1版本,sqoop1能满足公司的基本需求。
  6. 自带的辅助工具比较丰富,如sqoop-import、sqoop-list-databases、sqoop-list-tables等。
1.5.2 项目选型

​ 知行教育大数据平台,ETL的数据量较大,但是数据来源的类型简单(mysql),由此:

  1. kettle虽然功能比较完善,但是处理大数据量的时候瓶颈问题比较突出,不适合此项目;
  2. nifi的功能强大,且支持大数据量操作,但是NiFi集群是独立于Hadoop集群的,需要独立的服务器来支撑,强大也就意味着有上手门槛,可以作为备选方案;
  3. Sqoop专为关系型数据库和Hadoop之间的ETL而生,支持海量数据,符合项目的需求,且操作简单门槛低,因此选择Sqoop作为ETL工具。

Sqoop详细资料见 《Home\讲义\第2章 数据仓库与工具\sqoop\sqoop教程.docx》。

2. Hue操作HDFS

2.1进入HDFS管理界面

image-20210320164701265

image-20210320164717634

2.2 HDFS新建文件夹

image-20210320164746296

image-20210320164756628

image-20210320164806780

2.3新建文件

2.3.1进入文件夹

image-20210320164858881

2.3.2 新建文件

image-20210320164916318

image-20210320164925355

2.3.3 创建成功

image-20210320164943908

2.4 上传文件

2.4 .1 选择文件

image-20210320165032920

image-20210320165110403

2.4.2 上传成功

image-20210320165145821

2.5 查看HDFS文件内容

image-20210320165242828

2.6 编辑HDFS文件

image-20210320165320137

image-20210320165414200

2.7 删除文件

image-20210320165511064

2.8 更改文件权限

image-20210320165543317

image-20210320165551894

3. Hue操作Hive

3.1 进入Hive面板

image-20210320165625763

3.2 测试

3.2.1 创建数据库
create database if not exists 'test'
with dbproperties('creator'='itcast','create_date'='2020-05-05')

image-20210320170018919

3.2.2 创建表
create table test.test.table(
	id int,
	name string comment '姓名'
)
comment '测试表'
row format delimited fields terminated by '\t';

image-20210320170311725

3.2.3 插入数据
insert into test.test_table values (1, '张三');

image-20210320170405716

3.2.4查询数据
select * from test.test_table;

image-20210320170502951

image-20210320170517553

3.2.5 调整区域大小

image-20210320170539774

4. 调度

​ 大数据常用的调度工具有:Oozie和Azkaban。

4.1 对比

  1. Oozie是基于Hadoop系统进行操作,而Azkaban是基于命令行操作。使用hadoop提供的第三方包JobClient比直接在低层跑shell命令开发成本小,可能遇到的坑也小(一个是基于Hadoop平台,一个是基于Linux系统)。
  2. Oozie的操作是放在Hadoop中,而Azkaban的运行是服务器运行shell命令。为保证服务器的稳定,使用Oozie靠谱点。
  3. Ooize提供查询任务执行状态,Azkaban查询的是进程执行的结果,如果某进程执行的shell命令出错,其进程扔展示为成功,混淆了任务输出。
  4. Oozie将任执行的状态持久化到数据库中,Azkaban将任务存储在服务器内存中,如果掉电,则Azkaban会丢失任务信息。
  5. Oozie中定义的action类型更为丰富,而Azkaban的依赖较为简单,当面对复杂的逻辑时Oozie执行的比较顺畅。
  6. 两者均可以通过WEB界面进行配置操作,Azkaban和Oozie均自带WEB,而Oozie同时还被HUE集成,通过hue集成管理,可以更加方便的在web页面上完成workflow的启动、停止、恢复。
  7. CDH原生支持Oozie,而Azkaban还需要额外的编译及安装配置。

4.2 项目选型

基于以上对比,本采用ClouderaManager和Hue所支持的Oozie来进行调度。

4.3 Oozie使用案例

4.3.1 查看已有的oozie程序

image-20210320172443425

4.3.2 新增oozie程序

image-20210320172526586

image-20210320172550186

image-20210320172558543

4.3.3 提交任务

image-20210320172632879

image-20210320172645311

4.3.4 修复异常

org.apache.oozie.action.ActionExecutorException: JA009: Invalid resource request! Cannot allocate containers as requested resource is greater than maximum allowed allocation. Requested resource type=[memory-mb], Requested resource=<memory:2048, vCores:1>, maximum allowed allocation=<memory:1024, vCores:4>, please note that maximum allowed allocation is calculated by scheduler based on maximum resource of registered NodeManagers, which might be less than configured maximum allocation=<memory:1024, vCores:4>

这是内存分配过小导致的错误,需要设置内存并重启Yarn

<property>
       <name>yarn.scheduler.minimum-allocation-mb</name>
       <value>526</value>
   </property>
   <property>
       <name>yarn.scheduler.maximum-allocation-mb</name>
       <value>4086</value>
   </property>
   <property>
       <name>yarn.scheduler.minimum-allocation-vcores</name>
       <value>1</value>
   </property>
   <property>
       <name>yarn.scheduler.maximum-allocation-vcores</name>
       <value>2</value>
   </property>
   <property>
     <name>yarn.nodemanager.resource.memory-mb</name>
     <value>2048</value>
   </property>
   <property>
    <name>yarn.nodemanager.vmem-pmem-ratio</name>
     <value>4.1</value>
   </property>
4.3.5 修改后重启服务

image-20210320172754533

  1. 执行成功

image-20210320172813473

  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
### 回答1: 数仓工具箱第三版pdf是一本关于数据仓库工具和技术的手册。它提供了在构建和管理数据仓库时所需的各种工具和技术的详细介绍和使用说明。这本书的内容从数据仓库的概念和架构开始,逐步介绍了数据的抽取、转换和加载(ETL)、数据清洗、数据建模、数据挖掘等各个方面的工具和技术。 数仓工具箱第三版pdf主要内容包括: 1. 数据仓库基础知识:介绍了数据仓库的定义、架构和组成部分,使读者对数据仓库的概念有一个全面的了解。 2. ETL工具:详细介绍了常见的ETL工具,如Informatica、DataStage、SSIS等,以及它们的使用方法和注意事项。 3. 数据清洗工具:介绍了一些数据清洗工具,如OpenRefine、Trifacta等,帮助读者理解和实践数据清洗的过程。 4. 数据建模工具:介绍了常见的数据建模工具,如Erwin、PowerDesigner等,帮助读者在数据仓库设计和建模过程中更加高效和准确。 5. 数据挖掘工具:介绍了常见的数据挖掘工具,如RapidMiner、Weka等,以及它们在数据挖掘领域的应用。 阅读这本书,读者可以了解到数据仓库的基本概念和原理,掌握构建和管理数据仓库所需的工具和技术,提高数据仓库的设计和开发能力。无论是初学者还是有经验的数据仓库开发人员,都可以通过阅读这本书来提升自己的技能水平。 ### 回答2: 数仓工具箱第三版是一本关于数据仓库建模与设计的权威指南,以PDF电子书的形式发布。在这本书中,作者详细介绍了数据仓库的基础理论、方法和最佳实践,同时提供了一系列实用的工具和技术来支持数据仓库的建设和维护。 这本书包含了数据仓库建模的各个方面,包括数据抽取、转换和加载(ETL)等关键步骤。通过解释以及示例和案例的呈现,读者可以了解如何从源系统中提取数据,并将其转换成适合数据仓库的格式。此外,该书还涵盖了数据清洗、质量管理和元数据管理等关键主题,帮助读者确保数据仓库中的数据准确可靠。 除了介绍基本概念和技术外,书中还提供了一些开源和商业数据仓库工具的实践指南。这些工具包括ETL工具如Informatica和Talend,报表工具如Tableau和Power BI,以及数据集成工具如Pentaho和IBM DataStage。读者可以了解到这些工具的功能、特点和应用场景,从而选择适合自己项目需求的合适工具。 总的来说,数仓工具箱第三版是一本很有价值的资源,不仅帮助读者理解数据仓库的概念和方法,而且提供了实用的工具和技术来支持数据仓库的建设。通过阅读这本书,读者可以获得建立和管理数据仓库所需的知识和技能,提高自己在数据仓库领域的竞争力。 ### 回答3: 数仓工具箱第三版pdf是一本关于数据仓库和商业智能的工具手册,旨在帮助数据工程师和数据分析师设计、构建和维护数据仓库。这本书提供了一套全面的工具和技术,供读者在建立数据仓库项目时使用。它涵盖了各个方面的数仓知识,包括数据建模、ETL(抽取、转换和加载)、数据质量控制、数据可视化和分析等。 数仓工具箱第三版pdf的内容十分丰富和实用。它详细介绍了常用的数据建模方法,如维度建模和星型模型,以及数据抽取、转换和加载的最佳实践。此外,该书还提供了一些数据质量控制的工具和技术,用于确保数据仓库中的数据准确和完整。对于数据可视化和分析,该书介绍了一些流行的商业智能工具,如Tableau和Power BI,并提供了实际案例和教程,帮助读者理解和应用这些工具数仓工具箱第三版pdf还包括了一些实战经验和案例研究,以帮助读者在实际项目中应用所学知识。通过这些案例,读者可以学到如何设计一个高效的数据仓库、如何处理大数据和复杂数据格式,以及如何利用数据仓库进行业务分析和决策。 总之,数仓工具箱第三版pdf是一本综合而实用的数仓指南,适用于那些对数据仓库和商业智能感兴趣的数据工程师和数据分析师。通过学习这本书,读者可以建立起一套全面的数据仓库工具和技能,从而更好地应对日益复杂的数据挑战。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

章鱼哥TuNan&Z

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值