配置单元查询 BlockMissingException

hive query BlockMissingException

我在 TEZ 和 MapReduce 执行引擎上都遇到了问题。两者似乎都与权限有关,但对于我来说,我迷路了。

当我通过 TEZ 执行它时,我收到此消息:

org.apache.hadoop.hdfs.BlockMissingException: Could not obtain block: BP-300459168-127.0.1.1-1478287363661:blk_1073741961_1140 file=/tmp/hive/hiveuser/_tez_session_dir/03029ffd-a9c2-43de-8532-1e1f322ec0cd/hive-hcatalog-core.jar

查看 HDFS 中的文件权限,但它们看起来是正确的:

drwx------ - hiveuser hadoop 0 2016-11-11 09:54 /tmp/hive/hiveuser/_tez_session_dir/03029ffd-a9c2-43de-8532-1e1f322ec0cd

drwx------ - hiveuser hadoop 0 2016-11-11 09:54 /tmp/hive/hiveuser/_tez_session_dir/03029ffd-a9c2-43de-8532-1e1f322ec0cd/.tez

-rw-r--r-- 3 hiveuser hadoop 259706 2016-11-11 09:54 /tmp/hive/hiveuser/_tez_session_dir/03029ffd-a9c2-43de-8532-1e1f322ec0cd/hive-hcatalog-core.jar

在 MapReduce 上,消息是这样的

Could not obtain block: BP-300459168-127.0.1.1-1478287363661:blk_1073741825_1001 file=/hdp/apps/2.5.0.0-1245/mapreduce/mapreduce.tar.gz

那个的文件权限

-r--r--r-- 3 hdfsuser hadoop 51232019 2016-11-04 16:40 /hdp/apps/2.5.0.0-1245/mapreduce/mapreduce.tar.gz

谁能告诉我我在那里缺少什么?请?

1) 键入 hadoop fsck HDFS_FILE 检查特定的 hdfs 文件是否健康 如果不是,则特定文件已损坏。删除损坏的文件,并尝试复制该 jar 并尝试以下命令

2) 输入 hadoop dfsadmin -report 检查 Missing blocks 的值是否为:0

3) 检查名称节点 web UI 启动进度 -> 安全模式为 100% 否则退出安全模式

hadoop dfsadmin -safemode leave 

然后 运行 fsck 删除丢失的块

我终于弄明白了,并认为 post 解决方案对我来说会很友好。其中之一,当你最终得到它时,你会想,"Ugh, that was so obvious"。重要提示,如果您在使用 Hive 时遇到问题,请确保也检查 Yarn 日志!

我对这个问题和许多其他问题的解决方案是确保我的所有节点在其主机文件中都有所有其他节点的 ip 地址。这确保 Ambari 通过主机名获取所有正确的 IP。我在 Ubuntu 所以我做了以下事情:

$vim/etc/hosts 然后文件看起来像这样:

127.0.0.1       localhost
#127.0.1.1      ambarihost.com ambarihost
# Assigning static IP here so ambari gets it right
192.168.0.20    ambarihost.com ambarihost

#Other hadoop nodes
192.168.0.21    kafkahost.com kafkahost
192.168.0.22    hdfshost.com hdfshost