Hive 引擎简介

Hive 引擎包括:默认 MR、tez、spark

最底层的引擎就是MR (Mapreduce)无需配置,Hive运行自带

Hive on Tez 配置:https://blog.csdn.net/weixin_45417821/article/details/115181000

Hive on Spark:Hive 既作为存储元数据又负责 SQL 的解析优化,语法是 HQL 语法,执行引擎变成了 Spark,Spark 负责采用 RDD 执行。

Spark on Hive : Hive 只作为存储元数据,Spark 负责 SQL 解析优化,语法是 Spark SQL语法,Spark 负责采用 RDD 执行。

搭建环境的前奏https://blog.csdn.net/weixin_45417821/article/details/113704258

环境配置 (ssh已经搭好)

  • Java 1.8.0+
  • Hadoop 3.1.3+
  • MySQL
  • Hive 3.1.2
  • Spark 3.0.0

为了方便只用单台虚拟机去跑,多台和单台一个套路,分发即可

JDK准备

1)卸载现有JDK

[luanhao@Bigdata00 software]$ sudo rpm -qa | grep -i java | xargs -n1 sudo rpm -e --nodeps

2)解压JDK到/opt/module目录下

[luanhao@Bigdata00 software]$ tar -zxvf jdk-8u212-linux-x64.tar.gz -C /opt/module/

3)配置JDK环境变量

​ (1)进入 /etc/profile

[luanhao@Bigdata00 module]# sudo vim /etc/profile

添加如下内容,然后保存(:wq)退出

#JAVA_HOME
export JAVA_HOME=/opt/module/jdk1.8.0_212
export PATH=$PATH:$JAVA_HOME/bin

(2)让环境变量生效

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

(3)测试JDK是否安装成功

[luanhao@Bigdata00 module]$ java -version
java version "1.8.0_212"
Java(TM) SE Runtime Environment (build 1.8.0_212-b10)
Java HotSpot(TM) 64-Bit Server VM (build 25.212-b10, mixed mode)

如果能看到以下结果、则Java正常安装

java version "1.8.0_212"

Hadoop准备

部署

1)进入到Hadoop安装包路径下

[luanhao@Bigdata00 ~]$ cd /opt/software/

2)解压安装文件到/opt/module下面

[luanhao@Bigdata00 software]$ tar -zxvf hadoop-3.1.3.tar.gz -C /opt/module/

3)查看是否解压成功

[luanhao@Bigdata00 software]$ ls /opt/module/
hadoop-3.1.3

4)将Hadoop添加到环境变量

​ (1)获取Hadoop安装路径

[luanhao@Bigdata00 hadoop-3.1.3]$ pwd
/opt/module/hadoop-3.1.3

​ (2)打开/etc/profile文件

[luanhao@Bigdata00 hadoop-3.1.3]$ sudo vim /etc/profile
在profile文件末尾添加JDK路径:(shitf+g)
#HADOOP_HOME
export HADOOP_HOME=/opt/module/hadoop-3.1.3
export PATH=$PATH:$HADOOP_HOME/bin
export PATH=$PATH:$HADOOP_HOME/sbin

​ (3)刷新并查看是否配置成功

[luanhao@Bigdata00 module]$ source /etc/profile
[luanhao@Bigdata00 module]$ hadoop version
Hadoop 3.1.3
Source code repository https://gitbox.apache.org/repos/asf/hadoop.git -r ba631c436b806728f8ec2f54ab1e289526c90579
Compiled by ztang on 2019-09-12T02:47Z
Compiled with protoc 2.5.0
From source with checksum ec785077c385118ac91aadde5ec9799
This command was run using /opt/module/hadoop-3.1.3/share/hadoop/common/hadoop-common-3.1.3.jar

配置集群

1)核心配置文件

配置core-site.xml

文件内容如下:
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>

<configuration>
	<!-- 指定NameNode的地址 -->
    <property>
        <name>fs.defaultFS</name>
        <value>hdfs://Bigdata00:9820</value>
</property>
<!-- 指定hadoop数据的存储目录 -->
    <property>
        <name>hadoop.tmp.dir</name>
        <value>/opt/module/hadoop-3.1.3/data</value>
</property>

<!-- 配置HDFS网页登录使用的静态用户为luanhao -->
    <property>
        <name>hadoop.http.staticuser.user</name>
        <value>luanhao</value>
</property>

<!-- 配置该luanhao(superUser)允许通过代理访问的主机节点 -->
    <property>
        <name>hadoop.proxyuser.luanhao.hosts</name>
        <value>*</value>
</property>
<!-- 配置该luanhao(superUser)允许通过代理用户所属组 -->
    <property>
        <name>hadoop.proxyuser.luanhao.groups</name>
        <value>*</value>
</property>
<!-- 配置该luanhao(superUser)允许通过代理的用户-->
    <property>
        <name>hadoop.proxyuser.luanhao.groups</name>
        <value>*</value>
</property>
</configuration>

2)HDFS配置文件

配置hdfs-site.xml

<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>

