Hive 在 Mapreduce 时总是失败

问题描述 投票:0回答:1

我刚刚安装了 hadoop 3.3.6 和 hive 4.0.0,并使用 mysql 作为元存储。运行 create table 或 select * from... 时运行良好。但是当我尝试插入或选择连接时,配置单元总是失败。我注意到 hive 在 mapreduce 任务中失败并且“需要 lock = true”,即使我没有创建任何锁。

hiveserver 2 log

我已经给了hdfs中仓库目录的

chmod 777
权限,但是并没有解决我的问题。 使用 MR 执行引擎时,yarn 不给出日志

这是我从

hive.log
获得的日志:

FAILED: Execution Error, return code 1 from org.apache.hadoop.hive.ql.exec.mr.MapredLocalTask
No Stats for default@student1, Columns: name, gpa, age
No Stats for default@student2, Columns: nama, jurusan, hobi
Query ID = hadoop_20240923190426_36da4532-a25c-4d21-b7ec-47f18290f3dd
Total jobs = 1
java.lang.NullPointerException  at org.apache.hadoop.conf.Configuration.<init>(Configuration.java:843)
    at org.apache.hadoop.mapred.JobConf.<init>(JobConf.java:458)
    at org.apache.hadoop.mapred.JobConf.<init>(JobConf.java:475)
    at org.apache.hadoop.hive.ql.exec.mr.MapredLocalTask.initialize(MapredLocalTask.java:136)
    at org.apache.hadoop.hive.ql.exec.mr.ExecDriver.main(ExecDriver.java:766)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
Execution failed with exit status: 1
Obtaining error information

Task failed!
Task ID:
  Stage-4

Logs:

/tmp/hadoop/hive.log
FAILED: Execution Error, return code 1 from org.apache.hadoop.hive.ql.exec.mr.MapredLocalTask

抱歉我的英语不好并且错误地使用了这个论坛的工具。这是我第一次在这里问。

更新: 这是我的 core-site.xml:

<property>
    <name>hadoop.tmp.dir</name>
    <value>/home/hadoop/tmpdata</value>
</property>
<property>
    <name>fs.defaultFS</name>
    <value>hdfs://localhost:9000</value>
</property>
<property>
    <name>hadoop.proxyuser.hadoop.groups</name>
    <value>*</value>
</property>
<property>
    <name>hadoop.proxyuser.hadoop.hosts</name>
    <value>*</value>
</property>
<property>
    <name>hadoop.proxyuser.server.hosts</name>
    <value>*</value>
</property>
<property>
    <name>hadoop.proxyuser.server.groups</name>
    <value>*</value>
</property>

hdfs-site.xml:

<property>
    <name>dfs.replication</name>
    <value>1</value>
</property>
<property>
    <name>dfs.permissions</name>
    <value>false</value>
</property>
<property>
    <name>dfs.namenode.name.dir</name>
    <value>file:///home/hadoop/hadoopdata/hdfs/namenode</value>
</property>
<property>
    <name>dfs.datanode.data.dir</name>
    <value>file:///home/hadoop/hadoopdata/hdfs/datanode</value>
</property>

对于我的 hive-site.xml 来说,它与 hive 提供的模板几乎相同。只是连接到 mysql 元存储的一些更改。

更新 这是我的 hive-site.xml:

<configuration>
<property>
    <name>javax.jdo.option.ConnectionURL</name>
    <value>jdbc:mysql://localhost:3306/metastore?createDatabaseIfNotExist=true</value>
    <description>metadata is stored in a MySQL server</description>
</property>
<property>
    <name>javax.jdo.option.ConnectionDriverName</name>
    <value>com.mysql.cj.jdbc.Driver</value>
    <description>MySQL JDBC driver class</description>
</property>
<property>
    <name>javax.jdo.option.ConnectionUserName</name>
    <value>hadoop</value>
    <description>user name for connecting to mysql server </description>
</property>
<property>
    <name>javax.jdo.option.ConnectionPassword</name>
    <value>12345</value>
    <description>password for connecting to mysql server </description>
</property>
<property>
  <name>hive.metastore.uris</name>
  <value>thrift://localhost:9083</value>
<description>Thrift URI for the remote metastore. Used by metastore client to connect to remote metastore.</description>
</property>
</configuration>
hadoop hive nullpointerexception mapreduce
1个回答
0
投票

我尝试运行hadoop 给出的mapreduce 示例作业,但它也不起作用。事实证明我的mapred-site.xml配置是错误的。所以我将mapred-site.xml更改为以下配置:

<configuration> 
<property>
    <name>mapreduce.framework.name</name>
    <value>yarn</value>
</property>
<property>
    <name>yarn.app.mapreduce.am.env</name>
    <value>HADOOP_MAPRED_HOME=${HADOOP_HOME}</value>
</property>
<property>
    <name>mapreduce.map.env</name>
    <value>HADOOP_MAPRED_HOME=${HADOOP_HOME}</value>
</property>
<property>
    <name>mapreduce.reduce.env</name>
    <value>HADOOP_MAPRED_HOME=${HADOOP_HOME}</value>
</property>
</configuration>

我将 HADOOP_MAPREDUCE_HOME 直接指向 lib 文件夹,这就是每个 MapReduce 作业失败的原因

© www.soinside.com 2019 - 2024. All rights reserved.