前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >Ambari 自定义服务启动成功后,依旧显示停止状态的解决方案

Ambari 自定义服务启动成功后,依旧显示停止状态的解决方案

作者头像
create17
发布于 2019-08-23 06:15:50
发布于 2019-08-23 06:15:50
2.6K20
代码可运行
举报
运行总次数:0
代码可运行
1、概述

如果遇到该情况,首先前往 /var/log/ambari-agent/ambari-agent.log 查看日志输出。

服务安装后,每隔大约 60s 会执行 status() 方法。如果执行 status() 方法的过程中报错,则在 Ambari 页面上会显示服务已停止。如果执行 status() 方法的过程中没报错,则在 Ambari 页面上显示服务正常。

通常在 status() 方法中,我们会使用 Ambari 提供的 resource_management 模块里的 check_process_status() 来判断服务的状态。

check_process_status() 通过检测一个 pid 文件里面的进程号,来判断服务的启动状态。通常 pid 文件内只有一个进程号,如 12168 。

2、问题示例分析

2.1、报错

以自定义服务 JanusGraph 为例,status() 方法是这样写的:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
from resource_management import *

def status(self, env):
    import graphexp_params
    env.set_params(graphexp_params)
    check_process_status(graphexp_params.graphexp_nginx_pid_file)

graphexp_params.py 文件的局部内容:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
from resource_management import *

config = Script.get_config()
# graphexp的nginx pid文件路径
graphexp_pid_dir = config['configurations']['graphexp-server']['graphexp_pid_dir']
# graphexp的nginx pid文件路径
graphexp_nginx_pid_file = os.path.join(graphexp_pid_dir, 'graphexp_nginx.pid')

上述代码是动态获取 Ambari 页面上的 graphexp_pid_dir 配置项,然后拼凑成一个 pid 文件路径,这个 pid 文件内容只有 graphexp 组件的进程号。

结果出错了,根据 /var/log/ambari-agent/ambari-agent.log 日志输出,发现在 status_params.py 里面获取 graphexp-server.xml 文件内的参数值报错,如下图所示:

2.2、问题排查

在 status() 方法下,输出 config['configurations'] 发现只能打印出:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
ams-hbase-env,infra-solr-env,hbase-env,ams-env,elastic-env,janusgraph-env,ams-grafana-env,hadoop-env,zookeeper-env,cluster-env

以上这些值,没有 graphexp-server 项。

而在 start() 方法里面打印有很多,所有的 configurations 的 xml 文件都被加载到了:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
ranger-hdfs-audit,ssl-client,infra-solr-log4j,ranger-hdfs-policymgr-ssl,ams-hbase-site,elastic-config,ranger-hbase-audit,hdfs-logsearch-conf,ams-grafana-env,ranger-hdfs-security,ams-ssl-client,infra-solr-env,ranger-hdfs-plugin-properties,hbase-policy,ams-logsearch-conf,ams-hbase-security-site,hdfs-site,ams-env,ams-site,ams-hbase-policy,janusgraph-env,hadoop-metrics2.properties,hadoop-policy,hdfs-log4j,hbase-site,infra-logsearch-conf,ranger-hbase-plugin-properties,ams-grafana-ini,graphexp-server,ams-ssl-server,infra-solr-xml,ams-log4j,ams-hbase-env,core-site,infra-solr-security-json,gremlin-server,janusgraph-hbase-solr,infra-solr-client-log4j,hbase-logsearch-conf,hadoop-env,zookeeper-log4j,hbase-log4j,postgresql,ssl-server,hbase-env,zoo.cfg,elastic-env,ranger-hbase-policymgr-ssl,zookeeper-logsearch-conf,cluster-env,zookeeper-env,ams-hbase-log4j,ranger-hbase-security

所以猜测在 status() 方法里面,只能识别 xxx-env.xml 里面的配置内容。但是 ambari2.7 的自定义服务没有这个问题,只在 ambari2.6 上出现了。

2.3、解决办法

