2021年全国行业职业技能竞赛暨第四届全国大学生大数据技能竞赛——职教学生组线上选拔赛

3 篇文章 1 订阅
3 篇文章 0 订阅

2021年全国行业职业技能竞赛暨第四届全国大学生大数据技能竞赛——职教学生组线上选拔赛

目录

2021年全国行业职业技能竞赛暨第四届全国大学生大数据技能竞赛——职教学生组线上选拔赛

前言

资料

前提条件

题目一、基础配置(30分)

题目二、Zookeeper搭建(30分)

题目三、Hadoop集群搭建( 80分)

题目四、Hive集群搭建(30分)

题目五、Spark搭建(30分)


前言

根据2021年全国行业职业技能竞赛暨第四届全国大学生大数据技能竞赛——职教学生组线上选拔赛赛题整理,附上资料链接,如果有错误指出请提出改正,谢谢

资料

链接:https://pan.baidu.com/s/1ssv79w85JKAF7wjPBd-Eyw 
提取码:vd1a

前提条件

由于比赛中已经安装有ntp和MySQL服务,我们现在虚拟机中安装配置。

ntp在三台机器上安装(master,slave1,slave2)

MySQL可以只在slave2中安装,将slave2作为数据库存储数据,使用client/thrift server的连接方式进行访问。

安装ntp:

yum install -y ntp

 安装完成:

安装MySQL数据库:

卸载系统自带的Mariadb

rpm -qa|grep mariadb
rpm -e mariadb-libs-5.5.68-1.el7.x86_64 --nodeps
rpm -qa|grep mariadb

 安装MySQL:

解压:

tar -xvf /usr/package277/mysql-5.7.25-1.el7.x86_64.rpm-bundle.tar

 安装:

rpm -ivh mysql-community-common-5.7.25-1.el7.x86_64.rpm mysql-community-libs-5.7.25-1.el7.x86_64.rpm mysql-community-libs-compat-5.7.25-1.el7.x86_64.rpm mysql-community-client-5.7.25-1.el7.x86_64.rpm mysql-community-server-5.7.25-1.el7.x86_64.rpm

 配置完毕!

题目一、基础配置(30分)

1.比赛框架
本次比赛为分布式集群搭建,共三台节点,其中master作为主节点,slave1、slave2为从节点;

2.比赛内容

  • 基础配置:修改主机名、主机映射、时区修改、时间同步、定时任务、免密访问;
  • JDK安装:环境变量;
  • Zookeeper部署:环境变量、配置文件zoo.cfg、myid;
  • Hadoop部署:环境变量、配置文件修改、设置节点文件、格式化、开启集群;
  • Hive部署:Mysql数据库配置、服务器端配置、客户端配置。

3.版本说明

内置安装/依赖包(/usr/package277)

已安装服务

系统版本

hadoop-2.7.7.tar.gz

ntp

CentOS Linux release 7.3.1611 (Core)

zookeeper-3.4.14.tar.gz

mysql-community-server

apache-hive-2.3.4-bin.tar.gz

jdk-8u211-linux-x64.tar.gz

mysql-connector-java-5.1.47-bin.jar


core-site.xml参数配置详情

官方文档:http://hadoop.apache.org/docs/current/hadoop-project-dist/hadoop-common/core-default.xml

core-default.xml与core-site.xml的功能是一样的,如果在core-site.xml里没有配置的属性,则会自动会获取core-default.xml里的相同属性的值

属性

说明

fs.default.name

hdfs://????

定义master的URI和端口

hadoop.tmp.dir

/????

临时文件夹,指定后需将使用到的所有子级文件夹都要手动创建出来,否则无法正常启动服务。


hdfs-site.xml参数配置详情

属性

说明

dfs.replication

???

hdfs数据块的复制份数,默认3,理论上份数越多跑数速度越快,但是需要的存储空间也更多。

dfs.namenode.name.dir

file:/usr/hadoop/hadoop-2.7.3/hdfs/????

NN所使用的元数据保存

dfs.datanode.data.dir

file:/usr/hadoop/hadoop-2.7.3/hdfs/????

真正的datanode数据保存路径,可以写多块硬盘,逗号分隔


yarn-site.xml参数配置详情

属性

说明

yarn.resourcemanager.admin.address

${yarn.resourcemanager.hostname}:18141

ResourceManager 对管理员暴露的访问地址。管理员通过该地址向RM发送管理命令等。

yarn.nodemanager.aux-services

mapreduce_shuffle

NodeManager上运行的附属服务。需配置成mapreduce_shuffle,才可运行MapReduce程序


mapred-site.xml参数配置详情

属性

说明

mapreduce.framework.name

yarn

指定MR运行框架,默认为local

基础环境配置

前提说明

  1. 相关安装包已经存放至环境/usr/package277/中
  2. 对应ntp和mysql已安装,可直接对其进行操作和配置


1.修改主机名,便于识别节点;
2.工具包已保存在环境中;
3.修改hosts文件,添加集群节点映射,按照给出的节点IP和对应的主机名进行设置;
4.要求各节点时区修改为中国时区( 中国标准时间CST+8)
5.安装ntp服务,要求主节点master为本地时钟源,从节点设置定时任务同步本地时间;
6.集群中数据传输需要节点之间免密访问,要求设置主节点之间到从节点的免密访问;
7.Hadoop技术基于Java语言,要求本地源下载对应安装包进行安装配置,注意安装路径要求,无需更改文件名,注意添加环境变量。

