IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 大数据 -> 记一次hive查询报错的问题 -> 正文阅读

[大数据]记一次hive查询报错的问题

记一次hive查询报错的问题

CDH中安装完hive后,执行select count(*) from table,居然报错了
在这里插入图片描述
进入yarn的webui页面,查看对应的任务的logs
在这里插入图片描述
重点是这句:

Error running local (uberized) 'child' : java.lang.UnsatisfiedLinkError: org.apache.hadoop.util.NativeCodeLoader.buildSupportsSnappy()Z

网上找了一圈,说是Mapreduce任务进入Uber模式,但是ApplicationMaster没有加载Native Libraries,并且提供了一种方法可以试试:

1.在CM上设置参数:yarn.app.mapreduce.am.command-opts为" -Djava.net.preferIPv4Stack=true - Djava.library.path=/opt/cloudera/parcels/CDH-5.5.4-1.cdh5.5.4.p0.9/lib/hadoop/lib/native"
2.在Hive客户端里制定参数:set yarn.app.mapreduce.am.command-opts=-Djava.library.path=/opt/cloudera/parcels/CDH-5.5.4-1.cdh5.5.4.p0.9/lib/hadoop/lib/native
存在问题:如果在Hive中set参数,貌似参数值不能出现空格,也就是说不能使用多个-D的方式。

经过测试,还是没有解决问题,最后在yarn的配置里面把mapreduce.job.ubertask.enable的选项取消勾选,再次运行就可以成功。
在这里插入图片描述
顺便查了一下,Uber模式是Hadoop2.0中实现的一种针对MR小作业的优化机制。mapreduce.job.ubertask.enable用来控制是否开启Uber运行模式,默认为false。而启用Uber运行模式会对小作业进行优化,不会给每个任务分别申请分配Container资源,这些小任务将统一在一个Container中按照先执行map任务后执行reduce任务的顺序串行执行。
Hadoop中对Uber模式的定义:

1:mapreduce.job.ubertask.enable=true,首先开启Uber模式,默认是false

2:mapreduce.job.ubertask.maxmaps map任务数的阀值默认是9

mapreduce.job.ubertask.maxreduces reduce任务数的阀值默认是1

即:map的数量<=9, reduce<=1

3:所有的输入文件的总长度<=默认的块的大小(128M)

4:mapreduce.map.memory.mb(默认是1024)<=内存需求(内存需求的大小由yarn.app.mapreduce.am.resource.mb来决定,默认1536M)

5:cpu<=yarn.app.mapreduce.am.resource.cpu-vcores(默认1)

6:采用非链式方式运行MR(链式Job是指集成了org.apache.hadoop.mapreduce.lib.chain.ChainReducer和org.apache.hadoop.mapreduce.lib.chain.ChainMapper类的用户Map或Reduce程序)

Uber模式优点:

针对多个小作业,开启uber模式,mapreduce会将所有的task任务放在一个JVM中完成,就需要每个task都去申请资源,启动一个Container容器,

而是多个task申请一份资源,资源会重复的利用,这样的话可以节省cpu及网络Io,磁盘Io的消耗,节省了job运行的时间。

至于为什么开始Uber模式后运行hivesql会报错,等后续找到原因再来更新!

  大数据 最新文章
实现Kafka至少消费一次
亚马逊云科技:还在苦于ETL?Zero ETL的时代
初探MapReduce
【SpringBoot框架篇】32.基于注解+redis实现
Elasticsearch:如何减少 Elasticsearch 集
Go redis操作
Redis面试题
专题五 Redis高并发场景
基于GBase8s和Calcite的多数据源查询
Redis——底层数据结构原理
上一篇文章      下一篇文章      查看所有文章
加:2021-07-14 10:59:11  更:2021-07-14 11:02:13 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/3 0:42:37-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码