<configuration>
	<!-- nn web端访问地址-->
	<property>
        <name>dfs.namenode.http-address</name>
        <value>Bigdata00:9870</value>
    </property>
    
	<!-- 2nn web端访问地址-->
    <property>
        <name>dfs.namenode.secondary.http-address</name>
        <value>Bigdata00:9868</value>
    </property>
    
    <!-- 测试环境指定HDFS副本的数量1 -->
    <property>
        <name>dfs.replication</name>
        <value>1</value>
    </property>
</configuration>

3)YARN配置文件

配置yarn-site.xml

<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>

<configuration>
	<!-- 指定MR走shuffle -->
    <property>
        <name>yarn.nodemanager.aux-services</name>
        <value>mapreduce_shuffle</value>
    </property>
    
    <!-- 指定ResourceManager的地址-->
    <property>
        <name>yarn.resourcemanager.hostname</name>
        <value>Bigdata00</value>
    </property>
    
    <!-- 环境变量的继承 -->
    <property>
        <name>yarn.nodemanager.env-whitelist</name>
   <value>JAVA_HOME,HADOOP_COMMON_HOME,HADOOP_HDFS_HOME,HADOOP_CONF_DIR,CLASSPATH_PREPEND_DISTCACHE,HADOOP_YARN_HOME,HADOOP_MAPRED_HOME</value>
    </property>
    
    <!-- yarn容器允许分配的最大最小内存 -->
    <property>
        <name>yarn.scheduler.minimum-allocation-mb</name>
        <value>512</value>
    </property>
    <property>
        <name>yarn.scheduler.maximum-allocation-mb</name>
        <value>4096</value>
    </property>
    
    <!-- yarn容器允许管理的物理内存大小 -->
    <property>
        <name>yarn.nodemanager.resource.memory-mb</name>
        <value>4096</value>
    </property>
    
    <!-- 关闭yarn对物理内存和虚拟内存的限制检查 -->
    <property>
        <name>yarn.nodemanager.pmem-check-enabled</name>
        <value>false</value>
    </property>
    <property>
        <name>yarn.nodemanager.vmem-check-enabled</name>
        <value>false</value>
    </property>
</configuration>

4)MapReduce配置文件

配置mapred-site.xml

<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>

<configuration>
	<!-- 指定MapReduce程序运行在Yarn上 -->
    <property>
        <name>mapreduce.framework.name</name>
        <value>yarn</value>
    </property>
</configuration>

5)配置workers

Bigdata00

6)配置hadoop-env.sh

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表展示出来了。

hive (default)> show tables;
OK
tab_name
huanhuan
Time taken: 3.253 seconds, Fetched: 1 row(s)

(3)通过 insert 测试效果

hive (default)> insert into huanhuan values(1,'haoge');

如果出现这个页面,说明成功

在这里插入图片描述

添加数据时最开始出现这个问题 。。。。

hive (default)> insert into huanhuan values(1,'haoge');
Query ID = luanhao_20210327142214_4ee343e7-52b1-4bfa-81a7-958a03175150
Total jobs = 1
Launching Job 1 out of 1
In order to change the average load for a reducer (in bytes):
  set hive.exec.reducers.bytes.per.reducer=<number>
In order to limit the maximum number of reducers:
  set hive.exec.reducers.max=<number>
In order to set a constant number of reducers:
  set mapreduce.job.reduces=<number>
Job failed with java.lang.ClassNotFoundException: Class com.hadoop.compression.lzo.LzoCodec not found
FAILED: Execution Error, return code 3 from org.apache.hadoop.hive.ql.exec.spark.SparkTask. Spark job failed during runtime. Please check stacktrace for the root cause.

报错信息如下

Job failed with java.lang.ClassNotFoundException: Class com.hadoop.compression.lzo.LzoCodec not found

FAILED: Execution Error, return code 3 from org.apache.hadoop.hive.ql.exec.spark.SparkTask. Spark job failed during runtime. Please check stacktrace for the root cause.

此时说明yarn 分配的内存太少了 ,我们把虚拟机的内存调整为 12g ( 前提是要将虚拟机的内存扩到12g ,才可以调整) 然后关闭集群,找到 yarn-site.xml 文件

修改如下内容:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Ida40wAQ-1616838151812)(C:\Users\栾昊\AppData\Roaming\Typora\typora-user-images\image-20210327171941838.png)]

给Yarn容器最大内存分配 12288 , 运行管理物理内存分配 12288 ,重新启动集群

在这里插入图片描述

此时最大内存 12 G

之后重新编写spark-defaults.conf 文件 给堆内内存扩大到2G

spark.master yarn
spark.eventLog.enabled true
spark.eventLog.dir hdfs://Bigdata00:8020/spark-history
spark.executor.memory 2g  # 堆内内存,扩大到2g
spark.driver.memory 1g    # 运行内存

堆内内存:

  • 执行内存 (Execution Memory) : 主要用于存放 Shuffle、Join、Sort、Aggregation 等计算过程中的临时数据;
  • 存储内存 (Storage Memory) : 主要用于存储 spark 的 cache 数据,例如RDD的缓存、unroll数据;
  • 用户内存(User Memory): 主要用于存储 RDD 转换操作所需要的数据,例如 RDD 依赖等信息;
  • 预留内存(Reserved Memory): 系统预留内存,会用来存储Spark内部对象。

届时4天完成 Hive on Spark 。。。。

END

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