软件测试最全Hive 整合 Spark 全教程 (Hive on Spark)(1),软件测试应用开发基础大纲

img
img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上软件测试知识点,真正体系化!

由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新

需要这份系统化的资料的朋友,可以戳这里获取

export JAVA_HOME=/opt/module/jdk1.8.0_212

配置历史服务器

为了查看程序的历史运行情况,需要配置一下历史服务器。具体配置步骤如下:

配置mapred-site.xml

<!-- 历史服务器端地址 -->
<property>
    <name>mapreduce.jobhistory.address</name>
    <value>Bigdata00:10020</value>
</property>

<!-- 历史服务器web端地址 -->
<property>
    <name>mapreduce.jobhistory.webapp.address</name>
    <value>Bigdata00:19888</value>
</property>

配置日志的聚集

日志聚集概念:应用运行完成以后,将程序运行日志信息上传到HDFS系统上。

日志聚集功能好处:可以方便的查看到程序运行详情,方便开发调试。

注意:开启日志聚集功能,需要重新启动NodeManager 、ResourceManager和HistoryManager。

开启日志聚集功能具体步骤如下:

配置yarn-site.xml

<!-- 开启日志聚集功能 -->
<property>
    <name>yarn.log-aggregation-enable</name>
    <value>true</value>
</property>

<!-- 设置日志聚集服务器地址 -->
<property>  
    <name>yarn.log.server.url</name>  
    <value>http://Bigdata00:19888/jobhistory/logs</value>
</property>

<!-- 设置日志保留时间为7天 -->
<property>
    <name>yarn.log-aggregation.retain-seconds</name>
    <value>604800</value>
</property>

启动集群

(1)如果集群是第一次启动,需要在Bigdata00节点格式化NameNode(注意格式化之前,一定要先停止上次启动的所有namenode和datanode进程,然后再删除data和log数据)

[luanhao@Bigdata00 hadoop-3.1.3]$ bin/hdfs namenode -format

(2)启动HDFS

[luanhao@Bigdata00 hadoop-3.1.3]$ sbin/start-dfs.sh

(3)在配置了ResourceManager的节点启动YARN

[luanhao@Bigdata00 hadoop-3.1.3]$ sbin/start-yarn.sh

(4)Web端查看HDFS的Web页面:http://bigdata00:9870

在这里插入图片描述

(5)Web端查看SecondaryNameNode :http://bigdata00:9868/status.html (单机模式下面什么都没有)

在这里插入图片描述

(6)Web端查看ResourceManager :http://bigdata00:8088/cluster

在这里插入图片描述

LZO压缩配置

1)将编译好后的 hadoop-lzo-0.4.20.jar 放入 hadoop-3.1.3/share/hadoop/common/

[luanhao@Bigdata00 common]$ pwd
/opt/module/hadoop-3.1.3/share/hadoop/common
[luanhao@Bigdata00 common]$ ls
hadoop-lzo-0.4.20.jar

2)core-site.xml 增加配置支持 LZO 压缩

<configuration>
 <property>
 <name>io.compression.codecs</name>
 <value>
 org.apache.hadoop.io.compress.GzipCodec,
 org.apache.hadoop.io.compress.DefaultCodec,
 org.apache.hadoop.io.compress.BZip2Codec,
 org.apache.hadoop.io.compress.SnappyCodec,
 com.hadoop.compression.lzo.LzoCodec,
 com.hadoop.compression.lzo.LzopCodec
 </value>
 </property>
 <property>
 <name>io.compression.codec.lzo.class</name>
 <value>com.hadoop.compression.lzo.LzoCodec</value>
 </property>
</configuration>

Hadoop 3.x 端口号 总结

Hadoop 3.x后,应用的端口有所调整,如下:

分类应用Haddop 2.xHaddop 3.x
NNPortsNamenode80209820
NNPortsNN HTTP UI500709870
NNPortsNN HTTPS UI504709871
SNN portsSNN HTTP500919869
SNN portsSNN HTTP UI500909868
DN portsDN IPC500209867
DN portsDN500109866
DN portsDN HTTP UI500759864
DN portsNamenode504759865
YARN portsYARN UI80888088

MySQL准备

