跳到主要内容
版本:3.0.0

Ambari 开发

检出 Ambari 源代码

请按照“如何贡献”指南中的检出源代码部分操作。

本文将顶层的 "ambari" 目录称为 AMBARI_DIR

构建 Ambari 所需的工具

从源代码构建 Ambari 需要以下工具。

也可以直接启动已预配置全部所需工具的 VM。请参阅快速入门指南中的预配置开发环境部分。

  • xCode(使用 Mac 时,可从 Apple Store 免费下载)
  • JDK 8(Ambari 2.6 及更低版本可使用 JDK 7 编译;从 Ambari 2.7 开始,至少需要 JDK 8)
  • Apache Maven 3.3.9 或更高版本。提示:要持久化对 JAVA_HOME 环境变量的修改并将 Maven 添加到路径,请创建以下文件:文件:~/.profile
source ~/.bashrc

文件:~/.bashrc

export PATH=/usr/local/apache-maven-3.3.9/bin:$PATH
export JAVA_HOME=$(/usr/libexec/java_home)
export _JAVA_OPTIONS="-Xmx2048m -XX:MaxPermSize=512m -Djava.awt.headless=true"
  • Python 2.6(Ambari 2.7 或更高版本要求 Python 2.7 作为最低支持版本)
  • Python setuptools:对于 Python 2.6:下载 setuptools 并运行:
sh setuptools-0.6c11-py2.6.egg

对于 Python 2.7:下载 setuptools 并运行:

sh setuptools-0.6c11-py2.7.egg
  • rpmbuild(rpm-build 软件包)
  • g++(gcc-c++ 软件包)

运行单元测试

  • mvn clean test
  • 在单个模块中运行单元测试:
mvn -pl ambari-server test
  • 仅运行 Java 测试:
mvn -pl ambari-server -DskipPythonTests
  • 仅运行指定的 Java 测试:
mvn -pl ambari-server -DskipPythonTests -Dtest=AgentHostInfoTest test
  • 仅运行 Python 测试:
mvn -pl ambari-server -DskipSurefireTests test
  • 仅运行指定的 Python 测试:
mvn -pl ambari-server -DskipSurefireTests -Dpython.test.mask=TestUtils.py test
  • 仅运行 Checkstyle 和 RAT 检查:
mvn -pl ambari-server -DskipTests test

注意:运行单元测试前,请确保 npm 已在路径中。

生成 Findbugs 报告

  • mvn clean install

这将在 target/findbugs 下生成 xml 和 html 报告。也可以添加跳过单元测试的参数,以更快生成报告。

构建 Ambari

注意:如果构建时出现打开文件过多的错误,请运行:例如 ulimit -n 10000。

要构建 Ambari RPM,请运行以下命令。

注意:将 ${AMBARI_VERSION} 替换为希望构件使用的四位版本(例如 -DnewVersion=1.6.1.1)。

注意:如果由于缺少 jms、jmxri、jmxtools 构件而在编译 ambari-metrics 软件包时遇到错误:

