Hive 运维中遇到的问题

1、hive job并行度问题

开发同事问为什么他的hive job 排队 第一个完成后才会开始第二个  ,查询文档后找到这样一个参数

执行程序初始数

spark.dynamicAllocation.initialExecutors

执行程序下限数

spark.dynamicAllocation.minExecutors

这两个参数应该是需要同时配置 只配置第一个不生效

刚开始是1  配置了2 之后开发同事反馈第三个开始排队 ,确认配置的有效

2,hive运行报错

Logging initialized using configuration in jar:file:/opt/cloudera/parcels/CDH-6.3.2-1.cdh6.3.2.p0.1605554/jars/hive-common-2.1.1-cdh6.3.2.jar!/hive-log4j2.properties Async: false

之前解决别的错误的时候在hive里加了一行

export HIVE_AUX_JARS_PATH=/opt/cloudera/parcels/CDH-6.3.2-1.cdh6.3.2.p0.1605554/lib/hive/auxlib

虽然没解决问题但是忘记回滚了 删掉这行就行,应该是依赖冲突了

3 hive beeline 报错

Error: Error running query: java.lang.NoClassDefFoundError: Could not initialize class org.apache.atlas.hive.hook.HiveHook (state=,code=0)

  1. 需要把atlas-application.properties打入atlas-plugin-classloader-1.2.0.jar不然beeline连接hiveserver2的时候调用hook会找不到配置文件!注意要在同级目录打包!这里我也犯错了,不然atlas-application.properties不会在jar包里的第一级目录,还是会找不到!
    zip -u atlas-plugin-classloader-1.2.0.jar  atlas-application.properties
  2. hiveserver2也要配置,搜hive-site,在hive-site.xml 的 HiveServer2 高级配置代码段(安全阀)下配置,想要beeline需要配置hive.reloadable.aux.jars.path参数。 这里应该在配置atlas的时候配置过了
  3. 搜hiveserver,翻到最后一页,这里也添加上hook依赖的jar包

4 .hive 导入导出es数据报错、

FAILED: RuntimeException org.apache.hadoop.hive.ql.metadata.HiveException: Failed with exception Cannot detect ES version - typically this happens if the network/Elasticsearch cluster is not accessible or when targeting a WAN/Cloud instance without the proper setting 'es.nodes.wan.only'org.elasticsearch.hadoop.EsHadoopIllegalArgumentException: Cannot detect ES version - typically this happens if the network/Elasticsearch cluster is not accessible or when targeting a WAN/Cloud instance without the proper setting 'es.nodes.wan.only'

基本是网络或者服务问题 可以检查一下hive和es之间的网络 同时es的服务状态也需要检查

5,集群加入Kerberos之后 hive 查hbase报错

Caused by: org.apache.hadoop.hbase.ipc.RemoteWithExtrasException(org.apache.hadoop.hbase.security.AccessDeniedException): org.apache.hadoop.hbase.security.AccessDeniedException: Insufficient permissions (user=hive/hive@WC.COM, scope=bdm:ma_crm_customer_contact, params=[table=bdm:ma_crm_customer_contact],action=CREATE)

这是hive这个用户对hbase没权限导致的

grant 'hive','RWX','table'

授权单表

grant 'hive','RWCA'

授权所有,比如创建之类的权限

6、WARN spark.SparkConf: The configuration key 'spark.yarn.driver.memoryOverhead' has been deprecated as of Spark 2.3 and may be removed in the future. Please use the new key 'spark.driver.memoryOverhead' instead.
22/02/25 13:53:37 WARN spark.SparkConf: The configuration key 'spark.yarn.executor.memoryOverhead' has been deprecated as of Spark 2.3 and may be removed in the future. Please use the new key 'spark.executor.memoryOverhead' instead.

CDH上在

hive-site.xml 的 Hive 服务高级配置代码段(安全阀)

添加

spark.driver.memoryOverhead

这个配置就能覆盖本身的spark.yarn.driver.memoryOverhead这个配置

7、hive.exec.post.hooks Class not found: org.apache.atlas.hive.hook.HiveHook

主要是某个节点上的sqoop任务都会发生问题,检查该节点的hive的lib下的jar包 果然发现没有将atlas的包搬过去,
解决方法:

将/usr/local/src/atlas/apache-atlas-2.0.0/hook/hive所有jar包拷贝/opt/cloudera/parcels/CDH/lib/hive/lib目录下
 

8、UnresolvedAddressException: undefined 

 解析不了主机名   机器没配hosts 如果没找到 那可能是链路上的某台。。不用找别的问题  肯定是 ,仔细检查吧

9、远程访问时间和本地时间不一致

开发同事反馈任务的时间在各个节点上不一致 ,ssh扫了一下 确实有不一致的 但是登录上去确实是对的,远程访问时间和本地时间不一致 

 这是因为Local time和本地时间不一致 

ll /etc/localtime
看一下localtime文件指向谁 我这指向了newyork

rm -f /etc/localtime
ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime

解决 

10、Hive数据拉取es报错

数据从hive拉取es  Hive表的存储结构不能为 parquet 格式

 解决方案:改成默认存储格式就行了

11、hiveOnSpak客户端RemoteSparkDriver超时

原因 集群资源使用率过高时可能会导致Hive On Spark查询失败-查询超时。 从hive on spark的架构看出超时的位置:

修改以下参数,重启集群
# 在Hive client和远程Spark driver通信过程中,随机生成密码的比特数。最好设置成8的倍数。 
hive.spark.client.secret.bits
# 远程Spark drive用于处理RPC事件所用的最大线程数,默认是8。 
hive.spark.client.rpc.threads
# Hive client和远程Spark driver通信最大的消息大小(单位:byte),默认是50MB。 
hive.spark.client.rpc.max.size
# 远程Spark driver的通道日志级别,必须是DEBUG, ERROR, INFO, TRACE, WARN中的一个。 
hive.spark.client.channel.log.level
# 用于身份验证的SASL机制的名称。
hive.spark.client.rpc.sasl.mechanisms
 
#生产集群设置的相应参数:
hive.spark.client.future.timeout=360s ``# Hive client请求Spark driver的超时时间,如果没有指定时间单位,默认就是秒。
hive.metastore.client.socket.timeout=360s ``# 客户端socket超时时间,默认20秒。
hive.spark.client.connect.timeout=360000ms ``# Spark driver连接Hive client的超时时间,如果没有指定时间单位,默认就是毫秒。
hive.spark.client.server.connect.timeout=360000ms ``# Hive client和远程Spark driver握手时的超时时间,这个会在两边都检查的,如果没有指定时间单位,默认就是毫秒。
hive.spark.job.monitor.timeout=180s ``# Job监控获取Spark作业状态的超时时间,如果没有指定时间单位,默认就是秒。

12、Failed to open new session: Couldn't create directory /tmp/ 

/tmp磁盘满了 

13、Failed with exception java.io.IOException:java.lang.IllegalArgumentException: java.net.URISyntaxException: Relative path in absolute URI: ${system:user.name%}

解决方法:

编辑 hive-site.xml 文件,添加下边的属性

<property>
<name>system:java.io.tmpdir</name>
<value>/home/hive/apache-hive-1.2.2-bin/iotmp</value>
<description/>
</property>

并修改属性

hive.exec.local.scratchdir

 <property>
    <name>hive.exec.local.scratchdir</name>
    <value>/home/hive/apache-hive-1.2.2-bin/tmp/${user.name}</value>
    <description>Local scratch space for Hive jobs</description>
  </property>

问题就可以解决了。

14、hive脚本报错 unable to inherit permissions for file

hive的查询结果在在进行move操作时,需要进行文件权限的授权,多个文件的授权是并发进行的,hive中该源码是在一个线程池中执行的,该操作在多线程时线程同步有问题的该异常,这是hive的一个bug,目前截止目前的最新版本Apache Hive 2.1.1还没有修复该问题;
可以通过关闭hive的文件权限继承 来规避该问题。

在你的hql脚本里加一行 

set  hive.warehouse.subdir.inherit.perms=false;

15、hue+hive报错 Bad status: 3 (PLAIN auth failed: Error validating LDAP user) (code THRIFTTRANSPORT): TTransportException('Bad status: 3 (PLAIN auth failed: Error validating LDAP user)',)

hue认证报错。除了网上常见的原因之外。如果你的hive同时集成了ldap和kerberos两种权限方式。需要在hue里添加一个高级参数

 

  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值