Cloudera封禁HDP仓库后如何基于Kafka、Storm源码构建Ambari用本地HDP仓库
基于Kafka、Storm源码构建适配Ambari的本地HDP仓库实操方案
1. 前置准备
- 提前获取对应HDP版本的Ambari栈定义文件,路径通常在Ambari服务端的
/var/lib/ambari-server/resources/stacks/HDP/目录下,确认你要适配的HDP大版本(比如HDP 3.1.5)对应的栈配置要求 - 准备编译环境:JDK 1.8、Maven 3.6+、Python 2.7(适配Ambari旧版本依赖)、RPM/DEB打包工具(根据你的集群操作系统选择rpmbuild或者dpkg-dev)
- 提前拉取你需要的Kafka、Storm对应HDP版本的补丁源码,可从公开开源镜像站的归档分区获取对应版本代码,无需额外付费
2. 组件源码编译与打包
Kafka编译打包
- 切换到对应HDP版本的Kafka源码分支,执行编译命令:
mvn clean package -DskipTests -Pdist - 编译完成后在
core/target/目录下获取二进制压缩包,按照HDP栈定义的命名规范重命名,比如kafka_2.11-2.0.0.3.1.5.0-152.tar.gz
- 切换到对应HDP版本的Kafka源码分支,执行编译命令:
Storm编译打包
- 切换到对应HDP版本的Storm源码分支,执行编译命令:
mvn clean package -DskipTests -Pdist - 编译完成后在
storm-dist/target/目录下获取二进制压缩包,同样按照栈定义规则重命名
- 切换到对应HDP版本的Storm源码分支,执行编译命令:
3. 本地HDP仓库构建
- 按照Ambari栈定义的目录结构组织所有二进制包,示例目录结构如下:
HDP/ └── 3.1.5.0-152/ ├── kafka/ │ └── kafka_2.11-2.0.0.3.1.5.0-152.tar.gz ├── storm/ │ └── apache-storm-1.2.1.3.1.5.0-152.tar.gz └── repodata/ - 如果是RPM系操作系统,在仓库根目录执行
createrepo .生成repodata索引;如果是DEB系,执行dpkg-scanpackages . /dev/null | gzip -9c > Packages.gz生成索引 - 将本地仓库通过HTTP服务对外暴露,比如用Nginx或者Apache Httpd托管仓库目录
4. Ambari适配配置
- 登录Ambari服务端,修改操作系统的包管理仓库配置(RPM系为
/etc/yum.repos.d/下的HDP repo文件),替换为你本地的HTTP仓库地址 - 重启Ambari服务端:
ambari-server restart - 进入Ambari Web控制台,进入
Admin > Stacks and Versions页面,验证版本对应的组件包是否可以正常识别,后续即可正常执行服务安装、扩容等操作
注意:编译组件时必须严格匹配HDP对应版本的补丁代码,否则会出现Ambari监控不生效、配置模板不兼容的问题,建议优先复用官方已经归档的对应版本二进制包,可大幅降低编译适配成本。
内容的提问来源于stack exchange,提问作者doshu
相关产品推荐
相关产品推荐