1)卸载自带的 Mysql-libs(如果之前安装过 mysql,要全都卸载掉)

[luanhao@Bigdata00 software]$ rpm -qa | grep -i -E mysql\|mariadb | xargs -n1 sudo rpm -e --nodeps

2)安装 mysql 依赖

[luanhao@Bigdata00 software]$ sudo rpm -ivh 01_mysql-community-common-5.7.16-1.el7.x86_64.rpm
[luanhao@Bigdata00 software]$ sudo rpm -ivh 02_mysql-community-libs-5.7.16-1.el7.x86_64.rpm
[luanhao@Bigdata00 software]$ sudo rpm -ivh 03_mysql-community-libs-compat-5.7.16-1.el7.x86_64.rpm

3)安装 mysql-client

[luanhao@Bigdata00 software]$ sudo rpm -ivh 04_mysql-community-client-5.7.16-1.el7.x86_64.rpm

4)安装 mysql-server

[luanhao@Bigdata00 software]$ sudo rpm -ivh 05_mysql-community-server-5.7.16-1.el7.x86_64.rpm

5)启动 mysql

[luanhao@Bigdata00 software]$ sudo systemctl start mysqld

6)查看 mysql 密码

[luanhao@Bigdata00 software]$ sudo cat /var/log/mysqld.log | grep password

配置只要是 root 用户+密码,在任何主机上都能登录 MySQL 数据库。

7)用刚刚查到的密码进入mysql(如果报错,给密码加单引号)

[luanhao@Bigdata00 software]$ mysql -uroot -p 'password' 

8)设置复杂密码(由于 mysql 密码策略,此密码必须足够复杂)

mysql> set password=password("Qs23=zs32"); 

9)更改 mysql 密码策略

mysql> set global validate_password_length=4;
mysql> set global validate_password_policy=0; 

10)设置简单好记的密码

mysql> set password=password("000000"); 

11)进入msyql

mysql> use mysql

12)查询 user

mysql> select user, host from user; 

13)修改 user 表,把 Host 表内容修改为%

mysql> update user set host="%" where user="root"; 

14)刷新

mysql> flush privileges; 

15)退出

mysql> quit;

Hive 准备

1)把 apache-hive-3.1.2-bin.tar.gz上传到 linux /opt/software 目录下

2)解压 apache-hive-3.1.2-bin.tar.gz /opt/module目录下面

[luanhao@Bigdata00 software]$ tar -zxvf /opt/software/apache-hive-3.1.2-bin.tar.gz -C /opt/module/

3)修改 apache-hive-3.1.2-bin.tar.gz 的名称为 hive

[luanhao@Bigdata00 software]$ mv /opt/module/apache-hive-3.1.2-bin/ /opt/module/hive

4)修改/etc/profile,添加环境变量

[luanhao@Bigdata00 software]$ sudo vim /etc/profile
添加内容
#HIVE\_HOME
export HIVE_HOME=/opt/module/hive
export PATH=$PATH:$HIVE\_HOME/bin

重启 Xshell 对话框或者 source 一下 /etc/profile 文件,使环境变量生效

[luanhao@Bigdata00 software]$ source /etc/profile

5)解决日志 Jar 包冲突,进入/opt/module/hive/lib 目录(有冲突再做)

[luanhao@Bigdata00 lib]$ mv log4j-slf4j-impl-2.10.0.jar log4j-slf4j-impl-2.10.0.jar.bak

Hive 元数据配置到 MySQL

拷贝驱动

将 MySQL 的 JDBC 驱动拷贝到 Hive 的 lib 目录下

[luanhao@Bigdata00 lib]$ cp /opt/software/mysql-connector-java-5.1.27-bin.jar /opt/module/hive/lib/

配置 Metastore MySQL

在$HIVE_HOME/conf 目录下新建 hive-site.xml 文件

[luanhao@Bigdata00 conf]$ vim hive-site.xml

添加如下内容

