DataLight 是一个开源的大数据运维管理平台,用于简化和自动化大数据服务的部署、管理和监控。它提供了一套全面的工具来管理您的大数据生态系统,旨在帮助企业实现简洁、快速地构建 OLAP 与 OLTP 统一的业务平台。用户可以通过 plugin 插件,以插拔式的方式快速集成自己的业务服务或其他大数据组件,从而在平台中进行统一管理。
资源汇总如下:
资源包下载地址 网盘提取码: data
这个软件架构通过Master-Worker主从模式实现了高可用、可扩展的分布式计算与大数据处理平台。
下表列出了 DataLight 平台当前一级功能及其受支持状态:
序号 | 一级功能 | 是否已支持 |
---|---|---|
1 | 节点初始化助手 | 是 |
2 | 主从进程维护 | 是 |
3 | 集群管理 | 是 |
4 | 节点初始化 | 是 |
5 | 节点操作与管理 | 是 |
6 | 服务组件装配信息管理 | 是 |
7 | 服务操作与管理 | 是 |
8 | 组件操作与管理 | 是 |
9 | 服务组件预配置项管理 | 是 |
10 | 服务组件配置文件管理 | 是 |
11 | 分布式日志全局管理 | 是 |
12 | 监控管理 | 是 |
13 | 告警管理 | 是 |
14 | 用户管理 | 是 |
15 | 权限管理 | 是 |
本项目编译需要满足如下需要:
部署本项目前,请确保你已经准备好了必要的物理资源、操作系统并且理解了本项目的部署流程。
确保您有足够的硬件资源来部署和运行本项目。推荐的最小配置包括:
本项目目前仅支持(其他系统未测试):
clone 本项目,并下载所以来的服务组件包和依赖库库,包括:
clone 当前仓库,并编译;
下载服务组件包,并放置于 plugins 目录下;
构建 Linux 本地目录如下,并包含各目录中对应的文件(可直接网盘下载,或从项目的 .document 目录中拷贝):
目录 | 说明 | 是否必要 |
---|---|---|
/opt/datalight/app | 主从进程包目录 | 是 |
/opt/datalight/app/config | 主从进程包启动配置目录 | 是 |
/opt/datalight/assistant | 初始化节点助手目录 | 是 |
/opt/datalight/assistant/conf | 初始化节点助手配置文件 | 是 |
/opt/datalight/assistant/main | 初始化节点助手执行总入口 | 是 |
/opt/datalight/assistant/repo | 初始化节点助手依赖资源 | 是 |
/opt/datalight/assistant/scripts | 初始化节点助手相关子脚本 | 是 |
/opt/datalight/bin | 主从进程启停管理脚本 | 是 |
/opt/datalight/conf | 环境与服务配置文件目录 | 是 |
/opt/datalight/conf/env | 环境配置文件与脚本目录 | 是 |
/opt/datalight/conf/service | 服务部署维护配置文件目录 | 是 |
/opt/datalight/conf/permission | 权限生命与备注文件(暂无用) | 否 |
/opt/datalight/conf/web | 服务组件 WebUI 配置文件目录 | 是 |
/opt/datalight/docs | 项目文档目录 | 否 |
/opt/datalight/docs/api | 三方 API 目录 | 否 |
/opt/datalight/docs/asserts | 文档资源目录 | 否 |
/opt/datalight/docs/package | 服务组件打包步骤文档记录目录 | 否 |
/opt/datalight/docs/maven | Maven 配置目录 | 否 |
/opt/datalight/docs/src-[大写服务名称]-版本号 | 服务组件源码文件修改记录目录 | 否 |
/opt/datalight/exporter | JMX Eeporter 目录 | 是 |
/opt/datalight/exporter/bin | Exporter 运行脚本示例目录 | 否 |
/opt/datalight/exporter/conf | Exporter 配置文件模板目录 | 是 |
/opt/datalight/exporter/jar | Exporter 插件 Jar 包所在目录 | 是 |
/opt/datalight/node | 节点操作相关配置与脚本目录 | 是 |
/opt/datalight/node/conf | 节点操作相关配置文件目录 | 是 |
/opt/datalight/node/scripts | 节点操作相关操作的脚本文件所在目录 | 是 |
/opt/datalight/orm | 数据库相关资料目录 | 否 |
/opt/datalight/orm/dmj | 数据库模型设计目录 | 否 |
/opt/datalight/orm/query | 项目中可能用到的 SQL 查询示例目录 | 否 |
/opt/datalight/orm/sql | Master 元数据库 Schema 初始化文件所在目录 | 否 |
/opt/datalight/plugins | 服务组件对应的插件目录 | 是 |
/opt/datalight/plugins/[大写服务名称]/dashboard | 仅 MONITOR 中存在,各个服务组件的监控模板 | 是 |
/opt/datalight/plugins/[大写服务名称]/dlc | 服务组件资源包(.tar.gz) | 是 |
/opt/datalight/plugins/[大写服务名称]/jars | 服务组件对应的插件编译后的 Jar 包所在目录 | 是 |
/opt/datalight/plugins/[大写服务名称]/placeholder | 服务组件预配置项配置文件所在目录 | 是 |
/opt/datalight/plugins/[大写服务名称]/scripts | 服务组件聚合操作脚本所在目录 | 是 |
/opt/datalight/plugins/[大写服务名称]/templated | 服务组件配置文件模板所在目录 | 是 |
/opt/datalight/scripts | 公共脚本目录 | 是 |
/opt/datalight/scripts/tools | 通用工具脚本目录 | 是 |
在开始前,首先确认已在主节点中存在上述对应目录。
前往 DataLight 前端开源项目,按照对应文档执行编译操作,编译后,将编译文件解压后,拷贝至后端源码项目 boundivore-datalight\datalight-services\services-master\src\main\resources\public 目录中。
DataLight 前端开源项目:
https://gitee.com/boundivore/boundivore-datalight-web
将项目克隆后,使用代码编辑器打开后,执行 datalight-services 模块的编译操作(执行 boot-jar, 或从网盘中下载编译好的 jar 包),在 services-master 与 services-worker 项目的 build/libs 目录下,可以分别看到 services-master-[版本号].jar、services-worker-[版本号].jar 两个进程文件,拷贝至 app/ 目录下即可。
将项目克隆后,使用代码编辑器打开后,执行 datalight-plugins 模块的编译操作,将该模块下对应服务的插件 jar 包拷贝至指定目录(plugins/[服务名称]/jar)中,例如:/opt/datalight/plugins/[大写服务名称]/jars。
在主项目目录中,找到 .documents 文件夹,其下对应内容,拷贝至上述表格中对应的目录中即可。
前往如下地址下载 DLC 服务包:
链接:https://pan.baidu.com/s/1342bIcEBDQHdFA35KUTjbQ
提取码:data
下载后,解压,将对应服务的 .tar.gz 包放置于对应的 /opt/datalight/plugins/[大写服务名称]/dlc 的目录中即可。
在启动 Master 主程序之前,需要确认各个准备服役的节点已经完成相关初始化操作,DataLight 平台封装了相关工具,可帮助用户快速一次性初始化所有节点,用户也可手动进行初始化操作。
自动初始化工具位于部署目录下的 assistant 目录,其中涉及到修改的内容如下。
注意:MySQL 5.7 请自行手动安装,自动初始化工具将不包含这部分内容。
下面将对个配置文件进行举例说明。
init-main-cluster.properties
# 准备初始化的节点列表配置信息,Key 前缀为序号,不可重复,需要初始化多少节点,则添加多少节点
# 建议:1.node.ip 为当前执行脚本的节点 IP
1.node.ip=192.168.137.10
1.node.ssh.port=22
1.node.hostname=node01
1.node.user.root=root
1.node.pwd.root=123456
1.node.user.datalight=datalight
1.node.pwd.datalight=12345678
2.node.ip=192.168.137.11
2.node.ssh.port=22
2.node.hostname=node02
2.node.user.root=root
2.node.pwd.root=123456
2.node.user.datalight=datalight
2.node.pwd.datalight=12345678
3.node.ip=192.168.137.12
3.node.ssh.port=22
3.node.hostname=node03
3.node.user.root=root
3.node.pwd.root=123456
3.node.user.datalight=datalight
3.node.pwd.datalight=12345678
init-main-single-settings.txt
脚本将按照下面的内容依次在 “每个节点” 按脚本 “配置顺序” 执行,从而完成对各个节点的初始化操作。
init-stop-firewall.sh
init-ssh-remove-ask.sh
init-close-swap.sh
init-optimize-sysctl.sh
init-systemd-conf.sh
init-hostname.sh
init-hosts.sh
init-user-group.sh
init-datalight-env.sh
init-jdk.sh
init-yum-install.sh
init-chrony-server-config.sh
init-chrony-client-config.sh
如果使用上述自动初始化操作,则无需再进行手动初始化操作。以下操作用于不想使用自动初始化工具的用户。
手动初始化涉及如下内容:
关闭防火墙(或开放服务所需访问限制)
关闭 SSH 访问确认
关闭 Swap 内存交换
优化内存管理和I/O性能
设置一个进程可以拥有的最大内存映射区域数量为 655300
vm.max_map_count=655300 # 设置一个进程可以拥有的最大内存映射区域数量为 655300。
vm.dirty_ratio=10 # 指定系统中“脏”页占可用内存的最大百分比为 10%。
vm.dirty_background_ratio=5 # 指定后台写脏页操作开始的内存占用百分比阈值为 5%。
vm.dirty_writeback_centisecs=200 # 设置内核周期性地将脏页写回磁盘的时间间隔为 200 百分之一秒(即每 2 秒)。
vm.vfs_cache_pressure=200 # 控制内核回收目录和 inode 缓存时的积极程度为 200。
vm.dirty_expire_centisecs=6000 # 设置脏页在被强制写回磁盘前可以在内存中停留的最长时间为 6000 百分之一秒(即 60 秒)。
优化内存管理、I/O性能和资源限制,以提高系统在处理大量数据和内存映射任务时的效率和稳定性
vm.max_map_count=655300 # 设置一个进程可以拥有的最大内存映射区域数量为 655300。
vm.dirty_ratio=10 # 指定系统中“脏”页占可用内存的最大百分比为 10%。
vm.dirty_background_ratio=5 # 指定后台写脏页操作开始的内存占用百分比阈值为 5%。
vm.dirty_writeback_centisecs=200 # 设置内核周期性地将脏页写回磁盘的时间间隔为 200 百分之一秒(即每 2 秒)。
vm.vfs_cache_pressure=200 # 控制内核回收目录和 inode 缓存时的积极程度为 200。
vm.dirty_expire_centisecs=6000 # 设置脏页在被强制写回磁盘前可以在内存中停留的最长时间为 6000 百分之一秒(即 60 秒)。
sed -i '/^DefaultLimitNOFILE=/d' "$system_conf" # 删除 system.conf 中现有的 DefaultLimitNOFILE 设置
sed -i '/^DefaultLimitNPROC=/d' "$system_conf" # 删除 system.conf 中现有的 DefaultLimitNPROC 设置
echo "DefaultLimitNOFILE=131072" >> "$system_conf" # 添加新的 DefaultLimitNOFILE 设置
echo "DefaultLimitNPROC=131072" >> "$system_conf" # 添加新的 DefaultLimitNPROC 设置
cat > "/etc/security/limits.conf" << EOF
root soft nproc 131072 # 设置 root 用户的软 nproc 限制为 131072
root hard nproc 131072 # 设置 root 用户的硬 nproc 限制为 131072
root soft nofile 131072 # 设置 root 用户的软 nofile 限制为 131072
root hard nofile 131072 # 设置 root 用户的硬 nofile 限制为 131072
* soft nproc 131072 # 设置所有用户的软 nproc 限制为 131072
* hard nproc 131072 # 设置所有用户的硬 nproc 限制为 131072
* soft nofile 131072 # 设置所有用户的软 nofile 限制为 131072
* hard nofile 131072 # 设置所有用户的硬 nofile 限制为 131072
* hard fsize unlimited # 设置所有用户的硬文件大小限制为无限
* soft fsize unlimited # 设置所有用户的软文件大小限制为无限
* soft cpu unlimited # 设置所有用户的软 CPU 时间限制为无限
* hard cpu unlimited # 设置所有用户的硬 CPU 时间限制为无限
* soft as unlimited # 设置所有用户的软地址空间限制为无限
* hard as unlimited # 设置所有用户的硬地址空间限制为无限
EOF
修改所有节点主机名
修改所有节点内网 IP 与主机名映射关系
创建 Linux 中 DataLight 用户名与组
设置系统、用户、伪终端环境变量
安装 JDK 1.8
安装 yum 依赖
yum -y install epel-release # 安装 EPEL 仓库,提供额外的软件包
yum -y install jq # 安装 jq,用于处理 JSON 数据
yum -y install curl # 安装 curl,用于命令行数据传输
yum -y install chrony # 安装 chrony,用于时间同步
yum -y install expect # 安装 expect,用于自动化交互式 shell 脚本
yum -y install openssl openssl-devel patch # 安装 OpenSSL 和开发包及 patch 工具
yum -y install lrzsz # 安装 lrzsz,用于 ZMODEM 文件传输
yum -y install unzip zip # 安装 unzip 和 zip,用于解压和压缩文件
yum -y install yum-utils # 安装 yum-utils,提供额外的 yum 命令
yum -y install net-tools # 安装 net-tools,提供网络工具如 ifconfig
yum -y install gcc gcc-c++ # 安装 GCC 和 G++ 编译器
yum -y install make # 安装 make,构建自动化工具
yum -y install autoconf automake libtool curl # 安装 autoconf、automake、libtool 和 curl,用于构建和配置软件
yum -y install zlib lzo-devel zlib-devel openssl openssl-devel ncurses-devel ruby # 安装 zlib、lzo-devel、zlib-devel、openssl、openssl-devel、ncurses-devel 和 ruby,用于压缩、加密、终端控制和 Ruby 语言支持
yum -y install snappy snappy-devel bzip2 bzip2-devel lzo lzo-devel lzop libXtst # 安装 snappy、snappy-devel、bzip2、bzip2-devel、lzo、lzo-devel、lzop 和 libXtst,用于数据压缩和图形界面支持
主节点安装并配置 chrony 时间管理服务器
从节点安装并配置 chrony 时间同步客户端
安装 MySQL 5.7(如需 MySQL 8+ 以上支持,可自行适配平台以及服务组件源码)
上述环境初始化完毕后,需按照如下步骤初始化平台数据库;
创建 db_datalight 数据库
CREATE DATABASE db_datalight DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
执行初始化 SQL 文件
USE db_datalight;
SOURCE /opt/datalight/orm/sql/db_datalight.sql;
完成上述初始化操作后,各个节点已经准备好了工作所需的内容,此时可以通过如下方式启动 Master 进程,在主节点中执行:
/opt/datalight/bin/datalight.sh start master 8001
启动成功后,将看到如下日志内容:
No masterIp provided or masterIp is empty. Skipping IP validation.
master starting in 10263...
master started.
/opt/datalight/bin/datalight.sh done.
启动 Master 主进程成功后,可访问如下页面进行登录:
http://<Master-IP>:8001
注:首次默认账号密码为:admin/admin
页面如下:
完成上述内容后,请查看 产品手册 继续页面部署操作。
服务 | 版本 | 是否已支持 | 完成日期 |
---|---|---|---|
ZOOKEEPER | 3.8.2 | √ | 2023-07 |
HDFS | 3.2.4 | √ | 2023-07 |
YARN | 3.2.4 | √ | 2023-08 |
PROMETHEUS | 2.46.0 | √ | 2023-08 |
ALERTMANAGER | 0.26.0 | √ | 2023-08 |
GRAFANA | 10.0.3 | √ | 2023-08 |
HIVE | 3.1.3 | √ | 2024-04 |
TEZ | 0.10.2 | √ | 2024-04 |
HBASE | 2.5.9 | √ | 2024-04 |
SPARK | 3.1.3 | √ | 2024-05 |
FLINK | 3.1.3 | √ | 2024-05 |
HUDI | 待定 | ||
KUBESPHERE | 3.3.2 | √ | 2023-09 |
SEATUNNEL | 待定 | ||
DOPHINSCHDULER | 待定 | ||
RANGER | 待定 | ||
ATLAS | 待定 | ||
HUE | 待定 | ||
KAFKA | 2.6.0 | √ | 2024-05 |
ES | 任意 | 因协议问题,用户自行集成即可 | |
TRINO | 待定 | ||
KYLIN | 待定 | ||
KUDU | 待定 | ||
IMPALA | 待定 | ||
More.... |
如果您对本项目感兴趣,欢迎提供积极的反馈,帮助该项目做的更好。
微信公众号:
QQ 交流群:
微信交流:
本项目采用 Apache 2.0 开源协议。有关详细内容,请查看 Apache 2.0 LICENSE。
感谢所有贡献者和提交者
特别感谢以下人员对本项目的贡献:
特别感谢以下人员为本项目提交代码:
我们非常感谢他们的支持和贡献!
在此特别感谢所有在本项目研发过程中使用到的开源项目或代码库。
没有这些项目的支持,本项目无法顺利进行。
其中特别鸣谢以下开源项目:
在此,我们推荐一些其他优秀的开源项目,希望对你有帮助:
希望这些推荐的项目能够帮助你在开发过程中提高效率,解决常见问题。
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。