声明:博主写了一些Ambari系列文章,可以在历史文章中查看。
一、概述
如果要开发ambari API的话,我们需要在ambari-server的文件里面添加相关java代码。
然后整体编译ambari,可以不编译ambari-metrics系列。
编译成功后,yum remove ambari-server
yum install ambari-server-*.rpm
ambari-server setup
vim /etc/ambari-server/conf/ambari.properties
server.jdbc.driver.path=/usr/share/java/mysql-jdbc.driver.jar
mysql-jdbc.driver.jar下载地址 将jar包放入/usr/share/java/目录下
ambari-server setup –jdbc-db=mysql –jdbc-driver=/usr/share/java/mysql-jdbc.driver.jar
ambari-server start
访问ambari页面
二、详细开发指南
1、上代码实例:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65
| package com.xxx.xxx.api.services;
import javax.ws.rs.POST; import javax.ws.rs.GET; import javax.ws.rs.Path; import javax.ws.rs.Produces; import javax.ws.rs.core.Context; import javax.ws.rs.core.HttpHeaders; import javax.ws.rs.core.Response; import javax.ws.rs.core.UriInfo; import javax.ws.rs.PathParam; import java.util.HashMap; import java.util.List; import java.util.Map; import net.sf.json.JSONObject; import org.apache.http.HttpEntity; import org.apache.http.client.methods.CloseableHttpResponse; import org.apache.http.client.methods.HttpGet; import org.apache.http.impl.client.CloseableHttpClient; import org.apache.http.impl.client.HttpClients; import org.apache.http.util.EntityUtils;
import java.io.IOException;
@Path("/yarnInfo") public class yarnService { @GET @Path("/show/{ip}") @Produces("application/json") public Map<String, String> testYarn(@PathParam("ip") String ip) { Map<String, String> map = new HashMap<String, String>(); map.put("status", "OK"); map.put("address", "http://"+ip+":8088/ws/v1/cluster/apps"); return map; }
@GET @Path("/yarn/{ip}") @Produces("application/json") public Map<String, Object> yarn(@PathParam("ip") String ip) throws IOException { Map<String, Object> map = new HashMap<String, Object>(); String info = "{}"; CloseableHttpClient httpclient = HttpClients.createDefault(); HttpGet httpGet = new HttpGet("http://"+ip+":8088/ws/v1/cluster/apps"); CloseableHttpResponse response = httpclient.execute(httpGet); HttpEntity entity = response.getEntity(); info = EntityUtils.toString(entity); JSONObject json = JSONObject.fromObject(info); map.put("info", json);
response.close(); return map; } } # 说明: 带参的方法:@PathParam("ip") String ip 返回的数据什么类型:@Produces("application/json") 请求的方式:@GET、@POST
|
2、这样等编译成功,并且ambari安装成功后,就可以访问自制API:ip:8080/api/v1/yarnInfo/show/参数
3、需要的jar包,可以在ambari-server的根目录下的pom.xml文件内添加中央仓库位置,整体编译的时候会自动下载。
其实这样访问接口还是404状态,因为接口所在的类没有注册。
1 2 3 4
| ... 由于商业价值,此处省略若干内容... 如需获取清洗流程图以及后续详细干货内容,可添加好友:create17_ 详聊。 ...
|
三、如何联系我
如需获取清洗流程图以及后续详细干货内容,可添加好友:create17_ 详聊。
Ambari 二次开发知识库地址:https://www.yuque.com/create17/ambari