2021寒假实训大数据分析电商平台

一、环境安装

1.1 新建虚拟机

实训的项目主要是进行大数据的实训,所以需要按照Linux,使用VMware Workstation作为虚拟机安装Linux系统,创建虚拟机,步骤如下:

img

下一步

img

下一步

img

下一步

img

下一步

img

下一步

img

下一步

img

下一步

img

下一步

img img

下一步

imgimg

下一步

imgimg

接下来,点击编辑虚拟机,需要找到Linux的IOS文件

img img

找到镜像文件之后,接下来就是安装Linux系统,选择开启虚拟机,虚拟机进行加载Linux进行安装。

1.2 安装Linux的镜像

img

选择语言

img

下一步

img

设置密码

img

安装好之后,进行重启

img

重启之后,进行登录,输入用户名和密码

img img

1.3 远程登录工具MobaXterm

MobaXterm_Portable_v20.3

可连接虚拟机操作文件 编写命令

image-20210113164121117

连接虚拟机需要知道虚拟机ip地址

在虚拟机中输入ifconfig -a命令进行查找

找不到ifconfig命令,首先查找yum search ifconfig

img

之后就可以使用

img

要进行后面的操作,我们需要修改几个配置,关闭防火墙,并禁止开机启动。

查看防火墙状态: systemctl status firewalld

执行关闭命令: systemctl stop firewalld

执行开机禁用防火墙自启命令:systemctl disable firewalld

还有进行主机名的修改:vi /etc/hostsvi /etc/hostname

1.4 安装JDK及相应准备工作

因为开发需要JDK,所以进行JDK的安装,先在根目录下创建两个目录,作为后期环境的使用:mkdir tools 和 mkdir training,一个是作为上传工具的目录,一个是作为安装的目录。

使用工具上述工具将JDK进行上传到tools目录下,然后进行解压

tar -zvxf /tools/jdk-7u80-linux-x64.tar.gz -C /tarining/

配置环境变量:

vi ~/.bash_profile

​ 添加如下信息

1
2
3
4
export JAVA_HOME=/training/jdk1.8.0_171
export JRE_HOME=$JAVA_HOME/jre
export CLASSPATH=.:$CLASSPATH:$JAVA_HOME/lib:$JRE_HOME/lib
export PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin

img

让环境变量生效

source ~/.bash_profile

验证jdk是否安装成功

java -version

img

二、CentOS7下MySQL-5.7使用yum方式安装:


1、安装MySQL YUM源到本地

1
yum localinstall https://dev.mysql.com/get/mysql57-community-release-el7-9.noarch.rpm

2、检查 mysql 源是否安装成功

1
yum repolist enabled | grep "mysql.*-community.*"
安装成功后会看到如下:
!mysql-connectors-community/x86_64       MySQL Connectors Community          153
!mysql-tools-community/x86_64            MySQL Tools Community               110
!mysql57-community/x86_64                MySQL 5.7 Community Server          424

3、使用 yum install 命令安装

1
yum -y install mysql-community-server

4、安装完毕后,启动MySQL数据库

1
systemctl start mysqld

5、查看MySQL的启动状态

1
systemctl status mysqld

6、设置开机自启动

1
systemctl enable mysqld

7、重载所有修改过的配置文件

1
systemctl daemon-reload

8、修改root账户默认密码
mysql 安装完成之后,生成的默认密码在 /var/log/mysqld.log 文件中。使用 grep 命令找到日志中的密码。
执行:

1
grep 'temporary password' /var/log/mysqld.log
比如:
A temporary password is generated for root@localhost: WMYu.#o8o#30

9、修改密码
使用mysql -uroot -p 回车, 注意密码改为:Sjm@!_123456 输入:

1
ALTER USER 'root'@'localhost' IDENTIFIED BY 'Sjm@!_123456'; 

10、配置root用户远程登录及添加远程登录用户
默认只允许root帐户在本地登录,如果要在其它机器上连接mysql,两种方式:
1)设置root用户允许远程登录:
执行:

1
2
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'Sjm@!_123456' WITH GRANT OPTION;   
flush privileges;
2)可以添加一个允许远程连接的普通帐户 
    执行:
1
2
GRANT ALL PRIVILEGES ON *.* TO 'suben'@'%' IDENTIFIED BY 'Sjm@!_123456' WITH GRANT OPTION;   
flush privileges;

12、设置默认编码为 utf8