本环境用于为基础设置部分,用于后续的集群搭建。

考核条件如下:

1. 按照左侧虚拟机名称修改对应主机名(分别为master、slave1、slave2,使用hostnamectl命令)(2分)

操作环境: master、slave1、slave2

hostnamectl set-hostname master
hostnamectl set-hostname slave1
hostnamectl set-hostname slave2
bash

2. 修改云主机host文件添加左侧master、slave1、slave2三个节点IP与主机名映射(使用内网IP)(2分)

操作环境: master、slave1、slave2

vim /etc/hosts

 添加ip+主机名:

 :wq保存退出 

 ping测试:(ctrl+c停止)

ping slave1
ping slave2

3. 时区更改为上海时间(CST+0800时区)(2分)

操作环境: master、slave1、slave2

tzselect
依次输入
5
9
1
1

 修改环境变量:

vim /etc/profile

加入:

TZ='Asia/Shanghai'; export TZ

  

生效环境变量:

source /etc/profile

 查看时间:

date

  

在ntp同步之前关闭防火墙和selinux安全机制

操作环境: master、slave1、slave2

关闭防火墙: 

systemctl stop firewalld
systemctl status firewalld
systemctl disable firewalld

 关闭selinux安全机制:

vim /etc/sysconfig/selinux

4. 环境已经安装NTP,修改master节点NTP配置,设置master为本地时间服务器,屏蔽默认server,服务器层级设为10(2分)

操作环境: master

echo "server 127.127.1.0
fudge 127.127.1.0 stratum 10" >> /etc/ntp.conf 

  

 5. 开启NTP服务(2分)

操作环境: master

/bin/systemctl restart ntpd.service

 

6. 添加定时任务--在早十-晚五时间段内每隔半个小时同步一次本地服务器时间(24小时制、使用用户root任务调度crontab,服务器地址使用主机名)(2分)

操作环境: slave1、slave2

ntp同步master

ntpdate master

crontab -e
*/30 10-17 * * * usr/sbin/ntpdate master

 查看任务:

crontab -l

7. master节点生成公钥文件id_rsa.pub(数字签名RSA,用户root,主机名master)(2分)

操作环境: master

ssh-keygen
三次回车

8. 建⽴master⾃身使⽤root⽤户ssh访问localhost免密登录(2分)

操作环境: master

ssh-copy-id localhost

输入yes和密码

9. 建⽴master使⽤root⽤户到slave1的ssh免密登录访问(2分)

操作环境: master

ssh-copy-id slave1

输入yes和密码: 

10. 建⽴master使⽤root⽤户到slave2的ssh免密登录访问(2分)

操作环境: master 

ssh-copy-id slave2

输入yes和密码:

 

 ssh测试:

ssh slave1
exit
ssh slave2
exit

11. 将jdk安装包解压到/usr/java目录(安装包存放于/usr/package277/,路径自行创建,解压后文件夹为默认名称,其他安装同理)(5分)

操作环境: master、slave1、slave2

mkdir /usr/java
tar -zxvf /usr/package277/jdk-8u221-linux-x64.tar.gz -C /usr/java/

 解压完毕:

12. 文件/etc/profile中配置系统环境变量JAVA_HOME,同时将JDK安装路径中bin目录加入PATH系统变量,注意生效变量,查看JDK版本(5分)

操作环境: master、slave1、slave2

vim /etc/profile

 添加以下内容:

#java
export JAVA_HOME=/usr/java/jdk1.8.0_221
export PATH=$PATH:$JAVA_HOME/bin

生效环境变量:

source /etc/profile

查看版本:

java -version

 版本不同解决方案:

(铃音大佬整理)

java安装后版本不一样怎么办


题目二、Zookeeper搭建(30分)

Zookeeper是一个分布式服务框架,是Apache Hadoop 的一个子项目,它主要是用来解决分布式应用中经常遇到的一些数据管理问题,如:统一命名服务、状态同步服务、集群管理、分布式应用配置项的管理等。
预装的配置文件zoo_sample.cfg下面默认有五个属性,分别是:

1.tickTime
心跳间隔,单位是毫秒,系统默认是2000毫秒,也就是间隔两秒心跳一次。
tickTime的意义:客户端与服务器或者服务器与服务器之间维持心跳,也就是每个tickTime时间就会发送一次心跳。通过心跳不仅能够用来监听机器的工作状态,还可以通过心跳来控制Flower跟Leader的通信时间,默认情况下FL的会话时常是心跳间隔的两倍。

2.initLimit
集群中的follower服务器(F)与leader服务器(L)之间初始连接时能容忍的最多心跳数(tickTime的数量)。

3.syncLimit
集群中flower服务器(F)跟leader(L)服务器之间的请求和答应最多能容忍的心跳数。

4.clientPort
客户端连接的接口,客户端连接zookeeper服务器的端口,zookeeper会监听这个端口,接收客户端的请求访问,端口默认是2181。

