当前位置: 首页 > news >正文

从Hive on YARN到Hive on Spark

文章目录

  • 1. 实战概述
  • 2. 实战步骤
    • 2.1 修改Hive配置文件
    • 2.2 分发Hive配置文件到Spark配置目录
    • 2.3 分发HikariCP数据库连接池JAR包
    • 2.4 修改Hadoop核心配置文件
    • 2.5 启动Hadoop服务
    • 2.6 启动Hive相关服务
    • 2.7 进行词频统计
      • 2.7.1 采用Hive on YARN来实现
      • 2.7.2 采用Hive on Spark来实现
      • 2.7.3 两种实现方式的简单对比
  • 3. 实战总结

1. 实战概述

  • 本实战通过配置 Hive 与 Spark 集成,分别基于 YARN(MapReduce)和 Spark 引擎执行词频统计任务,验证了 Hive on Spark 在查询性能上的显著优势,同时展示了 Hadoop、Hive 和 Spark 的协同部署与关键配置步骤。

2. 实战步骤

2.1 修改Hive配置文件

  1. 切换到Hive配置目录
    • 执行命令:cd $HIVE_HOME/conf
      在这里插入图片描述
  2. 修改Hive配置文件
    • 执行命令:vim hive-site.xml,添加两个属性设置
      在这里插入图片描述

      <property><name>hive.metastore.schema.verification</name><value>false</value>
      </property>
      <property><name>datanucleus.connectionPoolingType</name><value>dbcp</value>
      </property>
      
    • 配置说明

      1. hive.metastore.schema.verification=false 表示禁用元数据 schema 版本校验,便于升级或兼容不同版本;
      2. datanucleus.connectionPoolingType=dbcp 指定使用 DBCP 作为数据库连接池类型,提升元数据操作性能。

2.2 分发Hive配置文件到Spark配置目录

  1. 主节点上拷贝Hive配置文件到Spark配置目录

    • 执行命令:cp hive-site.xml $SPARK_HOME/conf
      在这里插入图片描述
  2. 主节点上分发Hive配置文件到slave1的Spark配置目录

    • 执行命令:scp hive-site.xml root@slave1:$SPARK_HOME/conf
      在这里插入图片描述
  3. 主节点上分发Hive配置文件到slave2的Spark配置目录

    • 执行命令:scp hive-site.xml root@slave2:$SPARK_HOME/conf
      在这里插入图片描述

2.3 分发HikariCP数据库连接池JAR包

  1. 切换到Hive的库目录

    • 执行命令:cd $HIVE_HOME/lib
      在这里插入图片描述
  2. 主节点上将HikariCP数据库连接池JAR包复制到Spark的jars目录

    • 执行命令:cp HikariCP-2.6.1.jar $SPARK_HOME/jars
      在这里插入图片描述
  3. 主节点上将HikariCP数据库连接池JAR 包分发到slave1的Spark的jars目录

    • 执行命令:scp HikariCP-2.6.1.jar root@slave1:$SPARK_HOME/jars
      在这里插入图片描述
  4. 主节点上将HikariCP数据库连接池JAR包分发到slave2的Spark的jars目录

    • 执行命令:scp HikariCP-2.6.1.jar root@slave2:$SPARK_HOME/jars
      在这里插入图片描述

2.4 修改Hadoop核心配置文件

  1. 进入Hadoop配置目录
    • 执行命令:cd $HADOOP_HOME/etc/hadoop
      在这里插入图片描述
  2. 修改Hadoop核心配置文件
    • 执行命令:vim core-site.xml,添加两个属性
      在这里插入图片描述

      <property><name>hadoop.proxyuser.root.hosts</name><value>*</value>
      </property>
      <property><name>hadoop.proxyuser.root.groups</name><value>*</value>
      </property>
      
    • 配置说明:该配置允许 root 用户代理访问 Hadoop 服务。hadoop.proxyuser.root.hosts=* 表示允许所有主机以 root 身份提交代理请求;hadoop.proxyuser.root.groups=* 表示 root 可代表任意用户组执行操作。常用于 Spark、Hive 等服务通过 root 代理访问 HDFS/YARN,但存在安全风险,生产环境应限制具体主机和组。

  3. 将Hadoop核心配置文件分发到slave1节点
    • 执行命令:scp core-site.xml root@slave1:$HADOOP_HOME/etc/hadoop
      在这里插入图片描述
  4. 将Hadoop核心配置文件分发到slave2节点
    • 执行命令:scp core-site.xml root@slave2:$HADOOP_HOME/etc/hadoop
      在这里插入图片描述

2.5 启动Hadoop服务

  • 执行命令:start-dfs.sh
    在这里插入图片描述
  • 执行命令:start-yarn.sh
    在这里插入图片描述

2.6 启动Hive相关服务

  • 执行命令:nohup hive --service metastore >> log.out 2>&1 &
    在这里插入图片描述
  • 执行命令:nohup hive --service hiveserver2 >> log.out 2>&1 &
    在这里插入图片描述

