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. 到此结束

相关推荐
遇码2 小时前
流式调用中途断连别直接报错:瞬态故障识别、退避重试与中文根因诊断的搭建方法
大数据·人工智能·ai·rust·数据分析·大模型·agent
JXJD20043 小时前
224G PAM4 高速线束:阻抗匹配设计与损耗控制的核心逻辑
大数据·ai
康实训3 小时前
老年评估仿真实训平台架构设计与老年人能力评估实训室教学落地实践
大数据·人工智能·算法·实训室·实训室建设
ha_lydms3 小时前
Datetime Functions(日期时间函数)
大数据·hadoop·阿里云·spark·数据处理·dataworks·maxcompute
lisw053 小时前
制造业信息化:现代工业的发展趋势!
大数据·网络·人工智能
AllData公司负责人3 小时前
AllData搭建大模型资产中台集成开源项目BISHENG/Crater/Coze-Studio/Coze-Loop/DataFIow,建设AI大模型开发底座
大数据·人工智能·开源·bisheng·coze-studio·crater·datafiow
cc5725026533 小时前
2027校招岗位拆解:数学与应用数学转量化运营,SQL、Python与量化研究要求有何不同?
大数据
cspttty4 小时前
2027用户研究求职准备:应用统计学如何补齐研究设计与业务表达
大数据·数据库
麦豆GEO4 小时前
GEO与传统内容营销的核心差异:AI时代内容运营的全面升级
大数据·人工智能·内容运营
ha_lydms5 小时前
Bitwise Functions(位运算函数)
大数据·hadoop·阿里云·spark·数据处理·dataworks·maxcompute