5.dataDir
该属性对应的目录是用来存放myid信息跟一些版本,日志,跟服务器唯一的ID信息等。
在集群Zookeeper服务在启动的时候,会回去读取zoo.cfg这个文件,从这个文件中找到这个属性然后获取它的值也就是dataDir 的路径,它会从这个路径下面读取myid这个文件,从这个文件中获取要启动的当前服务器的地址。

集群信息的配置:
在配置文件中,配置集群信息是存在一定的格式:service.N =YYY: A:B
N:代表服务器编号(准确对应对应服务器中myid里面的值)
YYY:服务器地址
A:表示 Flower 跟 Leader的通信端口,简称服务端内部通信的端口(默认2888)
B:表示是选举端口(默认是3888)
例如:server.1=master:2888:3888

配置文件参考

tickTime=2000

initLimit=10

syncLimit=5

clientPort=2181

# 配置数据存储路径

????

# 配置日志文件路径

????

# 配置集群列表

server.1=????

server.2=????

server.3=????

Zookeeper集群环境搭建(30分)

Zookeeper是一个分布式服务框架,是Apache Hadoop 的一个子项目,它主要是用来解决分布式应用中经常遇到的一些数据管理问题,如:统一命名服务、状态同步服务、集群管理、分布式应用配置项的管理等。
预装的配置文件zoo_sample.cfg下面默认有五个属性,分别是:

1.tickTime
心跳间隔,单位是毫秒,系统默认是2000毫秒,也就是间隔两秒心跳一次。
tickTime的意义:客户端与服务器或者服务器与服务器之间维持心跳,也就是每个tickTime时间就会发送一次心跳。通过心跳不仅能够用来监听机器的工作状态,还可以通过心跳来控制Flower跟Leader的通信时间,默认情况下FL的会话时常是心跳间隔的两倍。

2.initLimit
集群中的follower服务器(F)与leader服务器(L)之间初始连接时能容忍的最多心跳数(tickTime的数量)。

3.syncLimit
集群中flower服务器(F)跟leader(L)服务器之间的请求和答应最多能容忍的心跳数。

4.clientPort
客户端连接的接口,客户端连接zookeeper服务器的端口,zookeeper会监听这个端口,接收客户端的请求访问,端口默认是2181。

5.dataDir
该属性对应的目录是用来存放myid信息跟一些版本,日志,跟服务器唯一的ID信息等。
在集群Zookeeper服务在启动的时候,会回去读取zoo.cfg这个文件,从这个文件中找到这个属性然后获取它的值也就是dataDir 的路径,它会从这个路径下面读取myid这个文件,从这个文件中获取要启动的当前服务器的地址。

集群信息的配置:
在配置文件中,配置集群信息是存在一定的格式:service.N =YYY: A:B
N:代表服务器编号(准确对应对应服务器中myid里面的值)
YYY:服务器地址
A:表示 Flower 跟 Leader的通信端口,简称服务端内部通信的端口(默认2888)
B:表示是选举端口(默认是3888)
例如:server.1=master:2888:3888

配置文件参考

tickTime=2000

initLimit=10

syncLimit=5

clientPort=2181

# 配置数据存储路径

????

# 配置日志文件路径

????

# 配置集群列表

server.1=????

server.2=????

server.3=????

考核条件如下:

1. 将zookeeper安装包解压到指定路径/usr/zookeeper(安装包存放于/usr/package277/)(3分)

操作环境: master、slave1、slave2

mkdir /usr/zookeeper
tar -zxvf /usr/package277/zookeeper-3.4.14.tar.gz -C /usr/zookeeper/

 

 2. 文件/etc/profile中配置系统变量ZOOKEEPER_HOME,同时将Zookeeper安装路径中bin目录加入PATH系统变量,注意生效变量(3分)

操作环境: master、slave1、slave2

vim /etc/profile
加入:
#zookeeper
export ZOOKEEPER_HOME=/usr/zookeeper/zookeeper-3.4.14
export PATH=$PATH:$ZOOKEEPER_HOME/bin
source /etc/profile

 

3. Zookeeper的默认配置文件为Zookeeper安装路径下conf/zoo_sample.cfg,将其修改为zoo.cfg(3分)

操作环境: master、slave1、slave2

cd /usr/zookeeper/zookeeper-3.4.14/conf/
ll
mv zoo_sample.cfg zoo.cfg
ll

 4. 设置数据存储路径(dataDir)为/usr/zookeeper/zookeeper-3.4.14/zkdata(3分)

操作环境: master、slave1、slave2

5. 设置日志文件路径(dataLogDir)为/usr/zookeeper/zookeeper-3.4.14/zkdatalog(3分)

操作环境: master、slave1、slave2

6. 设置集群列表(要求master为1号服务器,slave1为2号服务器,slave2为3号服务器)(3分)

操作环境: master、slave1、slave2

4,5,6:

vim /etc/profile
修改:
dataDir=/usr/zookeeper/zookeeper-3.4.14/zkdata
加入:
dataLogDir=/usr/zookeeper/zookeeper-3.4.14/zkdatalog
server.1=master:2888:3888
server.2=slave1:2888:3888
server.3=slave2:2888:3888

 7. 创建所需数据存储文件夹、日志存储文件夹(3分)

