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

相关推荐
电商API_180079052471 小时前
淘宝详情数据 API 返回字段全解析:核心字段说明 + 开发避坑指南
大数据·数据库·性能优化·数据挖掘·数据分析·网络爬虫
2501_941807261 小时前
可持续发展与绿色科技的未来:从创新到实践
大数据·人工智能·物联网
武子康1 小时前
大数据-162 Apache Kylin 增量 Cube 与 Segment 实战:按天分区增量构建指南
大数据·后端·apache kylin
小王毕业啦1 小时前
1999-2023年 地级市-数字经济综合发展指数
大数据·人工智能·数据挖掘·数据分析·数据统计·社科数据·实证数据
bigdata-rookie5 小时前
Spark SQL 简介
大数据·sql·spark
一只会写代码的猫10 小时前
可持续发展中的绿色科技:推动未来的环保创新
大数据·人工智能
沧海寄馀生10 小时前
Apache Hadoop生态组件部署分享-Hadoop
大数据·hadoop·分布式·apache
毕设源码-朱学姐10 小时前
【开题答辩全过程】以 基于Hadoop的豆瓣电影数据分析系统设计与实现为例,包含答辩的问题和答案
大数据·hadoop·分布式
原神启动111 小时前
云计算大数据——Nginx入门篇( Web 核心概念、HTTP/HTTPS协议 与 Nginx 安装)
大数据·http·云计算