mysql 安装后默认不支持中文,需要修改编码。
修改 /etc/my.cnf 配置文件,在相关节点(没有则自行添加)下添加编码配置,如下:
执行:vi /etc/my.cnf
在文件的末尾添加如下信息:

1
2
3
4
5
6
[mysqld]
character-set-server=utf8
[client]
default-character-set=utf8
[mysql]
default-character-set=utf8

CentOS7下MySQL-5.7使用yum方式卸载:

1、停止MySQL
命令:systemctl stop mysqld
2、查看已安装的mysql
命令:rpm -qa | grep -i mysql
3、卸载mysql,依次卸载第2步骤所列出的有关MySQL的安装包,如
命令:yum remove -y mysql-community-server-5.6.36-2.el7.x86_64
4、删除mysql相关目录
1)使用命令查看mysql相关的文件目录:find / -name mysql
2)依次删除所查到的目录,命令:rm -rf /xxx/xxx/mysql

三、CentOS7下Nginx的安装:


1、编写安装脚本:nginx_install.sh,添加如下内容:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
#!/bin/bash
yum install -y gcc
#install pcre
yum install -y pcre-static.x86_64
#install nginx
tar -zvxf /tools/nginx-1.15.12.tar.gz -C /training/
cd /training/nginx-1.15.12
./configure --prefix=/training/nginx --without-http_gzip_module
make && make install
#set .bash_profile
echo '#nginx' >> ~/.bash_profile
echo 'export PATH=$PATH:/training/nginx/sbin' >> ~/.bash_profile
# source .bash_profile
source ~/.bash_profile

2、赋予nginx_intall.sh执行权限:

1
chmod +x nginx_install.sh

3、安装nginx,进入到nginx_intall.sh脚本所在目录,执行:

1
./nginx_intall.sh

4、编写启动nginx的脚本nginx_start.sh,执行 vi nginx_start.sh添加如下内容:

1
2
3
#!/bin/bash
cd /training/nginx/sbin
./nginx

5、启动nginx,执行

1
./nginx_start.sh

6、验证nginx是否启动成功:

1
netstat -anop|grep nginx 或者 netstat -anop|grep 80

成功信息:

1
tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN      59717/nginx: master  off (0.00/0/0)

7、编写停止nginx脚本,执行vi nginx_stop.sh ,添加如下内容:

1
2
3
#!/bin/bash
cd /training/nginx/sbin
./nginx -s stop

8、停止nginx,执行

1
./nginx_stop.sh

9、编写热加载nginx脚本,执行vi nginx_reload.sh ,添加如下内容:

1
2
3
#!/bin/bash
cd /training/nginx/sbin
./nginx -s reload

10、重新加载nginx,执行:

1
./nginx_reload.sh

四、部署前端网站到nginx下


1、上传电商网站OnlineShop文件夹到/training/nginx/html/目录下,

image-20210113165528735

​ 将OnlineShop文件夹重命名为shop

1
mv OnlineShop shop

2、修改nginx配置文件nginx.conf,执行:

1
vi /training/nginx/conf/nginx.conf
添加如下内容:
1
2
3
4
5
# add shop
​location /shop/ {
​ root html;
​ index index.html index.htm;
​}

在这里插入图片描述
3、重新记载nginx,执行:

1
./nginx_reload.sh

4、验证:在浏览器中验证下是否可以访问到网站,输入:

1
http://虚拟机ip地址/shop/

5、效果如下:
在这里插入图片描述

五、Tomcat的安装


1、下载tomcat-8.5.40,到官网上下
2、安装tomcat

1)上传tomcat到/tools目录下

2)解压安装:
1
tar -zvxf apache-tomcat-8.5.61.tar.gz -C /training/
3)配置环境变量 vi ~/.bash_profile
1
2
#tomcat
export PATH=$PATH:/training/apache-tomcat-8.5.61/bin
4)生效:
1
source ~/.bash_profile
5)启动
1
sh startup.sh
6)验证,在浏览器输入: http://192.168.215.131:8080/
          或者在命令行里面输入:netstat -anop|grep 8080 

在这里插入图片描述

六、电商后台系统部署到Linux服务器上


  1. 将代码导入到eclipse或者idea中
  2. 将代码中的接口地址、数据库链接地址等修改成服务器地址,具体需要修改的代码如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
GoodsController.java

