zoukankan      html  css  js  c++  java
  • HIVE- 大数据运维之hive管理

    我现在在一家公司负责大数据平台(CDH平台)的运维管理,最常遇见的问题我总结出来,并且继续在下面更新。希望方便自己以后trouble shooting以及方便各位同行解决问题与学习。

    关于做运维有几个重要的要点一定一定要遵守的:

      遇到问题冷静,冷静,冷静,就山崩都要冷静,心态关乎你是否能将问题解决同时不会给人留下不好的印象。

      凡是关于对集群更改与变动的操作,一定要在测试环境测试到没问题才上生产,不然可能会造成不可挽回的损失。

      尽可能的定期做备份,它可能在最绝望的时刻救命,这是最后的救命草。

     HUE Cannot access

    突然一天业务跟我说hue不能登陆,拒绝登陆。我发现hue web页面是可以正常打开的,但是使用账号login时提示 cannot access!

    首先上cdh cm管理界面检查 hue 相关进程 ,发现有个进程处于不正常的状态:Kerberos Ticket Renewer

     解决办法:重启该 Kerberos Ticket Renewer 进程就能正常访问hue了。

    Hive 运维

    hive外部表不能查询

    一天业务跟我反馈 hive 外部表不能查询并给出报错截图

      我第一反应是外部表是连接到数据存储的目录,问题出现的问题肯定是该外部表的 location 下的文件出现问题。于是我检查命令 : show create table table_name; 

      查看到外部表的 location ,检查该表所在的 location ,发现除了原先的excel表之外还有个文件夹,文件夹里面还有其他的文件。初步判断是业务把不同schema的文件放在该 location ,导致 hive 无法正常读取文件出现查询表格报错的问题。

    解决办法:把该location下的其他文件迁移出去就行了。

     hive内部表转外部表

      在业务操作中经常遇到用查询出来的结果创建一张表,再将这张表转为外部表:

    ALTER TABLE table_name  SET TBLPROPERTIES ('EXTERNAL'='TRUE');

    hive 查询中文乱码/hive查询外部导入的excel文件中文乱码

      在实际应用场景中经常遇到这样的问题,将excel文件上传HDFS,再建立外部表指向该文件在HDFS的位置。但是外部表建立好了发现查询该表示时发现,出现中文乱码并且列对不上,数据都挤到第一列。这个时候发现业务建立外部表的分隔符是“,”同时检查到她上传的文件的后缀时 “.xlsx"。

      判断上传文件的格式与外部表的分隔符不对。微软的excel xlsx等分隔符是” “,csv格式是逗号。另外在windows上中文系统文件的编码一般都是 GBK,HDFS默认编码是UTF8,需要对该外部表更改编码。

      解决过程发现换了分隔符和换了编码都不能解决问题。尝试将xlsx文件另存为csv文件(逗号分隔符)上传到HDFS,将外部表的分隔符转为逗号,将外部表编码转为GBK,就好了。然后定下规范上传分隔符为逗号的 csv 文件给外部表,建外部表的分隔符为逗号。

    ALTER TABLE 表名 SET SERDEPROPERTIES ('serialization.encoding'='GBK')

    hive 查询结果导出中文乱码

      在实际应用场景中经常遇到这样的问题,需要将查询的结果导出成为电子表格文件,在hue上提供了两种外部文件的方法,xlsx文件和csv文件。xlsx文件数据量比较大的时候它导出时长比较长,会报服务器网络异常的错误(可能是我们公司出现这种问题),导出csv文件很快,但是出现打开文件是中文乱码的问题。于是将导出的文件用uedit这个人间重新保存为有bom的utf8。就完美解决中文乱码问题,虽然繁琐但是实用。

      

     HIVE外部表不能查询

    一天一个user跟我反应说hive外部表不能使用了,昨天还能使用的。

    首先遇到这种问题,先不要慌,跟着自己的思路走:

    1.亲自测试时什么情况,在有权限的情况下查询下该表,亲自看看报错是怎的。

    发现真的是有报错,既然昨天能使用说明表结构是正常的。排除建立外部表字段对应不上的问题。

    2.既然表结构没问题,判断数据源。hive外部表是有个location,通过show create table table_name 检查location

    在hdfs上检查该路径,发i现该路径下有出了一个excel表,还有一个文件夹,文件夹里面还有别的文件。错误是在location里面添加了不是与hive相同 schema的文件,离谱的是加了文件夹。

    3.解决办法:

    把这些多余的文件迁移到别的地方。

     hive表不能truncate

    hive> TRUNCATE TABLE test.student;
    FAILED: SemanticException [Error 10146]: Cannot truncate non-managed table test.student.
    hive>

    原因:truncate 不能删除外部表

    解决办法,把外部表转为内部表或者把外部表删除后重新建一张内部表。

    Need to specify partition columns because the destination table is partition

    原因是insert into default.tablename 后面没有指定分区的字段 :PARTITION(dt) 

    hdfs dfs -du -s -h /user/hive/warehouse/xxx.db/xxxxxxx

  • 相关阅读:
    SQL Server Audit监控触发器状态
    SQL Server 数据变更时间戳(timestamp)在复制中的运用
    SQL Server 更改跟踪(Chang Tracking)监控表数据
    SQL Server 变更数据捕获(CDC)监控表数据
    SQL Server 事件通知(Event notifications)
    SQL Server 堆表行存储大小(Record Size)
    SQL Server DDL触发器运用
    SQL Server 默认跟踪(Default Trace)
    SQL Server 创建数据库邮件
    SQL Server 跨网段(跨机房)FTP复制
  • 原文地址:https://www.cnblogs.com/RzCong/p/8366691.html
Copyright © 2011-2022 走看看