前言
前 言似乎所有人嘴边都挂着“大数据”这个词。围绕大数据这个主题开展的讨论几乎已经完全压倒了传统数据仓库的风头。某些大数据狂热者甚至大胆预测,在不久的将来,所有企业数据都将由一个基于Apache Hadoop 的系统托管,企业数据仓库(EDW)终将消亡。无论如何,传统数据仓库架构仍在不断发展演化,这一点不容置疑。一年来,我一直在撰写相关的文章和博客,但它真的会消亡吗?我认为几率很小。实际上,尽管所有人都在讨论某种技术或者架构可能会胜过另一种技术或架构,但IBM有着不同的观点。在IBM,他们更倾向于从“Hadoop 与数据仓库密切结合”这个角度来探讨问题,两者可以说是天作之合。试想一下,对于采用传统数据仓库的企业而言,大数据带来的机会就是能够利用过去无法通过传统仓库架构利用的数据,但传统数据仓库为什么不能承担起这个责任?原因是多方面的。首先,数据仓库的传统架构方式采用业务系统中的结构化数据,用它们来分析有关业务的方方面面,对这些数据进行清理、建模、分布、治理和维护,以便执行历史分析。无论是从结构方面考虑,还是从数据摄取速率方面考虑,我们在数据仓库中存储的数据都是可预测的。相比之下,大数据是不可预测的。大数据的结构多种多样,对于 EDW 来说数量过于庞大。尤其要考虑的是,我们更习惯于浏览大量数据来查找真正需要的信息。不久之后可能又会决定丢弃这些数据,在某些情况下,这些数据的保存期限可能会更短。如果我们决定保留所有这些数据,则需要使用比 EDW 更经济的解决方案来存储非结构化数据,以便将来使用这些数据进行历史分析,这也是将 Hadoop 与数据仓库结合使用的另一个论据。本书通过简单而完整的示例,论述了在Hadoop平台上设计和实现数据仓库的方法。将传统数据仓库建模与SQL开发的简单性与大数据技术相结合,快速、高效地建立可扩展的数据仓库及其应用系统。 本书共13章,主要内容包括数据仓库、Hadoop及其生态圈的相关概念,使用Sqoop从关系数据库全量或增量抽取数据,使用Hive进行数据转换和装载处理,使用Oozie调度作业周期性执行,使用Impala进行快速联机数据分析,使用Hue将数据可视化,以及数据仓库中的渐变维(SCD)、代理键、角色扮演维度、层次维度、退化维度、无事实的事实表、迟到的事实、累积的度量等常见问题在Hadoop上的处理等。本书适合数据库管理员、大数据技术人员、Hadoop技术人员、数据仓库技术人员,也适合高等院校和培训学校相关专业的师生教学参考。后,感谢清华大学出版社图格事业部的编辑们,他们的辛勤工作使得本书尽早与读者见面。编者2017年6月
导语摘要
本书讲述在流行的大数据分布式存储和计算平台Hadoop上设计实现数据仓库,将传统数据仓库建模与SQL开发的简单性与大数据技术相结合,快速、高效地建立可扩展的数据仓库及其应用系统。 本书内容包括数据仓库、Hadoop及其生态圈的相关概念,使用Sqoop从关系数据库全量或增量抽取数据,使用HIVE进行数据转换和装载处理,使用Oozie调度作业周期性执行,使用Impala进行快速联机数据分析,使用Hue将数据可视化,以及数据仓库中的渐变维(SCD)、代理键、角色扮演维度、层次维度、退化维度、无事实的事实表、迟到的事实、累积的度量等常见问题在Hadoop上的处理等。本书适合数据库管理员、大数据技术人员、Hadoop技术人员、数据仓库技术人员,也适合高等院校和培训机构相关专业的师生教学参考。
作者简介
王雪迎 ,毕业于中国地质大学计算机专业,高级工程师,拥有20年数据库、数据仓库相关技术经验。曾先后供职于北京现代商业信息技术有限公司、北京在线九州信息技术服务有限公司、华北计算技术研究所、北京优贝在线网络科技有限公司,担任DBA、数据架构师等职位。
目录
1
1.1
1.1.1
1.1.2
1.2
1.2.1
1.2.2
1.2.3
1.3
1.3.1
1.3.2
1.3.3
1.4
1.4.1
1.4.2
1.4.3
1.4.4
1.4.5
1.5
1.5.1
1.5.2
1.6
2
2.1
2.1.1
2.1.2
2.1.3
2.1.4
2.2
2.2.1
2.2.2
2.2.3
2.2.4
2.2.5
2.3 Data Vault
2.3.1 Data Vault
2.3.2 Data Vault
2.3.3 Data Vault
2.3.4 Data Vault
2.3.5 Data Vault
2.4
2.4.1
2.4.2
2.4.3
2.5
2.6
3
3.1
3.2 Hadoop
3.2.1 Hadoop
3.2.2 Hadoop
3.2.3 Hadoop
3.3 Hadoop
3.3.1 HDFS 60
3.3.2 MapReduce 65
3.3.3 YARN 72
3.4 Hadoop
3.5 Hadoop
3.5.1
3.5.2 CAP
3.5.3 Hadoop
3.6
4
4.1 Hadoop
4.1.1 Cloudera Distribution for Hadoop
4.1.2 Hortonworks Data Platform
4.1.3 MapR Hadoop 90
4.2
4.2.1
4.2.2
4.2.3
4.2.4
4.2.5
4.3
4.4
4.4.1 CDH
4.4.2
4.4.3
4.4.4 Cloudera Manager
4.5
5
5.1 Kettle
5.2 Kettle
5.2.1
5.2.2
5.3
5.3.1
5.3.2
5.4
5.5 MapReduce
5.6 Kettle
5.6.1
5.6.2
5.7
6
6.1
6.2 Hive
6.2.1
6.2.2
6.2.3 Hive
6.3 Hive
6.4
6.5
6.6
6.7
7
7.1
7.2
7.3
7.4
7.5
7.5.1 Sqoop
7.5.2 CDH 5.7.0
7.5.3
7.5.4 Sqoop
7.6
8
8.1
8.2 Hive
8.2.1 Hive
8.2.2 Hive
8.2.3 Hive
8.2.4 Hive
8.3
8.4
8.5 Hive
8.6
9
9.1 crontab 256
9.2 Oozie
9.2.1 Oozie
9.2.2 CDH 5.7.0
9.3
9.4
9.5 Oozie
9.6
10
10.1
10.2
10.3
10.4
10.4.1
10.4.2
10.4.3
10.4.4
10.5
10.6
10.7
10.8
10.9
11
11.1
11.2
11.3
11.4
11.5
11.6
11.7
12
12.1
12.1.1
12.1.2
12.1.3
12.2 Impala
12.3 Hive
12.3.1 Spark SQL
12.3.2 Hive
12.3.3 Hive
12.4
12.5 Apache Kylin
12.5.1 Apache Kylin
12.5.2 Apache Kylin
12.6
13
13.1
13.2 Hue
13.2.1 Hue
13.2.2
13.3 Zeppelin
13.3.1 Zeppelin
13.3.2 Zeppelin
13.3.3
13.4 Hue
13.5
13.6
内容摘要
本书讲述在流行的大数据分布式存储和计算平台Hadoop上设计实现数据仓库,将传统数据仓库建模与SQL开发的简单性与大数据技术相结合,快速、高效地建立可扩展的数据仓库及其应用系统。
本书内容包括数据仓库、Hadoop及其生态圈的相关概念,使用Sqoop从关系数据库全量或增量抽取数据,使用HIVE进行数据转换和装载处理,使用Oozie调度作业周期性执行,使用Impala进行快速联机数据分析,使用Hue将数据可视化,以及数据仓库中的渐变维(SCD)、代理键、角色扮演维度、层次维度、退化维度、无事实的事实表、迟到的事实、累积的度量等常见问题在Hadoop上的处理等。
本书适合数据库管理员、大数据技术人员、Hadoop技术人员、数据仓库技术人员,也适合高等院校和培训机构相关专业的师生教学参考。
主编推荐
王雪迎 ,毕业于中国地质大学计算机专业,高级工程师,拥有20年数据库、数据仓库相关技术经验。曾先后供职于北京现代商业信息技术有限公司、北京在线九州信息技术服务有限公司、华北计算技术研究所、北京优贝在线网络科技有限公司,担任DBA、数据架构师等职位。
精彩内容
第 9 章? 定期自动执行ETL作业 ?
一旦数据仓库开始使用,就需要不断从源系统给数据仓库提供新数据。为了确保数据流的稳定,需要使用所在平台上可用的任务调度器来调度ETL定期执行。调度模块是ETL系统必不可少的组成部分,它不但是数据仓库的基本需求,也对项目的成功起着举足轻重的作用。操作系统一般都为用户提供调度作业的功能,如Windows的“计划任务”和UNIX/Linux的cron系统服务。绝大多数Hadoop系统都运行在Linux之上,因此本章详细讨论两种Linux上定时自动执行ETL作业的方案。一种是经典的crontab,这是操作系统自带的功能,二是Hadoop生态圈中的Oozie组件。为了演示Hadoop对数据仓库的支持能力,我们的示例将使用后者实现ETL执行自动化。9.1 crontab上一章我们已经准备好用于定期装载的regular_etl.sh shell脚本文件,可以很容易地用crontab命令创建一个任务,定期运行此脚本。# 修改文件属性为可执行chmod 755 /root/regular_etl.sh# 编辑crontab文件内容crontab -e# 添加如下一行,指定每天2点执行定期装载作业,然后保存退出0 2 * * * /root/regular_etl.sh这就可以了,需要用户做的就是如此简单,其他的事情交给cron系统服务去完成。提供cron服务的进程名为crond,这是Linux下一个用来周期性执行某种任务或处理某些事件的守护进程。当安装完操作系统后,会自动启动crond进程,它每分钟会定期检查是否有要执行的任务,如果有则自动执行该任务。Linux下的任务调度分为两类,系统任务调度和用户任务调度。? 系统任务调度:系统需要周期性执行的工作,比如写缓存数据到硬盘、日志清理等。在/etc目录下有一个crontab文件,这个就是系统任务调度的配置文件。? 用户任务调度:用户要定期执行的工作,比如用户数据备份、定时邮件提醒等。用户可以使用crontab命令来定制自己的计划任务。所有用户定义的crontab文件都被保存在 /var/spool/cron目录中,其文件名与用户名一致。1. crontab权限Linux系统使用一对allow/deny文件组合判断用户是否具有执行crontab的权限。如果用户名出现在/etc/cron.allow文件中,则该用户允许执行crontab命令。
以下为对购买帮助不大的评价