- 修改上传图片地址为服务器地址
- 将代码中的localhost或者IP地址改成服务器IP地址

UploadUtils.java

- 将代码中的localhost或者IP地址改成服务器IP地址

hibernate.properties

- 修改数据库名及地址为服务器的数据库名及地址
- 修改数据库用户明、密码为服务器的用户密码

工程下修改webapp目录下的所有html及jsp页面

- 将代码中的localhost或者IP地址改成服务器IP地址


导入数据库shop.sql
启动mysql
在sql命令行输入source shop.sql;
  1. 选择export->war
  2. 上传war至Linux服务器的Tomcat安装目录下(见下图)
  3. 启动或重启Tomcat
  4. 配置Tomcat支持UTF-8字符集

image-20210113165825139

由于后台项目页面部分采用了html和jsp结合嵌套的方式,即在jsp中嵌套了html代码段,会存在html代码段显示中文乱码的问题,故需要做配置
1)修改tomcat/conf目录下的server.xml,添加URIEncoding=“UTF-8”配置项,配置位置如下:

1
2
3
4
5
6
7
<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" URIEncoding="UTF-8" />
<Connector protocol="AJP/1.3"
address="::1"
port="8009"
redirectPort="8443" URIEncoding="UTF-8" />
 2)修改tomcat/conf/web.xml,在 <servlet>节点中添加如下内容:
1
2
3
4
<init-param>
<param-name>fileEncoding</param-name>
<param-value>UTF-8</param-value>
</init-param>
 3)先删除tomcat下的webapp/项目/所有html页面,再重新新建并添加对应的内容
 4)启动Tomcat

6、打开浏览器进行验证:
在这里插入图片描述

七、AB压测(httpd)安装


1. 安装httpd

 
1
yum install -y httpd
  1. 配置httpd,修改端口号为81,配置如下:

    1
    vi /etc/httpd/conf/httpd.conf

    修改内容如下:

    1
    2
    #Listen 80
    Listen 81
  2. 启动服务

    1
    2
    systemctl enable httpd # 开机自启动
    systemctl start httpd # 启动httpd
  3. 查看启动状态

    1
    systemctl status httpd
  4. 编写压测脚本ab_test.sh,内容可自行修改,如下:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    #!/bin/bash
    n=`cat url.txt | wc -l`

    for ((i=1;i<=$n;i++))
    do
    echo $i
    url=`shuf -n1 url.txt`
    r=`shuf -i 6-100 -n 1`
    c=`shuf -i 1-5 -n 1`
    echo $url
    echo $r
    echo $c
    ##将测试的结果写入到test_ab.log >> results.log &
    ab -n $r -c $c $url >> results.log &
    done
  5. 测试结果说明
    在这里插入图片描述

八、Hadoop安装与配置


8.1 安装Hadoop

1、把上传到tools目录下的Hadoop进行解压

1
tar -zvxf /tools/hadoop-2.7.3.tar.gz -C /training/

2、配置环境变量:

1
vi ~/.bash_profile

​ 添加如下信息:

1
2
export HADOOP_HOME=/training/hadoop-2.7.3
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin

3、 让环境变量生效:

1
source ~/.bash_profile

img

验证是否生效:

执行:hdfs 或者hadoop 有相关信息出现即可

8.2 搭建Hadoop伪分布环境

特点:具备HDFS全部功能

HDFS:NameNode + DataNode

Yarn:ReourceManager + NodeManager

1、配置:hadoop-env.sh

vi hadoop-env.sh

配置Java环境变量

export JAVA_HOME=/training/jdk1.8.0_171

img

2、配置:hdfs-site.xml

vi /training/hadoop-2.7.3/etc/hadoop/hdfs-site.xml

hdfs-site.xml:原则是:一般有几个数据节点就配置几个,但是最多不能超多3

1
2
3
4
5
6
<!--表示数据块的冗余度 默认为3-->

<property>
<name>dfs.replication</name>
<value>1</value>
</property>

img

3、配置:core-site.xml

需要提前新建一个tmp文件夹

image-20210113172925162

vi /training/hadoop-2.7.3/etc/hadoop/core-site.xml

1
2
3
4
5
6
7
8
9
10
<!--配置NameNode的通讯地址 9000 是RPC默认的通信端口-->
<property>
<name>fs.defaultFS</name>
<value>hdfs://192.168.181.135:9000</value>
</property>
<!--HDFS数据保存在Linux的哪个目录,默认值是Linux的tmp目录 必须配置,否则会报错/training/hadoop-2.7.3/tmp 必须事先存在-->
<property>
<name>hadoop.tmp.dir</name>
<value>/training/hadoop-2.7.3/tmp</value>
</property

