本文仅用于分析和记录在校期间学习大数据分析课程的一点心得体会。
1、Ubuntu系统的安装和使用
本文采用Ubuntu16.04系统,安装系统省略,选择镜像后一直点击下一步
1.1 进入系统后,调整输入法,将输入法切换至中英文切换
1.2为了便于接下来的操作,需创建一个名为hadoop的普通用户
为hadoop用户设置密码为hadoop,并且增加管理员权限,之后的过程均采用hadoop用户登录系统
2、Hadoop的安装和使用
包含创建hadoop用户、更新APT、安装ssh和安装java环境等
2.1更新APT
首先切换至hadoop用户进行操作,执行更新APT软件,若出现Hash效验和不符的提示信息,则可以通过更改软件源来解决。
sudo apt-get update
2.1安装SSH
为了顺利登录集群中的每台机器,需要将所有机器配置为名称节点可以无密码登录它们
依次在命令行界面输入以下命令:
sudo apt-get install openssh-server
ssh localhost #输入密码
cd ~/.ssh/ # 若没有该目录,请先执行一次ssh localhost
ssh-keygen -t rsa # 会有提示,都按回车即可
cat ./id_rsa.pub >> ./authorized_keys # 加入授权
2.2安装java环境
#安装vim,如果已经安装可以跳过此步
sudo apt-get install vim-gtk
cd /usr/lib
sudo mkdir jvm #创建/usr/lib/jvm目录用来存放JDK文件
cd ~ #进入hadoop用户的主目录
cd Downloads #进入java压缩包文件目录即可,不一定是本目录
sudo tar -zxvf ./jdk-8u162-linux-x64.tar.gz -C /usr/lib/jvm
vim ~/.bashrc
#在这个文件开头添加如下几行内容
export HADOOP_HOME=/usr/local/hadoop
export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native
export JAVA_HOME=/usr/lib/jvm/jdk1.8.0_162
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
export PATH=${JAVA_HOME}/bin:$PATH`
source ~/.bashrc #让配置文件立即生效
java -version #查看是否安装成功
2.3安装Hadoop
采用伪分布式模式
sudo tar -zxf ~/下载/hadoop-3.1.3.tar.gz -C /usr/local # 解压到/usr/local中
cd /usr/local/
sudo mv ./hadoop-3.1.3/ ./hadoop # 将文件夹名改为hadoop
sudo chown -R hadoop ./hadoop # 修改文件权限
#检查Hadoop是否可用,成功会显示Hadoop版本信息
cd /usr/local/hadoop
./bin/hadoop version
2.4伪分布式模式配置
修改/usr/local/hadoop/etc/hadoop目录下的core-site.xml和hdfs-site.xml文件
#core-site.xml
<configuration>
<property>
<name>hadoop.tmp.dir</name>
<value>file:/usr/local/hadoop/tmp</value>
<description>Abase for other temporary directories.</description>
</property>
<property>
<name>fs.defaultFS</name>
<value>hdfs://localhost:9000</value>
</property>
</configuration>
#hdfs-site.xml
<configuration>
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
<property>
<name>dfs.namenode.name.dir</name>
<value>file:/usr/local/hadoop/tmp/dfs/name</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>file:/usr/local/hadoop/tmp/dfs/data</value>
</property>
</configuration>
2.5执行名称节点格式化
cd /usr/local/hadoop
./bin/hdfs namenode -format
2.6启动Hadoop
cd /usr/local/hadoop
./sbin/start-dfs.sh #start-dfs.sh是个完整的可执行文件,中间没有空格
jps #判断是否成功启动
3、HBase的安装和使用
3.1安装HBase
sudo tar -zxf ~/下载/hbase-2.2.2-bin.tar.gz -C /usr/local
#配置环境变量
vim ~/.bashrc
export PATH=$PATH:/usr/local/hadoop/sbin:/usr/local/hadoop/bin: /usr/local/hbase/bin #在配置文件开头添加
source ~/.bashrc
#添加用户权限
cd /usr/local
sudo chown -R hadoop ./hbase
#查看HBase版本信息
/usr/local/hbase/bin/hbase version
3.2伪分布式模式配置
配置hbase-env.sh文件和hbase-site.xml文件
#hbase-env.sh头部插入
export JAVA_HOME=/usr/lib/jvm/jdk1.8.0_162
export HBASE_CLASSPATH=/usr/local/hbase/conf
export HBASE_MANAGES_ZK=true
#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>
<property>
<name>hbase.unsafe.stream.capability.enforce</name>
<value>false</value>
</property>
</configuration>
3.3启动运行HBase
#启动hadoop
ssh localhost
cd /usr/local/hadoop
./sbin/start-dfs.sh
#启动Hbase
cd /usr/local/hbase
bin/start-hbase.sh
#进入HBase shell命令行模式
bin/hbase shell
4、数据仓库Hive的安装和使用
4.1Hive的安装
sudo tar -zxvf ./apache-hive-3.1.2-bin.tar.gz -C /usr/local # 解压到/usr/local中
cd /usr/local/
sudo mv apache-hive-3.1.2-bin hive # 将文件夹名改为hive
sudo chown -R hadoop:hadoop hive # 修改文件权限
4.2Hive配置环境变量
vim ~/.bashrc
#在头部添加如下内容
export HIVE_HOME=/usr/local/hive
export PATH=$PATH:$HIVE_HOME/bin
source ~/.bashrc
4.3修改配置文件
#重命名文件
cd /usr/local/hive/conf
sudo mv hive-default.xml.template hive-default.xml
#新建一个配置文件
cd /usr/local/hive/conf
vim 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>
4.4安装并配置mysql
cd ~
tar -zxvf mysql-connector-java-5.1.40.tar.gz #解压
#下面将mysql-connector-java-5.1.40-bin.jar拷贝到/usr/local/hive/lib目录下
cp mysql-connector-java-5.1.40/mysql-connector-java-5.1.40-bin.jar /usr/local/hive/lib
4.4.1安装mysql
sudo apt-get update
sudo apt-get install mysql-server
#注意!会需要输入两次密码切不可直接按ok,否则重新设置mysqlRoot用户密码会非常麻烦!
#解决利用Sqoop导入mysql出现中文乱码问题
vim /etc/mysql/mysql.conf.d/mysql.cnf
character_set_server=utf8 #在mysqld下面添加编码格式
Tip:如果不小心忘记root用户密码,可使用如下方法:
Ubuntu安装MySQL 8.0.21更改默认用户密码
如果出现使用vim打开文件不显示内容或者打开文件修改内容无法保存的情况,是当前用户对这个文件没有修改的权限,在控制台对当前文件夹添加权限即可
sudo chown -R hadoop ./
4.5配置mysql允许hive接入
service mysql start
mysql -u root -p
#为Hive新建数据库
mysql> create database hive;
#配置MySQL允许Hive接入
mysql> grant all on *.* to hive@localhost identified by 'hive';
mysql> flush privileges;
4.6启动Hive
#启动Hadoop,如果已经启动可以忽略这一步
cd /usr/local/hadoop
./sbin/start-dfs.sh
#启动Hive
cd /usr/local/hive
./bin/hive
1、启动Hive时,如果出现java.long.NoSuchMethodError:com.google.common.base.Preconditions.checkArgument的错误,原来是因为Hadoop和Hive中的guava.jar的版本不一致导致的,需要删除低版本复制高版本即可。两者路径如下图
2、如果出现org.datanucleus.store.rdbms.exceptions.MissingTableException: Required table missing : “VERSION
” in Catalog “” Schema 的错误执行如下命令:
cd /usr/local/hive
./bin/schematool -dbType mysql -initSchema
5、Sqoop的安装
详情参考Ubuntu安装Sqoop,以下贴出部分实验截图
实验一:网站用户行为分析
步骤一:本地数据集上传到数据仓库Hive
步骤一具体流程方法
数据下载
cd /usr/local
ls
sudo mkdir bigdatacase
//这里会提示你输入当前用户(本教程是hadoop用户名)的密码
//下面给hadoop用户赋予针对bigdatacase目录的各种操作权限
sudo chown -R hadoop:hadoop ./bigdatacase
cd bigdatacase
//下面创建一个dataset目录,用于保存数据集
mkdir dataset
//下面就可以解压缩user.zip文件
cd ~ //表示进入hadoop用户的目录
cd 下载
ls
unzip user.zip -d /usr/local/bigdatacase/dataset
cd /usr/local/bigdatacase/dataset
ls
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
head -5 small_user.csv
2.对字段进行预处理
下面对数据集进行一些预处理,包括为每行记录增加一个id字段(让记录具有唯一性)、增加一个省份字段(用来后续进行可视化分析),并且丢弃user_geohash字段(后面分析不需要这个字段)。
下面我们要建一个脚本文件pre_deal.sh,请把这个脚本文件放在dataset目录下,和数据集small_user.csv放在同一个目录下:
cd /usr/local/bigdatacase/dataset
vim pre_deal.sh
#!/bin/bash
#下面设置输入文件,把用户执行pre_deal.sh命令时提供的第一个参数作为输入文件名称
infile=$1
#下面设置输出文件,把用户执行pre_deal.sh命令时提供的第二个参数作为输出文件名称
outfile=$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
3.执行pre_deal.sh脚本文件,来对small_user.csv进行数据预处理
cd /usr/local/bigdatacase/dataset
bash ./pre_deal.sh small_user.csv user_table.txt
head -10 user_table.txt
4.把user_table.txt上传到HDFS中
cd /usr/local/hadoop
./bin/hdfs dfs -mkdir -p /bigdatacase/dataset
./bin/hdfs dfs -put /usr/local/bigdatacase/dataset/user_table.txt /bigdatacase/dataset
./bin/hdfs dfs -cat /bigdatacase/dataset/user_table.txt | head -10
5.在Hive上创建数据库、创建表、查询数据
service mysql start //可以在Linux的任何目录下执行该命令
cd /usr/local/hive
./bin/hive //启动Hive
hive> create database dblab;
hive> use dblab;
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> select * from bigdata_user limit 10;
hive> select behavior_type from bigdata_user limit 10;
步骤二:数据分析
步骤二具体实验过程
一、简单查询分析
二、查询条数统计分析
三、关键字条件查询分析
四、根据用户行为分析
五、用户实时查询分析