尚硅谷大数据项目之电商数仓(用户行为数据仓库)
———————————————————————————
——
尚硅谷大数据项目之电商数仓(用户行为数
据仓库)
(作者:尚硅谷大数据研发部)
版本:V4.0
第 1 章 数仓分层概念
1.1 为什么要分层
更多 Java –大数据 –前端 –python 人工智能资料下载,可百度访问:尚硅谷官网
尚硅谷大数据项目之电商数仓(用户行为数据仓库)
———————————————————————————
——
1.2 数仓分层
更多 Java –大数据 –前端 –python 人工智能资料下载,可百度访问:尚硅谷官网
尚硅谷大数据项目之电商数仓(用户行为数据仓库)
———————————————————————————
——
1.3 数据集市与数据仓库概念
1.4 数仓命名规范
ODS层命名为ods
DWD层命名为dwd
DWS层命名为dws
ADS层命名为ads
临时表数据库命名为xxx_tmp
备份数据数据库命名为xxx_bak
更多 Java –大数据 –前端 –python 人工智能资料下载,可百度访问:尚硅谷官网
尚硅谷大数据项目之电商数仓(用户行为数据仓库)
———————————————————————————
——
第 2 章 数仓搭建环境准备
服务器 hadoop103
服务器 hadoop104
集群规划
服务器 hadoop102
Hive
Hive
MySQL
MySQL
2.1 Hive&MySQL 安装
2.1.1 Hive&MySQL 安装
详见:尚硅谷大数据技术之 Hive
尚硅谷大数据技术
之Hive.doc
2.1.2 修改 hive-site.xml
1)关闭元数据检查
[atguigu@hadoop102 conf]$ pwd
/opt/module/hive/conf
[atguigu@hadoop102 conf]$ vim hive-site.xml
增加如下配置:
hive.metastore.schema.verification
false
更多 Java –大数据 –前端 –python 人工智能资料下载,可百度访问:尚硅谷官网
尚硅谷大数据项目之电商数仓(用户行为数据仓库)
———————————————————————————
——
2.2 Hive 运行引擎 Tez
Tez 是一个 Hive 的运行引擎,性能优于 MR。为什么优于 MR 呢?看下图。
用 Hive 直接编写 MR 程序,假设有四个有依赖关系的 MR 作业,上图中,绿色是 Reduce
Task,云状表示写屏蔽,需要将中间结果持久化写到 HDFS。
Tez 可以将多个有依赖的作业转换为一个作业,这样只需写一次 HDFS,且中间节点较
少,从而大大提升作业的计算性能。
2.2.1 安装包准备
1)下载 tez 的依赖包:http://tez.apache.org
2)拷贝 apache-tez-0.9.1-bin.tar.gz 到 hadoop102 的/opt/module 目录
[atguigu@hadoop102 module]$ ls
apache-tez-0.9.1-bin.tar.gz
3)解压缩 apache-tez-0.9.1-bin.tar.gz
[atguigu@hadoop102
apache-tez-0.9.1-bin.tar.gz
module]$
4)修改名称
tar
-zxvf
[atguigu@hadoop102 module]$ mv apache-tez-0.9.1-bin/ tez-0.9.1
2.2.2 在 Hive 中配置 Tez
1)进入到 Hive 的配置目录:/opt/module/hive/conf
[atguigu@hadoop102 conf]$ pwd
/opt/module/hive/conf
2)在 hive-env.sh 文件中添加 tez 环境变量配置和依赖包环境变量配置
[atguigu@hadoop102 conf]$ vim hive-env.sh
添加如下配置
# Set HADOOP_HOME to point to a specific hadoop install directory
export HADOOP_HOME=/opt/module/hadoop-2.7.2
更多 Java –大数据 –前端 –python 人工智能资料下载,可百度访问:尚硅谷官网
尚硅谷大数据项目之电商数仓(用户行为数据仓库)
———————————————————————————
——
for
hive
extra
libraries
required
Folder
containing
# Hive Configuration Directory can be controlled by:
export HIVE_CONF_DIR=/opt/module/hive/conf
#
compilation/execution can be controlled by:
export TEZ_HOME=/opt/module/tez-0.9.1
export TEZ_JARS=""
for jar in `ls $TEZ_HOME |grep jar`; do
done
for jar in `ls $TEZ_HOME/lib`; do
done
export
HIVE_AUX_JARS_PATH=/opt/module/hadoop-2.7.2/share/hadoop/commo
n/hadoop-lzo-0.4.20.jar$TEZ_JARS
export TEZ_JARS=$TEZ_JARS:$TEZ_HOME/lib/$jar
export TEZ_JARS=$TEZ_JARS:$TEZ_HOME/$jar
#是你的 tez 的解压目录
3)在 hive-site.xml 文件中添加如下配置,更改 hive 计算引擎
hive.execution.engine
tez
2.2.3 配置 Tez
1)在 Hive 的/opt/module/hive/conf 下面创建一个 tez-site.xml 文件
[atguigu@hadoop102 conf]$ pwd
/opt/module/hive/conf
[atguigu@hadoop102 conf]$ vim tez-site.xml
添加如下内容
tez.lib.uris
${fs.defaultFS}/tez/tez-0.9.1,${fs.defaultFS}/tez/te
z-0.9.1/lib
tez.lib.uris.classpath
${fs.defaultFS}/tez/tez-0.9.1,${fs.defaultFS}/tez/te
tez.history.logging.service.class
org.apache.tez.dag.history.logging.ats.ATSHistoryLo
ggingService
更多 Java –大数据 –前端 –python 人工智能资料下载,可百度访问:尚硅谷官网
z-0.9.1/lib
tez.use.cluster.hadoop-libs
true
尚硅谷大数据项目之电商数仓(用户行为数据仓库)
———————————————————————————
——
2.2.4 上传 Tez 到集群
1)将/opt/module/tez-0.9.1 上传到 HDFS 的/tez 路径
[atguigu@hadoop102 conf]$ hadoop fs -mkdir /tez
[atguigu@hadoop102 conf]$ hadoop fs -put /opt/module/tez-0.9.1/
/tez
[atguigu@hadoop102 conf]$ hadoop fs -ls /tez
/tez/tez-0.9.1
2.2.5 测试
1)启动 Hive
[atguigu@hadoop102 hive]$ bin/hive
2)创建 LZO 表
hive (default)> create table student(
id int,
name string);
3)向表中插入数据
hive (default)> insert into student values(1,"zhangsan");
4)如果没有报错就表示成功了
hive (default)> select * from student;
1
zhangsan
2.2.6 小结
1)运行 Tez 时检查到用过多内存而被 NodeManager 杀死进程问题:
more
Container
due
output,
2
times
detailed
to
check
Caused by: org.apache.tez.dag.api.SessionNotRunning: TezSession
has already shutdown. Application application_1546781144082_0005
for
AM
failed
appattempt_1546781144082_0005_000002 exited with exitCode: -103
application
For
tracking
page:http://hadoop103:8088/cluster/app/application_15467811440
82_0005Then, click on links to logs of each attempt.
Container
Diagnostics:
[pid=11116,containerID=container_1546781144082_0005_02_000001]
is running beyond virtual memory limits. Current usage: 216.3 MB
of 1 GB physical memory used; 2.6 GB of 2.1 GB virtual memory used.
Killing container.
这种问题是从机上运行的 Container 试图使用过多的内存,而被 NodeManager kill 掉了。
[摘录] The NodeManager is killing your container. It sounds like
you are trying to use hadoop streaming which is running as a child
process of the map-reduce task. The NodeManager monitors the entire
process tree of the task and if it eats up more memory than the
maximum
or
mapreduce.reduce.memory.mb respectively, we would expect the
Nodemanager to kill the task, otherwise your task is stealing memory
belonging to other containers, which you don't want.
解决方法:
mapreduce.map.memory.mb
set
in
方案一:或者是关掉虚拟内存检查。我们选这个,修改 yarn-site.xml
更多 Java –大数据 –前端 –python 人工智能资料下载,可百度访问:尚硅谷官网
尚硅谷大数据项目之电商数仓(用户行为数据仓库)
———————————————————————————
——
yarn.nodemanager.vmem-check-enabled
false
方案二:mapred-site.xml 中设置 Map 和 Reduce 任务的内存配置如下:(value 中实际配
置的内存需要根据自己机器内存大小及应用情况进行修改)
mapreduce.map.memory.mb
1536
mapreduce.map.java.opts
-Xmx1024M
mapreduce.reduce.memory.mb
3072
mapreduce.reduce.java.opts
-Xmx2560M
2.3 项目经验之元数据备份
元数据备份(重点,如数据损坏,可能整个集群无法运行,至少要保证每日零点之后备
份到其它服务器两个复本)
更多 Java –大数据 –前端 –python 人工智能资料下载,可百度访问:尚硅谷官网