img

4、配置:mapper-site.xml

这个文件事先是不存在的,需要复制一份

cp /training/hadoop-2.7.3/etc/hadoop/mapred-site.xml.template /training/hadoop-2.7.3/etc/hadoop/mapred-site.xml

vi /training/hadoop-2.7.3/etc/hadoop/mapper-site.xml

1
2
3
4
5
<!--配置MR的运行框架-->
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property

img

5、配置:yarn-site.xml

vi /training/hadoop-2.7.3/etc/hadoop/mapper-site.xml

1
2
3
4
5
6
7
8
9
10
11
<!--Yarn的主节点RM的位置-->
<property>
<name>yarn.resourcemanager.hostname</name>
<value>192.130.91.130</value>
</property>

<!--MapReduce运行方式:shuffle洗牌-->
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>

img

8.3 设置免密码登录

ssh-keygen -t rsa

img

ssh-copy-id 192.168.91.130

img

8.4 验证Hadoop

格式化:HDFS(NameNode)

​ hdfs namenode -format

​ 启动hadoop环境

​ start-all.sh

​ 访问:web界面进行验证

​ HDFS:http://192.168.181.135:50070

​ Yran:http:// 192.168.181.135:8088

​ 停止:

​ stop-all.sh

img

img

九、Flume的安装与配置


  1. 上传flume到/tools目录下

  2. 解压安装

    1
    tar -zvxf apache-flume-1.9.0-bin.tar.gz -C /training/
  3. 配置环境变量,并让环境变量生效

    1
    vi ~/.bash_profile
    1
    2
    export FLUME_HOME=/trainin~g/apache-flume-1.9.0-bin
    export PATH=$PATH:$FLUME_HOME/bin
  4. 将hadoop-2.7.3安装路径下的依赖的jar导入到/apache-flume-1.9.0-bin/lib下:

    1
    2
    3
    4
    5
    6
    share/hadoop/common/hadoop-common-2.7.3.jar
    share/hadoop/common/lib/commons-configuration-1.6.jar
    share/hadoop/common/lib/hadoop-auth-2.7.3.jar
    share/hadoop/hdfs/hadoop-hdfs-2.7.3.jar
    share/hadoop/common/lib/htrace-core-3.1.0-incubating.jar
    share/hadoop/common/lib/commons-io-2.4.jar

    image-20210114173055653

  5. 验证

    1
    bin/flume-ng version 

    image-20210114173357502

  6. 配置Flume HDFS Sink:
    在/training/apache-flume-1.7.0-bin/conf/新建一个flume-hdfs.conf
    添加如下内容:(注意改ip地址)

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    # define the agent
    a1.sources=r1
    a1.channels=c1
    a1.sinks=k1

    # define the source
    #上传目录类型
    a1.sources.r1.type=spooldir
    a1.sources.r1.spoolDir=/training/nginx/logs/flumeLogs
    #定义自滚动日志完成后的后缀名
    a1.sources.r1.fileSuffix=.FINISHED
    #根据每行文本内容的大小自定义最大长度4096=4k
    a1.sources.r1.deserializer.maxLineLength=4096

    # define the sink
    a1.sinks.k1.type = hdfs
    #上传的文件保存在hdfs的/flumeLogs目录下
    a1.sinks.k1.hdfs.path = hdfs://192.168.91.130:9000/flumeLogs/%y-%m-%d/%H/%M/%S
    a1.sinks.k1.hdfs.filePrefix=access_log
    a1.sinks.k1.hdfs.fileSufix=.log
    a1.sinks.k1.hdfs.batchSize=1000
    a1.sinks.k1.hdfs.fileType = DataStream
    a1.sinks.k1.hdfs.writeFormat= Text
    # roll 滚动规则:按照数据块128M大小来控制文件的写入,与滚动相关其他的都设置成0
    #为了演示,这里设置成500k写入一次
    a1.sinks.k1.hdfs.rollSize= 512000
    a1.sinks.k1.hdfs.rollCount=0
    a1.sinks.k1.hdfs.rollInteval=0
    #控制生成目录的规则:一般是一天或者一周或者一个月一次,这里为了演示设置10秒
    a1.sinks.k1.hdfs.round=true
    a1.sinks.k1.hdfs.roundValue=10
    a1.sinks.k1.hdfs.roundUnit= second
    #是否使用本地时间
    a1.sinks.k1.hdfs.useLocalTimeStamp=true

    #define the channel
    a1.channels.c1.type = memory
    #自定义event的条数
    a1.channels.c1.capacity = 500000
    #flume事务控制所需要的缓存容量1000条event
    a1.channels.c1.transactionCapacity = 1000

    #source channel sink cooperation
    a1.sources.r1.channels = c1
    a1.sinks.k1.channel = c1

    注意:- 需要先在/training/nginx/logs/创建flumeLogs

             - 需要在hdfs的根目录/下创建flumeLogs
