hive on spark通过YARN-client提交任务不成功

在Hive on spark中  设置spark.master 为 yarn-client ,

提交HiveQL任务到yarn上执行,发现任务无法执行 输出一下错误:


可以看到 Hive on Spark 可以submit查询,但是任务无法执行。

因为我们设置的yarn-client 模式提交,所以在hive执行的输出log日志中查找到相应语句输出的log信息:


发现yarn.Client 一直在重复的report,等待资源调度。


总结下解决思路:

1>  首先想到是集群中内存资源不足,可以检查下每台机器是否有足够剩余内存( free -g);也可能是其他已经提交的应用占了大部分资源;

2> 如果1>正常,我们可以看看YARN集群是否启动成功。注意“坑”可能就在这里: 即使Slave上的nodemanager进程存在,要注意检查resource manager日志,看看各个node manager是否启动成功,我的问题就出现在这里:进程在,但是日志显示node manager状态为UNHEALTHY,所以YARN集群能识别到的总内存资源为0。。。

检查了UNHEALTHY的原因,

2017-09-11 18:21:55,857 WARN org.apache.hadoop.yarn.server.nodemanager.DirectoryCollection: Directory /tmp/hadoop-root/nm-local-dir error, used space above threshold of 90.0%, removing from list of valid directories
2017-09-11 18:21:55,857 WARN org.apache.hadoop.yarn.server.nodemanager.DirectoryCollection: Directory /opt/Beaver/hadoop-2.7.3/logs/userlogs error, used space above threshold of 90.0%, removing from list of valid directories
2017-09-11 18:21:55,857 INFO org.apache.hadoop.yarn.server.nodemanager.LocalDirsHandlerService: Disk(s) failed: 1/1 local-dirs are bad: /tmp/hadoop-root/nm-local-dir; 1/1 log-dirs are bad: /opt/Beaver/hadoop-2.7.3/logs/userlogs
2017-09-11 18:21:55,857 ERROR org.apache.hadoop.yarn.server.nodemanager.LocalDirsHandlerService: Most of the disks failed. 1/1 local-dirs are bad: /tmp/hadoop-root/nm-local-dir; 1/1 log-dirs are bad: /opt/Beaver/hadoop-2.7.3/logs/userlogs


       发现是由于磁盘空间不够,已经达到 90%的阈值,导致无法启动node节点启动为UNHEALTHY,所以 清理一些磁盘空间再启动就可以正常的运行了。



以下是 Hive on Spark 搭建过程的详细步骤: 1. 下载 Hadoop、SparkHive 的压缩包,并解压到指定目录下。 2. 配置环境变量,将 Hadoop、SparkHive 的 bin 目录添加到 PATH 路径中。 3. 修改 Hadoop 和 Spark 的配置文件。 - Hadoop 的配置文件:$HADOOP_HOME/etc/hadoop/core-site.xml、$HADOOP_HOME/etc/hadoop/hdfs-site.xml、$HADOOP_HOME/etc/hadoop/mapred-site.xml、$HADOOP_HOME/etc/hadoop/yarn-site.xml。 - Spark 的配置文件:$SPARK_HOME/conf/spark-env.sh、$SPARK_HOME/conf/spark-defaults.conf。 4. 配置 Hive on Spark。 - 将 $HIVE_HOME/lib 下的 spark 相关 jar 包复制到 $SPARK_HOME/jars 目录下。 - 修改 $HIVE_HOME/conf/hive-site.xml 文件,添加以下配置: ``` <property> <name>hive.execution.engine</name> <value>spark</value> </property> <property> <name>spark.master</name> <value>local[*]</value> <description>Master URL for the cluster manager.</description> </property> <property> <name>spark.submit.deployMode</name> <value>client</value> <description>Whether to launch the driver program locally ("client") or on one of the worker machines inside the cluster ("cluster")</description> </property> ``` 5. 启动 Spark 集群。 - 启动 Hadoop 集群。 - 启动 Spark 集群,可以使用以下命令: ``` $SPARK_HOME/sbin/start-all.sh ``` 6. 启动 Hive on Spark。 - 启动 HiveServer2,可以使用以下命令: ``` $HIVE_HOME/bin/hiveserver2 --service metastore & ``` - 启动 beeline 或 hive 命令行客户端,连接 HiveServer2。 7. 测试 Hive on Spark 是否正常运行。 - 在 beeline 或 hive 命令行客户端中执行以下命令: ``` CREATE TABLE test_spark(id INT, name STRING) USING org.apache.spark.sql.parquet OPTIONS (PATH '/tmp/test_spark'); INSERT INTO test_spark VALUES(1, 'test'); SELECT * FROM test_spark; ``` 如果查询结果正确,说明 Hive on Spark 搭建成功。 希望这些步骤能够帮助到你。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值