操作环境: master、slave1、slave2

cd /usr/zookeeper/zookeeper-3.4.14/
mkdir zkdata zkdatalog

 8. 数据存储路径下创建myid,写入对应的标识主机服务器序号(3分)

操作环境: master、slave1、slave2

cd zkdata
echo "1" >>myid (master上)
echo "2" >>myid (slave1上)
echo "3" >>myid (slave2上)

 9. 启动服务,查看进程QuorumPeerMain是否存在(3分)

操作环境: master、slave1、slave2

cd ..
bin/zkServer.sh start
jps

 10. 查看各节点服务器角色是否正常(leader/follower)(3分) 

操作环境: master、slave1、slave2

bin/zkServer.sh status

题目三、Hadoop集群搭建( 80分)

Hadoop是由Java语言编写的,在分布式服务器集群上存储海量数据并运行分布式分析应用的开源框架,其核心部件是HDFS与MapReduce。

  • HDFS是一个分布式文件系统:引入存放文件元数据信息的服务器Namenode和实际存放数据的服务器Datanode,对数据进行分布式储存和读取。
  • MapReduce是一个计算框架:MapReduce的核心思想是把计算任务分配给集群内的服务器里执行。通过对计算任务的拆分(Map计算/Reduce计算)再根据任务调度器(JobTracker)对任务进行分布式计算。

配置文件

配置对象

主要内容

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监控端口等;

Hadoop的配置类是由资源指定的,资源可以由一个String或Path来指定,资源以XML形式的数据表示,由一系列的键值对组成。资源可以用String或path命名(示例如下),

  • String:指示hadoop在classpath中查找该资源;
  • Path:指示hadoop在本地文件系统中查找该资源。
<configuration>

<property>

  <name>fs.default.name</name>

   <value>????</value>

</property>

</configuration>


常用属性解析:

1.core-site.xml参数

配置参数

说明

fs.default.name

用于指定NameNode的地址

hadoop.tmp.dir

Hadoop运行时产生文件的临时存储目录

2.hdfs-site.xml

配置参数

说明

dfs.replication

用于指定NameNode的地址

dfs.namenode.name.dir

NameNode在本地文件系统中持久存储命名空间和事务日志的路径

dfs.datanode.data.dir

DataNode在本地文件系统中存放块的路径

dfs.permissions

集群权限系统校验

dfs.datanode.use.datanode.hostname

datanode之间通过域名方式通信

注意:外域机器通信需要用外网IP,未配置hostname访问会访问异常。可以在Java api客户端使用conf.set("fs.client.use.datanode.hostname","true");

3.mapreduce-site.xml

配置参数

说明

mapreduce.framework.name

指定执行MapReduce作业的运行时框架。属性值可以是local,classic或yarn。

4.yarn-site.xml

配置参数

说明

yarn.resourcemanager.admin.address

用于指定RM管理界面的地址(主机:端口)

yarn.nodemanager.aux-services

mapreduce 获取数据的方式,指定在进行mapreduce作业时,yarn使用mapreduce_shuffle混洗技术。这个混洗技术是hadoop的一个核心技术,非常重要。

yarn.nodemanager.auxservices.mapreduce.shuffle.class

用于指定混洗技术对应的字节码文件,值为org.apache.hadoop.mapred.ShuffleHandler

Hadoop完全分布式集群搭建(80分)

Hadoop是由Java语言编写的,在分布式服务器集群上存储海量数据并运行分布式分析应用的开源框架,其核心部件是HDFS与MapReduce。

  • HDFS是一个分布式文件系统:引入存放文件元数据信息的服务器Namenode和实际存放数据的服务器Datanode,对数据进行分布式储存和读取。
  • MapReduce是一个计算框架:MapReduce的核心思想是把计算任务分配给集群内的服务器里执行。通过对计算任务的拆分(Map计算/Reduce计算)再根据任务调度器(JobTracker)对任务进行分布式计算。

配置文件

配置对象

主要内容

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监控端口等;

Hadoop的配置类是由资源指定的,资源可以由一个String或Path来指定,资源以XML形式的数据表示,由一系列的键值对组成。资源可以用String或path命名(示例如下),

  • String:指示hadoop在classpath中查找该资源;
  • Path:指示hadoop在本地文件系统中查找该资源。
<configuration>

<property>

  <name>fs.default.name</name>

   <value>????</value>

</property>

</configuration>


常用属性解析:

1.core-site.xml参数

配置参数

说明

fs.default.name

用于指定NameNode的地址

hadoop.tmp.dir

Hadoop运行时产生文件的临时存储目录

2.hdfs-site.xml

配置参数

说明

dfs.replication

用于指定NameNode的地址

dfs.namenode.name.dir

NameNode在本地文件系统中持久存储命名空间和事务日志的路径

dfs.datanode.data.dir

DataNode在本地文件系统中存放块的路径

dfs.permissions

集群权限系统校验

dfs.datanode.use.datanode.hostname

datanode之间通过域名方式通信

注意:外域机器通信需要用外网IP,未配置hostname访问会访问异常。可以在Java api客户端使用