1
2
3
4
5
mkdir /training/nginx/logs/flumeLogs
hadoop fs -mkdir /flumeLogs

#如果hadoop命令显示拒绝访问,检查hdfs是否开启服务
start-all.sh

创建完成后浏览器输入网址,可以看见刚刚在hdfs中创建的文件

![image-20210115092905289](2021寒假实训大数据分析电商平台/image-20210115092905289.png)
  1. 修改conf/flume-env.sh(该文件事先是不存在的,需要复制一份)
    复制:

    1
    cp flume-env.template.sh flume-env.sh

    编辑文件,并设置如下内容:

    1
    2
    3
    4
    #设置JAVA_HOME:
    export JAVA_HOME=/training/jdk1.8.0_171
    #修改默认的内存:
    export JAVA_OPTS="-Xms1024m -Xmx1024m -Xss256k -Xmn2g -XX:+UseParNewGC -XX:+UseConcMarkSweepGC -XX:-UseGCOverheadLimit"

    image-20210114174451627

  2. 启动flume

    • 测试数据:把 /training/nginx/logs/access.log 复制到
      /training/nginx/logs/flumeLogs/access_201904251200.log

    • 启动
      在/training/apache-flume-1.7.0-bin目录下,执行如下命令进行启动:

      1
      bin/flume-ng agent --conf ./conf/ -f ./conf/flume-hdfs.conf --name a1 -Dflume.root.logger=INFO,console
    • 到Hadoop的控制台http://bigdata:50070/flumeLogs 查看有没有数据

  3. 编写Linux脚本rollingLog.sh,实现/training/nginx/logs/access.log日志的自动滚动到flumeLogs目录下

    • 在~目录下新建rollingLog.sh,并添加如下内容:

      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      14
      15
      16
      17
      18
      19
      20
      21
      22
      23
      #!/bin/bash
      #定义日期格式
      dataformat=`date +%Y-%m-%d-%H-%M-%S`

      #复制access.log并重命名
      cp /training/nginx/logs/access.log /training/nginx/logs/access_$dataformat.log

      host=`hostname`
      sed -i 's/^/'${host}',&/g' /training/nginx/logs/access_$dataformat.log
      #统计日志文件行数
      lines=`wc -l < /training/nginx/logs/access_$dataformat.log`

      #将格式化的日志移动到flumeLogs目录下
      mv /training/nginx/logs/access_$dataformat.log /training/nginx/logs/flumeLogs

      #清空access.log的内容
      sed -i '1,'${lines}'d' /training/nginx/logs/access.log

      #重启nginx , 否则 log can not roll.
      kill -USR1 `cat /training/nginx/logs/nginx.pid`

      ##返回给服务器信息
      ls -al /training/nginx/logs/flumeLogs/
  4. 编写启动Flume脚本 flume_start.sh,启动Flume

    1
    2
    #!/bin/bash
    /training/apache-flume-1.9.0-bin/bin/flume-ng agent -c /training/apache-flume-1.9.0-bin/conf/ -f /training/apache-flume-1.9.0-bin/conf/flume-hdfs.conf -n a1 -Dflume.root.logger=INFO,console &
  5. 编写停止Flume脚本 flume_stop.sh,停止Flume

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    #!/bin/bash

    JAR="flume"

    #停止flume函数
    echo "begin stop flume process.."
    num=`ps -ef|grep java|grep $JAR|wc -l`
    echo "当前已经启动的flume进程数:$num"
    if [ "$num" != "0" ];then
    #正常停止flume
    ps -ef|grep java|grep $JAR|awk '{print $2;}'|xargs kill
    echo "进程已经关闭..."
    else
    echo "服务未启动,无须停止..."
    fi
  6. 编写重启Flume脚本 flume_to_hdfs.sh,综合了前两个脚本

    1
    2
    3
    4
    5
    6
    7
    8
    9
    #!/bin/bash

    #先停止正在启动的flume
    ./flume_stop.sh

    #用法:nohup ./start-dishi.sh >output 2>&1 &
    nohup ./flume_start.sh > nohup_output.log 2>&1 &
    echo "启动flume成功……"

    测试(如果权限不够则加权限)

    image-20210115094657635

