我的问题
我是 Hive 和 Hadoop 环境的新手。我想暂停和恢复在 Hadoop 上运行的 Hive 作业。
我尝试了什么
我想要一些与此相关的想法。我在想的是,如果可行的话,我可能会保存映射器和缩减器的状态。
但我不知道如何跟踪 mapper 和 reducer。我在 hadoop 中找到了一些接口(interface)和类,比如 JobId、JobClient,它们可以帮助跟踪相同的东西。我还阅读了一些工作流类的东西来跟踪每个任务,但不是很清楚。
最佳答案
这几乎是不可能的
如果我没记错的话是 Hive job (或与此相关的任何 hadoop mapreduce 作业)可以等待、运行或完成(成功或失败)。
通常没有办法暂停 Hive 作业并继续。 绝对没有像某些语言中那样的“调试快捷方式”允许您在步骤中间暂停处理,而且我也没有看到断点。
但这是您可以接近的方法
1。拆分作业
这是实用的(虽然有限)方法。
与其制作一个配置单元脚本,不如制作 2 个并运行第一个。第一个可以执行部分步骤,或者只能对部分数据进行操作,有效地让您“暂停”。然后恢复将运行补充的第二个脚本。
(如果你愿意,你可以使用调度程序来启动第一个,然后稍后或在触发器之后启动第二个,但我会从简单开始)
2。卡住整个环境
这对于大多数意图和目的来说不是很实用,但可能是可行的,并且可能对资源目的有用。
你也许可以卡住整个集群,如果你真的想深入了解,这应该是可能的。
如何做到这一点(并调查系统的状态)将不是关于 hive 的问题,而是所有节点的整个操作系统。如果您只有 1 个节点,我想将其放入虚拟机可能会很简单。
关于hadoop - Hive 暂停和恢复任务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45363534/