Hive on Spark && Spark on Hive配置

Hive on Spark && Spark on Hive配置


目录

  • [Hive on Spark && Spark on Hive配置](#Hive on Spark && Spark on Hive配置)
  • Spark官网
  • [Hive on Spark配置](#Hive on Spark配置)
  • [Spark on Hive配置](#Spark on Hive配置)

Spark官网

☞官网下载链接

Hive on Spark配置

由于默认的引擎是MapRduce,在任务执行过程中由Hive解析元数据,然后把sql翻译成MapReduce任务,此时这个运行效率是非常慢的,因为要落盘,有大量的IO操作,但是好处就是不会出现OOM问题,处理非常大的数据是可以用它的。Hive中集成Spark,Hive既作为元数据存储,又负责解析HQL语句,只是将Hive的引擎改为Spark,由Spark负责运算工作,Spak计算是基于内存的效率较高,但要注意内存配置,数据量的时候容器出现OOM问题。

具体配置

  1. 去官网下载Spark,解压安装(这个是带有Hadoop依赖的,非纯净版)

  2. 配置环境变量

    shell 复制代码
    export SPARK_HOME=/opt/module/spark
    export PATH=$PATH:$SPARK_HOME/bin:$SPARK_HOME/sbin
  3. 进入Hive的conf文件中,新建spark-defaults.conf,添加以下内容

    shell 复制代码
    spark.master=yarn
    spark.eventLog.enabled=true
    spark.eventLog.dir=hdfs://hadoop102:8020/spark/history-logDir
    spark.executor.memory=2g
    spark.driver.memory=2g
    spark.memory.offHeap.enabled=true
    spark.memory.offHeap.size=1g
    spark.driver.extraLibraryPath=/opt/module/hadoop-3.1.3/lib/native
    spark.executor.extraLibraryPath=/opt/module/hadoop-3.1.3/lib/native
  4. 在HDFS上面创建目录

    shell 复制代码
    hdfs dfs -mkdir -p /spark
    hdfs dfs -mkdir -p /spark/history-logDir
    hdfs dfs -mkdir -p /spark/jars
  5. 在Hive的hive-site.xml添加以下配置

    xml 复制代码
    <!--Spark依赖位置(注意:端口号8020必须和namenode的端口号一致)-->
    <property>
    	<name>spark.yarn.jars</name>
    	<value>hdfs://hadoop102:8020/spark/jars/*</value>	
    </property>
    
    <!--Hive执行引擎指定为Spark-->
    <property>
    	<name>hive.execution.engine</name>
    	<value>spark</value>
    </property>
    
    <!--Hive和Spark连接超时时间-->
    <property>
    	<name>hive.spark.client.connect.timeout</name>
    	<value>10000ms</value>
    </property>
  6. 在Spark的conf目录spark-env.sh文件中添加以下内容

    shell 复制代码
    export SPARK_DIST_CLASSPATH=$(hadoop classpath)
  7. 去官网下载Spark纯净版的安装包,把里面的jars目录下的所有文件,上传到刚刚HDFS创建的jars目录

  8. 测试:进入Hive客户端,创建一张测试表,通过insert测试是否以Spark执行

Spark on Hive配置

Spark on Hive是共用Hive中的元数据,由Spark来解析与执行sql语句,而且Spark提供了更灵活的编程接口,适用于各种数据处理需求,性能高于Hive on Spark。

  1. 把Hive中的hive-site.xml拷贝到Spark的conf目录下

  2. 然后添加以下内容,如果hive-site.xml包含以下配置,可不做修改,一定要确保Hive中的hive-site.xml文件也配置了开启元数据访问

    xml 复制代码
    <?xml version="1.0"?>
    <?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
    <configuration>
    <!--Spark读取表的位置-->
        <property>
                <name>hive.metastore.warehouse.dir</name>
                <value>/user/hive/warehouse</value>
        </property>
    <!--Spark读取Hive元数据-->
        <property>
                <name>hive.metastore.uris</name>
                <value>thrift://hadoop102:9083</value>
        </property>
    </configuration>
  3. 将对应版本的mysql的驱动拷贝到Spark的jars目录下

    shell 复制代码
    cp /opt/module/hive-3.1.2/lib/mysql-connector-java-8.0.17.jar /opt/module/spark-3.0.0-with-hadoop/jars/
  4. 启动Hive的MetaStore(元数据)服务

    shell 复制代码
    nohup hive --service metastore 1> /opt/moule/hive-3.1.2/logs/metastore.log 2>&1 &
  5. 然后启动spark-shell测试

    shell 复制代码
    scala> spark.sql("show databases").show();
    +---------+
    |namespace|
    +---------+
    |  default|
    |      gxc|
    |     test|
    +---------+
  6. 如果spark-shell里面查询数据出现中文乱码,则在Spark的conf目录中的spark-default.conf中添加以下配置

    shell 复制代码
    spark.driver.extraJavaOptions -Dfile.encoding=UTF-8
    spark.executor.extraJavaOptions -Dfile.encoding=UTF-8
  7. 到此结束

相关推荐
武子康1 天前
大数据-236 离线数仓 - 会员指标验证、DataX 导出与广告业务 ODS/DWD/ADS 全流程
大数据·后端·apache hive
肌肉娃子2 天前
20260227.spark.Spark 性能刺客:千万别在 for 循环里写 withColumn
spark
武子康2 天前
大数据-235 离线数仓 - 实战:Flume+HDFS+Hive 搭建 ODS/DWD/DWS/ADS 会员分析链路
大数据·后端·apache hive
DianSan_ERP3 天前
电商API接口全链路监控:构建坚不可摧的线上运维防线
大数据·运维·网络·人工智能·git·servlet
够快云库3 天前
能源行业非结构化数据治理实战:从数据沼泽到智能资产
大数据·人工智能·机器学习·企业文件安全
AI周红伟3 天前
周红伟:智能体全栈构建实操:OpenClaw部署+Agent Skills+Seedance+RAG从入门到实战
大数据·人工智能·大模型·智能体
B站计算机毕业设计超人3 天前
计算机毕业设计Django+Vue.js高考推荐系统 高考可视化 大数据毕业设计(源码+LW文档+PPT+详细讲解)
大数据·vue.js·hadoop·django·毕业设计·课程设计·推荐算法
计算机程序猿学长3 天前
大数据毕业设计-基于django的音乐网站数据分析管理系统的设计与实现(源码+LW+部署文档+全bao+远程调试+代码讲解等)
大数据·django·课程设计
B站计算机毕业设计超人3 天前
计算机毕业设计Django+Vue.js音乐推荐系统 音乐可视化 大数据毕业设计 (源码+文档+PPT+讲解)
大数据·vue.js·hadoop·python·spark·django·课程设计
十月南城3 天前
数据湖技术对比——Iceberg、Hudi、Delta的表格格式与维护策略
大数据·数据库·数据仓库·hive·hadoop·spark