十、MapReduce工程

MapReduce代码编写

(1)创建MapReduce工具

(2)导入Hadoop的依赖包

(3)写代码

img

导入依赖包

img

创建类LogMapper类

img

创建LogReducer类

img

创建LogJob类

img

本地运行测试结果正确后,需要对Driver类输入输出部分代码进行修改,具体修改如下

1
2
3
FileInputFormat.setInputPaths(job,new Path(args[0]));  

FileOutputFormat.setOutputPath(job,new Path(args[1]));

打jar包,提交集群运行

为方便操作,编写脚本exec_mr.sh来执行MR程序

1
2
3
4
5
6
#!/bin/bash
#执行MapReduce程序
dataformat=`date +%Y-%m-%d-%H-%M-%S`
/training/hadoop-2.7.3/bin/hadoop jar log.jar $(cat mr_input_path.txt) /output/result/$dataformat
/training/hadoop-2.7.3/bin/hdfs dfs -cat /output/result/$dataformat/part-r-00000 > mr_result.txt
echo $(cat mr_result.txt)

打包好的上次到HDFS中,进入运行

img

十一、SQOOP安装配置

Sqoop是Apache旗下一款Hadoop和关系数据服务之间传送数据的工具

12.1 安装

上传sqoop-1.4.7.bin__hadoop-2.6.0.tar.gz到/tools目录下

解压安装

1
tar -zvxf /tools/sqoop-1.4.7.bin__hadoop-2.6.0.tar.gz -C /training/

添加环境变量:

1
vi ~/.bash_prefile
1
2
3
export SQOOP_HOME= /training/sqoop-1.4.7.bin__hadoop-2.6.0

export PATH=$PATH:$SQOOP_HOME/bin

让环境生效

1
source ~/.bash_prefile

12.2 配置sqoop文件

修改

1
vi /training/sqoop-1.4.7.bin__hadoop-2.6.0/bin/configure-sqoop

将出现HCAT_HOME和ACCUMULO_HOME部分内容注释掉.

img

修改sqoop-site.xml和sqoop-env.sh

1
2
vi /training/sqoop-1.4.7.bin__hadoop-2.6.0/conf/sqoop-site.xml
vi /training/sqoop-1.4.7.bin__hadoop-2.6.0/conf/sqoop-env.sh

具体配置如下文件所示:

sqoop-site.xml:

img

sqoop-env.sh:

1
2
3
4
5
#Set path to where bin/hadoop is available
export HADOOP_COMMON_HOME=/training/hadoop-2.7.3

#Set path to where hadoop-*-core.jar is available
export HADOOP_MAPRED_HOME=/training/hadoop-2.7.3

img

将MySQL数据库的驱动(使用5.x版本,不要使用高版本的)上传到sqoop安装目录下的lib目录下

由于sqoop缺少java-json.jar包进行解析json,也需要上传到sqoop安装目录下的lib目录下

img

验证

1
sqoop version

img

创建数据库表t_mr_result,创建语句:

1
2
3
4
5
6
7
8
9
CREATE TABLE `t_mr_result` (

`goodsId` varchar(100) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '商品ID',

`goodsViewCount` int(5) DEFAULT NULL COMMENT '商品浏览总数',

PRIMARY KEY (`goodsId`)

) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci

编写sqoop从hadoop导出数据到MySQL的脚本sqoop_mysql.sh

修改下面的IP地址和密码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#!/bin/bash

/training/sqoop-1.4.7.bin__hadoop-2.6.0/bin/sqoop export \

--connect jdbc:mysql://192.168.112.129:3306/shop \

--username root \

--password Sjm@!_123456 \

--input-fields-terminated-by '\t' \

--table t_mr_result \

--export-dir $(cat result_path.txt)

--class-name UpsertMrResult --update-key goodsId --update-mode allowinsert

本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!