新建 graphexp-env.xml 文件,将 graphexp_pid_dir 配置项添加到该文件内。graphexp_params.py 文件的 graphexp_pid_dir 写法修改为:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# graphexp的nginx pid文件路径
graphexp_pid_dir = config['configurations']['graphexp-env']['graphexp_pid_dir']
# graphexp的nginx pid文件路径
graphexp_nginx_pid_file = os.path.join(graphexp_pid_dir, 'graphexp_nginx.pid')

小结:在 status() 方法内,获取 graphexp-env.xml 文件内的配置,只有 xxx-env.xml 的内容才可以被 status() 方法加载到。

3、status()方法调试建议

由于 status() 是轮询调用,且目前还不知道日志输出的具体位置(没有输出到 ambari-agent.log 里面),所以可以用 Execute("echo {0} >> /tmp/test.log".format(status_params.gtm_standby_pid_file)) 命令来输出需要的参数值。同时也可以根据上述 Execute 语句位置来判断代码具体的报错行数,方便定位代码报错地点。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-08-22,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 大数据实战演练 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
2 条评论
热度
最新
感谢分享,成功解决了!
感谢分享,成功解决了!
11点赞举报
哈哈,帮到你很开心呀。更多ambari实战可以加公众号〔大数据实战演练〕了解。
哈哈,帮到你很开心呀。更多ambari实战可以加公众号〔大数据实战演练〕了解。
回复回复点赞举报
推荐阅读
编辑精选文章
换一批
Ambari自定义服务干货
                    “ ambari自定义服务干货,非常干的那种”
