某电商公司数据仓库项目

一、项目背景

公司是一家以女装销售及网红孵化为主的大型电商公司,一年的GMV大约在30亿左右。公司的数据存在多个业务系统(ERP、WMS、SCM、OA)中,由于数据比较大而且分散,收集和分析都比较困难。因此想搭建基于hadoop的数据仓库,并能实时的将数据展示到BI及报表系统中。

某电商公司数据仓库项目

二、项目需求及架构设计

2.1项目需求

1.数据采集平台搭建

2.实现业务数据仓库的分层搭建

3.针对数据仓库的数据进行,留存、复购、活跃、GMV、库存等数据分析

2.2技术框架

2.2.1技术选型

1.数据采集传输:Sqoop

2.数据存储:MySql、HDFS

3.数据计算:Hive

4.数据可视化:finebi、finereport

2.2.2流程设计

某电商公司数据仓库项目

2.2.3 集群规模(3台服务器每台3T,64G内存)

(1)每天大约500多万条数据,每条数据约1K=5000000/1024/1024=约5G

(2)1年的数据量:5*356/1024=1.8T

(3)保存3副本=3*1.8=5.4T

(4)预留20%空间=5.4/0.7=7.8T

某电商公司数据仓库项目

三、组件安装

3.1.1 环境准备

1.创建xiaohu用户

2.配置xiaohu用户具有root权限

3.在opt目录下创建文件夹

(1)在opt目录下创建software,module文件夹

sudo mkdir software
sudo mkdir module

(2)修改software,module文件夹的所有者xiaohu

sudo chown xiaohu:xiaohu module/ software/

3.1.2 安装JDK

1.卸载现有JDK

rpm -qa | grep java
sudo rpm -e 软件包

2.用SecureCRT工具将JDK导入到opt目录下面的software文件夹下面

3.解压 JDK 到opt/module目录下

tar  -zxvf jdk-8u144-linux-x64.tar.gz -C /opt/module/

4.配置环境变量

sudo vi /etc/profile
//在文件末尾添加
export JAVA_HOME=/opt/module/jdk1.8.0_144
export PATH=$PATH:$JAVA_HOME/bin

5.保存后退出

source /etc/peofile                                 

6.测试是否安装成功

java -version

3.1.3 安装hadoop

1. 用SecureCRT工具将hadoop-2.7.2.tar.gz导入到opt目录下面的software文件夹下面

2.将Hadoop解压到/opt/module目录下

tar -zxvf hadoop-2.7.2.tar.gz -C /opt/module/

3.添加Hadoop环境变量

export HADOOP_HOME=/opt/module/hadoop-2.7.2
expoer PATH=$PATH:HADOOP_HOME/bin

4.退出

source /etc/profile

3.1.4 集群配置

(1) 配置:hadoop-env.sh

#修改JAVA_HOME 
export JAVA_HOME=/opt/module/jdk1.8.0_144

(2) 配置core-site.xml

<!-- 指定HDFS中NameNode的地址 -->
<property>
<name>fs.defaultFS</name>
    <value>hdfs://hadoop102:9000</value>
</property>

<!-- 指定Hadoop运行时产生文件的存储目录 -->
<property>
	<name>hadoop.tmp.dir</name>
	<value>/opt/module/hadoop-2.7.2/data/tmp</value>
</property>

(3) 配置hdfs-site.xml

<!-- 指定HDFS副本的数量 -->
<property>
	<name>dfs.replication</name>
	<value>3</value>
</property>
<!-- 指定Hadoop辅助名称节点主机配置 -->
<property>
      <name>dfs.namenode.secondary.http-address</name>
      <value>hadoop104:50090</value>
</property>

(4) 配置yarn-env.sh

export JAVA_HOME=/opt/module/jdk1.8.0_144

(5) 配置yarn-site.xml

<!-- Reducer获取数据的方式 -->
<property>
		<name>yarn.nodemanager.aux-services</name>
		<value>mapreduce_shuffle</value>
</property>

<!-- 指定YARN的ResourceManager的地址 -->
<property>
		<name>yarn.resourcemanager.hostname</name>
		<value>hadoop103</value>
</property>

(6) 配置mapred-env.sh

export JAVA_HOME=/opt/module/jdk1.8.0_144

(7) 配置mapred-site.xml

#修改文件名
cp mapred-site.xml.template mapred-site.xml

<!-- 指定MR运行在Yarn上 -->
<property>
		<name>mapreduce.framework.name</name>
		<value>yarn</value>
</property>

(8)编写分发脚本

1.创建文件

cd 
mkdir bin
cd bin/
touch xsync
vi xsync

2.编写脚本

#!/bin/bash
#1 获取输入参数个数,如果没有参数,直接退出
pcount=$#
if((pcount==0)); then
echo no args;
exit;
fi