conf.set("fs.client.use.datanode.hostname","true");。

3.mapreduce-site.xml

配置参数

说明

mapreduce.framework.name

指定执行MapReduce作业的运行时框架。属性值可以是local,classic或yarn。

4.yarn-site.xml

配置参数

说明

yarn.resourcemanager.admin.address

用于指定RM管理界面的地址(主机:端口)

yarn.nodemanager.aux-services

mapreduce 获取数据的方式,指定在进行mapreduce作业时,yarn使用mapreduce_shuffle混洗技术。这个混洗技术是hadoop的一个核心技术,非常重要。

yarn.nodemanager.auxservices.mapreduce.shuffle.class

用于指定混洗技术对应的字节码文件,值为org.apache.hadoop.mapred.ShuffleHandler

考核条件如下:

1. 将Hadoop安装包解压到指定路径/usr/hadoop(安装包存放于/usr/package277/)(5分)

操作环境: master、slave1、slave2

mkdir /usr/hadoop
tar -zxvf /usr/package277/hadoop-2.7.7.tar.gz -C /usr/hadoop/

 2. 文件/etc/profile中配置环境变量HADOOP_HOME,将Hadoop安装路径中bin目录和sbin目录加入PATH系统变量,注意生效变量(5分)

操作环境: master、slave1、slave2

vim /etc/profile
加入:
#hadoop
export HADOOP_HOME=/usr/hadoop/hadoop-2.7.7
export CLASSPATH=$CLASSPATH:$HADOOP_HOME/lib
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
source /etc/profile

 3. 配置Hadoop运行环境JAVA_HOME(5分)

操作环境: master、slave1、slave2

进入目录(以下操作都在此目录进行):

cd /usr/hadoop/hadoop-2.7.7/etc/hadoop/
pwd

 修改hadoop-env.sh

echo "export JAVA_HOME=/usr/java/jdk1.8.0_221" >> hadoop-env.sh

4. 设置全局参数,指定HDFS上NameNode地址为master,端口默认为9000(5分)

操作环境: master、slave1、slave2

5. 指定临时存储目录为本地/root/hadoopData/tmp(要求为绝对路径,下同)(5分)

操作环境: master、slave1、slave2

4,5:

vim core-site.xml

 加入:

<property>
  <name>fs.default.name</name>
   <value>hdfs://master:9000</value>
</property>
<property>
  <name>hadoop.tmp.dir</name>
   <value>/root/hadoopData/tmp</value>
</property>

6. 设置HDFS参数,指定备份文本数量为2(5分)

操作环境: master、slave1、slave2

7. 设置HDFS参数,指定NN存放元数据信息路径为本地/root/hadoopData/name;指定DN存放元数据信息路径为本地/root/hadoopData/data(要求为绝对路径)(5分)

操作环境: master、slave1、slave2

8. 设置HDFS参数,关闭hadoop集群权限校验(安全配置),允许其他用户连接集群;指定datanode之间通过域名方式进行通信(5分)

操作环境: master、slave1、slave2

6,7,8:

vim hdfs-site.xml

加入:

<property>
 <name>dfs.replication</name>																
   <value>2</value>
 </property>
 <property>
 <!--namenode节点数据存储目录-->
   <name>dfs.namenode.name.dir</name>
   <value>/root/hadoopData/name</value>
 </property>
  <!--datanode节点数据存储目录-->
  <property>
    <name>dfs.datanode.data.dir</name>
    <value>/root/hadoopData/data</value>
</property>
<!-- 设置HDFS的文件权限-->
 <property>
   <name>dfs.permissions</name>
   <value>false</value>
</property>
<property>
	<name>dfs.datanode.use.datanode.hostname</name>
	<value>true</value>
</property>

9. 设置YARN运行环境JAVA_HOME参数(5分)

操作环境: master、slave1、slave2

echo "export JAVA_HOME=/usr/java/jdk1.8.0_221" >> yarn-env.sh

 10. 设置YARN核心参数,指定ResourceManager进程所在主机为master,端口为18141;指定mapreduce 获取数据的方式为mapreduce_shuffle(5分)

操作环境: master、slave1、slave2

vim yarn-site.xml

加入: 

<property>
 <name>yarn.resourcemanager.admin.address</name>
 <value>master:18141</value>
</property>
<property>
 <name>yarn.nodemanager.auxservices.mapreduce.shuffle.class</name>
 <value>org.apache.hadoop.mapred.shuffleHandler</value>
</property>
<property>
 <name>yarn.nodemanager.aux-services</name>
 <value>mapreduce_shuffle</value>
</property>

 11. 设置计算框架参数,指定MR运行在yarn上(5分)

操作环境: master、slave1、slave2

mv mapred-site.xml.template mapred-site.xml
vim mapred-site.xml

 加入:

<property>
   <name>mapreduce.framework.name</name>
   <value>yarn</value>
</property>

 12. 设置节点文件,要求master为主节点; slave1、slave2为子节点(5分)

操作环境: master、slave1、slave2

echo "master" >> master
vim slaves

修改localhost为:

slave1
slave2

13. 对文件系统进行格式化(5分)

操作环境: master

cd /usr/hadoop/hadoop-2.7.7/
hadoop namenode -format

 14. 启动Hadoop集群查看各节点服务(5分)