2.7 进行词频统计

2.7.1 采用Hive on YARN来实现

  • 执行命令:hive,进入Hive客户端
    在这里插入图片描述

  • 执行命令:create external table t_word(words string) location '/hivewc/input'; 基于HDFS文件创建外部表
    在这里插入图片描述

  • 执行命令:select word, count(*) from (select explode(split(words, ' ')) as word from t_word) as v_word group by word;
    在这里插入图片描述

  • 结果说明:该查询在 Hive 中执行词频统计,通过 explodesplit 对文本字段进行分词并聚合。结果返回 9 行数据,显示各单词及其出现次数(如“hadoop”出现 3 次)。执行耗时 33.986 秒,使用 MapReduce 引擎完成计算,验证了 Hive 基于 Hadoop 的批处理能力。

  • 执行命令:exit;,退出Hive客户端
    在这里插入图片描述

2.7.2 采用Hive on Spark来实现

  • 执行命令:spark-sql
    在这里插入图片描述
  • 执行命令:show databases;
    在这里插入图片描述
  • 结果说明:该命令在 Spark SQL 中执行 show databases;,返回结果为 default,表明当前连接的 Hive 元数据中存在默认数据库。查询耗时 2.42 秒,成功获取 1 行数据,说明 Spark SQL 已正确集成 Hive 元数据服务,可正常访问 Hive 数据库结构。
  • 执行命令:select word, count(*) from (select explode(split(words, ' ')) as word from t_word) as v_word group by word;
    在这里插入图片描述
  • 结果说明:该查询对文本字段 words 进行分词并统计词频,结果返回 9 行数据,显示各单词及其出现次数(如 “hadoop” 出现 3 次)。执行耗时 3.439 秒,说明 Spark SQL 成功处理了数据解析与聚合操作,验证了 Hive on Spark 的计算能力。

2.7.3 两种实现方式的简单对比

  • Hive on YARN(MapReduce)耗时 33.986 秒,而 Hive on Spark 仅需 3.439 秒,性能显著提升。两者均基于同一 Hive 元数据和外部表,但计算引擎不同:MapReduce 启动开销大、适合稳定批处理;Spark 内存计算快、适合迭代与交互式查询,验证了 Spark 作为 Hive 执行引擎的高效性。

3. 实战总结

  • 本次实战成功完成了 Hive on YARN 与 Hive on Spark 两种执行模式的部署与对比验证。通过配置 hive-site.xml、分发依赖 JAR 包、设置 Hadoop 代理用户权限,并启动 HDFS、YARN、Hive Metastore 及 HiveServer2 服务,构建了完整的数据处理环境。基于同一外部表执行词频统计任务,Hive on MapReduce 耗时约 34 秒,而 Hive on Spark 仅需约 3.4 秒,性能提升近 10 倍,充分体现了 Spark 内存计算在迭代和聚合场景下的高效性。实验不仅验证了 Hive 与 Spark 的无缝集成能力,也为后续选择合适执行引擎提供了实践依据,同时强调了生产环境中需优化安全配置(如限制 proxyuser 范围)的重要性。
http://www.dtcms.com/a/578140.html

相关文章:

  • 创作写作-李劭卓
  • 论文分享 |Spark-TTS:用解耦语音令牌实现高效可控的语音合成
  • Spark 文本分类实战经验总结
  • 英伟达体系内关于 DGX Spark 的讨论观点整理
  • 模版型网站a站为什么会凉
  • 强软弱虚四种引用
  • [Esterel大师课] Gérard Berry:使用Esterel v7进行同步多时钟电路设计(2013)
  • 有什么学做木工的网站吗WordPress添加下载弹窗
  • 目标检测模型SSD详解与实现
  • 网站弹窗广告代码企业官方网站的作用
  • 网站建设排行山西省确诊病例最新情况
  • 线程池浅谈
  • KubeSphere在线安装单节点K8S集群
  • 北京安慧桥网站建设口碑好的家装前十强
  • 著名建筑网站正规的教育机构有哪些
  • Linux - Vault
  • VSCode+Cline部署本地爬虫fetch-mcp实战
  • 使用python-pandas-openpyxl编写运营查询小工具
  • Label Studio 安装与简单使用指南
  • 宁波正规网站seo公司php网站开发机试题目
  • 牛客小白月赛122 D题x_to_y_2
  • 生态环境影响评价图件制作:融合ArcGIS与ENVI,掌握土地利用、植被覆盖、土壤侵蚀、水系提取等专题制图技术!
  • 深入理解 Vue3 Vapor 模式:从原理到实践
  • leeCode hot 100 !!!持续更新中
  • 想学网站建设选计算机应用技术还是计算机网络技术哪个专业啊网站建设工单系统护语
  • WordPress魔方格子做网站优化费用
  • 高校实验室建设方案解析:从规划到落地的全流程指南
  • javaweb前端基础
  • 从“会烧开水”到“知其所以然”:扩散模型文生图的理论基石
  • SQL注入之二次、加解密、DNS等注入