美文网首页Hadoop
那些年 CDH 5.13 所踩过的坑

那些年 CDH 5.13 所踩过的坑

作者: LOC_Thomas | 来源:发表于2017-11-27 22:13 被阅读920次

    默认情况下hive访问不到子目录下面数据的问题

    我们通过把hdp的数据迁移到了cdh,然后发现一些hive表存储的地方在用day进行分区之后,在day分区的目录之下,还有存在1/或者2/这样的子目录,我们发现通过分区条件来进行sql查询,查不到任何数据,可以通过设置配置

    set hive.mapred.supports.subdirectories=true;
    set mapred.input.dir.recursive=true;
    

    来保证hive命令查询的时候可以读到分区目录下面的子目录的数据

    sentry相关的权限

    安装sentry的相关文章

    http://blog.xiaoxiaomo.com/2016/10/19/Sentry-%E9%80%9A%E8%BF%87Cloudera-Manager%E9%85%8D%E7%BD%AESentry/
    

    我们也通过hadoop sentry 来管理权限, 需要把hdfs、hive、hue相关的sentry关联配置打开,然后通过hue里面的配置来设置 hive table 和 hdfs 的相关权限,但是如果不设置linux文件系统的权限,在使用load linux文件的时候,会出现错误

     The required privileges: Server=server1->URI=file:///opt/logfiles/userlogsup/muserbehaviorlog/1020210137/20171124/201711241200.txt->action=*;
    

    可以在hue里面选择url,然后手动填写 file:///opt/logfiles/ 并给予ALL权限,可以解决上述的错误,所以除开 hive table 和 hdfs的文件,还可以通过sentry来管理 linux 机器上的文件目录

    spark2找不到对应的包

    在CDH安装了spark2之后,执行hive会出现错误提示

    ls: 无法访问/opt/cloudera/parcels/SPARK2/lib/spark2/lib/spark-assembly-*.jar: 没有那个文件或目录
    

    是因为spark2修改了lib包的位置,改成了jars,修改hive的启动脚本,把lib/spark-assembly-*.jar 改成 jars/*,这样启动就不会出现这个错误了。

    hiveserver2死锁的问题

    今天在导入数据的时候,由于导入错误,直接对于正在导入的进程执行了中断,然后再去删除或者查询相应的表的时候, 直接卡住不动了,查看日志,发现出现了死锁,可以通过修改hive-site.xml文件

    <property>
        <name>hive.support.concurrency</name>
        <value>true</value>
    </property>
    

    把value改成false,关闭死锁,来解决这个问题

    查询hive出现数组越界的问题

    在用hive查询的时候,出现

      http://cdh-master-244:8088/taskdetails.jsp?jobid=job_1511834313005_0092&tipid=task_1511834313005_0092_m_000000
    -----
    Diagnostic Messages for this Task:
    Error: java.lang.RuntimeException: org.apache.hadoop.hive.ql.metadata.HiveException: Hive Runtime Error while processing row 
        at org.apache.hadoop.hive.ql.exec.mr.ExecMapper.map(ExecMapper.java:179)
        at org.apache.hadoop.mapred.MapRunner.run(MapRunner.java:54)
        at org.apache.hadoop.mapred.MapTask.runOldMapper(MapTask.java:459)
        at org.apache.hadoop.mapred.MapTask.run(MapTask.java:343)
        at org.apache.hadoop.mapred.YarnChild$2.run(YarnChild.java:164)
        at java.security.AccessController.doPrivileged(Native Method)
        at javax.security.auth.Subject.doAs(Subject.java:415)
        at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1917)
        at org.apache.hadoop.mapred.YarnChild.main(YarnChild.java:158)
    Caused by: org.apache.hadoop.hive.ql.metadata.HiveException: Hive Runtime Error while processing row 
        at org.apache.hadoop.hive.ql.exec.vector.VectorMapOperator.process(VectorMapOperator.java:52)
        at org.apache.hadoop.hive.ql.exec.mr.ExecMapper.map(ExecMapper.java:170)
        ... 8 more
    Caused by: java.lang.ArrayIndexOutOfBoundsException: 9
        at org.apache.hadoop.hive.ql.exec.vector.expressions.ConstantVectorExpression.evaluateLong(ConstantVectorExpression.java:99)
        at org.apache.hadoop.hive.ql.exec.vector.expressions.ConstantVectorExpression.evaluate(ConstantVectorExpression.java:147)
        at org.apache.hadoop.hive.ql.exec.vector.expressions.aggregates.VectorUDAFCount.aggregateInputSelection(VectorUDAFCount.java:96)
        at org.apache.hadoop.hive.ql.exec.vector.VectorGroupByOperator$ProcessingModeBase.processAggregators(VectorGroupByOperator.java:148)
        at org.apache.hadoop.hive.ql.exec.vector.VectorGroupByOperator$ProcessingModeHashAggregate.processBatch(VectorGroupByOperator.java:322)
        at org.apache.hadoop.hive.ql.exec.vector.VectorGroupByOperator.processOp(VectorGroupByOperator.java:866)
        at org.apache.hadoop.hive.ql.exec.Operator.forward(Operator.java:815)
        at org.apache.hadoop.hive.ql.exec.vector.VectorFilterOperator.processOp(VectorFilterOperator.java:111)
        at org.apache.hadoop.hive.ql.exec.Operator.forward(Operator.java:815)
        at org.apache.hadoop.hive.ql.exec.TableScanOperator.processOp(TableScanOperator.java:98)
        at org.apache.hadoop.hive.ql.exec.MapOperator$MapOpCtx.forward(MapOperator.java:157)
        at org.apache.hadoop.hive.ql.exec.vector.VectorMapOperator.process(VectorMapOperator.java:45)
        ... 9 more
    

    可以通过增加配置

    set hive.vectorized.execution.enabled=false;
    

    来进行解决,相关的issue地址

    https://issues.apache.org/jira/browse/HIVE-11933
    

    相关文章

      网友评论

        本文标题:那些年 CDH 5.13 所踩过的坑

        本文链接:https://www.haomeiwen.com/subject/ierjbxtx.html