基于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 分层
  1. 原始数据层(ODS):存放原始数据;
  2. 明细数据层(DWD):对ods层进行清洗;
  3. 服务数据层(DWS):基于dwd层进行汇总;
  4. 数据应用层(ADS):为各种报表提供数据。
  • 6.1.2 为什么分层
  1. 把复杂的问题简单化
  2. 减少重复开发
  3. 远离原始数据
  • 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
  1. 安装mysql5.6

  2. 配置root用户的密码

查看生成的随机密码:
	 sudo cat /root/.mysql_secret
	 
使用随机密码登录修改新的密码:
	启动服务: 
		sudo service mysql start
	使用随机密码登录,后修改密码: 
		set password=password('123456');
  1. 配置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
  1. 在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突然故障导致数据丢失。

7.3 hive安装

  • 7.3.1 配置

保证环境变量中配置 JAVA_HOME,HADOOP_HOME,HIVE_HOME

  • 7.3.2 配置hive的元数据存储在mysql中
  1. 拷贝Mysql的驱动到 $HIVE_HOME/lib中

mysql-connector-java-5.1.27-bin.jar

  1. 新建在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>
  1. 创建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
  1. 修改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>

  1. 修改 hive / conf / hive-site.xml
<property>
    <name>hive.execution.engine</name>
    <value>tez</value>
</property>
  1. 修改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
  1. 修改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");
	
如果没有报错就表示成功了

第8章 ODS层搭建

请移步至基于Apache的电商数据仓库(四)

猜你喜欢

转载自blog.csdn.net/qq_43494678/article/details/115003531