操作环境: master、slave1、slave2

sbin/start-all.sh

输入yes

 

15. 查看集群运行状态是否正常(10分)

操作环境: master

jps

 进入浏览器输入:

master:50070

(windows记得做ip映射,在"C:\Windows\System32\drivers\etc\hosts"处修改)

 成功!

题目四、Hive集群搭建(30分)

1.比赛框架
本次比赛为分布式集群搭建,共三台节点,其中master作为主节点,slave1、slave2为从节点;

2.比赛内容

  • 基础配置:修改主机名、主机映射、时区修改、时间同步、定时任务、免密访问;
  • JDK安装:环境变量;
  • Zookeeper部署:环境变量、配置文件zoo.cfg、myid;
  • Hadoop部署:环境变量、配置文件修改、设置节点文件、格式化、开启集群;
  • Hive部署:Mysql数据库配置、服务器端配置、客户端配置。

3.版本说明

内置安装/依赖包(/usr/package277)

已安装服务

系统版本

hadoop-2.7.7.tar.gz

ntp

CentOS Linux release 7.3.1611 (Core)

zookeeper-3.4.14.tar.gz

mysql-community-server

apache-hive-2.3.4-bin.tar.gz

jdk-8u211-linux-x64.tar.gz

mysql-connector-java-5.1.47-bin.jar

4.数据仓库架构说明
集群中使用远程模式,使用外部数据库MySQL用于存储元数据,使用client/thrift server的连接方式进行访问。其中slave2作为mysql数据库,slave1作为hive服务器端,master作为hive客户端。

安装数据库(5分)

前提说明

  1. 相关安装包已经存放至环境/usr/package277/中
  2. 对应ntp和mysql已安装,可直接对其进行操作和配置


1.环境中已经安装mysql-community-server,注意mysql5.7默认安装后为root用户随机生成一个密码;

  • 直接查看密码:grep "temporary password" /var/log/mysqld.log
  • 登入数据库:mysql -uroot -p
  • 输入随机密码即可登录

2.根据要求设置密码,注意对应的安全策略修改;

  • 设置密码强度为低级:set global validate_password_policy=????;
  • 设置密码长度:set global validate_password_length=????;
  • 修改本地密码:alter user 'root'@'localhost' identified by '????';

3.根据要求满足任意主机节点root的远程访问权限(否则后续hive无法连接mysql);

  • GRANT ALL PRIVILEGES ON *.* TO '????'@'%' IDENTIFIED BY '????' WITH GRANT OPTION;

4.注意刷新权限;

  • flush privileges;

5.参考命令

  • 启动mysql服务:systemctl start mysqld.service
  • 关闭mysql服务:systemctl stop mysqld.service
  • 查看mysql服务:systemctl status mysqld.service

考核条件如下:

1. 环境中已经安装mysql-community-server,关闭mysql开机自启服务(1分)

操作环境: slave2

systemctl disable mysqld.service

 2. 开启MySQL服务(1分)

操作环境: slave2

systemctl start mysqld.service

3. 判断mysqld.log日志下是否生成初临时密码(1分)

操作环境: slave2

grep "temporary password" /var/log/mysqld.log

 4. 设置mysql数据库本地root用户密码为123456(2分)

操作环境: slave2

mysql -uroot -p
  • 输入初始密码即可登录

set global validate_password_policy=0;
set global validate_password_length=4;
alter user 'root'@'localhost' identified by '123456';

 远程访问权限:

\q 退出

以新密码登陆 MySQL:

mysql -uroot -p
123456

create user 'root'@'%' identified by '123456'; 
grant all privileges on *.* to 'root'@'%' with grant option;
flush privileges;
\q

Hive基础环境配置(9分)

Hive是基于Hadoop的一个数据仓库工具,用来进行数据提取、转化、加载,这是一种可以存储、查询和分析存储在Hadoop中的大规模数据的机制。Hive数据仓库工具能将结构化的数据文件映射为一张数据库表,并提供SQL查询功能,能将SQL语句转变成MapReduce任务来执行。

1.讲指定版本的Hive安装包解压到指定路径,添加系统并生效;
2.修改Hive运行环境

# 配置Hadoop安装路径

export HADOOP_HOME=????

# 配置Hive配置文件存放路径为conf

export HIVE_CONF_DIR=????

# 配置Hive运行资源库路径为lib

export HIVE_AUX_JARS_PATH=????

3.由于客户端需要和Hadoop通信,为避免jline版本冲突问题,将Hive中lib/jline-2.12.jar拷贝到Hadoop中,保留高版本.

考核条件如下:

