|
| 1 | +CRH开发的核心是bigtop开发和ambari开发,目前ambari已集成到bigtop中,对ambari的修改以patch的方式集成到bigtop中。 |
| 2 | + |
| 3 | +这里分为两部分说明,分别是ambari开发和bigtop开发,每个部分会说明开发时涉及到的代码模块。 |
| 4 | + |
| 5 | +[TOC] |
| 6 | + |
| 7 | +## bigtop开发 |
| 8 | + |
| 9 | +bigtop开发涉及到的模块如下: |
| 10 | + |
| 11 | +| 模块 | 说明 | |
| 12 | +| --------------- | ------------------ | |
| 13 | +| bigtop.bom | 控制组件及版本 | |
| 14 | +| packages.gradle | 控制全局参数传递 | |
| 15 | +| bigtop-packages | 设计软件包安装细节 | |
| 16 | +| build.sh | 自定义的编译入口 | |
| 17 | + |
| 18 | +下面分别对这几部分进行说明。 |
| 19 | + |
| 20 | +### bigtop.bom |
| 21 | + |
| 22 | +这个文件控制组件(例如hadoop)的下载地址以及版本信息。 |
| 23 | + |
| 24 | +需要注意的全局参数如下: |
| 25 | + |
| 26 | +| 参数 | 说明 | 示例 | |
| 27 | +| ------------------- | ------------------------------------------------------------ | --------------------------------------------- | |
| 28 | +| crh_version_with_bn | crh安装路径有一部分是版本号组成的,使用这个参数指定,格式参考示例或者代码。 | 6.1.2.6-1457 | |
| 29 | +| crh_version_as_name | crh软件包名包含版本号,使用这个参数指定,格式参考示例或者代码。 | -6-1-2-6-1457 | |
| 30 | +| crh_tag | crh安装路径有一部分是stack名组成的,这里是crh,目前还未完善,不建议修改。 | crh | |
| 31 | +| APACHE_MIRROR | 软件源码包下载路径前缀,和每个组件中指定的路径拼接成完成的源码包下载路径。 | http://compile.redoop.org/redoop/bigtop | |
| 32 | +| APACHE_ARCHIVE | 软件源码包存档路径前缀,没有检验效果。 | http://compile.redoop.org/redoop/archive/dist | |
| 33 | + |
| 34 | +需要注意的组件参数如下,建议参考代码理解。 |
| 35 | + |
| 36 | +#### name |
| 37 | + |
| 38 | +组件名。 |
| 39 | + |
| 40 | +#### version |
| 41 | + |
| 42 | +指定一些版本信息。 |
| 43 | + |
| 44 | +base指定软件的版本号; |
| 45 | + |
| 46 | +pkg指定安装包的版本号,一般和base一样; |
| 47 | + |
| 48 | +release使用默认值即可,还没有深入研究。 |
| 49 | + |
| 50 | +#### tarball |
| 51 | + |
| 52 | +指定源码包名的一些信息。 |
| 53 | + |
| 54 | +destination指定编译前的源码包名; |
| 55 | + |
| 56 | +source指定要下载的源码包名 |
| 57 | + |
| 58 | +#### url |
| 59 | + |
| 60 | +指定软件源码包的url信息。 |
| 61 | + |
| 62 | +download_path指定软件源码包的部分下载路径; |
| 63 | + |
| 64 | +site拼接软件源码包的下载路径; |
| 65 | + |
| 66 | +archive指定软件源码包的存档路径。 |
| 67 | + |
| 68 | +### packages.gradle |
| 69 | + |
| 70 | +主要是传递一些全局参数,也有其他的功能。 |
| 71 | + |
| 72 | +这个一般不用修改,如果研究透了,可以尝试按需修改。 |
| 73 | + |
| 74 | +### bigtop-packages |
| 75 | + |
| 76 | +这个目录的开发主要包含三块,分别是`common`、`deb`和`rpm`,都在src目录下。 |
| 77 | + |
| 78 | +#### common |
| 79 | + |
| 80 | +一些通用的信息文件和脚本文件。 |
| 81 | + |
| 82 | +主要文件如下: |
| 83 | + |
| 84 | +| 文件 | 说明 | |
| 85 | +| ------------------ | ----------------------------------------------------- | |
| 86 | +| do-component-build | 源码的编译逻辑,比如一些mvn相关的命令 | |
| 87 | +| install_${name}.sh | 例如,install_hadoop.sh。主要用来设计软件包的安装细节 | |
| 88 | + |
| 89 | +#### deb |
| 90 | + |
| 91 | +有关deb格式软件包的封包逻辑在这里。 |
| 92 | + |
| 93 | +#### rpm |
| 94 | + |
| 95 | +有关rpm格式软件包的封包逻辑在这里。这个和common是目前开发的重点。 |
| 96 | + |
| 97 | +主要文件是spec文件,这个文件一般在SPECS目录下,比如 hadoop.spec。 |
| 98 | + |
| 99 | +这个是标准的spec格式文件,是rpm包的核心文件,网上资料很多,可以自行学习,配合代码理解。 |
| 100 | + |
| 101 | +### build.sh |
| 102 | + |
| 103 | +这个文件是我自定义的一个编译入口,是对bigtop编译命令的封装。 |
| 104 | + |
| 105 | + |
| 106 | + |
| 107 | +## ambari开发 |
| 108 | + |
| 109 | +ambari开发主要涉及三部分,分别是`web显示`、`CRH`和`service`。 |
| 110 | + |
| 111 | +主要代码都已封装进bigtop/bigtop-packages/common/ambari。在这里面还有一个licenseutils,提供ambari的license支持。 |
| 112 | + |
| 113 | +下面分别介绍。 |
| 114 | + |
| 115 | +### web显示 |
| 116 | + |
| 117 | +这部分主要是ambari登录页和样式的修改,请看custom-style目录。 |
| 118 | + |
| 119 | +### CRH |
| 120 | + |
| 121 | +这部分是核心,是CRH在ambari中的核心代码,对应目录是stacks/CRH,其中的6.0这个目录是基本目录,用来和ambari交互,提供其他版本继承。是参照HDP开发的。 |
| 122 | + |
| 123 | +### service |
| 124 | + |
| 125 | +这是ambari的一个概念,是一个可插拔的特性,每个组件是一个service,只要放到指定位置,ambari server就可以识别到,可以按需自定义service。开发规范参考ambari官方文档。 |
| 126 | + |
| 127 | + |
| 128 | + |
| 129 | + |
| 130 | + |
0 commit comments