#2 获取文件名称
p1=$1
fname=`basename $p1`
echo fname=$fname

#3 获取上级目录到绝对路径
pdir=`cd -P $(dirname $p1); pwd`
echo pdir=$pdir

#4 获取当前用户名称
user=`whoami`

#5 循环
for((host=103; host<105; host++)); do
        echo ------------------- hadoop$host --------------
        rsync -rvl $pdir/$fname $user@hadoop$host:$pdir
done

3.执行脚本

 xsync   /opt/module/hadoop-2.7.2/

(9) SSH无密登录配置

生成公钥和私钥:

cd /.ssh
ssh-keygen -t rsa#按3次回车
ssh-copy-id hadoop102
ssh-copy-id hadoop103
ssh-copy-id hadoop104
#同样要在其他机器上操作

(10) 配置slaves

vi  /opt/module/hadoop-2.7.2/etc/hadoop/slaves

在文件增如下内容

hadoop102
hadoop103
hadoop104

3.1.5 启动集群

(1) 第一次启动需格式化

cd /opt/module/hadoop102 hadoop-2.7.2

bin/hdfs namenode -format

(2) 启动HDFS

start-dfs.sh 

(3)在hadoop103中启动YARN

start-yarn.sh

(4)jps 查看启动结果

3.2 Zookeeper安装

1.解压安装

 tar -zxvf zookeeper-3.4.10.tar.gz -C /opt/module/

2.配置服务器编号

(1)在/opt/module/zookeeper-3.4.10/这个目录下创建zkData

(2)在/opt/module/zookeeper-3.4.10/zkData目录下创建一个myid的文件

(3)编辑myid文件

(4)在文件中添加与server对应的编号:2 —其他两台机器也要修改 分别为 3、4

3.配置zoo.cfg文件

(1)重命名/opt/module/zookeeper-3.4.10/conf这个目录下的zoo_sample.cfg为zoo.cfg

(2)修改配置

dataDir=/opt/module/zookeeper-3.4.10/zkData
#######################cluster##########################
server.2=hadoop102:2888:3888
server.3=hadoop103:2888:3888
server.4=hadoop104:2888:3888

4.同步

xsync /opt/module/zookeeper-3.4.10

5.集群启动

bin/zkServer.sh start

3.3 hive安装

1.解压软件到 /opt/moudle 下

tar -zxvf apache-hive-1.2.1-bin.tar.gz -C /opt/module/

2. 修改apache-hive-1.2.1-bin的名称为hive

mv apache-hive-1.2.1-bin/ hive

3.修改/opt/module/hive/conf目录下的hive-env.sh.template名称为hive-env.sh

 mv hive-env.sh.template hive-env.sh

4.配置hive-env.sh文件

export HADOOP_HOME=/opt/module/hadoop-2.7.2
export HIVE_CONF_DIR=/opt/module/hive/conf

3.4 sqoop安装

1.解压sqoop安装包到 /opt/moudle下

tar -zxf sqoop-1.4.6.bin__hadoop-2.0.4-alpha.tar.gz -C /opt/module/

2.修改配置文件

#重命名
mv sqoop-env-template.sh sqoop-env.sh

#修改配置

export HADOOP_COMMON_HOME=/opt/module/hadoop-2.7.2
export HADOOP_MAPRED_HOME=/opt/module/hadoop-2.7.2
export HIVE_HOME=/opt/module/hive
export ZOOKEEPER_HOME=/opt/module/zookeeper-3.4.10
export ZOOCFGDIR=/opt/module/zookeeper-3.4.10
export HBASE_HOME=/opt/module/hbase

3.拷贝JDBC驱动

cp mysql-connector-java-5.1.27-bin.jar /opt/module/sqoop-1.4.6.bin__hadoop-2.0.4-alpha/lib/

四、数据仓库分层建设(以订单数据为例)

总共将数仓分为 ODS(原始层)、DWD(明细层)、DWS(汇总层)、ADS(应用层)

4.1 ODS(原始层)数据导入

4.1.1 api_trade(订单明细表)数据导入

/opt/module/sqoop/bin/sqoop import  job --creat job -- import 
--connect jdbc:mysql://host:3306/db_name 
--username ***** 
--password **** 
--target-dir /origin_data/$db_name/db/$1/$db_date 
--delete-target-dir 
--num-mappers 1 
--fields-terminated-by "t" 
--query "$2"' and $CONDITIONS;'

原创文章,作者:奋斗,如若转载,请注明出处:https://blog.ytso.com/notes/172270.html

(0)
上一篇 2021年9月27日 16:39
下一篇 2021年9月27日 16:59

相关推荐

发表回复

登录后才能评论