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