《饮食男女》开头说:“人生不能像做菜,把所有的料都准备好了才下锅。”

但做大数据挖掘不一样,MapReduce 不同于人生,一定要把准备工作做好了,才能顺利运行后面的步骤。如果你的 HiveQL 代码没毛病,却一运行就出现 Fail 提示,可以看看,是不是少了下面哪项准备工作?


指定队列

set mapred.job.queue.name=queue01; //自己指定一个队列

在 HADOOP 中,队列的组织是一切的基础,决定了队列管理和资源分配,一定要在程序开头指定一个队列,注意任务和资源的平衡。

自动化 MapJoin

set hive.auto.convert.join=true;

这是一步优化操作,自动化了 MapJoin,之后我们就不需要在 query 中再写了。MapJoin 用于小表 Join 大表的场景,在大表通过 Mapper 时,小表会被完全放入内存中,Hive 会在 map 端进行连接,因为 Hive 可以和内存中的小表进行逐一匹配,从而省略掉 reduce 过程。

任务并行

set hive.exec.parallel=true;
set hive.exec.parallel.thread.number=100;

参数 hive.exec.parallel 控制着同一个 sql 中是否允许并行执行,默认为 false,设置为 true 则开启任务的并行执行。并通过设置 hive.exec.parallel.thread.number 来指定同一个 sql 允许并行运行的最大线程数。

设置超时时间

set mapred.task.timeout=600000000;

这里设置的是 Job 运行多久后会因超时而被 kill 掉,根据数据量而定。我目前工作中处理的数据有上亿条,维度近千,所以设置得比较大。

“健康监测”

set mapred.healthChecker.script.timeout=600000000;

这个参数的作用是,若检测到脚本在一定时间内无响应,那么 NodeHealthCheckerService 线程会将该节点的监控状态标注为 “unhealthy”。但 Hadoop 2.x 以后,参数 mapred.healthChecker.script.timeout 的名字已经改为 mapreduce.tasktracker.healthchecker.script.timeout,虽然原名还可用,最好还是使用新的参数名。

设置容量大小

set hive.tez.container.size=10240;

Tez 是 YARN 的作业模式,hive.tez.container.size 参数可设置堆的大小,即增大内存容量。由于 D12 计算机具有 28GB 内存,因此我们常使用 10GB (10240MB) 大小的容器。

设置聚集操作执行时机

set hive.map.aggr=false;

若将该参数设置为 true,则会在 mapper 端先进行 group by,然后执行 merge 操作,减少 reduce 要处理的数据量,效率更高但需要更多内存。若将该参数设置为 false,则把前面的步骤放在了 reduce 阶段再进行。

设置 reduce 个数

set mapred.reduce.tasks=500;

该参数用于设置 reduce 的任务个数,设置为500,即生成500个文件。根据具体数据量进行调整,使得单个 map 能处理合适的数据量。


在海量数据真正跑起来前,一般需要设置的几个参数就是以上提到的啦,具体每个参数需要设置成什么值,还要根据具体的数据量和时间、设备等条件来定,可以反复尝试进行优化。

欢迎关注我的知乎专栏【数据池塘】,专注于分享机器学习、数据挖掘相关内容:https://zhuanlan.zhihu.com/datapool

⬇️ 扫描下方二维码关注公众号【数据池塘】 ⬇️

回复【算法】,获取最全面的机器学习算法网络图:

我的 Hive 为什么跑不起来/跑得慢?看看是不是少了这几行代码?相关推荐

  1. mapreduce复制连接的代码_我的 Hive 为什么跑不起来/跑得慢?看看是不是少了这几行代码?...

    <饮食男女>开头说:"人生不能像做菜,把所有的料都准备好了才下锅." 但做大数据挖掘不一样,MapReduce 不同于人生,一定要把准备工作做好了,才能顺利运行后面的步 ...

  2. 代码内容变成图片_网站只剩25行代码,真有程序员“删库跑路”?

    "可能我删了数据才会轻松吧 可能我格了硬盘才会休息吧 可能逃出了公司我就跑到天边 可能我还没找到 那个BUG--" 曾经,有一位程序员,在某个加班的深夜,一边听着<可能否&g ...

  3. 任务管理 linux指令qsub,Linux_前一个投的任务跑完再跑另一个任务_qsub_-hold_jid

    Linux_前一个投的任务跑完再跑另一个任务_qsub_-hold_jid perl program_1.pl input_1.file output_1.file perl program_2.pl ...

  4. 兄弟们,快醒醒,我们的跑马灯不跑了。

    销售GG在工作群里:"弟兄们,快醒醒,咱现场的跑马灯不跑了." 还在加班的程序猿:"已经查过了,程序没Bug." 带娃玩的硬件攻城狮:"硬件没问题,这 ...

  5. 晨跑、午后跑和夜跑对身体的影响及优缺点

    一天跑两次步,晨跑与夜跑,对身体有好处的.好处如下: 1.养成易于燃脂的好体质 有的人容易发胖的原因就在于平日运动不足,肌力下降,与其此消彼长的脂肪,更是肆无忌惮地积聚起来. 一般而言,跑步是一项有氧 ...

  6. android wear悦跑圈,悦跑圈下载-悦跑圈 安卓版v5.14.0-PC6安卓网

    悦跑圈是一款健康类app,日周月排行榜,于嘉老师的语音提醒,简单易用实用人性化设计,加上社交. 功能介绍 使用「悦跑圈」,为您开启全新的跑步生活! 这是最好玩的跑步者社区,让你一览跑者百态.靓照分享. ...

  7. 晚上跑步好吗?晨跑与夜跑利弊分析

    健身房里跑步机上一沉不变的频率空乏无味,白天的城市街道车水马龙.人潮拥挤,于是万物尚未苏醒的清晨.伴随日落而回归平静的夜晚就成了跑步爱好者们最为钟爱的"活动"时间.无论是对于上班族 ...

  8. android wear悦跑圈,悦跑圈下载_悦跑圈安卓版app下载_手心游戏

    跑步就用「悦跑圈」,悦跑悦享跑,悦跑悦快乐. 这里有精准的数据记录工具,众多优秀跑者,丰富赛事活动.无论是跑步新手还是骨灰跑者,都能在这里找到属于你的圈子. •每日签:懂你每一天的心情 悦跑日签,每天 ...

  9. android wear悦跑圈,悦跑圈下载_悦跑圈app最新v3.2.1下载_游戏吧

    悦跑圈是一款专业的运动健身软件,本作超过80%马拉松跑者都在用悦跑圈.无论是跑步新手还是骨灰跑者,都能在这里找到属于你的圈子.需要的快点下载吧. 悦跑圈v3.2.1特色: 跑步就用「悦跑圈」,悦跑悦享 ...

最新文章

  1. c语言答案填空选择,C语言试题配答案
  2. BFS和DFS优先搜索算法
  3. Oracle数据库之SQL连接查询
  4. dagger android 学习(二):AndroidInjector的使用
  5. 桶排序+基数排序+计数排序
  6. 都9012了,这几个公众号你还没关注?
  7. 解析tid数据并绘制折线图(python)
  8. scla-基础-函数-元组(0)
  9. Mysql表编码查看修改
  10. git中Bash基本操作命令
  11. logging模块(二十六)
  12. IntelliJ IDEA 2021.1.2 x64版的 IDEA 创建 jsp项目
  13. UNITY2021 开发安卓app 扫描一维二维条码
  14. DOS时代后,金山系再出神级办公软件,会像WPS一样普及
  15. 小爱(小米),天猫精灵(阿里),小度(百度),小艺(华为)智能家居系统选择
  16. 首席新媒体运营黎想教程:如何成为优秀的用户增长操盘手
  17. 获取蓝奏网盘无密码下载链接分析思路
  18. 服务器离家出走怎么修复,减肥减到“大姨妈”离家出走?教你几招把它找回来!...
  19. visual studio 2022安装报错未能安装包“Microsoft.VisualStudio.Debugger.JustInTime.Msi,version=17.1.32112.364,ch
  20. 路由性能测试工具--iperf3 应用(Jperf)

热门文章

  1. python语言的基础知识_pythone语言基础知识汇总
  2. tomcat启动成功 未加载项目_新里程|尚品食品国际贸易合伙人项目成功启动
  3. microsoftsql新建登录用户登录失败_史上最简单的Spring Security教程(九):自定义用户登录失败页面...
  4. liquibase mysql_Liquibase MySQL:语法错误附近'????????????????'
  5. windows server 2003 or 2008 远程登录时超过最大连接数的解决办法
  6. JS中创建对象的方法
  7. Let’ s Encrypt 现支持通配符的 HTTPS 认证
  8. VirtualBox 桥接模式
  9. Centos 6.4 KVM安装和配置
  10. tomcat多种部署项目方法总结