create17
2018/12/13
4.2K17
国内网络编译,Ambari 2.7.6 全部模块源码编译笔记
该版本相对 2.7.5 版本以来,共有 26 个 contributors 提交了 114 个 commits 以及修改了 557 个文件。详情见:https://github.com/apache/ambari/compare/release-2.7.5...release-2.7.6
create17
2023/02/13
1.8K0
国内网络编译,Ambari 2.7.6 全部模块源码编译笔记
Ambari集成Elasticsearch 5.x
该文是关于介绍如何使用 Elasticsearch 进行日志搜索的内容。文章首先介绍了 Elasticsearch 的基本概念和架构,然后详细讲解了如何使用 Elasticsearch 进行日志搜索。文章还介绍了 Elasticsearch 的各种插件和工具,以及如何在实践中进行配置和部署。
程裕强
2018/01/02
2.3K1
Ambari集成Elasticsearch 5.x
ambari系列--报错问题
hbase 启动不起来,通常是因为节点日期不同步。 HDFS 无法启动,通常是因为hdfs 进入了安全模式,需要先退出来,再启动。
Dlimeng
2023/06/29
4580
Ambari2.6安装部署Hadoop2.7
Apache Ambari是一种基于Web的工具,支持Apache Hadoop集群的供应、管理和监控。Ambari已支持大多数Hadoop组件,包括HDFS、MapReduce、Hive、Pig、 Hbase、Zookeper、Sqoop和Hcatalog等。Apache Ambari 支持HDFS、MapReduce、Hive、Pig、Hbase、Zookeper、Sqoop和Hcatalog等的集中管理。也是5个顶级hadoop管理工具之一。Ambari能够安装安全的(基于Kerberos)Hadoop集群,以此实现了对Hadoop 安全的支持,提供了基于角色的用户认证、授权和审计功能,并为用户管理集成了LDAP和Active Directory。
三杯水Plus
2018/11/14
1.4K0
0480-如何从HDP2.6.5原地迁移到CDH5.16.1
我们常使用的Hadoop平台包括Apache Hadoop,CDH和HDP,有时我们会碰到需要迁移平台的情况,举个例子,比如你已经一直在使用Apache Hadoop2.4,近期看到CDH6附带Hadoop3发布了,想迁移到CDH并且做整个平台的所有组件升级。平台迁移和平台升级的方式基本一样的,一般有2种大的选择,第一种是原地升级即直接在原有平台上操作,该办法操作效率较高,马上看到效果,但往往风险较高,比如升级失败回滚方案不完善,跨大版本比如Hadoop2到Hadoop3可能HDFS还有丢数据的风险;第二种是拷贝数据的方式升级,需要额外的服务器资源,会新搭平台,然后把旧的平台的数据拷贝过去,数据拷贝完毕后,再把旧集群的机器下线了慢慢加入到新集群,该方法一般实施周期较长,但是风险较小。根据实际情况可以选择不同的方式来进行平台迁移或者平升级,另外对于两种方案还可以具体细化分类出不同的方案,比如第一种方案考虑提前备份数据或者备份关键数据等,本文Fayson不做细化讨论。
Fayson
2018/12/27
8400
0480-如何从HDP2.6.5原地迁移到CDH5.16.1
大数据平台:Ambari集群管理
Ambari是Hortonworks主导发行的开源管理平台,作为Apache顶级项目,Ambari也是最早且最成熟的大数据集群管理开源组件,可类比于Cloudera研发的CDH Manager。在容器化未盛行的时候,是商用(toB/toC)大数据平台构建的不二选择,用于简化Apache Hadoop集群的配置和管理。除了Hadoop集群,基于可扩展配置文件,用户可扩展自定义组件的部署和运行管理。Ambari 提供了一个易于使用的Web UI和API,使得系统管理员可以对集群进行监控、配置和管理。
Yiwenwu
2024/04/30
8120
大数据平台:Ambari集群管理
Ambari 注册主机失败解决方案汇总
今天又有朋友咨询我 ambari 相关的问题,注册主机步骤出错。他说他试了好几次,无奈只能加我好友来寻求帮助。
create17
2022/11/17
1.8K0
Ambari 注册主机失败解决方案汇总
Ambari在离线环境中安装Hadoop集群 顶
如果手工安装Hadoop集群,在管理和后继部署中,越来越多的问题不断出现,主要如下:
白石
2019/08/23
1.5K0
Ubuntu平台下源码编译Ambari 2.4
Ubuntu/UbuntuKylin平台下源码编译Ambari 2.4 1、Ubuntu环境配置 1.1 网络配置 kylin@Ubuntu:~$ sudo vim /etc/network/interfaces \# interfaces(5) file used by ifup(8) and ifdown(8) auto ens32 iface ens32 inet static address 192.168.1.166 gateway 192.168.1.1 netmask 255.255.255.
程裕强
2022/05/06
1.2K0
Ambari实战-1:Ambari使用场景及介绍
本篇文章主要讲解Ambari的一些基础知识,让大家对Ambari有一个潜意识的认识。
程序猿梦工厂
2020/12/29
1.4K0
Ambari安装指南 顶
Ambari 跟 Hadoop 等开源软件一样,也是 Apache Software Foundation 中的一个项目,并且是顶级项目.目前最新的发布版本是 2.1.2. 就 Ambari 的作用来说,就是创建,管理,监视 Hadoop 的集群,但是这里的 Hadoop 是广义,指的是 Hadoop 整个生态圈(例如 Hive,Hbase,Sqoop,Zookeeper 等),而并不仅是特指 Hadoop. 用一句话来说,Ambari 就是为了让 Hadoop 以及相关的大数据软件更容易使用的一个工具. 说到这里,大家就应该明白什么人最需要 Ambari 了.那些苦苦花费好几天去安装,调试 Hadoop 的初学者是最能体会到 Ambari 的方便之处的. 而且,Ambari 现在所支持的平台组件也越来越多,例如流行的 Spark,Storm 等计算框架,以及资源调度平台 YARN 等,我们都能轻松地通过 Ambari 来进行部署. Ambari 自身也是一个分布式架构的软件,主要由两部分组成:Ambari Server 和 Ambari Agent.简单来说,用户通过 Ambari Server 通知 Ambari Agent 安装对应的软件; Agent 会定时地发送各个机器每个软件模块的状态给 Ambari Server,最终这些状态信息会呈现在 Ambari 的 GUI,方便用户了解到集群的各种状态,并进行相应的维护.
白石
2019/08/23
1.5K0
Ambari?自动部署Hadoop集群
Ambari 跟 Hadoop 等开源软件一样,也是 Apache Software Foundation 中的一个项目,并且是顶级项目。就 Ambari 的作用来说,就是创建、管理、监视 Hadoop 的集群,但是这里的 Hadoop 是广义,指的是 Hadoop 整个生态圈(例如 Hive,Hbase,Sqoop,Zookeeper 等)。它帮助我们更好的去管理Hadoop集群相关的服务,也支持一些扩展,可以让我们去定制一些服务。 你是不是为了配置hadoop集群伤透了脑筋?为了集群添加机器而头痛。如果你遇到了Ambari你就会发现,原来他就是你的救世主。 Ambari 自身也是一个分布式架构的软件,主要由两部分组成:Ambari Server 和 Ambari Agent。简单来说,用户通过 Ambari Server 通知 Ambari Agent 安装对应的软件;Agent 会定时地发送各个机器每个软件模块的状态给 Ambari Server,最终这些状态信息会呈现在 Ambari 的 GUI,方便用户了解到集群的各种状态,并进行相应的维护。 Ambari的详细介绍及相关信息可以浏览下面的网址,虽然他很NB,但是不是我们今天的重点! Ambari——大数据平台的搭建利器
叁金
2018/09/04
1.1K0
Ambari Hive 无法正常查询的解决
$ beeline -u "jdbc:hive2://hostname.domain.cn:10000/default;principal=hive/_HOST@domain.com;" Connecting to jdbc:hive2://hostname.domain.cn:10000/default;principal=hive/_HOST@domain.com; Connected to: Apache Hive (version release-1.2.1-EDH-1.1.2) Driver: Hive JDBC (version release-1.2.1-EDH-1.1.2) Transaction isolation: TRANSACTION_REPEATABLE_READ Beeline version release-1.2.1-EDH-1.1.2 by Apache Hive 0: jdbc:hive2://hostname.domain.cn:10000> show databases;
星哥玩云
2022/08/16
1.5K0
Ambari Hive 无法正常查询的解决
平台安装--ambari安装
baseurl=http://192.168.199.50/ambari/centos7/
小徐
2019/08/05
3.8K0
平台安装--ambari安装
博主好贴心,为已有的 ambari 集群修改主机名~
时不时就有小伙伴微信里面问我有没有做过,为已有的 ambari 集群修改主机名?之前是有修改过 ip 的,主机名还真没修改过,只能给他提供一份官方的步骤:
create17
2020/12/16
1.2K0
博主好贴心,为已有的 ambari 集群修改主机名~
Ambari架构源码解析
Ambari是hadoop分布式集群配置管理工具,是由hortonworks主导的开源项目。它已经成为apache基金会的孵化器项目,已经成为hadoop运维系统中的得力助手,引起了业界和学术界的关注。
程裕强
2022/05/06
1.1K0
Ambari架构源码解析
一键式完全删除CDH 6.3.1
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
用户1148526
2019/11/12
3.2K0
大数据Ambari自定义服务详细介绍
四年多前,入职一家大厂大数据部门主要工作就是从ambari集成大数据组件服务开始做起,当时需要把机器学习平台集成到大数据平台,当时把ambari进行了大量的修改,形成了一套完整的私有化平台,不仅是换了一层皮肤,而且把企业当中自研的组件和服务也集成进来,还在上面加入了用户登陆体系、安全认证体系、监控告警体系、license管理、自动增机器,在我看来应该是ambari最深入使用的一波人了。
house.zhang
2022/03/23
2K0
0859-7.1.6-如何对Ranger审计日志进行调优
什么是Ranger Audit?Ranger 审计功能 ,审计功能模块可以帮助我们更好的管理集群组件,例如 HDFS、HBase、Hive 等数据资源的访问,更快的定位权限导致的应用问题。并且使用 Ranger 控制权限的同时也可以很好地监控、查询用户的历史操作,做到有证可查,有理可依。
Fayson
2021/07/28
2.3K0
相关推荐
Ambari自定义服务干货
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文