<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
 <property>
 	<name>javax.jdo.option.ConnectionURL</name>
	<value>jdbc:mysql://Bigdata00:3306/metastore?useSSL=false</value>
 </property>
 <property>
 	<name>javax.jdo.option.ConnectionDriverName</name>
 	<value>com.mysql.jdbc.Driver</value>
 </property>
 <property>
 	<name>javax.jdo.option.ConnectionUserName</name>
 	<value>root</value>
 </property>
 <property>
	 <name>javax.jdo.option.ConnectionPassword</name>
 	 <value>000000</value>
 </property>
 <property>
 	<name>hive.metastore.warehouse.dir</name>
 	<value>/user/hive/warehouse</value>
 </property>
 <property>
 	<name>hive.metastore.schema.verification</name>
 	<value>false</value>
 </property>
 <property>
 	<name>hive.server2.thrift.port</name>
 	<value>10000</value>
 </property>
 <property>
 	<name>hive.server2.thrift.bind.host</name>
 	<value>Bigdata00</value>
 </property>
 <property>
	<name>hive.metastore.event.db.notification.api.auth</name>
 	<value>false</value>
 </property>
 
 <property>
 	<name>hive.cli.print.header</name>
 	<value>true</value>
 </property>
 <property>
 	<name>hive.cli.print.current.db</name>
 	<value>true</value>
 </property>

</configuration>

启动 Hive

初始化元数据库

1)登陆MySQL

[luanhao@Bigdata00 conf]$ mysql -uroot -p000000

2)新建 Hive 元数据库

mysql> create database metastore;
mysql> quit;

3)初始化 Hive 元数据库

[luanhao@Bigdata00 conf]$ schematool -initSchema -dbType mysql -verbose

启动 hive 客户端

1)启动 Hive 客户端

[luanhao@Bigdata00 hive]$ bin/hive

2)查看一下数据库

hive (default)> show databases;
OK
database_name
default

Spark 准备

(1)Spark 官网下载 jar 包地址:

http://spark.apache.org/downloads.html

(2)上传并解压解压 spark-3.0.0-bin-hadoop3.2.tgz

[luanhao@Bigdata00 software]$ tar -zxvf spark-3.0.0-bin-hadoop3.2.tgz -C /opt/module/ 
[luanhao@Bigdata00 software]$ mv /opt/module/spark-3.0.0-bin-hadoop3.2 /opt/module/spark

(3)配置 SPARK_HOME 环境变量

[luanhao@Bigdata00 software]$ sudo vim /etc/profile
添加如下内容
# SPARK\_HOME
export SPARK_HOME=/opt/module/spark
export PATH=$PATH:$SPARK\_HOME/bin

source 使其生效

[luanhao@Bigdata00 software]$ source /etc/profile

(4)在hive 中创建 spark 配置文件

[luanhao@Bigdata00 software]$ vim /opt/module/hive/conf/spark-defaults.conf

添加如下内容(在执行任务时,会根据如下参数执行)

spark.master yarn
spark.eventLog.enabled true
spark.eventLog.dir hdfs://Bigdata00:8020/spark-history
spark.executor.memory 1g 
spark.driver.memory 1g

在 HDFS 创建如下路径,用于存储历史日志

[luanhao@Bigdata00 software]$ hadoop fs -mkdir /spark-history

(5)向 HDFS 上传 Spark 纯净版 jar

说明 1:由于 Spark3.0.0 非纯净版默认支持的是 hive2.3.7 版本,直接使用会和安装的Hive3.1.2 出现兼容性问题。所以采用 Spark 纯净版 jar 包,不包含 hadoop 和 hive 相关依赖,避免冲突。

说明 2:Hive 任务最终由 Spark 来执行,Spark 任务资源分配由 Yarn 来调度,该任务有可能被分配到集群的任何一个节点。所以需要将 Spark 的依赖上传到 HDFS 集群路径,这样集群中任何一个节点都能获取到。

(6)上传并解压 spark-3.0.0-bin-without-hadoop.tgz

[luanhao@Bigdata00 software]$ tar -zxvf /opt/software/spark-3.0.0-bin-without-hadoop.tgz

(7)上传 Spark 纯净版 jar 包到 HDFS

