| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 人工智能 -> 2021-10-17 -> 正文阅读 |
|
[人工智能]2021-10-17 |
数据竞赛本地源介绍
.................................................................................................................1
大数据竞赛题目操作手册
.........................................................................................................2
基础部分
.....................................................................................................................................2
1
、基础搭建
.......................................................................................................................2
1.1
更改本地源
...........................................................................................................2
1.2
配置
hosts
文件
....................................................................................................2
1.3
关闭防火墙
..........................................................................................................3
1.4
时间同步
..............................................................................................................3
1.5
下载
ntp.................................................................................................................4
1.6
制作定时任务
......................................................................................................5
1.5
配置
ssh
免密
.......................................................................................................6
2
、安装
JDK ......................................................................................................................6
3
、安装
zookeeper.............................................................................................................7
3.1
下载软件
..............................................................................................................7
3.2
配置
zookeeper
环境变量
...................................................................................7
3.3
配置文件
zoo.cfg.................................................................................................8
3.4
启动
ZooKeeper
集群
...........................................................................................9
4
、安装
hadoop..................................................................................................................9
4.1
解压安装包,配置环境变量
..............................................................................9
4.2
配置
hadoop
各组件
..........................................................................................10
5
、安装
hive.....................................................................................................................14
5.1slave2
上安装
MySQL server..............................................................................14
5.2
数据仓库下载安装
.............................................................................................16
5.3 hive
元数据配置到
MySQL(
服务器端
slave1
)
..............................................17
5.4 Master
作为客户端配置
hive.............................................................................18
5.7
成功启动
Hive....................................................................................................18
10.
数据分及可视化
..........................................................................................................20
10.1
共享单车数据分析
...........................................................................................20
11.
数据抓取
......................................................................................................................25
11.1
提供爬虫环境
...................................................................................................25
11.2
数据爬取要求
...................................................................................................26
12.
报错说明及对应修改方式
.............................................................
错误
!
未定义书签。
2019
年第二届全国大学生大数据技能竞赛
1
数据竞赛本地源介绍
本次比赛提供相应的软件压缩包以及相关的
xml
配置文件、数据集,其地址为
内网地址:
http://172.16.47.240/bigdata/
(用于实验中下载对应软件,以下源地址使用内网
IP
)
外网地址:
http://39.101.211.115/bigdata/
(供浏览器访问查看具体路径及内容)
相关安装软件、
xml
配置文件
Bigdata_Conf.tar.gz
的路径在
bigdata_tar/
下。
注意:配置文件需要自己修改。
MySQL Server
的
yum
源路径为
http://172.16.47.240/bigdata/repofile
,这里直接提供
repo
文件为
bigdata.repo
,直接将其下载至
/etc/yum/repos.d/
即可,然后就可以下载
MySQL Server
。
2019
年第二届全国大学生大数据技能竞赛
大数据竞赛题目操作手册
基础部分
1
、基础搭建
本次集群搭建共有三个节点,包括一个主节点
master
,和两个从节点
slave1
和
slave2
。
具体操作如下:
1.1
更改本地源
1.
使用本地
Windows
操作机提供的
Xshell
或
MobaXterm
连接比赛平台所提供的
master
,
slave1
,
slave2
三台机器,并按照比赛平台提供的
linux
用户和密码进行登录,登录成功后开
始进行接下来的比赛。
注意连接工具没有在桌面上,点击(或者键入)左下角“
windows
”,即可看到连接工具。
?
修改主机名:
hostnamectl set-hostname master
(在
master
执行)
?
立即生效:
bash
同理修改
slave1
和
slave2
的主机名。
?
hostnamectl set-hostname slave1
(在
slave1
执行)
?
hostnamectl set-hostname slave2
(在
slave2
执行)
2.
配置本地源。通过比赛平台提供源文件下载路径,将本地源文件下载到
/etc/yum.repos.d/
目录下(三台机器都执行)。
?
发信号给
yum
进程:
pkill -9 yum
?
进入
yum
源配置文件:
cd /etc/yum.repos.d
?
删除所有文件:
rm -rf *
?
下载
yum
源:
wget http://172.16.47.240/bigdata/repofile/bigdata.repo
?
清除
YUM
缓存:
yum clean all
1.2
配置
hosts
文件
可以通过
ifconfig
命令进行查看机器的
ip
地址或者直接输入比赛平台提供的
ip
地址。
查看节点地址之后将三个节点的
ip
地址以及其对应的名称写进
hosts
文件。这里我们设
置为
master
、
slave1
、
slave2
。注意保存退出。
?
vim /etc/hosts
(三台机器都执行)
2
2019
年第二届全国大学生大数据技能竞赛
1.3
关闭防火墙
?
关闭防火墙:
systemctl stop firewalld
?
查看状态:
systemctl status firewalld
注意:当环境重置之后,防火墙会自动开启。
1.4
时间同步
?
选择时区:
tzselect
3
2019
年第二届全国大学生大数据技能竞赛
4
给出相应的提示之后,将时间设置写入环境变量。
?
echo "TZ='Asia/Shanghai'; export TZ" >> /etc/profile && source /etc/profile
1.5
下载
ntp
?
yum install -y ntp
批注 [U1]:
考核
rpm -qa | grep ntp
2019
年第二届全国大学生大数据技能竞赛
5
master
作为
ntp
服务器:
修改
ntp
配置文件。屏蔽掉默认的
server
,设置
master
作为局域网内时钟源,设置时间
服务器的层级为
10
,为集群主机提供时间服务。
?
vim /etc/ntp.conf
#
注释掉
server 0 ~ n
#server 0.centos.pool.ntp.org iburst
#server 1.centos.pool.ntp.org iburst
#server 2.centos.pool.ntp.org iburst
#server 3.centos.pool.ntp.org iburst
server 127.127.1.0 # local clock
fudge 127.127.1.0 stratum 10 #stratum
设置为其它值也是可以的,其范围为
0~15
修改后注意保存退出。
重启
ntp
服务
(master
上执行
)
?
/bin/systemctl restart ntpd.service
其他机器进行同步(在
slave1
,
slave2
中执行)
?
ntpdate master
1.6
制作定时任务
确保
crontab
服务开启:
service crond status
/sbin/service crond start
要求:从节点(
slave1
、
slave2
)在早八晚五时间段每隔半个小时同步一次时间
?
crontab -e
?
输入
i
?
添加定时任务:
*/30 8-17 * * * /usr/sbin/ntpdate master
批注 [U2]:
添加考核
服务器配置
批注 [U3]:
restrict
作用:对
ntp
做权限控制
ignore
:忽略所有类型的
NTP
连接请求
nomodify
:限制客户端不能使用命令
ntpc
和
ntpq
来修改服
务器端的时间
noquery
:不提供
NTP
网络校时服务
notrap
:不接受远程登录请求
notrust
:不接受没有经过认证的客户端的请求
【如果没有用任何参数,那么表示不做任何限制】
#
开放本机的任何访问
restrict 127.0.0.1
restrict -6 ::1
restrict 10.220.5.0 mask 255.255.255.0 nomodify
<<<允许 10.220.5.0/24 网段主机进行时间同步
server
作用:指定 ntp 服务器的地址
格式:server [ip or hostname] [perfer]
例子:server 127.127.1.0 <<<将当前主机作为时间服务
器
fudge
作用:设置时间服务器的层级
格式:
fudge ip [startnum int]
例子:
fudge 10.225.5.1 startnum 10
注意:
fudge
必须和
server
一块用, 而且是在
server
的
下一行
startnum
0~15
0
:表示顶级
10
:通常用于给局域网主机提供时间服务
批注 [U4]:
是否同步
;
history
关键字:
ntpdate master
2019
年第二届全国大学生大数据技能竞赛
?
查看定时任务列表:
crontab –l
1.5
配置
ssh
免密
1.
在
master
上执行如下命令生成公私密钥:
(注意
master
上执行)
?
ssh-keygen -t dsa -P '' -f ~/.ssh/id_dsa
2.
然后将公钥文件内容添加到授权文件。
?
cat /root/.ssh/id_dsa.pub >> /root/.ssh/authorized_keys
可以将
master
授权文件复制到
slave1
、
slave2
信任授权设置。
?
scp ~/.ssh/authorized_keys root@slave1:~/.ssh/
?
scp ~/.ssh/authorized_keys root@slave2:~/.ssh/
注意:
SSH
只需要
namenode
和
datanode
之间通信,
datanode
之间并没有交互,所以
SSH
公钥只需要
namenode
和
datanode
之间交换。
2
、安装
JDK
以下操作为先在
master
上操作,然后远程复制到
slave1
和
slave2
。参赛选手仅供参考。
首先在根目录下建立工作路径
/usr/java
。
?
mkdir -p /usr/java
进入创建的
java
工作路径。
?
cd /usr/java
下载
java
安装包
(master
上执行
)
。
?
wget http://172.16.47.240/bigdata/bigdata_tar/jdk-8u171-linux-x64.tar.gz
?
tar -zxvf jdk-8u171-linux-x64.tar.gz -C /usr/java/
?
rm -rf /usr/java/jdk-8u171-linux-x64.tar.gz
?
修改环境变量:
vim /etc/profile
添加内容如下:
export JAVA_HOME=/usr/java/jdk1.8.0_171
export CLASSPATH=$JAVA_HOME/lib/
export PATH=$PATH:$JAVA_HOME/bin
export PATH JAVA_HOME CLASSPATH
6
2019
年第二届全国大学生大数据技能竞赛
7
?
生效环境变量:
source /etc/profile
?
查看
java
版本:
java -version
在
master
中将
JDK
复制到
slave1
和
slave2
中。(在
master
执行)
?
scp -r /usr/java root@slave1:/usr/
?
scp -r /usr/java root@slave2:/usr/
注意:此时需要去
slave1
和
slave2
上配置
java
的环境变量,并使环境变量生效。
3
、安装
zookeeper
3.1
下载软件
创建工作路径
/usr/zookeeper
,下载相应软件,解压至工作路径。
mkdir -p /usr/zookeeper && cd /usr/zookeeper
wget http://172.16.47.240/bigdata/bigdata_tar/zookeeper-3.4.10.tar.gz
tar -zxvf /usr/zookeeper/zookeeper-3.4.10.tar.gz -C /usr/zookeeper/
rm -rf /usr/zookeeper/zookeeper-3.4.10.tar.gz
3.2
配置
zookeeper
环境变量
?
vi /etc/profile
#zookeeper
export ZOOKEEPER_HOME=/usr/zookeeper/zookeeper-3.4.10
PATH=$PATH:$ZOOKEEPER_HOME/bin
?
生效环境变量:
source /etc/profile
2019
年第二届全国大学生大数据技能竞赛
3.3
配置文件
zoo.cfg
1.
进入
zookeeper
配置文件夹
conf
,将
zoo_sample.cfg
文件拷贝一份命名为
zoo.cfg
,
Zookeeper
在启动时会找这个文件作为默认配置文件。
?
cd /usr/zookeeper/zookeeper-3.4.10/conf/ && mv zoo_sample.cfg zoo.cfg && vim
zoo.cfg
2.
对
zoo.cfg
文件配置如下:
?
vim zoo.cfg
修改如下:
tickTime=2000
initLimit=10
syncLimit=5
dataDir=/usr/zookeeper/zookeeper-3.4.10/zkdata
clientPort=2181
dataLogDir=/usr/zookeeper/zookeeper-3.4.10/zkdatalog
server.1=master:2888:3888
server.2=slave1:2888:3888
server.3=slave2:2888:3888
3.
在
zookeeper
的目录中,创建配置中所需的
zkdata
和
zkdatalog
两个文件夹。(在
master
执行)
?
cd /usr/zookeeper/zookeeper-3.4.10 && mkdir zkdata zkdatalog
8
2019
年第二届全国大学生大数据技能竞赛
4.
进入
zkdata
文件夹,创建文件
myid
,用于表示是几号服务器,用来标识当前主机。
master
主机中,设置服务器
id
为
1
。(集群中设置
master
为
1
号服务器,
slave1
为
2
号服务器,
slave2
为
3
号服务器)
?
cd /usr/zookeeper/zookeeper-3.4.10/zkdata
?
echo 1 >> myid
3.4
启动
ZooKeeper
集群
在
ZooKeeper
集群的每个结点上,执行启动
ZooKeeper
服务的脚本。
注意在
zookeeper
目录下:(三台机器都执行)
?
开启服务:
zkServer.sh start
?
查看状态:
zkServer.sh status
通过上面状态查询结果可见,一个节点是
Leader
,其余的结点是
Follower
。
至此,
zookeeper
安装成功。
4
、安装
hadoop
以下步骤逻辑仅供选手参考:即
hadoop
安装同样在主节点
master
上进行配置操作,然
后将文件复制到到子节点
slave1
和
slave2
。
4.1
解压安装包,配置环境变量
1.
创建工作路径
/usr/hadoop
,下载相应软件,解压至工作路径。
?
mkdir -p /usr/hadoop && cd /usr/hadoop
?
wget
http://172.16.47.240/bigdata/bigdata_tar/hadoop-2.7.3.tar.gz
?
tar -zxvf /usr/hadoop/hadoop-2.7.3.tar.gz -C /usr/hadoop/
?
rm -rf /usr/hadoop/hadoop-2.7.3.tar.gz
9
2019
年第二届全国大学生大数据技能竞赛
10
2.
添加
hadoop
环境变量(三台机器执行)
?
vim /etc/profile
添加如下内容:
#hadoop
export HADOOP_HOME=/usr/hadoop/hadoop-2.7.3
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
使用以下命令使
profile
生效:
?
source /etc/profile
4.2
配置
hadoop
各组件
hadoop
的各个组件的都是使用
XML
进行配置,这些文件存放在
hadoop
的
etc/hadoop
目
录下。
配置文件
配置对象
主要内容
hadoop-env.sh
hadoop
运行环境
用来定义
Hadoop
运行环境相关的配置信息;
core-site.xml
集群全局参数
定义系统级别的参数,包括
HDFS URL
、
Hadoop
临时目录等;
hdfs-site.xml
HDFS
参数
定义名称节点、数据节点的存放位置、文本副本
的个数、文件读取权限等;
mapred-site.xml
MapReduce
参数
包括
JobHistory Server
和应用程序参数两部分,
如
reduce
任务的默认个数、任务所能够使用内存
的默认上下限等;
yarn-site.xml
集群资源管理系统参
数
配置
ResourceManager
,
nodeManager
的通信端
口,
web
监控端口等;
1. hadoop-env.sh
运行环境
?
cd $HADOOP_HOME/etc/hadoop
?
vim hadoop-env.sh
输入以下内容,修改
java
环境变量:
export JAVA_HOME=/usr/java/jdk1.8.0_171
?
也可以直接输入命令:
echo "export JAVA_HOME=/usr/java/jdk1.8.0_171" >> hadoop-env.sh
键入“
Esc
”,退出编辑模式,使用命令“
:wq
”进行保存退出。
2. core-site.xml
全局参数
?
vim core-site.xml
<configuration>
2019
年第二届全国大学生大数据技能竞赛
<property>
<name>fs.default.name</name>
<value>hdfs://master:9000</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/usr/hadoop/hadoop-2.7.3/hdfs/tmp</value>
</property>
<property>
<name>io.file.buffer.size</name>
<value>131072</value>
</property>
<property>
<name>fs.checkpoint.period</name>
<value>60</value>
</property>
<property>
<name>fs.checkpoint.size</name>
<value>67108864</value>
</property></configuration>
master
:在主节点的
ip
或者映射名。
9000
:主节点和从节点配置的端口都是
9000
。
3. hdfs-site.xml
配置文件
dfs.replication
:因为
hadoop
是具有可靠性的,它会备份多个文本,这里
value
就是指备
份的数量(小于等于从节点的数量)。
在
<configuration></configuration>
中加入以下代码:
<property>
<name>dfs.replication</name>
<value>2</value>
</property>
<property>
<name>dfs.namenode.name.dir</name>
<value>file:/usr/hadoop/hadoop-2.7.3/hdfs/name</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>file:/usr/hadoop/hadoop-2.7.3/hdfs/data</value>
</property>
4. YARN
框架运行环境
找到
JAVA_HOME
参数位置,将前面的
#
去掉,将其值修改为本机安装的
JDK
的实际位
11
2019
年第二届全国大学生大数据技能竞赛
置。
vim yarn-env.sh
export JAVA_HOME=/usr/java/jdk1.8.0_171
也可以直接输入命令:
echo "export JAVA_HOME=/usr/java/jdk1.8.0_171" >> yarn-env.sh
5. YARN
框架的核心配置
YARN
框架的核心配置文件,用于配置
YARN
进程及
YARN
的相关属性。
首先需要指定
ResourceManager
守护进程所在主机,默认为
0.0.0.0
,即当前设备,所以
这里指定为
master
,端口为
18141
;
其次需要设置
NodeManager
上运行的辅助服务,需配置成
mapreduce_shuffle
才可运行
MapReduce
程序。
在
<configuration></configuration>
中加入以下代码:
<!--
指定
ResourceManager
的地址
-->
<property>
<name>yarn.resourcemanager.address</name>
<value>master:18040</value>
</property>
<property>
<name>yarn.resourcemanager.scheduler.address</name>
<value>master:18030</value>
</property>
<property>
<name>yarn.resourcemanager.webapp.address</name>
<value>master:18088</value>
</property>
<property>
<name>yarn.resourcemanager.resource-tracker.address</name>
<value>master:18025</value>
</property>
<property>
<name>yarn.resourcemanager.admin.address</name>
<value>master:18141</value>
</property>
<!--
指定
reducer
获取数据的方式
-->
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<property>
<name>yarn.nodemanager.auxservices.mapreduce.shuffle.class</name>
<value>org.apache.hadoop.mapred.ShuffleHandler</value>
12
2019
年第二届全国大学生大数据技能竞赛
13
</property>
6.
编辑配置计算框架
该文件是
MapReduce
的核心配置文件,用于指定
MapReduce
运行时框架。
?
cp mapred-site.xml.template mapred-site.xml && vim mapred-site.xml
在
<configuration></configuration>
中加入以下代码:
<property>
<!--
指定
Mapreduce
运行在
yarn
上
-->
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
注意保存退出。
7.
编写
slaves
和
master
文件
编写
slaves
文件,添加子节点
slave1
和
slave2
;
编写
master
文件,添加主节点
master
。
?
echo master > master && echo slave1 > slaves && echo slave2 >> slaves
8.
格式化
hadoop
?
格式化
namenode
:
hadoop namenode -format (
仅在
master
中进行操作
)
当出现“
Storage directory /usr/hadoop/hadoop-2.7.3/hdfs/name has been successfully
formatted.
”的时候,表明格式化成功。
9.
开启
hadoop
集群
仅在
master
主机上开启操作命令。它会带起从节点的启动。
(仅在
master
中进行操作)
?
主节点开启服务:
start-all.sh
批注 [U5]:
考核
批注 [U6]:
再次之前
分发
hadoop
文件到
slave1
、
slave2
两个子节点
?
scp -r /usr/hadoop root@slave1:/usr/
?
scp -r /usr/hadoop root@slave2:/usr/
格式化本质是进行文件系统的初始化操作,创建一些
hadoop 自己所需要的文件。
2019
年第二届全国大学生大数据技能竞赛
14
使用
hadoop
命令“
hadoop fs
”进行相关操作。
5
、安装
hive
实验中我们选用
hive
的远程模式,
slave2
安装
mysql server
用于存放元数据,
slave1
作为
hive server
作为
thrift
服务器,
master
作为
client
客户端进行操作。
5.1slave2
上安装
MySQL server
1.
配置过本地源了,安装
MySQL Server
?
安装
MySQL
:
yum -y install mysql-community-server
2.
启动服务
?
重载所有修改过的配置文件:
systemctl daemon-reload
?
开启服务:
systemctl start mysqld
?
开机自启:
systemctl enable mysqld
3.
登陆
MySQL
安装完毕后,
MySQL
会在
/var/log/mysqld.log
这个文件中会自动生成一个随机的密码,
获取得这个随机密码,以用于登录
MySQL
数据库:
?
获取初密码:
grep "temporary password" /var/log/mysqld.log
?
登陆
MySQL
:
mysql -uroot -p
(注意中英文)
批注 [U7]:
第一次启动后会有个初始化的过程,会产生
root
账户的随机密码
批注 [U8]:
删除此考核
2019
年第二届全国大学生大数据技能竞赛
15
4.MySQL
密码安全策略设置
?
设置密码强度为低级:
set global validate_password_policy=0;
?
设置密码长度:
set global validate_password_length=4;
?
修改本地密码:
alter user 'root'@'localhost' identified by '123456';
?
退出:
\q
密码强度分级如下:
?
0
为
low
级别,只检查长度;
?
1
为
medium
级别(默认),符合长度为
8
,且必须含有数字,大小写,特殊字符
;
?
2
为
strong
级别,密码难度更大一些,需要包括字典文件。
?
密码长度最低长为
4
,当设置长度为
1
、
2
、
3
时,其长度依然为
4
。
5.
设置远程登录
?
以新密码登陆
MySQL
:
mysql -uroot -p123456
?
创建用户:
create user 'root'@'%' identified by '123456';
?
允许远程连接:
grant all privileges on *.* to 'root'@'%' with grant option;
?
刷新权限:
flush privileges;
批注 [U9]:
将
host
字段的值改为
%
就表示
在任何客户端
机器上能以
root
用户登录到
MySQL
服务器
,建议在开
发时设为
%
。
2019
年第二届全国大学生大数据技能竞赛
6.
创建数据库
hongyaa
;
5.2
数据仓库下载安装
1.
下载解压
同样
slave1
上建立文件夹
/usr/hive
,然后
master
中将安装包远程复制到
slave1
。
?
mkdir -p /usr/hive && cd /usr/hive
?
wget
http://172.16.47.240/bigdata/bigdata_tar/apache-hive-2.1.1-bin.tar.gz
?
tar -zxvf /usr/hive/apache-hive-2.1.1-bin.tar.gz -C /usr/hive/
?
rm -rf /usr/hive/apache-hive-2.1.1-bin.tar.gz
也可以使用如下命令:
?
mkdir -p /usr/hive && cd /usr/hive/ && wget
http://172.16.47.240/bigdata/bigdata_tar/apache-hive-2.1.1-bin.tar.gz
&& tar -zxvf
/usr/hive/apache-hive-2.1.1-bin.tar.gz -C /usr/hive/ && rm -rf
/usr/hive/apache-hive-2.1.1-bin.tar.gz
2.
设置系统变量
修改
/etc/profile
文件设置
hive
环境变量。(
master
和
slave1
都执行)
?
vim /etc/profile
#hive
export HIVE_HOME=/usr/hive/apache-hive-2.1.1-bin
export PATH=$PATH:$HIVE_HOME/bin
?
生效环境变量:
source /etc/profile
3.
设置
HIVE
运行环境
?
cd $HIVE_HOME/conf && vim hive-env.sh
对应设置如下:
#
配置
Hadoop
安装路径
export HADOOP_HOME=/usr/hadoop/hadoop-2.7.3
#
配置
Hive
配置文件存放路径
export HIVE_CONF_DIR=/usr/hive/apache-hive-2.1.1-bin/conf
#
配置
Hive
运行资源库路径
export HIVE_AUX_JARS_PATH=/usr/hive/apache-hive-2.1.1-bin/lib
4. jline
版本冲突问题
由于客户端需要和
hadoop
通信,所以需要更改
Hadoop
中
jline
的版本,即保留一个高版
本的
jline-jar
包。
?
cp $HIVE_HOME/lib/jline-2.12.jar $HADOOP_HOME/share/hadoop/yarn/lib/
16
2019
年第二届全国大学生大数据技能竞赛
5.3 hive
元数据配置到
MySQL(
服务器端
slave1
)
1.
驱动拷贝
因为服务端需要和
Mysql
通信,所以服务端需要将
Mysql
的依赖包放在
Hive
的
lib
目录
下。
mysql-connector-java
是
MySQL
的
JDBC
驱动包,用
JDBC
连接
MySQL
数据库时必须使
用该
jar
包。
?
cd $HIVE_HOME/lib && wget
http://172.16.47.240/bigdata/bigdata_tar/mysql-connector-java-5.1.47-bin.jar
2. Slave1
作为服务器端配置
hive
?
cd $HIVE_HOME/conf
hive
配置可以参考官方文档:
https://cwiki.apache.org/confluence/display/Hive/AdminManual+Metastore+Administration
修改
hive-site.xml
文件
<configuration>
<!-- Hive
产生的元数据存放位置
-->
<property>
<name>hive.metastore.warehouse.dir</name>
<value>/user/hive_remote/warehouse</value>
</property>
<!--
数据库连接
driver
,即
MySQL
驱动
-->
<property>
<name>javax.jdo.option.ConnectionDriverName</name>
<value>com.mysql.jdbc.Driver</value>
</property>
<!--
数据库连接
JDBC
的
URL
地址
-->
<property>
<name>javax.jdo.option.ConnectionURL</name>
<value>jdbc:mysql://slave2:3306/hive?createDatabaseIfNotExist=true&useSSL=false</v
alue>
</property>
<!-- MySQL
数据库用户名
-->
<property>
<name>javax.jdo.option.ConnectionUserName</name>
<value>root</value>
</property>
<!-- MySQL
数据库密码
-->
<property>
<name>javax.jdo.option.ConnectionPassword</name>
<value>123456</value>
</property>
17
2019
年第二届全国大学生大数据技能竞赛
18
</configuration>
5.4 Master
作为客户端配置
hive
和
slave1
中配置方式类似,直接进入
conf
,进行设置。
Hive
服务和
metastore
在不同的进程内,可能是不同的机器,该模式需要将
hive.metastore.local
设置为
false
。
将
hive.metastore.uris
设置
metastore
服务器
URL
,端口设定为
9083
。
hive-site.xml
配置如下:
<configuration>
<!-- Hive
产生的元数据存放位置
-->
<property>
<name>hive.metastore.warehouse.dir</name>
<value>/user/hive_remote/warehouse</value>
</property>
<!---
使用本地服务连接
Hive,
默认为
true-->
<property>
<name>hive.metastore.local</name>
<value>false</value>
</property>
<!--
连接服务器
-->
<property>
<name>hive.metastore.uris</name>
<value>thrift://slave1:9083</value>
</property>
</configuration>
5.7
成功启动
Hive
1.
初始化数据库
slave1
上:
?
schematool -dbType mysql -initSchema
2.
启动
hive server
服务
设置成远程模式之后必须保证先启动
metastore
服务或者进程,之后才能进行开启客户端。
?
hive --service metastore
(注意空格)
3.
启动
hive client
?
hive
批注 [U10]:
去除
批注 [U11]:
Hive
服务和
metastore
在不同的进程内,
可能是不同的机器,该模式需要将
hive.metastore.local
设置为
false
,将
hive.metastore.uris
设置为
metastore
服务器
URL
,
批注 [U12]:
指向
metastore
服务的主机
2019
年第二届全国大学生大数据技能竞赛
19
创建数据库
hongyaa
?
hive>create database hongyaa;
2019
年第二届全国大学生大数据技能竞赛
备注:以下步骤可自行选择前后顺序。
6.
数据分及可视化
本次比赛数据为两部分:
bike.csv
,路径为:
/root/college(master
主机
)
6.1
共享单车数据分析
数据说明
本数据为某年某段时间某地区的共享单车数据集,可以适用于大数据分析和挖掘。通过
对共享单车的骑行规律,用户群体,单日活月用户等数据的分析,给出运营思路和方法上的
建议,对共享单车的发展有一个整体的把握。基于对数据的分析,可以进行活动推广、会员
特定优惠,也可进行专线共享大巴等活动策划。
数据文件中字段对应的含义如下:
骑行时间(毫秒为单位):
duration (ms)
开始时间:
startdate
结束时间:
enddate
开始地点数:
startnum
开始地点:
startstation
结束地点数:
endnum
结束地点:
dndstation
单车车号:
bikenum
用户类型:
type
(
Member
会员
/ Casual
临时会员)
示例数据
:
197068,2017-10-1 0:00,2017-10-1 0:03,31214,17th & Corcoran St NW,31229,New
Hampshire Ave & T St NW,W21022,Member
上传数据
创建指定文件夹,将数据上传至
hdfs
指定目录
/college/
下。
建表
建库:
create database hive;
use hive;
建表:
create table bike (
duration int,
startdate timestamp,
enddate timestamp,
20
2019
年第二届全国大学生大数据技能竞赛
21
startnum int,
startstation string,
endnum int,
endstation string,
bikenum string,
type string) row format delimited
fields terminated by ',';
数据导入
将本地数据导入至对应表中。
统计表数据
,
结果写入本地
/root/college000/01/
中。
常规分析
1.
统计本次数据所有单车数量,结果写入本地
/root/college001/
中。
格式:对于结果中的二维数据,要求使用“
\t
”作为声明文件分隔符。
2.
计算单车平均用时,结果写入本地
/root/college002/
中。
格式:对于结果中的二维数据,要求使用“
\t
”作为声明文件分隔符。
其他说明:以分钟为单位,对数据结果取整数值(四舍五入);
3.
统计常年用车紧张的地区站点,结果写入本地
/root/college003/
中。
(
以
startstation
为准
)
格式:对于结果中的二维数据,要求使用“
\t
”作为声明文件分隔符;
复合排列:先按照用车总辆进行降序排列,再按照开始地区升序排列。
其他说明:数目限制为
10
。
4.
统计国庆期间各地区车辆使用情况,结果写入本地
/root/college004/
中。(以
startstation,startdate
为准)
格式:对于结果中的二维数据,要求使用“
\t
”作为声明文件分隔符;
复合排列:先按照用车总辆进行降序排列,再按照开始地区升序排列;
其他说明:统计前
20
地区。
5.
给出一年中共享单车单日租赁排行榜,结果写入本地
/root/college005/
中。(以
startdate
为准)
格式:对于结果中的二维数据,要求使用“
\t
”作为声明文件分隔符;
复合排列:先按照租赁总量进行降序排列,再按照开始时间升序排列;
其他说明:数据为年月日,以开始时间为数据标准
,
排行前
5
。
2019
年第二届全国大学生大数据技能竞赛
22
6.
给出建议维修的单车编号,结果写入本地
/root/college006/
中。
格式:对于结果中的二维数据,要求使用“
\t
”作为声明文件分隔符;
复合排列:先按照用车总辆进行降序排列,再按照单车编号升序排列;
其他说明:使用磨损较高的单车(使用次数),数目为
10
。
7.
给出可进行会员活动推广的地区,结果写入本地
/root/college007/
中。(以
startstation
为
准)
格式:对于结果中的二维数据,要求使用“
\t
”作为声明文件分隔符;
复合排列:先按照用车总辆进行降序排列,再按照开始地区升序排列;
其他说明:以非会员用户用车为数据标准,地区数目为
10
。
8.
给出可舍弃的单车站点,结果写入本地
/root/college008/
中。(以
endstation
为准)
格式:对于结果中的二维数据,要求使用“
\t
”作为声明文件分隔符;
复合排列:先按照用车总辆进行升序排列,再按照结束地区升序排列;
其他说明:以会员目的地为数据标准,地区数目为
10
。
数据挖掘
根据
Apriori
算法计算两地之间的关联关系,用于讨论是否开车共享大巴路线等优惠活动。
请根据
Apriori
关联规则算法的原理找出与排名最高的结束地点(目的地,后项)之间的
关联度最强的开始地点(始发地,前项)
,
并计算出其支持度与置信度。要求如下:
支持度写到本地
/root/college009/
中
(
保留五位小数
)
;
置信度写到本地
/root/college010/
中
(
保留五位小数
)
。
公式参考如下:
前项:
A
后项:
B
支持度:表示同时包含
A
和
B
的事务占所有事务的比例。如果用
P(A)
表示使用
A
事务
的比例。
Support=P(A&B)
置信度:表示使用包含
A
的事务中同时包含
B
事务的比例,即同时包含
A
和
B
的事务
占包含
A
事务的比例。
Confidence=P(A&B)/P(A)
可视化
1.
制作上半年不同用户类型之间的用车情况示意图。
要求如下:
1
)图形类别为折线图;
2
)标题为:
'2017
上半年会员与非会员用车情况
(
数量
)'
;
3
)标签依次为:
'
会员
'
、
'
非会员
'
;
4
)横坐标时间顺序依次为
1
月、
2
月、
……
、
6
月;
5
)以开始时间(
startdate
)为准;
6
)要求结果如下图:
2019
年第二届全国大学生大数据技能竞赛
2.
绘出
12
月份用车紧张地区示意图。
要求如下:
1
)图形类别:柱状图;
2
)标题为:
'12
月份用车紧张地区及用户使用情况
'
;
3
)标签依次为:
'
会员
'
、
'
非会员
'
;
4
)类目轴:按照紧张程度由上至下降序排列地区名称;
5
)建议使用
stack
进数值堆叠放置;
6
)以开始时间(
startstation
)为准。
7
)要求视图如下:
23
2019
年第二届全国大学生大数据技能竞赛
24
2019
年第二届全国大学生大数据技能竞赛
7.
数据抓取
7.1
提供爬虫环境
根据指定网页进行数据爬取,平台中
master
等三个主机已经提供
Python
爬虫环境,支持
的库如下:
beautifulsoup4 4.8.0
bs4 0.0.1
certifi 2019.6.16
chardet 3.0.4
html5lib 1.0.1
idna 2.8
lxml 4.4.1
pip 18.1
requests 2.22.0
setuptools 40.6.2
25
2019
年第二届全国大学生大数据技能竞赛
26
six 1.12.0
soupsieve 1.9.3
urllib3 1.25.3
webencodings 0.5.1
另外在选手操作机上,已提供
anaconda3
和
pycharm
。
7.2
数据爬取要求
根据比赛中提供的环境,进行数据爬取,要求如下:
1.
爬取数据包括如下内容:
爬取内容字段
示例
帖子 ID
1
用户名
cs4bxCo
积分
66
等级
注册会员
帖子标题
什么发帖软件最好?
帖子内容
我觉得是帖帖不休~
完整数据示例如下:(数据之间分隔符可自定义)
1,cs4bxCo,66,
注册会员
,
什么发帖软件最好?
,
我觉得是帖帖不休
~
2.
结果保存在
/root/college021/data.txt
中(数据中无需存放字段名称)。
3.
注意:由于编码错误,导致中文乱码
乱码解决方式:
iconv -f gbk -t utf8 a.txt –o b.txt
1.创建爬虫数据表,要求如下:
表:
hive.data
表格字段:
tid ,author,score,grade ,title,content
数据类型
:tid/score
为
int
型,其他为
string
2
.
将数据导入
data
表。
3.
统计总用户数,并将最后数目写入
/root/college022/
目录下。
4.
统计活跃用户
top10
,将结果用户名及对应发帖数目写入
/root/test023/
目录下,要求如
下:
复合排列:先按照第二列发帖数倒叙排列,再按照第一列用户名升序排列
格式:对于结果中的二维数据,要求使用“
\t
”作为声明文件分隔符。
2019
年第二届全国大学生大数据技能竞赛
27
5.
查找结果
4
中排序
no.1
的用户等级,结果写入
/root/college024/
。
6.
根据积分排名,找出
top5
的用户,结果写入
/root/college025/
目录下,要求如下:
复合排列:先按照第一列积分数倒叙排列,再按照第二列用户名升序排列
格式:对于结果中的二维数据,要求使用“
\t
”作为声明文件分隔符。
8.
集群节点增加与删除
8.1
添加
DataNode --------------slave3
1.
基础操作
配置本地源;
关闭防火墙;
临时主机名;
生效时区;
2.
修改所有机器的
hosts
文件
添加
slave3
的
IP
及映射。(所有节点)
vim /etc/hosts
xxxxxx master
xxxxxx slave1
xxxxxx slave2
xxxxxx slave3
3.
同步
master
时间
下载
ntp
:
yum install -y ntp && ntpdate master
关闭提示信息:
echo "unset MAILCHECK">> /etc/profile && source /etc/profile
4.NN
与
DN
之间免密
需要在
master
机器中将
.ssh
目录下的公钥认证列表
authorized_keys
发送给
slave3
scp ~/.ssh/authorized_keys root@slave3:~/.ssh/
5.
安装
JDK
和
Hadoop
在新的服务器中安装好
jdk
环境以及
hadoop,
生效环境变量。
环境变量:
vim /etc/profile
#Java
export JAVA_HOME=/usr/java/jdk1.8.0_171
2019
年第二届全国大学生大数据技能竞赛
export CLASSPATH=$JAVA_HOME/lib/
export PATH=$PATH:$JAVA_HOME/bin
export PATH JAVA_HOME CLASSPATH
#hadoop
export HADOOP_HOME=/usr/hadoop/hadoop-2.7.3
export CLASSPATH=$CLASSPATH:$HADOOP_HOME/lib
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
6.
修改
salves
文件
修改
hadoop
配置目录下
slaves
文件,添加
slave3
。
(
所有节点
)
vim $HADOOP_HOME/etc/hadoop/slaves
slave1
slave2
slave3
7.
启动节点进程
启动
datanode
进程:
$HADOOP_HOME/sbin/hadoop-daemon.sh start datanode
启动
nodemanage
进程:
$HADOOP_HOME/sbin/yarn-daemon.sh start nodemanager
8.
查看集群状态
主节点刷新:
hdfs dfsadmin -refreshNodes
均衡
block
:
sbin/start-balancer.sh
查看存活的节点:
hdfs dfsadmin -report
28
2019
年第二届全国大学生大数据技能竞赛
也通过浏览器访问
namenode
和
mapreduce
,看集群中是否添加了一个节点。
29
2019
年第二届全国大学生大数据技能竞赛
8.2
删除
DataNode--------------slave2
1.
临时删除节点:(仅做参考)
hadoop-daemon.sh stop datanode
hadoop-daemon.sh stop tasktracker
2.
永久删除:(通过此步骤执行)
master
主机中
hdfs-site.xml
配置如下:
<property>
<name>dfs.hosts.exclude</name>
<value>/usr/hadoop/hadoop-2.7.3/etc/hadoop/excludes</value>
<description>
拒绝加入集群的节点列表
</description>
</property>
3.
然后在
conf
目录下创建一个
excludes
文件,将需要删除的节点机器名添加到文件中即可。
4.
强制重新加载配置:
主节点刷新所有
DataNode
:
hdfs dfsadmin -refreshNodes
查看存活的节点:
hdfs dfsadmin -report
30
2019
年第二届全国大学生大数据技能竞赛
可以看到该
datanode
状态转为
Decommission In Progress
。
(
退役
)
执行完毕之后显示
Decommission Status : Decommissioned
6.
删除节点上关闭进程:(
slave2
)
hadoop-daemon.sh stop datanode
yarn-daemon.sh stop nodemanager
7.
(时间间隔较久,
500s
)再次查看节点状态:
hdfs dfsadmin -report
31
2019
年第二届全国大学生大数据技能竞赛
8.
最后更新集群配置
数据块重新分布:
sbin/start-balancer.sh
(数据均衡)
从
NameNode
的
excludes
文件及
slaves
文件、
hosts
文件中去掉已经移除的主机名
32
|
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/27 8:32:26- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |