【问题标题】:hive tables exist but couldn't find the directories蜂巢表存在但找不到目录
【发布时间】:2015-08-21 06:12:08
【问题描述】:

我有一个MapR cluster10 nodes,最近进行了一些重组。基本上在某些已修复的节点上存在一些丢失的磁盘。在此之后,在HDFS path 上找不到 hive 目录。但是,hive 表和数据是完整的,可以从 hive CLI 看到这些表。

我尝试了fsck,它运行没有任何问题,然后执行了gfsck
下面是 gfsck 的输出:

$ sudo /opt/mapr/bin/gfsck -r cluster=tmcluster1 rwvolume=users
Starting GlobalFsck:
  clear-mode        = false
  debug-mode        = false
  dbcheck-mode      = false
  repair-mode       = true
  assume-yes-mode   = false
  cluster       = tmcluster1
  rw-volume-name    = users
  snapshot-name     = null
  snapshot-id       = 0
  user-id       = 0
  group-id      = 0

  get volume properties ...

  put volume users in global-fsck mode ...

  get snapshot list for volume users ...

  starting phase one (get containers) for volume users(31225146) ...
    got volume containers map
  done phase one

  starting phase two (get inodes) for volume users(31225146) ...
java.lang.Exception: ContainerGetInodes RPC retry 11
    at com.mapr.fs.globalfsck.PhaseTwo$PhaseTwoThread.getInodesOfContainer(PhaseTwo.java:238)
    at com.mapr.fs.globalfsck.PhaseTwo$PhaseTwoThread.run(PhaseTwo.java:154)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
    at java.lang.Thread.run(Thread.java:745)

在 hive 中,我只能看到表格、结构等。我无法触发任何其他 DDL。例如,对表格进行正常计数会产生以下错误:

hive> select count(1) from table1;
2015-08-20 21:10:13,4261 ERROR JniCommon fs/client/fileclient/cc/jni_MapRClient.cc:1306 Thread: 27514 mkdirs failed for /user/mapr/tmp/hive/hive_2015-08-20_21-10-13_254_31142713538709, error 11
FAILED: RuntimeException java.io.IOException: Error: Resource temporarily unavailable(11), file: hive_2015-08-20_21-10-13_254_3114271353870903660-1, user name: mapr, ID: 5000

只有一个用户 'mapr' 可以对 hive 表执行所有操作。

有人对此有任何想法吗??

提前致谢。

【问题讨论】:

    标签: hadoop hive mapr


    【解决方案1】:

    CLI 正在复制表详细信息,因为 MetaStore 数据库包含所有表详细信息,以及名称 Location,检查 MySQL/Posrtgress/Derby/Orable 中的表,使用 Hive 元存储数据库,表名称如 TBLS ,在那里你会看到所有的 Meta Store 信息。

    在上述情况下,正如您所提到的,您无法列出所有目录,数据块可能已损坏{您已经提到},因此如果您有 replecatino,您可以回调数据,但它的可能性很小,一些你可以尝试通过

    重新启动 Metastore 服务
    "hive --service metastore" or "sudo service hive-metastore start" or "hive --service metastore"
    

    如果数据正在复制,那么 Namenode 将尝试修复相同的问题,否则您必须重新创建表,再次重新上传数据。

    如果您有任何其他选项,请告诉我,以便我可以将其用于我的情况。 :)

    【讨论】:

    • 感谢 Debjit。我已经尝试过 Metastore 重启,但这并没有解决我的问题。挂载 hive 表的挂载似乎显示为目录结构中的文件,而不是目录。我对那个目录名做了一个 fsck 并以某种方式解决了这个问题 :) 我读到了它并得到了一个想法,有时由于坏扇区,某个特定的内存段没有上线,你必须去fsck 多次来实现这一点。感谢您的回复。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-02-07
    • 1970-01-01
    • 2016-12-20
    • 1970-01-01
    相关资源
    最近更新 更多