[luanhao@Bigdata00 software]$ hadoop fs -mkdir /spark-jars
[luanhao@Bigdata00 software]$ hadoop fs -put spark-3.0.0-bin-without-hadoop/jars/* /spark-jars

Hive on Spark 配置

修改 hive-site.xml 文件

[luanhao@Bigdata00 ~]$ vim /opt/module/hive/conf/hive-site.xml

添加如下内容
<!--Spark 依赖位置(注意:端口号 8020 必须和 namenode 的端口号一致)-->
<property>
 	<name>spark.yarn.jars</name>
 	<value>hdfs://Bigdata00:8020/spark-jars/*</value>
</property>
 
<!--Hive 执行引擎-->
<property>
 	<name>hive.execution.engine</name>
 	<value>spark</value>
</property>
<!--Hive 和 Spark 连接超时时间-->
<property>
 	<name>hive.spark.client.connect.timeout</name>
 	<value>10000ms</value>
</property>

hadoop 3.1.3 默认 NameNode 端口是 9820 重新在hadoop 下的 core-site.xml 将 9820 修改成 8020 就可以了

core-site.xml

<!-- 指定NameNode的地址 -->
<property>
        <name>fs.defaultFS</name>
        <value>hdfs://Bigdata00:8020</value>
</property>

在这里插入图片描述

注意:hive.spark.client.connect.timeout 的默认值是 1000ms,如果执行 hive 的 insert 语句时,抛如下异常,可以调大该参数到 10000ms

FAILED: SemanticException Failed to get a spark session: 
org.apache.hadoop.hive.ql.metadata.HiveException: Failed to create Spark 
client for Spark session d9e0224c-3d14-4bf4-95bc-ee3ec56df48e

1)兼容性说明

注意:官网下载的 Hive3.1.2 和 Spark3.0.0 默认是不兼容的。因为 Hive3.1.2 支持的 Spark版本是 2.4.5,所以需要我们重新编译 Hive3.1.2 版本。

编译步骤:官网下载 Hive3.1.2 源码,修改 pom 文件中引用的 Spark 版本为 3.0.0,如果编译通过,直接打包获取 jar 包。如果报错,就根据提示,修改相关方法,直到不报错,打包获取 jar 包。

Hive on Spark仅使用特定版本的Spark进行测试,因此只能确保给定版本的Hive与特定版本的Spark一起使用。其他版本的Spark可能与给定版本的Hive一起使用,但这不能保证。下面是Hive版本列表及其相应的兼容Spark版本。

Hive VersionSpark Version
master2.3.0
3.0.x2.3.0
2.3.x2.0.0
2.2.x1.6.0
2.1.x1.6.0
2.0.x1.5.0
1.2.x1.3.1
1.1.x1.2.0

2)在 Hive 所在节点部署 Spark

如果之前已经部署了 Spark,则该步骤可以跳过,但要检查 SPARK_HOME 的环境变量配置是否正确。

Hive on Spark测试

(1)启动 hive 客户端

[luanhao@Bigdata00 hive]$ bin/hive

(2)创建一张测试表

hive (default)> create table huanhuan(id int, name string); 

建表之后查看表发现报错,此时排障,我们忘了将 hadoop-lzo-0.4.20.jar 放到 /opt/module/hadoop-3.1.3/share/hadoop/common/ 目录下,

hive (default)> show tables;
OK
tab_name
Failed with exception java.io.IOException:java.lang.RuntimeException: Error in configuring object

这时重新启动集群,并且启动hive 发现已经将huanhuan表展示出来了。

img
img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上软件测试知识点,真正体系化!

由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新

需要这份系统化的资料的朋友,可以戳这里获取

(2)创建一张测试表

hive (default)> create table huanhuan(id int, name string); 

建表之后查看表发现报错,此时排障,我们忘了将 hadoop-lzo-0.4.20.jar 放到 /opt/module/hadoop-3.1.3/share/hadoop/common/ 目录下,

hive (default)> show tables;
OK
tab_name
Failed with exception java.io.IOException:java.lang.RuntimeException: Error in configuring object

这时重新启动集群,并且启动hive 发现已经将huanhuan表展示出来了。

[外链图片转存中…(img-uXPU1p8s-1715551005666)]
[外链图片转存中…(img-7HkgImsl-1715551005667)]
[外链图片转存中…(img-AZvE64fl-1715551005667)]

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上软件测试知识点,真正体系化!

由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新

需要这份系统化的资料的朋友,可以戳这里获取

  • 27
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值