大数据课程实验案例:网站用户行为分析
案例目的
1.熟悉Linux系统、MySQL、Hadoop、HBase、Hive、Sqoop、R、Eclipse等系统和软件的安装和使用;
2.了解大数据处理的基本流程;
3.熟悉数据预处理方法;
4.熟悉在不同类型数据库之间进行数据相互导入导出;
5.熟悉使用R语言进行可视化分析;
6.熟悉使用Elipse编写Java程序操作HBase数据库。
案例任务
1.安装Linux操作系统
2.安装关系型数据库MySQL
3.安装大数据处理框架Hadoop
4.安装列族数据库HBase
5.安装数据仓库Hive
6.安装Sqoop
7.安装R
8.安装Eclipse
9.对文本文件形式的原始数据集进行预处理
10.把文本文件的数据集导入到数据仓库Hive中
11.对数据仓库Hive中的数据进行查询分析
12.使用Sqoop将数据从Hive导入MySQL
13.使用Sqoop将数据从MySQL导入HBase
14.使用HBase Java API把数据从本地导入到HBase中
15.使用R对MySQL中的数据进行可视化分析
说明:Word可能导致部分命令或代码有问题,每一个步骤都提供参考链接,详细查看参考链接
首先1.安装Linux系统;
参考https://dblab.xmu.edu.cn/blog/285/
以下是各软件的安装,通过启动来验证安装
所有准备好在这里
cd /home/hadoop/a
用户准备工作
sudo useradd -m hadoop -s /bin/bash
Shell 命令这条命令创建了可以登陆的 hadoop 用户,并使用 /bin/bash 作为 shell。
接着使用如下命令设置密码,可简单设置为 hadoop,按提示输入两次密码:
sudo passwd hadoop
密码:123
可为 hadoop 用户增加管理员权限,方便部署,避免一些对新手来说比较棘手的权限问题:
sudo adduser hadoop sudo
更新apt
用 hadoop 用户登录后,我们先更新一下 apt,后续我们使用 apt 安装软件,如果没更新可能有一些软件安装不了。按 ctrl+alt+t 打开终端窗口,执行如下命令:
sudo apt-get update
修改各个节点的主机名
sudo vi /etc/homename
安装ssh工具
1.打开终端键入如下命令:
apt-get update
apt-get install openssh-server
启动SSH服务
1.键入如下命令:
/etc/init.d/ssh start
重启命令与关闭命令如下:
/etc/init.d/ssh restart #重启SSH服务
/etc/init.d/ssh stop #关闭SSH服务
查看进程,检查是否启动成功,键入如下命令:
ps -e | grep sshd
配置root用户SSH服务
Ubuntu中SSH服务安装完成后查看是否允许root用户登陆,若不允许则无法远程登陆root用户,需要修改配置
1.首先,打开“/etc/ssh/sshd_config”
gedit /etc/ssh/sshd_config
2.查看是否有“PermitRootLogin yes”,没有添加即可,完成后保存退出
解决进程问题
sudo rm -r -f /var/lib/dpkg/lock
sudo rm -r -f /var/lib/dpkg/lock-frontend
安装vim
sudo apt-get install vim
为当前用户设置权限
sudo chown -R 当前用户名 ./hadoop
软件安装注意!!!先解压好软件,再去到解压后所在目录在开始运行安装命令
大数据实验软件安装详细过程参考:
Linux操作系统的安装:https://dblab.xmu.edu.cn/blog/285/
Hadoop安装教程:https://dblab.xmu.edu.cn/blog/7/
MySQL的安装:https://dblab.xmu.edu.cn/blog/1002/
HBase的安装:https://dblab.xmu.edu.cn/blog/588/
Hive的安装:https://dblab.xmu.edu.cn/blog/1080/
Sqoop的安装:https://dblab.xmu.edu.cn/blog/1015/
2.安装Hadoop;
Hadoop安装教程参考https://dblab.xmu.edu.cn/blog/7/
我们选择将 Hadoop 安装至 /usr/local/ 中:
cd /home/hadoop/a
sudo tar -zxvf hadoop-2.7.1.tar.gz -C /usr/local # 解压到/usr/local中
cd /usr/local/
sudo mv hadoop-2.7.1/ ./hadoop
sudo chown -R hadoop /hadoop # 修改文件权限
Hadoop 解压后即可使用。输入如下命令来检查 Hadoop 是否可用,成功则会显示 Hadoop 版本信息:
cd /usr/local/hadoop
./bin/hadoop version
安装与启动
ssh localhost
cd /usr/local/hadoop
./sbin/start-dfs.sh
3.安装MySQL;
详细参考:https://dblab.xmu.edu.cn/blog/1002/
sudo apt-get update #更新软件源
sudo apt-get install mysql-server #安装mysql
启动和关闭mysql服务器:
service mysql start
密码:123
关闭
service mysql stop
确认是否启动成功,mysql节点处于LISTEN状态表示启动成功:
sudo netstat -tap | grep mysql
启动:service mysql start
sudo netstat -tap | grep mysql
mysql -u root -p
4.安装HBase;
详细参考:https://dblab.xmu.edu.cn/blog/588/
1.1 解压安装包hbase-1.1.2-bin.tar.gz放至路径 /usr/local,命令如下:
cd /home/hadoop/a
sudo tar -zxf hbase-1.1.5-bin.tar.gz -C /usr/local
1.2 将解压的文件名hbase-1.1.2改为hbase,以方便使用,命令如下:
cd /usr/local
sudo mv /usr/local/ hbase-1.1.5 /usr/local/hbase
1.3 配置环境变量
将hbase下的bin目录添加到path中,这样,启动hbase就无需到/usr/local/hbase目录下,大大的方便了hbase的使用。教程下面的部分还是切换到了/usr/local/hbase目录操作,有助于初学者理解运行过程,熟练之后可以不必切换。
编辑~/.bashrc文件加入如下内容
vi ~/.bashrc
export PATH=$PATH:/usr/local/hbase/bin
保存后退出
再执行source命令使上述配置在当前终端立即生效
source ~/.bashrc
4 添加HBase权限
cd /usr/local
sudo chown -R hadoop ./hbase
#将hbase下的所有文件的所有者改为hadoop,hadoop是当前用户的用户名。
启动测试
cd /usr/local/hbase
bin/start-hbase.sh
2.2 伪分布式模式配置
1.配置/usr/local/hbase/conf/hbase-env.sh。命令如下:
vi /usr/local/hbase/conf/hbase-env.sh
配置JAVA_HOME,HBASE_CLASSPATH,HBASE_MANAGES_ZK.
HBASE_CLASSPATH设置为本机Hadoop安装目录下的conf目录(即/usr/local/hadoop/conf)
vim /usr/local/hadoop/conf
export JAVA_HOME=/usr/lib/jvm/java-7-openjdk-amd64
export HBASE_CLASSPATH=/usr/local/hadoop/conf
export HBASE_MANAGES_ZK=true
2.配置/usr/local/hbase/conf/hbase-site.xml
用命令vi打开并编辑hbase-site.xml,命令如下:
vi /usr/local/hbase/conf/hbase-site.xml
<configuration>
<property>
<name>hbase.rootdir</name>
<value>hdfs://localhost:9000/hbase</value>
</property>
<property>
<name>hbase.cluster.distributed</name>
<value>true</value>
</property>
</configuration>
接下来测试运行HBase。
第一步:首先登陆ssh,之前设置了无密码登陆,因此这里不需要密码;再切换目录至/usr/local/hadoop ;再启动hadoop,如果已经启动hadoop请跳过此步骤。命令如下:
ssh localhost
cd /usr/local/hadoop
./sbin/start-dfs.sh
切换目录至/usr/local/hbase;再启动HBase.命令如下:
cd /usr/local/hbase
bin/start-hbase.sh
停止HBase运行,命令如下:
bin/stop-hbase.sh
5.安装Hive;启动验证
详细过程参考Hive的安装:https://dblab.xmu.edu.cn/blog/1080/
先去到软件包目录
cd /home/hadoop/a
先把软件解压到/usr/local中,再执行如下操作,这里不做演示了,接着如下
cd /usr/local/
sudo mv apache-hive-3.1.2-bin hive # 将文件夹名改为hive
sudo chown -R dblab:dblab hive # 修改文件权限
vim编辑器打开.bashrc文件,命令如下:
vim ~/.bashrc
在该文件最前面一行添加如下内容:
export HIVE_HOME=/usr/local/hive
export PATH=$PATH:$HIVE_HOME/bin
export HADOOP_HOME=/usr/local/hadoop
HADOOP_HOME需要被配置成你机器上Hadoop的安装路径,比如这里是安装在/usr/local./hadoop目录。
保存退出后,运行如下命令使配置立即生效:
source ~/.bashrc
修改/usr/local/hive/conf下的hive-site.xml
执行如下命令:
cd /usr/local/hive/conf
sudo mv hive-default.xml.template hive-default.xml
使用vim编辑器新建一个配置文件hive-site.xml,命令如下:
cd /usr/local/hive/conf
sudo vim hive-site.xml
在hive-site.xml中添加如下配置信息:
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
<property>
<name>javax.jdo.option.ConnectionURL</name>
<value>jdbc:mysql://localhost:3306/hive?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>hive</value>
<description>username to use against metastore database</description>
</property>
<property>
<name>javax.jdo.option.ConnectionPassword</name>
<value>hive</value>
<description>password to use against metastore database</description>
</property>
</configuration>
然后,按键盘上的“ESC”键退出vim编辑状态,再输入:wq,保存并退出vim编辑器。
#将mysql-connector-java-5.1.40-bin.jar拷贝到/usr/local/hive/lib目录下 解压后
cd /自己软件压缩包的位置
sudo tar -zxvf mysql-connector-java-5.1.40.tar.gz
Sudo cp/home/hadoop/Desktop/mysql-connector-java-5.1.40/mysql-connector-java-5.1.40-bin.jar /usr/local/hive/lib
cd /usr/local/hive/lib
3.启动并登陆mysql
sudo service mysql start #启动mysql服务
mysql -u root -p #登陆shell界面
自己的 mysql密码:123
在终端上输入以下命令重启MySQL:
sudo /etc/init.d/mysql stop
sudo /etc/init.d/mysql start
service mysql start #启动mysql服务
mysql -u root -p #登陆shell界面
- 新建hive数据库。
mysql> create database hive; #这个hive数据库与hive-site.xml中localhost:3306/hive的hive对应,用来保存hive元数据
mysql
5. 配置mysql允许hive接入:
先刷新一下权限表。
mysql> flush privileges;
mysql> grant all on . to hive@localhost identified by ‘hive’; #将所有数据库的所有表的所有权限赋给hive用户,后面的hive是配置hive-site.xml中配置的连接密码
mysql> flush privileges; #刷新mysql系统权限关系表
注意!!!
启动hive之前,请先启动hadoop集群。
验证
cd /usr/local/hadoop
./sbin/start-all.sh
cd /usr/local/hive
./bin/hive
然后,执行jps命令看一下当前运行的进程:
1.jps
如果出现下面这些进程,说明Hadoop启动成功了。
3765 NodeManager
3639 ResourceManager
3800 Jps
3261 DataNode
3134 NameNode
3471 SecondaryNameNode
6.安装Sqoop;
详细参考Sqoop的安装:https://dblab.xmu.edu.cn/blog/1015/
cd /home/hadoop/a
sudo tar -zxvf sqoop-1.4.6.bin__hadoop-2.0.4-alpha.tar.gz -C /usr/local #解压安装文件
cd /usr/local
sudo mv sqoop-1.4.6.bin__hadoop-2.0.4-alpha sqoop #修改文件名
sudo chown -R hadoop:hadoop sqoop #
修改文件夹属主,如果你当前登录用户名不是hadoop,
请修改成你自己的用户名
2. 修改配置文件sqoop-env.sh
cd sqoop/conf/
cat sqoop-env-template.sh >> sqoop-env.sh
#将sqoop-env-template.sh复制一份并命名为sqoop-env.sh
vim sqoop-env.sh
#编辑sqoop-env.sh
export HADOOP_COMMON_HOME=/usr/local/hadoop
export HADOOP_MAPRED_HOME=/usr/local/hadoop
export HBASE_HOME=/usr/local/hbase
export HIVE_HOME=/usr/local/hive
- 配置环境变量
打开当前用户的环境变量配置文件:
vim ~/.bashrc
在配置文件第一行键入如下信息:
export SQOOP_HOME=/usr/local/sqoop
export PATH=$PATH:$SBT_HOME/bin:$SQOOP_HOME/bin
export CLASSPATH=$CLASSPATH:$SQOOP_HOME/lib
执行下面命令让配置文件立即生效:
source ~/.bashrc
将mysql驱动包拷贝到
S
Q
O
O
P
H
O
M
E
/
l
i
b
下面要把
M
y
S
Q
L
驱动程序拷贝到
SQOOP_HOME/lib 下面要把MySQL驱动程序拷贝到
SQOOPHOME/lib下面要把MySQL驱动程序拷贝到SQOOP_HOME/lib目录下,首先请在Linux系统的浏览器中请点击mysql驱动包下载地址下载驱动包。下载后,一般文件会被浏览器默认放置在当前用户的下载目录下,本教程采用hadoop用户登录Linux系统,因此,下载文件被默认放置在“/home/hadoop/下载”目录下面。
下面执行命令拷贝文件:
去到软件所在目录
cd /home/hadoop/a
#解压mysql驱动包
sudo tar -zxvf mysql-connector-java-5.1.40.tar.gz
#解压mysql驱动包
ls #这时就可以看到解压缩后得到的目录mysql-connector-java-5.1.40
cp ./mysql-connector-java-5.1.40/mysql-connector-java-5.1.40-bin.jar /usr/local/sqoop/lib
cd /usr/local/sqoop/lib
测试与MySQL的连接
首先请确保mysql服务已经启动了,如果没有启动,请执行下面命令启动:
service mysql start
密码:123
然后就可以测试sqoop与MySQL之间的连接是否成功:
测试sqoop与MySQL之间的连接是否成功:
sqoop list-databases --connect jdbc:mysql://127.0.0.1:3306/ --username root -P
7.安装R;(这里有时遇到问题自己都解决不了)Ubuntu 18 版本这里的问题实在没法解决!!
利用vim打开/etc/apt/sources.list文件
1.sudo vim /etc/apt/sources.list
在文件的最后一行添加厦门大学的镜像源:
deb http://mirrors.tuna.tsinghua.edu.cn/CRAN/bin/linux/ubuntu/ trusty/
退出vim,更新软件源列表
1.sudo apt-get update
如果更新软件源出现由于没有公钥,无法验证下列签名的错误,请执行如下命令: sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 51716619E084DAB9
安装R语言
1.sudo apt-get install r-base
Shell 命令
会提示“您希望继续执行吗?[Y/n]”,可以直接键盘输入“Y”,就可以顺利安装结束。
安装结束后,可以执行下面命令启动R:
1.R
启动后,会显示如下信息,并进入“>”命令提示符状态:
R version 3.3.2 (2016-10-31) – “Sincere Pumpkin Patch”
Copyright © 2016 The R Foundation for Statistical Computing
Platform: x86_64-pc-linux-gnu (64-bit)
R是自由软件,不带任何担保。
在某些条件下你可以将其自由散布。
用’license()'或’licence()'来看散布的详细条件。
R是个合作计划,有许多人为之做出了贡献.
用’contributors()'来看合作者的详细情况
用’citation()'会告诉你如何在出版物中正确地引用R或R程序包。
用’demo()'来看一些示范程序,用’help()'来阅读在线帮助文件,或
用’help.start()'通过HTML浏览器来看帮助文件。
用’q()'退出R.
“>”就是R的命令提示符,你可以在后面输入R语言命令。
可以执行下面命令退出R:
1.>q()
- 安装Eclipse
本地数据集上传到数据仓库Hive
user.zip下载地址:https://pan.baidu.com/s/1nuOSo7B
首先建立一个用于运行本案例的目录bigdatacase
如果你把user.zip下载到了其他目录,这里请进入到你自己的存放user.zip的目录。
下面需要把user.zip进行解压缩,我们需要首先建立一个用于运行本案例的目录bigdatacase
请执行以下命令:user.zip注意自己的文件目录
1.cd /usr/local
2.ls
3.sudo mkdir bigdatacase
4.//这里会提示你输入当前用户(本教程是hadoop用户名)的密码
5.//下面给hadoop用户赋予针对bigdatacase目录的各种操作权限
6.sudo chown -R hadoop:hadoop ./bigdatacase
7.cd bigdatacase
8.//下面创建一个dataset目录,用于保存数据集
9.mkdir dataset
10.//下面就可以解压缩user.zip文件
11.cd ~ //表示进入hadoop用户的目录
12.cd 下载
13.ls
14.unzip user.zip -d /usr/local/bigdatacase/dataset
15.cd /usr/local/bigdatacase/dataset
16.ls
raw_user.csv和small_user.csv。
我们执行下面命令取出前面5条记录看一下:
head -5 raw_user.csv
数据集的预处理详细参考:https://dblab.xmu.edu.cn/blog/959/
1.删除文件第一行记录,即字段名称
raw_user和small_user中的第一行都是字段名称,我们在文件中的数据导入到数据仓库Hive中时,不需要第一行字段名称,因此,这里在做数据预处理时,删除第一行
cd /usr/local/bigdatacase/dataset
//下面删除raw_user中的第1行
sed -i ‘1d’ raw_user //1d表示删除第1行,同理,3d表示删除第3行,nd表示删除第n行
//下面删除small_user中的第1行
sed -i ‘1d’ small_user
//下面再用head命令去查看文件的前5行记录,就看不到字段名称这一行了
head -5 raw_user.csv
可以看出,每行记录都包含5个字段,数据集中的字段及其含义如下:
user_id(用户id)
item_id(商品id)
behaviour_type(包括浏览、收藏、加购物车、购买,对应取值分别是1、2、3、4)
user_geohash(用户地理位置哈希值,有些记录中没有这个字段值,所以后面我们会用脚本做数据预处理时把这个字段全部删除)
item_category(商品分类)
time(该记录产生时间)
2.对字段进行预处理
下面对数据集进行一些预处理,包括为每行记录增加一个id字段(让记录具有唯一性)、增加一个省份字段(用来后续进行可视化分析),并且丢弃user_geohash字段(后面分析不需要这个字段)。
下面我们要建一个脚本文件pre_deal.sh,请把这个脚本文件放在dataset目录下,和数据集small_user.csv放在同一个目录下:
cd /usr/local/bigdatacase/dataset
vim pre_deal.sh
上面使用vim编辑器新建了一个pre_deal.sh脚本文件,请在这个脚本文件中加入下面代码:
(Word文档导致部分代码可能出错参考https://dblab.xmu.edu.cn/blog/959/
)
#!/bin/bash
#下面设置输入文件,把用户执行pre_deal.sh命令时提供的第一个参数作为输入文件名称
infile=$1
#下面设置输出文件,把用户执行pre_deal.sh命令时提供的第二个参数作为输出文件名称
outfile=KaTeX parse error: Expected 'EOF', got '#' at position 3: 2 #̲注意!!最后的infile > $outfile必须跟在}’这两个字符的后面
awk -F “,” ‘BEGIN{
srand();
id=0;
Province[0]=“山东”;Province[1]=“山西”;Province[2]=“河南”;Province[3]=“河北”;Province[4]=“陕西”;Province[5]=“内蒙古”;Province[6]=“上海市”;
Province[7]=“北京市”;Province[8]=“重庆市”;Province[9]=“天津市”;Province[10]=“福建”;Province[11]=“广东”;Province[12]=“广西”;Province[13]=“云南”;
Province[14]=“浙江”;Province[15]=“贵州”;Province[16]=“新疆”;Province[17]=“西藏”;Province[18]=“江西”;Province[19]=“湖南”;Province[20]=“湖北”;
Province[21]=“黑龙江”;Province[22]=“吉林”;Province[23]=“辽宁”; Province[24]=“江苏”;Province[25]=“甘肃”;Province[26]=“青海”;Province[27]=“四川”;
Province[28]=“安徽”; Province[29]=“宁夏”;Province[30]=“海南”;Province[31]=“香港”;Province[32]=“澳门”;Province[33]=“台湾”;
}
{
id=id+1;
value=int(rand()*34);
print id"\t"$1"\t"$2"\t"$3"\t"$5"\t"substr($6,1,10)"\t"Province[value]
}’ $infile > $outfile
输入后查看
上面的代码的基本形式是:
awk -F “,” ‘处理逻辑’ $infile > $outfile
使用awk可以逐行读取输入文件,并对逐行进行相应操作。
下面就可以执行pre_deal.sh脚本文件,来对small_user.csv进行数据预处理,命令如下:
cd /usr/local/bigdatacase/dataset
bash ./pre_deal.sh small_user.csv user_table.txt
可以使用head命令查看生成的user_table.txt,不要直接打开,文件过大,会出错,下面查看前10行数据:
head -10 user_table.txt
a.启动HDFS
请登录Linux系统,打开一个终端,执行下面命令启动Hadoop:
cd /usr/local/hadoop
./sbin/start-all.sh
然后,执行jps命令看一下当前运行的进程:
jps
如果出现下面这些进程,说明Hadoop启动成功了。
3765 NodeManager
3639 ResourceManager
3800 Jps
3261 DataNode
3134 NameNode
3471 SecondaryNameNode
b.把user_table.txt上传到HDFS中
现在,我们要把Linux本地文件系统中的user_table.txt上传到分布式文件系统HDFS中,存放在HDFS中的“/bigdatacase/dataset”目录下。
首先,请执行下面命令,在HDFS的根目录下面创建一个新的目录bigdatacase,并在这个目录下创建一个子目录dataset,如下:
cd /usr/local/hadoop
./bin/hdfs dfs -mkdir -p /bigdatacase/dataset
然后,把Linux本地文件系统中的user_table.txt上传到分布式文件系统HDFS的“/bigdatacase/dataset”目录下,命令如下:
cd /usr/local/hadoop
./bin/hdfs dfs -put /usr/local/bigdatacase/dataset/user_table.txt /bigdatacase/dataset
下面可以查看一下HDFS中的user_table.txt的前10条记录,命令如下:
cd /usr/local/hadoop
./bin/hdfs dfs -cat /bigdatacase/dataset/user_table.txt | head -10
c.在Hive上创建数据库
下面,请在Linux系统中,再新建一个终端(可以在刚才已经建好的终端界面的左上角,点击“终端”菜单,在弹出的子菜单中选择“新建终端”)。因为需要借助于MySQL保存Hive的元数据,所以,请首先启动MySQL数据库:
启动MySQL
service mysql start
//可以在Linux的任何目录下执行该命令
由于Hive是基于Hadoop的数据仓库,使用HiveQL语言撰写的查询语句,最终都会被Hive自动解析成MapReduce任务由Hadoop去具体执行,因此,需要启动Hadoop,然后再启动Hive。由于前面我们已经启动了Hadoop,所以,这里不需要再次启动Hadoop。下面,在这个新的终端中执行下面命令进入Hive:
启动Hive
cd /usr/local/hive
./bin/hive
启动成功以后,就进入了“hive>”命令提示符状态,可以输入类似SQL语句的HiveQL语句。
hive> create database dblab;
hive> use dblab;
hive
d.创建外部表
关于数据仓库Hive的内部表和外部表的区别,请访问网络文章《Hive内部表与外部表的区别》。本教程采用外部表方式。
这里我们要在数据库dblab中创建一个外部表bigdata_user,它包含字段(id, uid, item_id, behavior_type, item_category, date, province),请在hive命令提示符下输入如下命令:
hive> CREATE EXTERNAL TABLE dblab.bigdata_user(id INT,uid STRING,item_id STRING,behavior_type INT,item_category STRING,visit_date DATE,province STRING) COMMENT 'Welcome to xmu dblab!' ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t' STORED AS TEXTFILE LOCATION '/bigdatacase/dataset';
hive
对于这条语句中LOCATION参数的含义如果有疑问,可以阅读博客《关于数据仓库Hive建表时的LOCATION参数问题》。
e.查询数据
上面已经成功把HDFS中的“/bigdatacase/dataset”目录下的数据加载到了数据仓库Hive中,我们现在可以使用下面命令查询一下:
hive> select * from bigdata_user limit 10;
hive> select behavior_type from bigdata_user limit 10;
Hive数据分析参考:https://dblab.xmu.edu.cn/blog/1005/
操作Hive
请登录Linux系统(本教程统一采用hadoop用户名登录系统),然后,打开一个终端(可以按快捷键Ctrl+Alt+T)。
本教程中,Hadoop的安装目录是“/usr/local/hadoop”,Hive的安装目录是“/usr/local/hive”。
因为需要借助于MySQL保存Hive的元数据,所以,请首先启动MySQL数据库,请在终端中输入下面命令:
service mysql start
//可以在Linux的任何目录下执行该命令
请执行下面命令启动Hadoop(如果你已经启动了Hadoop就不用再次启动了):
cd /usr/local/hadoop
./sbin/start-all.sh
执行jps命令看一下当前运行的进程:
jps
继续执行下面命令启动进入Hive:
cd /usr/local/hive
./bin/hive //启动Hive
在“hive>”命令提示符状态下执行下面命令:
hive> use dblab;
//使用dblab数据库
hive> show tables;
//显示数据库中所有表。
hive> show create table bigdata_user;
//查看bigdata_user表的各种属性;
执行部分结果如下:
可以执行下面命令查看表的简单结构:
hive> desc bigdata_user;
执行部分结果如下:
二、简单查询分析
先测试一下简单的指令:
hive> select behavior_type from bigdata_user limit 10;
//查看前10位用户对商品的行为
执行部分结果如下:
三、查询条数统计分析
(1)用聚合函数count()计算出表内有多少条行数据
hive> select count(*) from bigdata_user;//用聚合函数count()计算出表内有多少条行数据
执行结果部分如下:
可视化分析MySQL中的数据
(按步骤操作,这里要先快照备份,有可能会出错自己解决不了,否则前功尽弃)
安装依赖库
为了完成可视化功能,我们需要为R安装一些依赖库,包括:RMySQL、ggplot2、devtools和recharts。
RMySQL是一个提供了访问MySQL数据库的R语言接口程序的R语言依赖库。
ggplot2和recharts则是R语言中提供绘图可视化功能的依赖库。
请启动R进入R命令提示符状态,执行如下命令安装RMySQL:
1.> install.packages(‘RMySQL’)
R
上面命令执行后, 屏幕会提示"Would you like to user a personal library instead?(y/n)"等问题,只要遇到提问,都在键盘输入y后回车即可。然后,屏幕会显示“—在此连线阶段时请选用CRAN的镜子—”,并会弹出一个白色背景的竖条形窗口,窗口标题是“HTTPS CRAN mirros”,标题下面列出了很多国家的镜像列表,我们可以选择位于China的镜像,比如,选择“China(Beijing)[https]”,然后点击“ok”按钮,就开始安装了。安装过程需要几分钟(当然,也和当前网络速度有关系)。
由于不同用户的Ubuntu开发环境不一样,安装有很大可能因为缺少组件导致失败,如果出现如下错误信息:
Configuration failed because libmysqlclient was not found. Try installing:
- deb: libmariadb-client-lgpl-dev (Debian, Ubuntu 16.04)
libmariadbclient-dev (Ubuntu 14.04) - rpm: mariadb-devel | mysql-devel (Fedora, CentOS, RHEL)
- csw: mysql56_dev (Solaris)
- brew: mariadb-connector-c (OSX)
…
ERROR: configuration failed for package ‘RMySQL’ - removing ‘/home/hadoop/R/x86_64-pc-linux-gnu-library/3.3/RMySQL’
下载的程序包在‘/tmp/RtmpvEArxz/downloaded_packages’里
Warning message:
In install.packages(“RMySQL”) : 安装程序包‘RMySQL’时退出狀態的值不是0
只要根据错误给出的错误信息,进行操作即可。q()退出R命令提示符状态,回到Shell状态,笔者的系统是Ubuntu 16.04,那么,根据上面的英文错误信息,就需要在Shell命令提示符状态下执行下面命令安装libmariadb-client-lgpl-dev:
1.sudo apt-get install libmariadb-client-lgpl-dev
然后,再次输入下面命令进入R命令提示符状态:
1.R
启动后,并进入“>”命令提示符状态。然后,执行如下命令安装绘图包ggplot2,如果还出现缺少组件的错误,请按照上面的解决方案解决!
1.> install.packages(‘ggplot2’)
R
然后,屏幕会显示“—在此连线阶段时请选用CRAN的镜子—”,并会弹出一个白色背景的竖条形窗口,窗口标题是“HTTPS CRAN mirros”,标题下面列出了很多国家的镜像列表,我们可以选择位于China的镜像,比如,选择“China(Beijing)[https]”,然后点击“ok”按钮,就开始安装了。这个命令运行后,大概需要安装10分钟时间(当然,也和当前网络速度有关系)。
下面继续运行下面命令安装devtools:
1.> install.packages(‘devtools’)
R
如果在上面安装devtools的过程中,又出现了错误,处理方法很简单,还是按照上面介绍的方法,根据屏幕上给出的英文错误信息,缺少什么软件,就用sudo apt-get install命令安装该软件就可以了。笔者在Ubuntu16.04上执行devtools安装时,出现了三次错误,笔者根据每次错误的英文提示信息,安装了三个软件libssl-dev、libssh2-1-dev、libcurl4-openssl-dev,安装命令如下:
1.sudo apt-get install libssl-dev
2.sudo apt-get install libssh2-1-dev
3.sudo apt-get install libcurl4-openssl-dev
Shell 命令
读者在安装过程中,可能会出现不同的错误,按照同样的处理方法可以顺利解决。
下面在R命令提示符下再执行如下命令安装taiyun/recharts:
1.> devtools::install_github(‘taiyun/recharts’)
结果测试与效果演示步骤
ssh localhost
cd /usr/local/hadoop
./sbin/start-dfs.sh
MySQL
service mysql start
sudo netstat -tap | grep mysql
mysql -u root -p
密码:123
cd /usr/local/hadoop
./sbin/start-dfs.sh
cd /usr/local/hive
./bin/hive
jps
输入 R
接着输入如下
接着输入
summary(user_action$behavior_type)
summary(as.numeric(user_action$behavior_type))
library(ggplot2)
ggplot(user_action,aes(as.numeric(behavior_type)))+geom_histogram()
结果展示
temp <- subset(user_action,as.numeric(behavior_type)==4) # 获取子数据集
count <- sort(table(temp$item_category),decreasing = T) #排序
print(count[1:10]) # 获取第1到10个排序结果
result <- as.data.frame(count[1:10]) #将count矩阵结果转换成数据框
ggplot(result,aes(Var1,Freq,col=factor(Var1)))+geom_point()
month <- substr(user_action$visit_date,6,7) # visit_date变量中截取月份
user_action <- cbind(user_action,month) # user_action增加一列月份数据
ggplot(user_action,aes(as.numeric(behavior_type),col=factor(month)))+geom_histogram()+facet_grid(.~month)
library(recharts)
rel <- as.data.frame(table(temp$province))
provinces <- rel$Var1
x = c()
for(n in provinces){
x[length(x)+1] = nrow(subset(temp,(province==n)))
}
mapData <- data.frame(province=rel$Var1,
count=x, stringsAsFactors=F) # 设置地图信息
eMap(mapData, namevar=~province, datavar = ~count) #画出中国地图
验收效果展示与说明
测试演示命令汇总如下
以上是关键步骤汇总 参考:https://dblab.xmu.edu.cn/
Ubuntu 16.04 Linux空白模板(只含大数据软件在桌面,可以在VM虚拟机导入使用)
这个空白Linux虚拟机模板,在VM导入即可使用可以在此模板,
自己可以在这个空白Linux虚拟机模板从头开始搭建大数据课程实验案例:网站用户行为分析。
重磅:大数据课程实验案例:网站用户行为分析(免费共享)链接如下:
https://dblab.xmu.edu.cn/
空白Linux虚拟机模板(只含大数据压缩软件包)
下载好就到导入空白Linux虚拟机模板
找到下载好模板的路径选择如下文件打开
重命名Ubuntu16.04 qjp
导入完成如下
开机之后如下
有需要Linux空白模板请告知
完整实验环境对外不提供,仅供个人学习使用。