【presto on yarn】问题UnknownHostException和重启节点

4 篇文章 0 订阅

一.java.net.UnknownHostException: seacluster

在presto on yarn启动之后,在presto-cli控制台访问hive的数据库,不论是show schemas还是show tables都能成功

但是真正用sql去查询表的时候,却会报java.net.UnknownHostException: seacluster。原因是上面两个语句是访问hive的metadata,而select table是访问hdfs上的文件,需要访问hdfs

这里的seacluster是我的集群名字nameservers,这个指向我集群里面两个namenode做的HA。

在core-site.xml里面的设置是

在查询了各种文章均没有特别的启发,自己想应该是哪里配置问题。在访问hive的时候需要加载core-site.xml,hdfs-site.xml,启动presto的主节点引用该文件的地址是/usr/local/share/prestoyarn/slider-0.92.0-incubating-all/hive2

这个地址是配置在appConfig-default.json里面的site.global.catalog配置项的,这个地址难道存在问题吗?于是我去查看某个子节点里面生成的配置/var/lib/presto/etc/catalog/hive2.propertis,地址也是这个,突然间我似乎明白了,子节点的这个目录和文件是不存在的啊,那么presto分发任务到这个节点的时候,这个节点去访问hive是读取不到这几个文件的,这样去访问肯定是识别不了seacluster域名的,问题就出现了。

于是我将这几个文件分别拷贝到每个节点的同一目录下/usr/local/share,并将appConfig-default.json里面的site.global.catalog访问hive的地址改为这个目录

重启presto on yarn,select表成功。并且在namenode漂移到standby节点后,再select也是成功的。此问题解决。

ps:当然此问题我最初的解决办法不是这样的,当时发现这个问题是觉得子节点没有访问域名是因为无法识别,于是再/etc/hosts里面去设置这个seacluster的对应主机名,这样设置后也能访问了。但是问题是当namenode节点漂移时,需要每次来修改这个对应关系,每个节点都要设置,是很麻烦的。为了解决这个问题,出现了上面的方案。

 

二.presto节点重启或掉线后重新加入问题。

修改resources-default.json里面yarn.component.placement.policy为2

{
  "schema": "http://example.org/specification/v2.0.0",
  "metadata": {
  },
  "global": {
    "yarn.vcores": "1"
  },
  "components": {
    "slider-appmaster": {
    },
    "COORDINATOR": {
      "yarn.role.priority": "1",
      "yarn.component.instances": "1",
      "yarn.component.placement.policy": "2",
      "yarn.memory": "15360",
      "yarn.label.expression": "coordinator"
    },
    "WORKER": {
      "yarn.role.priority": "2",
      "yarn.component.instances": "7",
      "yarn.component.placement.policy": "2",
      "yarn.memory": "15360",
      "yarn.label.expression": "worker"
    }
  }
}

重启presto,然后reboot其中一台节点exmp:t011,此时监控界面会显示少一个几点

t011重启成功后,拉起yarn相关的服务。

在yarn的application界面会显示该节点lost,且重启了一个container,t011的container_1584422422428_0009_01_000009是第一次启动的,container_1584422422428_0009_01_000012是在t011的009container  lost之后,重新启动的一个container。

ps:拉起presto服务的时候会有个问题,yarn在t011挂了之后,会重新在资源池里去重新启动一个container,此时经常会在已经跑了presto任务的的机器上再启动一个container,再同一个机器上启动两个container会失败,失败原因可能是端口占用,二此时尝试了多次之后,会使得yarn的这个presto任务整个挂掉,导致presto集群挂掉。

有个办法是在resources-default.json的component配置里面,将yarn.memory尽量调大,我测试时机器有48G内存,这里我设置了35G,然后再启动。后面有worker节点挂掉时,yarn就不会再找已有presto服务的节点再去启container了,会找新的机器节点。此问题暂且记下,等后续有更好的方案再更新

 

问题二参考:https://groups.google.com/forum/#!topic/presto-users/nlja-IO0GQw

https://github.com/prestodb/presto-yarn/issues/40

 

 

 

欺我无谋?定要尔等血偿!

 

  • 4
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 6
    评论
Presto on K8S是将Presto查询引擎与Kubernetes容器编排平台结合起来使用的一种架构。Presto是一个负责大数据查询的组件,而Kubernetes是一个用于动态扩缩容和任务编排的平台。将Presto部署在Kubernetes上可以提升稳定性、降低成本、提高资源使用率,并为大数据计算组件容器化做准备。通过Kubernetes的特性,如动态扩缩容,还可以提高大数据运维的效率。 具体地,Presto on K8S的架构演进可以包括以下步骤: 1. 标准化运行环境:通过Kubernetes,可以实现统一的运行环境,包括jdk版本、部署目录以及接入统一的监控告警等。这可以提升稳定性并简化运维工作。 2. 潮汐切换:将Spark离线计算资源与Presto查询资源进行潮汐切换,以降低成本并提高资源的使用率。 3. 架构演进:通过结合大数据和K8S,对现有的大数据架构进行技术演进,为后续的大数据计算组件的容器化做准备。 4. 提高运维效率:通过Kubernetes的动态扩缩容等特性,可以提高大数据的运维效率。 对于风险和收益方面,Presto作为一个查询组件,对数据存储和计算不会产生影响。即使出现异常,也只会影响到FDW用户的查询,而不会影响到存储和计算任务。因此,对线上服务的影响很小。 总的来说,Presto on K8S是一种将Presto查询引擎与Kubernetes容器编排平台结合使用的架构,可以提升稳定性、降低成本、提高资源利用率,并为大数据计算组件容器化做准备。通过标准化运行环境和动态扩缩容等特性,还可以提高大数据的运维效率。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值