使用纱线的蜂巢问题

时间:2016-03-29 07:18:48

标签: hadoop hive yarn

我在纱线上运行hive sql, 它在连接条件下抛出错误,我能够创建外部和内部表但是在使用命令时无法创建表

create table as AS SELECT name from student.

当通过hive cli运行相同的查询时它工作正常但是使用spring jog它会抛出错误

2016-03-28 04:26:50,692 [Thread-17] WARN       
org.apache.hadoop.hive.shims.HadoopShimsSecure  - Can't fetch tasklog: 
TaskLogServlet is not supported in MR2 mode.

Task with the most failures(4):
 -----
 Task ID:
 task_1458863269455_90083_m_000638
 -----
Diagnostic Messages for this Task:
AttemptID:attempt_1458863269455_90083_m_000638_3 Timed out after 1 secs

2016-03-28 04:26:50,842 [main] INFO     
org.apache.hadoop.yarn.client.api.impl.YarnClientImpl  - Killed application     
application_1458863269455_90083

2016-03-28 04:26:50,849 [main] ERROR com.mapr.fs.MapRFileSystem  - Failed to   
delete path maprfs:/home/pro/amit/warehouse/scratdir/hive_2016-03-28_04-  
24-32_038_8553676376881087939-1/_task_tmp.-mr-10003, error: No such file or  
 directory (2)

 2016-03-28 04:26:50,852 [main] ERROR org.apache.hadoop.hive.ql.Driver  -  
 FAILED: Execution Error, return code 2 from 

根据我的发现,我认为scratdir存在一些问题。

请建议是否有人面临同样的问题。

2 个答案:

答案 0 :(得分:0)

如果递归目录不存在,则会出现此问题。 Hive不会以递归方式自动创建目录。

请从根目录

检查目录是否存在于子目录级别

答案 1 :(得分:0)

我在运行以下Hive查询时面临类似的问题

select * from <db_name>.<internal_tbl_name> where <field_name_of_double_type> in (<list_of_double_values>) order by <list_of_order_fields> limit 10;

我对上述声明进行了解释,结果如下。

fs.FileUtil: Failed to delete file or dir [/hdfs/Hadoop_Misc_Logs/Edge01/local_scratch/<hive_username>/41289638-cd53-4d4b-88c9-3359e9ec99e2/hive_2017-05-08_04-26-36_658_6626096693992380903-1/.nfs0000000057b93e2d00001590]: it still exists.
2017-05-08 04:26:37,969 WARN  [41289638-cd53-4d4b-88c9-3359e9ec99e2 main] fs.FileUtil: Failed to delete file or dir [/hdfs/Hadoop_Misc_Logs/Edge01/local_scratch/<hive_username>/41289638-cd53-4d4b-88c9-3359e9ec99e2/hive_2017-05-08_04-26-36_658_6626096693992380903-1/.nfs0000000057b93e2700001591]: it still exists.
Time taken: 0.886 seconds, Fetched: 24 row(s)

通过

检查日志
yarn logs -applicationID application_1458863269455_90083

从管理团队升级MapR后发生错误。这可能是由于某些升级或安装问题以及Tez配置(如下面的日志中的第873行所示)。或者,Hive查询在语法上不支持Tez优化。这样说,因为在我的情况下,外部表上的另一个Hive查询运行正常。不过要检查一下。

虽然不确定,但日志中看起来最相关的错误行如下:

2017-05-08 00:01:47,873 [ERROR] [main] |web.WebUIService|: Tez UI History URL is not set

解决方案:

可能由于某些打开的文件或使用某些资源的应用程序而发生。请检查https://unix.stackexchange.com/questions/11238/how-to-get-over-device-or-resource-busy

  1. 您可以运行explain <your_Hive_statement>

  2. 在结果执行计划中,您可以遇到Hive执行引擎无法删除的文件名/目录,例如

    2017-05-08 04:26:37,969 WARN [41289638-cd53-4d4b-88c9-3359e9ec99e2 main] fs.FileUtil: Failed to delete file or dir [/hdfs/Hadoop_Misc_Logs/Edge01/local_scratch/<hive_username>/41289638-cd53-4d4b-88c9-3359e9ec99e2/hive_2017-05-08_04-26-36_658_6626096693992380903-1/.nfs0000000057b93e2d00001590]: it still exists.

  3. 转到步骤2中给出的路径,例如/hdfs/Hadoop_Misc_Logs/Edge01/local_scratch/<hive_username>/41289638-cd53-4d4b-88c9-3359e9ec99e2/hive_2017-05-08_04-26-36_658_6626096693992380903-1/

  4. 在路径3中,执行ls -alsof +D /path会显示打开的process_ids阻止文件被删除。

  5. 如果您运行ps -ef | grep <pid>,则会获得

    hive_username <pid> 19463 1 05:19 pts/8 00:00:35 /opt/mapr/tools/jdk1.7.0_51/jre/bin/java -Xmx256m -Dhiveserver2.auth=PAM -Dhiveserver2.authentication.pam.services=login -Dmapr_sec_enabled=true -Dhadoop.login=maprsasl -Djava.net.preferIPv4Stack=true -Dhadoop.log.dir=/opt/mapr/hadoop/hadoop-2.7.0/logs -Dhadoop.log.file=hadoop.log -Dhadoop.home.dir=/opt/mapr/hadoop/hadoop-2.7.0 -Dhadoop.id.str=hive_username -Dhadoop.root.logger=INFO,console -Djava.library.path=/opt/mapr/hadoop/hadoop-2.7.0/lib/native -Dhadoop.policy.file=hadoop-policy.xml -Djava.net.preferIPv4Stack=true -Xmx512m -Dlog4j.configurationFile=hive-log4j2.properties -Dlog4j.configurationFile=hive-log4j2.properties -Djava.util.logging.config.file=/opt/mapr/hive/hive-2.1/bin/../conf/parquet-logging.properties -Dhadoop.security.logger=INFO,NullAppender -Djava.security.auth.login.config=/opt/mapr/conf/mapr.login.conf -Dzookeeper.saslprovider=com.mapr.security.maprsasl.MaprSaslProvider -Djavax.net.ssl.trustStore=/opt/mapr/conf/ssl_truststore org.apache.hadoop.util.RunJar /opt/mapr/hive/hive-2.1//lib/hive-cli-2.1.1-mapr-1703.jar org.apache.hadoop.hive.cli.CliDriver

  6. <强>结论:

    HiveCLiDriver清楚地表明在Spark&#34;上运行&#34; Hive从Hive 2.0开始不再支持通过Hive CLI(或托管)表,并且将在未来弃用它。您必须在Spark中使用HiveContext来运行Hive查询。但您仍然可以通过Hive CLI在Hive外部表上运行查询。