TT Bigdata TT Bigdata
首页
  • 部署专题

    • 常规安装
    • 一键部署
  • 组件安装

    • 常规&高可用
  • 版本专题

    • 更新说明
  • Ambari-Env

    • 环境准备
    • 开始使用
  • 组件编译

    • 专区—Ambari
    • 专区—Bigtop-官方组件
    • 专区—Bigtop-扩展组件
  • 报错解决

    • 专区—Ambari
    • 专区—Bigtop
  • 其他技巧

    • Maven镜像加速
    • Gradle镜像加速
    • Bower镜像加速
    • 虚拟环境思路
    • R环境安装+一键安装脚本
    • Ivy配置私有镜像仓库
    • Node.js 多版本共存方案
    • Ambari Web本地启动
    • Npm镜像加速
    • PostgreSQL快速安装
    • Temurin JDK 23快速安装
  • 成神之路

    • 专区—Ambari
    • 专区—Bigtop
  • 集成案例

    • Redis集成教学
    • Dolphin集成教学
    • Doris集成教学
    • 持续整理...
  • 核心代码

    • 各组件代码
    • 通用代码模板
  • 国产化&其他系统

    • Rocky系列
    • Ubuntu系列
  • 生产调优

    • 组件调优指南
    • 1v1指导调优
  • 支持&共建

    • 蓝图愿景
    • 技术支持
    • 合作共建
登陆
GitHub (opens new window)

JaneTTR

数据酿造智慧,每一滴都是沉淀!
首页
  • 部署专题

    • 常规安装
    • 一键部署
  • 组件安装

    • 常规&高可用
  • 版本专题

    • 更新说明
  • Ambari-Env

    • 环境准备
    • 开始使用
  • 组件编译

    • 专区—Ambari
    • 专区—Bigtop-官方组件
    • 专区—Bigtop-扩展组件
  • 报错解决

    • 专区—Ambari
    • 专区—Bigtop
  • 其他技巧

    • Maven镜像加速
    • Gradle镜像加速
    • Bower镜像加速
    • 虚拟环境思路
    • R环境安装+一键安装脚本
    • Ivy配置私有镜像仓库
    • Node.js 多版本共存方案
    • Ambari Web本地启动
    • Npm镜像加速
    • PostgreSQL快速安装
    • Temurin JDK 23快速安装
  • 成神之路

    • 专区—Ambari
    • 专区—Bigtop
  • 集成案例

    • Redis集成教学
    • Dolphin集成教学
    • Doris集成教学
    • 持续整理...
  • 核心代码

    • 各组件代码
    • 通用代码模板
  • 国产化&其他系统

    • Rocky系列
    • Ubuntu系列
  • 生产调优

    • 组件调优指南
    • 1v1指导调优
  • 支持&共建

    • 蓝图愿景
    • 技术支持
    • 合作共建
登陆
GitHub (opens new window)
  • Bigtop通用部分

  • Bigtop打包部分

  • Ambari部分

    • Step10-Stacks-包结构
    • Step11-Stacks-组件编排
    • Step12-Stacks-配置文件
    • Step13-Stacks-模板文件
    • Step14-Scripts-环境变量
      • 1. 跨平台环境变量加载体系
        • 1.1 params.py 关键代码示例
      • 2. params_linux.py 详解
        • 2.1 关键参数来源说明
    • Step15-Scripts-执行逻辑
    • Step16-Scripts-服务检查
    • Step17-Scripts-组件优先级
    • Step18-衔接-打通Ambari与Bigtop
  • J-Redis集成-F
  • Ambari部分
JaneTTR
2025-06-24
目录

Step14-Scripts-环境变量

# 1. 跨平台环境变量加载体系

在 Ambari Stacks 的集成体系中,所有服务的运行参数与环境变量都需通过专门的脚本统一加载与适配。 常见的处理路径如下:

ambari-server/src/main/resources/stacks/BIGTOP/3.2.0/services/REDIS/package/scripts/params.py
1
  • params.py 作为环境变量入口,负责自动识别当前操作系统类型,并按需加载 Linux 或 Windows 对应的参数定义文件。
  • 这种设计确保了多平台兼容性,即使后续需要支持 Windows 也无需大幅重构,仅补充 params_windows.py 即可。

# 1.1 params.py 关键代码示例

from ambari_commons import OSCheck
from resource_management.libraries.functions.default import default
from params_linux import *
1
2
3
  • OSCheck 可自动判断当前节点的操作系统类型。
  • Linux 平台默认直接引入 params_linux.py,如需扩展 Windows,只需做条件分支加载即可。