[ERROR] Failed to execute goal on project ambari-metrics-kafka-sink: Could not resolve dependencies for project org.apache.ambari:ambari-metrics-kafka-sink:jar:2.0.0-0: The following artifacts could not be resolved: javax.jms:jms:jar:1.1, com.sun.jdmk:jmxtools:jar:1.2.1, com.sun.jmx:jmxri:jar:1.2.1: Could not transfer artifact javax.jms:jms:jar:1.1 from/to java.net (https://maven-repository.dev.java.net/nonav/repository): No connector available to access repository java.net (https://maven-repository.dev.java.net/nonav/repository) of type legacy using the available factories WagonRepositoryConnectorFactory

解决方法是手动安装这三个缺少的构件:

mvn install:install-file -Dfile=jms-1.1.pom -DgroupId=javax.jms -DartifactId=jms -Dversion=1.1 -Dpackaging=jar
mvn install:install-file -Dfile=jmxtools-1.2.1.pom -DgroupId=com.sun.jdmk -DartifactId=jmxtools -Dversion=1.2.1 -Dpackaging=jar
mvn install:install-file -Dfile=jmxri-1.2.1.pom -DgroupId=com.sun.jmx -DartifactId=jmxri -Dversion=1.2.1 -Dpackaging=jar

If when compiling it seems stuck, and you've already increased Java and Maven heapsize, it could be that Ambari Views has a lot of artifacts, and the rat-check is choking up. In this case, try running

git clean -df (this will remove untracked files and directories)
mvn clean package -DskipTests -Drat.ignoreErrors=true
or
mvn clean package -DskipTests -Drat.skip

使用 Maven 设置版本

Ambari 2.8+ 在构建 Ambari 时使用更新版本的方法来更新版本。

RHEL/CentOS 6

# Update the revision property to the release version
mvn versions:set-property -Dproperty=revision -DnewVersion=2.8.0.0.0

mvn -B clean install package rpm:rpm -DskipTests -Dpython.ver="python >= 2.6" -Preplaceurl

SUSE/SLES 11

# Update the revision property to the release version
mvn versions:set-property -Dproperty=revision -DnewVersion=2.8.0.0.0

mvn -B clean install package rpm:rpm -DskipTests -Psuse11 -Dpython.ver="python >= 2.6" -Preplaceurl

Ubuntu 12

# Update the revision property to the release version
mvn versions:set-property -Dproperty=revision -DnewVersion=2.8.0.0.0

mvn -B clean install package jdeb:jdeb -DskipTests -Dpython.ver="python >= 2.6" -Preplaceurl

Ambari Server 将创建以下软件包:

  • RPM 将创建在 AMBARI_DIR/ambari-server/target/rpm/ambari-server/RPMS/noarch 下。
  • DEB 将创建在 AMBARI_DIR/ambari-server/target/ 下。

Ambari Agent 将创建以下软件包:

  • RPM 将创建在 AMBARI_DIR/ambari-agent/target/rpm/ambari-agent/RPMS/x86_64 下。
  • DEB 将创建在 AMBARI_DIR/ambari-agent/target 下。

可选参数:

  • -X -e:添加这些选项以获得 Maven 更详细的输出,对调试 Maven 问题很有用。
  • -DdefaultStackVersion=STACK-VERSION
  • 设置用于安装的默认 Stack 和版本(例如 -DdefaultStackVersion=HDP-1.3.0)
  • -DenableExperimental=true
  • 启用可通过 Ambari Web 使用的实验性功能(默认值为 false)
  • 添加 -Dviews 参数即可将所有视图打包到 RPM 中
    • mvn -B clean install package rpm:rpm -Dviews -DskipTests
  • -Dviews 中添加 --projects 参数即可构建指定视图
    • mvn -B clean install package rpm:rpm --projects ambari-web,ambari-project,ambari-views,ambari-admin,contrib/views/files,contrib/views/pig,ambari-server,ambari-agent,ambari-client,ambari-shell -Dviews -DskipTests

注意:以下所有操作均以 root 身份运行。

构建 Ambari Metrics

如果计划安装 Ambari Metrics 服务,还需要构建 Ambari Metrics 项目。

cd ambari-metrics
mvn clean package -Dbuild-rpm -DskipTests

For Ubuntu:
cd ambari-metrics
mvn clean package -Dbuild-deb -DskipTests

注意:

指标 RPM 位于 ambari-metrics-assembly/target/。安装 Ambari Metrics 服务需要这些文件。

运行 Ambari Server

首先安装 Ambari Server RPM。

在 RHEL/CentOS 上:

yum install ambari-server/target/rpm/ambari-server/RPMS/noarch/ambari-server-*.noarch.rpm

在 SUSE/SLES 上:

zypper install ambari-server/target/rpm/ambari-server/RPMS/noarch/ambari-server-*.noarch.rpm

在 Ubuntu 12 上:

dpkg --install ambari-server/target/ambari-server-*.deb # Will fail with missing dependencies errors
apt-get update # Update locations of dependencies
apt-get install -f # Install all failed dependencies
dpkg --install ambari-server/target/ambari-server-*.deb # Will succeed

初始化 Ambari Server:

ambari-server setup

启动 Ambari Server:

ambari-server start

查看 Ambari Server 日志:

tail -f /var/log/ambari-server/ambari-server.log

要访问 Ambari,请在浏览器中打开

http://{ambari-server-hostname}:8080

并使用用户名和密码登录。

在集群的每台主机上手动安装并启动 Ambari Agent

安装 Ambari Agent RPM。

在 RHEL/CentOS 上:

在 SUSE/SLES 上:

zypper install ambari-agent/target/rpm/ambari-agent/RPMS/x86_64/ambari-agent-*.rpm

Ubuntu12:

dpkg --install ambari-agent/target/ambari-agent-*.deb

编辑 /etc/ambari-agent/conf/ambari-agent.ini 中的 hostname 行,设置 Ambari Server 的位置。

启动 Ambari Agent:

ambari-agent start

查看 Ambari Agent 日志:

tail -f /var/log/ambari-agent/ambari-agent.log

在 Eclipse 中设置 Ambari

$ mvn clean eclipse:eclipse

完成上述操作后,可以通过 Eclipse 的 “Import > Maven > Existing Maven Project” 导入项目。选择克隆 git 仓库的根目录,即可在 Eclipse 中看到以下项目:

ambari
|
|- ambari-project
|- ambari-server
|- ambari-agent
|- ambari-web

选择顶层的 “ambari pom.xml”,然后点击 Finish。