平台:H3C DataEngine

表现形式:启动hive shell第一次执行走计算流程的sql时,打开计算引擎的session时卡死,可视化查看任务正常提交,就是无法执行。
原因解释:无论什么yarn调度器默认都是单队列,H3C使用的是公平调度器,但队列中存在其他正在执行的任务导致队列资源占用达到10%,导致后面的任务需要等待前面的任务走完,卡死的根本原因是安装了spark,导致后台会启动spark session且一直运行,导致之后的任务无法提交。
解决方案:配置yarn多队列

<?xml version="1.0"?>
<allocations>
    <userMaxAppsDefault>30000</userMaxAppsDefault>
    <queue name = "root">
        <queue name="tez">
            <weight>5</weight>
            <schedulingPolicy>fair</schedulingPolicy>
        </queue>
        
        <queue name="default">
            <weight>5</weight>
        </queue>
    </queue>

    <queuePlacementPolicy>
        <rule name="specified" create="false"/>
        <rule name="default"/>
    </queuePlacementPolicy>
</allocations>

启动hive shell,设置hive的资源队列为tez
set mapred.job.queue.name=tez;
报错:不允许设置当hive正在运行时
解释:当前白名单允许修改的配置中不包括当前配置
解决:将该字段添加到白名单中,或直接修改hive配置
hiveserver2-site中添加如下配置

hive.security.authorization.sqlstd.confwhitelist.append = 
tez\..*\..*|mapreduce\..*\..*|mapreduce\..*\..*\..*|mapreduce\..*\..*\..*\..*|parquet\..*\..*\..*\..*|hive\..*|hive\..*\..*|hive\..*\..*\..*|hive\..*\..*\..*\..*

hive的问题解决,但启动的任务仍然放在default中,即使制定了hive任务的队列,猜测可能是因为queuePlacementPolicy策略理解有误,待考察第二套方案,根据用户名称设置队列,任务谁提交放在哪个队列下

<?xml version="1.0"?>
<allocations>
    <userMaxAppsDefault>30000</userMaxAppsDefault>
    <queue name = "root">
        <queue name="hdfs">
            <weight>5</weight>
        </queue>
        
        <queue name="default">
            <weight>5</weight>
            <schedulingPolicy>fair</schedulingPolicy>
        </queue>
    </queue>

    <queuePlacementPolicy>
       <rule name="specified" create="false"></rule>
       <rule name="primaryGroup" create="false"></rule>
       <rule name="user" create="false"></rule>
       <rule name="default"></rule>
    </queuePlacementPolicy>
</allocations>

问题解决,经测试,使用yarn用户提交wordcount任务,走default资源队列,两个任务实现并行执行,问题解决

Logo

永洪科技,致力于打造全球领先的数据技术厂商,具备从数据应用方案咨询、BI、AIGC智能分析、数字孪生、数据资产、数据治理、数据实施的端到端大数据价值服务能力。

更多推荐