1. 将Hive安装包解压到指定路径/usr/hive(安装包存放于/usr/package277/(1分)

操作环境: master、slave1

mkdir /usr/hive
tar -zxvf /usr/package277/apache-hive-2.3.4-bin.tar.gz -C /usr/hive/

 2. 文件/etc/profile中配置环境变量HIVE_HOME,将Hive安装路径中的bin目录加入PATH系统变量,注意生效变量(2分)

操作环境: master、slave1

vim /etc/profile
加入:
#hive 
export HIVE_HOME=/usr/hive/apache-hive-2.3.4-bin 
export PATH=$PATH:$HIVE_HOME/bin
source /etc/profile

 3. 修改HIVE运行环境,配置Hadoop安装路径HADOOP_HOME(2分)

操作环境: master、slave1

4. 修改HIVE运行环境,配置Hive配置文件存放路径HIVE_CONF_DIR(1分)

操作环境: master、slave1

5. 修改HIVE运行环境,配置Hive运行资源库路径HIVE_AUX_JARS_PATH(1分)

操作环境: master、slave1

3,4,5:

cd /usr/hive/apache-hive-2.3.4-bin/conf/
mv hive-env.sh.template hive-env.sh
echo "export HADOOP_HOME=/usr/hadoop/hadoop-2.7.7
export HIVE_CONF_DIR=/usr/hive/apache-hive-2.3.4-bin/conf
export HIVE_AUX_JARS_PATH=/usr/hive/apache-hive-2.3.4-bin/lib" >> hive-env.sh

6. 解决jline的版本冲突,将$HIVE_HOME/lib/jline-2.12.jar同步至$HADOOP_HOME/share/hadoop/yarn/lib/下(2分)

操作环境: master,slave1

cp /usr/hive/apache-hive-2.3.4-bin/lib/jline-2.12.jar /usr/hadoop/hadoop-2.7.7/share/hadoop/yarn/lib/

配置HIVE元数据至MySQL(8分)

1.slave1作为服务器端需要和Mysql通信,所以服务端需要将Mysql的依赖包放在Hive的lib目录下。
mysql-connector-java是MySQL的JDBC驱动包,用JDBC连接MySQL数据库时必须使用该jar包。

2.配置文件参考:

<configuration>

<!-- Hive产生的元数据存放位置-->

<property>

<name>hive.metastore.warehouse.dir</name>

<value>????</value>

</property>

<!-- 数据库连接driver,即MySQL驱动-->

<property>

<name>javax.jdo.option.ConnectionDriverName</name>

<value>????</value>

</property>

<!-- 数据库连接JDBC的URL地址-->

<property>

<name>javax.jdo.option.ConnectionURL</name> 

<value>jdbc:mysql://????:3306/hive?createDatabaseIfNotExist=true&useSSL=false</value>

</property>

<!-- MySQL数据库用户名-->

<property>

<name>javax.jdo.option.ConnectionUserName</name>

<value>????</value>

</property>

<!-- MySQL数据库密码-->

<property>

<name>javax.jdo.option.ConnectionPassword</name>

<value>????</value>

</property>

</configuration>

考核条件如下:

1. 驱动JDBC拷贝至hive安装目录对应lib下(依赖包存放于/usr/package277/)( 1分)

操作环境: slave1

cp /usr/package277/mysql-connector-java-5.1.47-bin.jar /usr/hive/apache-hive-2.3.4-bin/lib/

2. 配置元数据数据存储位置为/user/hive_remote/warehouse(1分)

操作环境: slave1

3. 配置数据库连接为MySQL(1分)

操作环境: slave1

4. 配置连接JDBC的URL地址主机名及默认端口号3306,数据库为hive,如不存在自行创建,ssl连接方式为false(1分)

操作环境: slave1

5. 配置数据库连接用户(2分)

操作环境: slave1

6. 配置数据库连接密码(2分)

操作环境: slave1

2,3,4,5,6:

vim hive-site.xml

插入: 

<configuration>
  <!--Hive产生的元数据存放位置-->
<property>
    <name>hive.metastore.warehouse.dir</name>
    <value>/user/hive_remote/warehouse</value>
</property>
    <!--数据库连接JDBC的URL地址-->
<property>
    <name>javax.jdo.option.ConnectionURL</name>
    <value>jdbc:mysql://slave2:3306/hive?createDatabaseIfNotExist=true&amp;characterEncoding=UTF-8&amp;useSSL=false</value>
	<description>JDBC connect string for a JDBC metastore</description>
</property>
    <!--数据库连接driver,即MySQL驱动-->
<property>
    <name>javax.jdo.option.ConnectionDriverName</name>
    <value>com.mysql.jdbc.Driver</value>
</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>
<property>
    <name>hive.metastore.schema.verification</name>
    <value>false</value>
 </property>
<property>
    <name>datanucleus.schema.autoCreateALL</name>
    <value>true</value>
 </property>
</configuration>

配置HIVE客户端(4分)

1.master作为客户端,可进入终端进行操作;
2.关闭本地模式;
3.将hive.metastore.uris指向metastore服务器URL;
4.配置文件参考:

<configuration>

<!-- Hive产生的元数据存放位置-->

<property>

<name>hive.metastore.warehouse.dir</name>

<value>????</value>

</property>

<!--- 使用本地服务连接Hive,默认为true-->

<property>

<name>hive.metastore.local</name>

<value>????</value>

</property>

<!-- 连接服务器-->

<property>

<name>hive.metastore.uris</name>

<value>thrift://????</value>

</property>

</configuration>

考核条件如下:

1. 配置元数据存储位置为/user/hive_remote/warehouse(1分)

操作环境: master

2. 关闭本地metastore模式(1分)

操作环境: master

3. 配置指向metastore服务的主机为slave1,端口为9083(2分)

操作环境: master

1,2,3:

vim 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>

启动Hive(4分)

1.服务器端初始化数据库,并启动metastore服务;
2.客户端开启Hive client,即可根据创建相关数据操作。

考核条件如下:

1. 服务器端初始化数据库,启动metastore服务(2分)

操作环境: slave1

schematool -dbType mysql -initSchema

  

2. 客户端开启进入hive,创建hive数据库(2分)

操作环境: master

bin/hive --service metastore &

bin/hive
create database hive;

 成功!

题目五、Spark搭建(30分)

Spark 是一种与 Hadoop 相似的开源集群计算环境,但是两者之间还存在一些不同之处,这些有用的不同之处使 Spark 在某些工作负载方面表现得更加优越,换句话说,Spark 启用了内存分布数据集,除了能够提供交互式查询外,它还可以优化迭代工作负载。

Spark 是在 Scala 语言中实现的,它将 Scala 用作其应用程序框架。与 Hadoop 不同,Spark 和 Scala 能够紧密集成,其中的 Scala 可以像操作本地集合对象一样轻松地操作分布式数据集。

Scala安装(6分)

使用Scala语言来实现Spark。Scala(Scalable Language)是一种多范式的编程语言,其设计的初衷是要集成面向对象编程和函数式编程的各种特性。
Scala运行于Java平台(java虚拟机上),并兼容现有的Java程序。
面向对象(将对象当作参数传来传去) + 面向函数(方法,可以将函数当作参数传来传去)

考核条件如下:

1. 将Scala安装包解压到指定路径/usr/scala(安装包存放于/usr/package277/)(3分)

操作环境: master、slave1、slave2

mkdir /usr/scala
tar -zxvf /usr/package277/scala-2.10.3.tgz -C /usr/scala/

2. 文件/etc/profile中配置环境变量SCALA_HOME,将Scala安装路径中的bin目录加入PATH系统变量,注意生效变量(3分)

操作环境: master、slave1、slave2

vim /etc/profile
加入:
#scala
export SCALA_HOME=/usr/scala/scala-2.10.3
export PATH=$PATH:$SCALA_HOME/bin
source /etc/profile

scala -version

 Spark集群搭建(24分)

Spark是Hadoop的子项目。 环境中将Spark安装到基于Linux的系统中。

相关配置变量如下:

  • JAVA_HOME:Java安装目录
  • SCALA_HOME:Scala安装目录
  • HADOOP_HOME:Hadoop安装目录
  • HADOOP_CONF_DIR:Hadoop集群的配置文件的目录
  • SPARK_MASTER_IP:Spark集群的Master节点的ip地址
  • SPARK_WORKER_MEMORY:每个worker节点能够最大分配给exectors的内存大小

考核条件如下:

1. 将Spark安装包解压到指定路径/usr/spark/spark-2.4.3-bin-hadoop2.7(安装包存放于/usr/package277/)(3分)

操作环境: master、slave1、slave2

mkdir /usr/spark
tar -zxvf /usr/package277/spark-2.3.4-bin-hadoop2.7.tgz -C /usr/spark/

2. 文件/etc/profile中配置环境变量SPARK_HOME,将Spark安装路径中的bin目录加入PATH系统变量,注意生效变量(3分)

操作环境: master、slave1、slave2

vim /etc/profile
加入:
#spark
export SPARK_HOME=/usr/spark/spark-2.3.4-bin-hadoop2.7
export PATH=$PATH:$SPARK_HOME/bin
source /etc/profile

 3. 修改配置文件spark-env.sh,设置主机节点为master(3分)

操作环境: master、slave1、slave2

4. 修改配置文件spark-env.sh,设置scala安装路径、java安装路径(3分)

操作环境: master、slave1、slave2

5. 修改配置文件spark-env.sh,设置节点内存为8g( 3分)

操作环境: master、slave1、slave2

6. 修改配置文件spark-env.sh,设置hadoop安装目录、hadoop集群的配置文件的目录(3分)

操作环境: master、slave1、slave2

3,4,5,6:

cd /usr/spark/spark-2.3.4-bin-hadoop2.7/conf
mv spark-env.sh.template spark-env.sh
echo "export SPARK_MASTER_IP=master
export SCALA_HOME=/usr/scala/scala-2.10.3
export SPARK_WORKER_MEMORY=8g
export JAVA_HOME=/usr/java/jdk1.8.0_221
export HADOOP_HOME=/usr/hadoop/hadoop-2.7.7
export HADOOP_CONF_DIR=/usr/hadoop/hadoop-2.7.7/etc/hadoop" >> spark-env.sh

7. 修改slaves文件,添加spark从节点slave1、slave2(3分)

操作环境: master、slave1、slave2

mv slaves.template slaves
vim slaves

修改localhost为slave1,slave2

 8. 开启集群,查看各节点进程(主节点进程为Master,子节点进程为Worker)(3分)

操作环境: master、slave1、slave2

在master上:

cd /usr/spark/spark-2.3.4-bin-hadoop2.7/
sbin/start-all.sh

 完成!

  • 25
    点赞
  • 114
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

慕铭yikm

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值