大数据基础编程+实验

本文仅用于分析和记录在校期间学习大数据分析课程的一点心得体会。

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.xmlhdfs-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;

在这里插入图片描述

步骤二:数据分析

步骤二具体实验过程
一、简单查询分析
在这里插入图片描述
二、查询条数统计分析
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
三、关键字条件查询分析
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
四、根据用户行为分析
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
五、用户实时查询分析
在这里插入图片描述

步骤三:Hive、MySQL、HBase数据互导

步骤三具体实验代码
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

步骤四:利用R进行数据可视化分析

大数据案例-步骤四详情
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

  • 3
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值