Skip to content

业务数据采集平台搭建

1 MySQL安装

1.1 安装包准备

  1. 查看MySQL是否安装,如果安装了,卸载MySQL
sh
[root@hadoop102 home]# rpm -qa|grep mysql
mysql-libs-5.1.73-7.el6.x86_64
[root@hadoop102 home]# rpm -e --nodeps mysql-libs-5.1.73-7.el6.x86_64
  1. 解压mysql-libs.zip文件到当前目录
sh
[root@hadoop102 software]# unzip mysql-libs.zip
[root@hadoop102 software]# ls
mysql-libs.zip
mysql-libs
  1. 进入到mysql-libs文件夹下
sh
[root@hadoop102 mysql-libs]# ll
总用量 76048
-rw-r--r--. 1 root root 18509960 3月  26 2015 MySQL-client-5.6.24-1.el6.x86_64.rpm
-rw-r--r--. 1 root root  3575135 12月  1 2013 mysql-connector-java-5.1.27.tar.gz
-rw-r--r--. 1 root root 55782196 3月  26 2015 MySQL-server-5.6.24-1.el6.x86_64.rpm

1.2 安装MySQL服务端

  1. 查看MySQL是否安装,如果安装了,卸载MySQL
sh
[root@hadoop102 home]# rpm -qa|grep mysql
mysql-libs-5.1.73-7.el6.x86_64
  1. 卸载
sh
[root@hadoop102 home]# rpm -e --nodeps mysql-libs-5.1.73-7.el6.x86_64
  1. 解压mysql-libs.zip文件到当前目录
sh
[root@hadoop102 software]# unzip mysql-libs.zip
[root@hadoop102 software]# ls
mysql-libs.zip
mysql-libs
  1. 进入到mysql-libs文件夹下
sh
[root@hadoop102 mysql-libs]# ll
总用量 76048
-rw-r--r--. 1 root root 18509960 3月  26 2015 MySQL-client-5.6.24-1.el6.x86_64.rpm
-rw-r--r--. 1 root root  3575135 12月  1 2013 mysql-connector-java-5.1.27.tar.gz
-rw-r--r--. 1 root root 55782196 3月  26 2015 MySQL-server-5.6.24-1.el6.x86_64.rpm
  1. 安装mysql服务端
sh
[root@hadoop102 mysql-libs]# rpm -ivh MySQL-server-5.6.24-1.el6.x86_64.rpm
  1. 查看产生的随机密码
sh
[root@hadoop102 mysql-libs]# cat /root/.mysql_secret
OEXaQuS8IWkG19Xs
  1. 查看mysql状态
sh
[root@hadoop102 mysql-libs]# service mysql status
  1. 启动mysql
sh
[root@hadoop102 mysql-libs]# service mysql start

1.3 安装MySQL客户端

sh
[root@hadoop102 mysql-libs]# rpm -ivh MySQL-client-5.6.24-1.el6.x86_64.rpm

登陆mysql,并修改密码

sh
[root@hadoop102 mysql-libs]# mysql -uroot -pOEXaQuS8IWkG19Xs

修改密码

sh
mysql>SET PASSWORD=PASSWORD('000000');
mysql>exit

1.4 配置远程登陆MySQL

  1. 登入mysql
sh
[root@hadoop102 mysql-libs]# mysql -uroot -p000000
  1. 使用mysql数据库
sh
mysql>use mysql;
  1. 查询user表
sh
mysql>select User, Host, Password from user;
  1. 修改user表,把Host表内容修改为%
sh
mysql>update user set host='%' where host='localhost';
  1. 刷新
sh
mysql>flush privileges;
mysql>quit;

2. Sqoop安装

2.1 Sqoop下载配置

请参考Sqoop笔记的第三节

2.2 拷贝JDBC驱动

1)进入到/opt/software/mysql-libs路径,解压mysql-connector-java-5.1.27.tar.gz到当前路径

sh
[jack@hadoop104 mysql-libs]$ tar -zxvf mysql-connector-java-5.1.27.tar.gz

2)进入到/opt/software/mysql-libs/mysql-connector-java-5.1.27路径,拷贝jdbc驱动到sqoop的lib目录下。

sh
[jack@hadoop104 mysql-connector-java-5.1.27]$ cp mysql-connector-java-5.1.27-bin.jar /opt/module/sqoop/lib/

2.3 测试Sqoop连接数据库

sh
[jack@hadoop102 sqoop]$ bin/sqoop list-databases --connect jdbc:mysql://hadoop104:3306/ --username root --password 123456

出现报错:
Alt text 原因是缺少commons-lang相关的jar, 上传commons-lang-2.6.jar到/opt/module/sqoop/lib/下面,再次执行上述命令,出现如下输出:

sh
information_schema
metastore
mysql
oozie
performance_schema

3. 业务数据生成

3.1 连接MySQL

  1. 创建数据库gmall, 设置数据库编码
  2. 导入数据库结构脚本 gmall.sql脚本

3.2 生成业务数据

  1. 在 hadoop102 的/opt/module/目录下创建db_log文件夹
sh
[jack@hadoop102 module]$ mkdir db_log/
  1. 把gmall-mock-db-2020-03-16-SNAPSHOT.jar和application.properties上传到hadoop102 的/opt/module/db_log 路径上。
sh
[jack@hadoop103 db_log]$ ll
总用量 14424
-rw-rw-r--. 1 jack jack     1293 10月 31 00:35 application.properties
-rw-rw-r--. 1 jack jack 14763705 10月 31 00:35 gmall-mock-db-2020-03-16-SNAPSHOT.jar
  1. 根据需求修改application.properties相关配置
ini
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
spring.datasource.url=jdbc:mysql://hadoop104:3306/gmall?characterEncoding=utf-8&useSSL=false&serverTimezone=GMT%2B8
spring.datasource.username=root
spring.datasource.password=123456
  1. 并在该目录下执行如下命令,会默认生成2020-03-10日期数据
sh
[jack@hadoop102 db_log]$ java -jar gmall-mock-db-2020-03-16-SNAPSHOT.jar
  1. 在配置文件 application.properties 中修改
sh
mock.date=2024-10-01
mock.clear=0
  1. 再次执行命令,生成2024-10-01日期数据:
sh
[jack@hadoop102 db_log]$ java -jar gmall-mock-db-2020-03-16-SNAPSHOT.jar
  1. 查询表数据 Alt text

4. 业务数据导入HDFS

4.1 业务表同步策略

Alt text

4.2 脚本编写

  1. 在/home/jack/bin目录下创建
sh
[jack@hadoop102 bin]$ vim mysql_to_hdfs.sh
  1. 编写脚本内容:
    mysql_to_hdfs.sh脚本

可以看出导表脚本分为三部分内容:
1️⃣ 申明sqoop的函数($1 为表名 $2 为过滤条件)
2️⃣ sql内容:

  • 全量: select * from 表 where 1=1(固定写法,因为在sqoop内部会组装where条件)
  • 增量: select * from 表 where createtime = 当前时间
  • 新增和变量: select * from 表 where createtime or operatetime = 当前时间

3️⃣ 脚本命令参数判断
first相比all多了两个表:省份和地区表 3. 修改脚本权限

sh
[jack@hadoop102 bin]$ chmod 777 mysql_to_hdfs.sh
  1. 初次导入
sh
[jack@hadoop102 bin]$ mysql_to_hdfs.sh first 2020-03-10
  1. 每日导入
sh
[jack@hadoop102 bin]$ mysql_to_hdfs.sh all 2020-03-11