环境变量脚本调用逻辑

# 2. params_linux.py 详解

所有 Redis 相关参数均通过 params_linux.py 动态加载,具体内容如下:

# coding=utf-8
# params.py retrieves all necessary configurations from Ambari for Redis service.
from resource_management.libraries.functions import format
from resource_management.libraries.script.script import Script

SERVER_ROLE_DIRECTORY_MAP = {
    'REDIS_MASTER': 'redis-master',
    'REDIS_SLAVE': 'redis-slave',
    'REDIS_CLIENT': 'redis-client'
}

master_component_directory = Script.get_component_from_role(SERVER_ROLE_DIRECTORY_MAP, "REDIS_MASTER")
slave_component_directory = Script.get_component_from_role(SERVER_ROLE_DIRECTORY_MAP, "REDIS_SLAVE")
client_component_directory = Script.get_component_from_role(SERVER_ROLE_DIRECTORY_MAP, "REDIS_CLIENT")

config = Script.get_config()
stack_root = Script.get_stack_root()

# parent
redis_conf_parent = '/etc/redis/conf'

# bin dir
master_bin = format("{stack_root}/current/{master_component_directory}/src")
slave_bin = format("{stack_root}/current/{slave_component_directory}/src")
client_bin = format("{stack_root}/current/{client_component_directory}/src")

# Redis集群各角色主机清单
redis_master_hosts = config['clusterHostInfo']['redis_master_hosts']
redis_slave_hosts = config['clusterHostInfo']['redis_slave_hosts']

# 直接从 redis-env.xml 和 redis-site.xml 获取参数
redis_user = config['configurations']['redis-env']['redis_user']
redis_port = config['configurations']['redis-env']['redis_port']
redis_password = config['configurations']['redis-env']['redis_password']
redis_log_dir = config['configurations']['redis-env']['redis_log_dir']
redis_data_dir = config['configurations']['redis-env']['redis_data_dir']
redis_pid_dir = config['configurations']['redis-env']['redis_pid_dir']
daemonize = config['configurations']['redis-env']['daemonize']

appendonly = config['configurations']['redis-site']['appendonly']
appendfilename = config['configurations']['redis-site']['appendfilename']
appendfsync = config['configurations']['redis-site']['appendfsync']
save_intervals = config['configurations']['redis-site']['save_intervals']
dbfilename = config['configurations']['redis-site']['dbfilename']
maxmemory = config['configurations']['redis-site']['maxmemory']
maxmemory_policy = config['configurations']['redis-site']['maxmemory_policy']
maxclients = config['configurations']['redis-site']['maxclients']
timeout = config['configurations']['redis-site']['timeout']
databases = config['configurations']['redis-site']['databases']
tcp_keepalive = config['configurations']['redis-site']['tcp_keepalive']
protected_mode = config['configurations']['redis-site']['protected_mode']
cluster_enabled = config['configurations']['redis-site']['cluster_enabled']
cluster_config_file = config['configurations']['redis-site']['cluster_config_file']

# 从 cluster-env.xml 获取运行组
user_group = config['configurations']['cluster-env']['user_group']

# 当前节点主机名与角色判断
hostname = config['agentLevelParams']['hostname']
is_master = hostname in redis_master_hosts
is_slave = hostname in redis_slave_hosts

# 日志和PID文件
redis_log_file = format("{redis_log_dir}/redis.log")
master_redis_pid_file = format("{redis_pid_dir}/redis_master.pid")
slave_redis_pid_file = format("{redis_pid_dir}/redis_slave.pid")
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
66

# 2.1 关键参数来源说明

参数名 来源 XML 说明
redis_user redis-env.xml Redis 运行用户
redis_port redis-env.xml 端口号
redis_log_dir redis-env.xml 日志目录
appendonly redis-site.xml AOF 持久化开关
maxmemory redis-site.xml 最大内存限制
... ... ...
  • 脚本通过 config['configurations'] 结构,自动获取所有 XML 配置内容,实现与 UI 配置参数的动态同步。
#Redis#bigtop#编译日志#自动化构建#版本注入
Step13-Stacks-模板文件
Step15-Scripts-执行逻辑

← Step13-Stacks-模板文件 Step15-Scripts-执行逻辑→

最近更新
01
bigtop-select 打包缺 compat 报错修复 deb
07-16
02
bigtop-select 打包缺 control 文件报错修复 deb
07-16
03
首次编译-环境初始化 必装
07-16
更多文章>
Theme by Vdoing | Copyright © 2017-2025 JaneTTR | MIT License
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式