基于Apache的电商数据仓库(三)
欢迎
你好!这是我历经1个半月的学习(Apache和CDH),做完的一个项目,本次和你们分享一下Apache版。
感谢您的阅读!
第1章~第4章在基于Apache的电商数据仓库(一)
第5章~第5章在基于Apache的电商数据仓库(二)
第6章~第8章在基于Apache的电商数据仓库(三)
第8章~第9章在基于Apache的电商数据仓库(四)
第10章~第12章在基于Apache的电商数据仓库(五)
第13章~第13章在基于Apache的电商数据仓库(六)
第14章~第14章在基于Apache的电商数据仓库(七)
第6章 用户行为数仓分层概念
6.1 数仓分层
- 6.1.1 分层
- 原始数据层(ODS):存放原始数据;
- 明细数据层(DWD):对ods层进行清洗;
- 服务数据层(DWS):基于dwd层进行汇总;
- 数据应用层(ADS):为各种报表提供数据。
- 6.1.2 为什么分层
- 把复杂的问题简单化
- 减少重复开发
- 远离原始数据
- 6.1.3 数仓命名规范
ODS层命名为ods
DWD层命名为dwd
DWS层命名为dws
ADS层命名为ads
临时表数据库命名为xxx_tmp
备份数据数据库命名为xxx_bak
第7章 数仓环境安装
7.1 环境准备
- 7.1.1 规划
在hadoop102上安装hive和mysql
在hadoop103配置mysql主从
- 7.1.2 mysql安装
1.检查本机是否已经安装了mysql的一些软件包,防止冲突
rpm -qa | grep mysql
rpm -qa | grep MySQL
卸载残留的软件包:
sudo rpm -e --nodeps mysql-xxxxx
-
安装mysql5.6
-
配置root用户的密码
查看生成的随机密码:
sudo cat /root/.mysql_secret
使用随机密码登录修改新的密码:
启动服务:
sudo service mysql start
使用随机密码登录,后修改密码:
set password=password('123456');
- 配置root用户可以再任意机器登录的帐号
①查看本机的所有帐号
select host,user,password from mysql.user;
②删除不是locahost的root用户
delete from mysql.user where host <> 'localhost';
③将host=localhost修改为%
update mysql.user set host='%' where user='root';
④刷新用户
flush privileges;
⑤测试root是否可以从localhost主机名登录
mysql -uroot -p123456
⑥测试root是否可以从hadoop103(从外部地址)主机名登录
mysql -h hadoop102 -uroot -p123456
⑦查看当前mysql服务器收到了哪些客户端连接请求
sudo mysqladmin processlist -uroot -p123456
- 在hadoop103也配置一遍
7.2配置主从
-
7.2.1 配置my.cnf
到/usr/share/mysql找到mysql服务配置模板
sudo cp my-default.cnf /etc/my.cnf
vim /etc/my.cnf
server_id = 102
log-bin=mysql-bin
binlog_format=mixed
relay_log=mysql-relay
在hadoop103也配置,只需要改server_id
- 7.2.2 重启mysql
sudo service mysql restart
- 7.2.3 在主机上使用root@localhost登录,授权从机可以使用哪个用户登录
GRANT replication slave ON *.* TO 'slave'@'%' IDENTIFIED BY '123456';
change master to master_user='slave', master_password='123456',master_host='192.168.1.103',master_log_file='mysql-bin.000001',master_log_pos=311;
- 7.2.4 开启同步线程
start slave
- 7.2.5 启用keepalive
这里启不启用均可,mysql不故障就不需要。也可以自己安装一下,防止mysql突然故障导致数据丢失。
扫描二维码关注公众号,回复: 12914504 查看本文章![]()
7.3 hive安装
- 7.3.1 配置
保证环境变量中配置 JAVA_HOME,HADOOP_HOME,HIVE_HOME
- 7.3.2 配置hive的元数据存储在mysql中
- 拷贝Mysql的驱动到 $HIVE_HOME/lib中
mysql-connector-java-5.1.27-bin.jar
- 新建在hive/conf/hive-site.xml文件,配置元数据的存储位置
<property>
<name>hive.metastore.schema.verification</name>
<value>false</value>
</property>
<property>
<name>javax.jdo.option.ConnectionURL</name>
<value>jdbc:mysql://hadoop103:3306/metastore?createDatabaseIfNotExist=true</value>
<description>JDBC connect string for a JDBC metastore</description>
</property>
<property>
<name>javax.jdo.option.ConnectionDriverName</name>
<value>com.mysql.jdbc.Driver</value>
<description>Driver class name for a JDBC metastore</description>
</property>
<property>
<name>javax.jdo.option.ConnectionUserName</name>
<value>root</value>
<description>username to use against metastore database</description>
</property>
<property>
<name>javax.jdo.option.ConnectionPassword</name>
<value>123456</value>
<description>password to use against metastore database</description>
</property>
<property>
<name>hive.cli.print.header</name>
<value>true</value>
</property>
<property>
<name>hive.cli.print.current.db</name>
<value>true</value>
</property>
- 创建metastore数据库
7.4 Tez压缩安装
- 7.4.1 下载地址
http://tez.apache.org
- 7.4.2 解压
- 7.4.3 将tez的tar包上传到hdfs
hadoop fs -put /opt/software/apache-tez-0.9.1-bin.tar.gz/ /tez
- 修改xml
- 修改hive / conf / tez-site.xml
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
<property>
<name>tez.lib.uris</name>
<value>${fs.defaultFS}/tez/apache-tez-0.9.1-bin.tar.gz</value>
</property>
<property>
<name>tez.use.cluster.hadoop-libs</name>
<value>true</value>
</property>
<property>
<name>tez.history.logging.service.class</name> <value>org.apache.tez.dag.history.logging.ats.ATSHistoryLoggingService</value>
</property>
</configuration>
- 修改 hive / conf / hive-site.xml
<property>
<name>hive.execution.engine</name>
<value>tez</value>
</property>
- 修改hive/ conf/ hive-env.sh
export TEZ_HOME=/opt/module/tez-0.9.1 #是你的tez的解压目录
export TEZ_JARS=""
for jar in `ls $TEZ_HOME |grep jar`; do
export TEZ_JARS=$TEZ_JARS:$TEZ_HOME/$jar
done
for jar in `ls $TEZ_HOME/lib`; do
export TEZ_JARS=$TEZ_JARS:$TEZ_HOME/lib/$jar
done
export HIVE_AUX_JARS_PATH=/opt/module/hadoop-2.7.2/share/hadoop/common/hadoop-lzo-0.4.20.jar$TEZ_JARS
- 修改yarn-site.xml
<property>
<name>yarn.nodemanager.vmem-check-enabled</name>
<value>false</value>
</property>
分发到其他机器
- 测试tez
创建表
create table student(
id int,
name string);
插入数据
insert into student values(1,"aaa");
如果没有报错就表示成功了