hueoozie 调度shell执行hive脚本

hueoozie 调度shell执行hive脚本,第1张

前面已经有篇文章介绍如何编译包含hive的spark-assemblyjar了,不清楚的可以翻看一下前面的文章。clouderamanager装好的spark,直接执行spark-shell进入命令行后,写入如下语句:valhiveContext=neworgapachesparksqlhiveHiveContext(sc)你会发现没法执行通过,因为cm装的原生的spark是不支持sparkhql的,我们需要手动进行一些调整:第一步,将编译好的包含hive的JAR包上传到hdfs上配置的默认的spark的sharelib目录:/user/spark/share/lib第二步:在你要运行spark-shell脚本的节点上的/opt/cloudera/parcels/CDH-530-1cdh530p030/lib/spark/lib/目录下面,下载这个jar到这个目录:hadoopfs-gethdfs://n1:8020/user/spark/share/lib/spark-assembly-with-hive-mavenjar(具体路径替换成你自己的)。然后这个目录下面原来会有个软链接spark-assemblyjar指向的是spark-assembly-120-cdh530-hadoop250-cdh530jar,我们把这个软链接删除掉重新创建一个同名的软链接:ln-sspark-assembly-with-hive-mavenjarspark-assemblyjar,指向我们刚下载下来的那个JAR包,这个JAR包会在启动spark-shell脚本时装载到driverprogram的classpath中去的,sparkContext也是在driver中创建出来的,所以需要将我们编译的JAR包替换掉原来的spark-assemblyjar包,这样在启动spark-shell的时候,包含hive的spark-assembly就被装载到classpath中去了。第三步:在/opt/cloudera/parcels/CDH/lib/spark/conf/目录下面创建一个hive-sitexml。/opt/cloudera/parcels/CDH/lib/spark/conf目录是默认的spark的配置目录,当然你可以修改默认配置目录的位置。hive-sitexml内容如下:hivemetastorelocalfalsehivemetastoreuristhrift://n1:9083hivemetastoreclientsockettimeout300hivemetastorewarehousedir/user/hive/warehouse这个应该大家都懂的,总要让spark找到hive的元数据在哪吧,于是就有了上面一些配置。第四步:修改/opt/cloudera/parcels/CDH/lib/spark/conf/spark-defaultsconf,添加一个属性:sparkyarnjar=hdfs://n1:8020/user/spark/share/lib/spark-assembly-with-hive-mavenjar。这个是让每个executor下载到本地然后装载到自己的classpath下面去的,主要是用在yarn-cluster模式。local模式由于driver和executor是同一个进程所以没关系。以上完事之后,运行spark-shell,再输入:valhiveContext=neworgapachesparksqlhiveHiveContext(sc)应该就没问题了。我们再执行一个语句验证一下是不是连接的我们指定的hive元数据库:hiveContextsql("showtables")take(10)//取前十个表看看最后要重点说明一下这里的第二步第三步和第四步,如果是yarn-cluster模式的话,应该替换掉集群所有节点的spark-assemblyjar集群所有节点的sparkconf目录都需要添加hive-sitexml,每个节点spark-defaultsconf都需要添加sparkyarnjar=hdfs://n1:8020/user/spark/share/lib/spark-assembly-with-hive-mavenjar。可以写个shell脚本来替换,不然手动一个一个节点去替换也是蛮累的。

异常信息:

问题解决方式:

/data/var/lib/zookeeper/version-2 文件夹下的文件全部删除

然后重启zookeeper,启动成功。

此角色的日志目录所在的文件系统的可用空间小于50吉字节。到出现故障的节点查看磁盘使用情况。

可以看到由于数据都挂载在根目录,而home、data目录却有大量空间,故在home目录下创建dfs、log,并将根目录下/dfs,/var/log下关于cdh的文件或目录mv到/home下,并做软链接,然后启动服务就ok了,记得mv前停止服务。

接下来分析,为什么 / 根目录下的磁盘空间全部使用完了。

发现以上文件目录占用磁盘大于100M,使用du -h 文件名 依次查看文件大小。

G7项目居然没做日志大小限制。如果是java开发使用log4j打印日志,可以把日志的大小限制,一共只许生成多少个文件,循环覆盖。

参考: >

CDH Yarn资源队列划分管理

场景:根据不同项目或不同用户,对yarn资源队列进行划分,达到资源管控,任务管控的目的

CDH版本:5x

配置:

1 yarn资源队列参数设置:

(1)yarnschedulerfairuser-as-default-queue false

解释:当设置为 true 时,如果未指定池名称,Fair Scheduler 将会使用用户名作为默认的池名称。当设置为 false 时,所有应用程序都在一个名为 default 的共享池中运行。设置成false是为了不根据用户名而自动分配资源池。

Fair Scheduler:yarn的公平调度器,对全局资源和对所有的应用作业都均匀分配的资源分配方法。默认情况下,它是基于内存来安排公平调度策略,也可以配置成为同时基于内存和CPU来进行调度。总的来说,它是一种基于内存,给集群中所提交的应用程序分配资源的调度器。

(2)yarnschedulerfairallow-undeclared-pools false

解释:设置为 true 时,将使用默认设置创建在应用程序中指定但未明确配置的池。设置为 false 时,将在名为 default 的池中运行应用程序指定的未明确配置的池。此设置适用于应用程序明确指定某个池时以及应用程序运行所在的池的名称为与该应用程序关联的用户名的情况。

默认是true,允许创建未定义的资源池。当用户提交了一个作业,指定的队列不存在的时候,会自动创建出这个不存在的队列。设置成false,如果任务中指定了一个未定义的资源池,那么这个资源池将不会被创建,该任务会被分配到默认的资源池中,default。

修改完配置重启服务

2 CDH 动态资源队列配置

如图,第一步我们划分了2个资源池:、

(1)rootdefault:默认池,没有划分资源池的用户会提交到default资源池

权重定义了资源池之间分配资源的比例,目前集群中的default资源池和users资源池的权重各为1,那么集群中的资源会将50%分配给default,50%分配给users,但是这里的资源分配不是一个静态的概念,假如users中没有任务在运行,那么default资源池是允许使用超过50%的资源的,且资源池配置允许在线修改,修改后不需要重启yarn,因为RM会周期性的读取资源池的配置信息

设置default资源池的调度算法:使用DRF,即根据内存和CPU进行资源调度

yarnschedulerfairpreemption解释:启用后,如果在某些时间段未达到池的最小共享,Fair Scheduler 可以优先选取其他池中的应用程序。优先权可保证生产应用程序不缺乏资源,同时还可使群集用于实验和研究应用程序。为尽量减少计算资源浪费,Fair Scheduler 会优先选取最近启动的应用程序。

该项不建议开启。

Yarn的资源抢占本身就具有一定的资源开销,并且如果开启了资源抢占,对于长时间运行的任务容易出现延迟的情况。所以在此也建议配置队列时,要将长时间运行任务和执行时间较短的任务放在不同的队列中。同时对于队列的maxResource,可以适当的配置大些,这样即使不打开抢占,RM也是可以将一个队列的已经运行完成的资源回收分配给别的队列。从而达到提高资源的利用率。

解释:

yarnaclenable:指定是否应检查管理 ACL 中指定的用户和组执行管理 *** 作的授权。

yarnadminacl:确定哪些用户和组可在任何池中提交和中止应用程序以及可以对 ResourceManager 角色发出命令的 ACL。

重启服务

添加was用户资源池

资源池的提交控制访问和管理控制访问的配置会自动继承到子队列中,比如在root资源池下的提交控制访问中配置了用户was,那么即使roottest的提交用户访问中配置是空,用户was也可以向队列test中提交yarn应用程序。

计划模式:可以根据不同时间段使用不同的资源池配置,合理使用集群的纵向资源

创建新的计划规则:

配置完计划模式,资源池会有多套配置,如下

配置完不同时间段使用的配置集后,修改各配置集的资源分配。例如streaming资源池在默认的配置集下,权重是2,使用的集群的资源占50%,但是在night配置集下配置的权重是1,使用的集群的资源占33%。而nigth配置集是在每天晚上8点到第二天早上六点时间段生效的。

放置规则:控制任务使用资源池的规则,即任务会根据以下的规则放到对应的资源池中执行,不需要自定义配置,在提交任务的时候显示的指定队列即可

用户限制:控制用户可以提交的最大应用程序数量,可以统一配置,也可以单独给某个用户配置

以上就是关于hue/oozie 调度shell执行hive脚本全部的内容,包括:hue/oozie 调度shell执行hive脚本、六脉神剑之CDH运维手册、CDH中yarn的动态资源池的相关配置等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/9423100.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-28
下一篇 2023-04-28

发表评论

登录后才能评论

评论列表(0条)

保存