18、Apache Bigtop 助力 Hadoop 集群部署与集成验证

Apache Bigtop 助力 Hadoop 集群部署与集成验证

1. Hadoop 集群部署准备

1.1 同步工作目录

首先,需要确保所有节点的 /work 文件夹内容一致。可以通过以下命令实现:

export SSH_OPTS="ssh -p 22 -i /root/.ssh/id_dsa.pub -l root"
pdsh -w node[2-5].my.domain rsync $SSH_OPTS -avz --delete node1.my.domain:/work /

1.2 配置 Puppet Hiera

Puppet Hiera 必须能够从工作区读取配置文件和其他文件。可以按以下步骤操作:
1. 编辑 bigtop-deploy/puppet/hiera.yaml 文件:

vi bigtop-deploy/puppet/hiera.yaml
  1. 将 :datadir 指向工作区:
:datadir: /work/bigtop-deploy/puppet/hieradata
  1. 复制 hiera.yaml 文件到 /etc/puppet/hiera :
cp bigtop-deploy/puppet/hiera.yaml /etc/puppet/hiera
  1. 同步 hiera.yaml 文件到其他节点:
pdsh -w node[2-5].my.domain rsync $SSH_OPTS -avz --delete node1.my.domain:/etc/puppet/hiera.yaml /etc/puppet/

1.3 安装 Puppet 模块

确保所有节点都安装了所需的 Puppet 模块:

pdsh -w node[1-5].my.domain 'cd /work && \
puppet apply --modulepath="bigtop-deploy/puppet/modules" -e "include bigtop_toolchain::puppet-modules"'

1.4 进行部署

最后,执行以下命令完成 Hadoop 集群的部署:

pdsh -w node[1-5].my.domain 'cd /work && \
puppet apply -d --modulepath="bigtop-deploy/puppet/modules:/etc/puppet/modules" bigtop-deploy/puppet/manifests/site.pp'

部署完成后,将得到一个功能齐全的 Hadoop 集群,包括格式化的 HDFS、具有正确权限的用户目录以及其他配置好并运行的组件。

1.5 Apache Bigtop 仓库文件

每个 Apache Bigtop 版本都会为各种操作系统生成仓库文件。例如,版本 1.0.0 的仓库文件可在 https://cwiki.apache.org/confluence/display/BIGTOP/Index 找到;版本 1.1.0 的仓库文件在候选版本正式接受后,将发布在 https://dist.apache.org/repos/dist/release/bigtop/bigtop-1.1.0/repos/ 。

2. 集群配置管理

2.1 集群编排与管理的区别

在分布式集群中,集群编排和管理是两个不同的概念,但常被混淆使用。集群编排由架构、工具和流程组成,用于交付预定义的服务;而管理则提供自动化、监控和控制的工具及信息。

2.2 Hadoop 供应商工具的局限性

Hadoop 供应商提供了一些管理工具,包括免费开源和商业专有工具。但不建议主要依赖这些工具,原因如下:
| 原因 | 详情 |
| ---- | ---- |
| 兼容性问题 | 与标准 Linux init.d(或 systemd)生命周期管理不兼容,采用自定义方式启动、配置和管理集群服务。 |
| 脚本和自动化困难 | 基于 WebUI 交互,使得围绕它们进行脚本编写和自动化变得困难或几乎不可能。 |
| 忽视经验 | 有自定义的系统管理实现,忽视了 Chef 和 Puppet 开发者积累的数十年操作经验。 |

2.3 专业解决方案

专业的系统管理员或 DevOps 工程师可以采用版本控制系统(VCS)和 Puppet 来管理集群配置。建议使用分布式 VCS,如 Git,将不同的配置分离并独立更新。具体实现步骤如下:
1. 每个节点的 crontab 中添加以下内容:

cd /work
git pull origin/node-$ROLE-branch
puppet apply manifests/site.pp
  1. 环境变量 $ROLE 可在操作系统初始配置时设置。通过 cron 定期执行上述命令,确保集群节点根据指定配置保持一致状态。

以下是该过程的 mermaid 流程图:

graph LR
    A[开始] --> B[切换到工作目录]
    B --> C[拉取指定分支代码]
    C --> D[应用 Puppet 配置]
    D --> E[结束]

3. 集成验证概述

3.1 验证的重要性

当 Hadoop 集群部署完成后,需要验证其是否按预期工作,以及各组件之间是否能良好协作。可以通过运行一些工作负载来进行验证,确保各组件在二进制和 API 层面兼容。

3.2 Bigtop 的验证方式

Bigtop 提供了两种验证方式:集成测试和冒烟测试。这两种测试都可以使用任何 JVM 语言编写。

3.3 Groovy 语言的应用

Bigtop 中的许多测试以及 iTest 框架都使用 Groovy 语言编写。Groovy 结合了动态能力和强类型语言的特点,是一种多语言编程工具。Bigtop 的构建系统 Gradle 是一种 Groovy DSL,并且 bigtop-groovy 是 Apache Bigtop 堆栈的标准包。

3.4 构建系统的过渡

Bigtop 正在从 Maven 构建系统向 Gradle 过渡。过渡完成后,将使用 Gradle 多项目构建,但对用户的概念影响不大。目前,冒烟测试由 Gradle 构建控制,而传统的集成测试仍依赖 Maven,不过已被集成到顶级 Gradle 构建中。

4. iTests 和验证应用

4.1 验证应用的组成

Bigtop 中的所有测试都被视为一等公民,可看作是针对特定软件栈的验证应用。每个应用由两部分组成:
| 部分 | 详情 |
| ---- | ---- |
| 应用代码 | 位于 test-artifacts/ 目录下,包含构建环境,设置目标依赖并使用特定 API。 |
| Maven 执行器 | 位于 test-execution/ 目录下的简单 Maven 模块,用于启动应用,检查和设置必要的环境。 |

4.2 Bigtop 集成测试框架(iTest)

集成验证应用可以使用 Bigtop 集成测试框架(iTest)提供的辅助功能。iTest 是标准 JUnit v4 的扩展,具有测试顺序执行、直接从 JAR 文件运行测试等功能。

以下是 iTest 相关流程的 mermaid 流程图:

graph LR
    A[开始] --> B[应用代码开发]
    B --> C[Maven 执行器配置]
    C --> D[使用 iTest 辅助功能]
    D --> E[执行验证应用]
    E --> F[结束]

5. 堆栈集成测试开发

5.1 开发步骤

开发新的集成应用主要包含两个部分:代码更改和工件部署。具体步骤如下:
1. 创建模块结构 :在 bigtop-tests/test-artifacts/ 文件夹下创建模块结构,并在顶级 bigtop-tests/test-artifacts/pom.xml 中列出该模块。
2. 定义依赖和资源 :模块的项目对象模型(POM)需要定义所有依赖和资源,通常可在 <dependencies> 部分列出需求,版本会自动从父 POM 继承。
3. 编写代码 :验证应用的代码可以有多种编写方式,例如直接调用组件 API(如 Hadoop 和 HBase)、调用命令行实用程序或两者结合。

5.2 不同测试方式的优缺点

测试方式 优点 缺点
基于组件 API 更有可能捕获意外和不兼容的更改,对于公共集成层的 API 测试尤为重要 维护成本较高,可能偶尔会失败
基于命令行工具 更稳定,对开发者的负担较小

5.3 代码运行与部署

  • 本地安装 :在项目顶级目录运行以下命令进行本地安装:
./gradlew install-hadoop

该命令会安装所有额外的辅助模块和 POM 文件,并将所有工件 JAR 推送到本地 Maven 仓库,用于运行集成应用。
- 远程部署 :使用以下命令将工件部署到远程仓库服务器:

mvn deploy -f bigtop-tests/test-artifacts/hadoop/pom.xml

部署前需要使用 ~/.m2/settings.xml 配置仓库位置和凭据。

5.4 集成应用执行器

集成应用执行器位于 test-execution 目录下,例如 Hadoop 的执行器由 smokes/hadoop/pom.xml 管理。执行器是 Maven 模块,包含更复杂的构建逻辑,使用多个插件和公共模块,用于定义系统属性,如测试包含和排除模式等。

5.5 集成应用开发流程

  1. 开发代码 :像其他软件开发过程一样开发应用代码。
  2. 共享工件 :使用 Maven 安装/部署功能将应用工件或执行器共享到本地或共享 Maven 仓库。
  3. 启动执行器 :使用以下命令启动应用执行器:
mvn verify -f bigtop-tests/test-execution/smokes/hadoop/pom.xml
  1. 控制执行行为 :可以通过设置系统属性来控制执行器的行为,例如:
    • -Dorg.apache.maven-failsafe-plugin.testInclude='**/IncludingTestsMask*' 仅运行部分测试。
    • -Dorg.apache.maven-failsafe-plugin.testExclude='**/ExcludingTests*' 避免运行某些验证应用。
  2. 设置日志级别 :通过设置 Dorg.apache.bigtop.itest.log4j.level=TRACE 可以将日志级别设置为 TRACE,方便跟踪代码或逻辑问题。

以下是集成应用开发流程的 mermaid 流程图:

graph LR
    A[开发代码] --> B[共享工件]
    B --> C[启动执行器]
    C --> D[控制执行行为]
    D --> E[设置日志级别]
    E --> F[结束]

6. 验证堆栈

6.1 选择验证节点

建议在非工作节点(如网关节点)上运行集成应用进行验证,原因如下:
- 工作节点可能位于防火墙后面或在验证期间负载过高,难以进行调试。
- 网关节点通常拥有所有客户端二进制文件和库,方便集成应用获取所需资源。
- 便于与持续集成(CI)基础设施集成,例如使用 Jenkins 进行测试结果收集和分析。

6.2 验证步骤

假设 node5.my.domain 是配置为集群网关的节点,且 Bigtop 源仓库位于 /work 目录下,验证步骤如下:
1. 安装验证工件:

cd /work
./gradles install-hadoop
  1. 运行 Hadoop 集成应用验证:
mvn verify -f bigtop-tests/test-execution/smoke/hadoop/pom.xml

运行上述命令时,可能会收到 Maven 强制器的错误消息,要求设置某些环境变量,至少需要设置以下变量:

export HADOOP_HOME=/usr/lib/hadoop
export HADOOP_CONF_DIR=/etc/hadoop/conf
  1. 验证其他组件:可以通过以下命令验证其他组件:
mvn verify -f bigtop-tests/test-execution/smoke/hive/pom.xml
mvn verify -f bigtop-tests/test-execution/smoke/ignite-hadoop/pom.xml

也可以使用 mvn verify 运行测试堆栈中的所有可用应用。测试完成后,结果将保存在组件的 target/ 文件夹中。

以下是验证堆栈的步骤列表:
1. 选择合适的验证节点。
2. 安装验证工件。
3. 运行 Hadoop 集成应用验证,处理可能的环境变量设置问题。
4. 验证其他组件。
5. 查看测试结果。

综上所述,通过以上步骤可以完成 Apache Bigtop 助力下的 Hadoop 集群部署、配置管理和集成验证,确保集群的正常运行和组件之间的良好协作。

相关推荐

ambari2.8.0与bigtop编译与制作镜像源

ambari2.8.0与bigtop3.2.0的编译安装使用

qq_42896460的博客 1707

大数据平台安装

安装部署分为以下五个大步骤1.资源准备2.操作系统配置3.数据库配置4.ambari配置5.bigtop组件安装。

hellowangxiansheng的博客 1191

17、基于 Apache Bigtop 的数据处理栈开发与部署

本文探讨了如何基于 Apache Bigtop 开发和部署数据处理栈,涵盖了 Hadoop 生态系统的基础组件、测试栈的重要性、Bigtop 的概念与哲学、构建系统、部署方法以及集成验证的实现。通过实际案例分析,展示了 Bigtop 在大数据平台开发中的应用,最后总结了其优势与未来发展方向。

loss4bartender的博客 185

WSL2+Docker+Ollama:解锁Windows本地GPU加速运行DeepSeek-R1模型

本文详细介绍了在Windows系统上,通过WSL2、Docker和Ollama的组合方案,实现本地GPU加速运行DeepSeek-R1模型的全过程。该方案解决了Windows环境下Ollama默认无法调用NVIDIA显卡的痛点,通过配置Docker的GPU支持,强制将计算任务分配给GPU,从而显著提升文本生成速度与效率,为开发者提供了一个便捷的本地AI测试环境。

weixin_28452161的博客 358

封神台靶场,为了小芳,冲之——cookie注入

第二个靶场 打开网站 找一下注入点 一般在新闻这种里面点开看看 先判断是否存在注入 有waf 尝试了很多方法绕过都没成功,/and/,aandnd,AnD等一系列都没绕过去,乌鸡鲅鱼 删掉id=169 发现 然后判断cookie注入 在搜索框输入 Javascript:alert(document.cookie=”id=”+escape(‘169’)); 然后弹窗了(其中 “id=” 取决URL中的id= escape中的数值也是URL中id=的值)返回刚刚的页面,把ID删除后一样能正常显示。说明服务器能

Wubuqing的博客 656

Vue3多级路由缓存失效的深度解析与实战解决方案

本文深度解析了Vue3项目中多级路由下keep-alive缓存失效的根本原因,并提供了三种实战解决方案:通过路由扁平化根治问题、利用状态管理精细模拟缓存效果,以及借助keep-alive-vue3插件快速修复。文章旨在帮助开发者彻底理解Vue Router与keep-alive的协作机制,从而根据项目情况选择最佳策略,有效解决页面状态丢失的难题。

weixin_29015801的博客 286

声音特征提取--Demon谱分析(舰船水声)

不同频带的DEMON谱线相互之间也不一样,有的频带内会发生线谱遗失,有的频带内的线谱并不是真正的谱线。当舰船航速达到某个极限时,螺旋桨的高速旋转将产生空化噪声,由螺旋桨产生的一系列周期信号被空化噪声调制,在频域上表现为将低频的离散线谱线性搬移到较高频率噪声所处的频率周围,这些周期信号在频域是离散的线谱系列,对应舰船的轴频、叶频以及谐波频率,由于舰船辐射噪声低频部分还有其它噪声源,很难从低频段直接提取出螺旋桨产生的线谱系列,而是要先对高频段的调制信号进行解调,通过低通滤波得到信号的低频包络谱,即。

qq_52631753的博客 6508

uniapp - 超详细 H5 网页利用 uni.downloadFile 下载 URL 文件流并调用浏览器下载功能效果,前台通过请求后端接口获取文件并下载保存到本地(支持电脑PC与手机移动端H5)

uniapph5网页下载文件,uniapp网站下载文件流,uniapp的移动端h5实现接口url文件下载,uniapph5页面在浏览器中如何下载指定url文件流文件并保存到本地,uniapp移动端h5调用后端接口保存文件到本地,uniapph5通过下载后获得临时路径怎么让浏览器弹出下载,uniapp怎么请求接口下载到文件,得到Blob临时路径对象后如何下载到本地,浏览器怎么下载blob对象,uniapp二进制文件流下载,uniapph5中的文件流下载和指定的url下载详细教程,uniappapp移

🏆 前端领域优质创作者 1万+

ubuntu linux虚拟机安装部署openclaw详细教程(安装、问题处理)

本文详细介绍了在Ubuntu系统下安装OpenClaw AI助手的完整流程及常见问题解决方案。主要内容包括:1) 通过GIT、Node.js等基础环境配置;2) 使用官方脚本或源码编译两种方式安装OpenClaw;3) 配置向导中的关键选项说明;4) 针对systemctl服务启动失败等常见错误的处理方法。文章特别强调了权限管理、网络依赖和访问配置等易错环节,提供了修改service文件等具体解决方案,帮助开发者顺利完成部署并实现Web UI访问。教程实操性强,适合本地和云服务器环境部署参考。

少说,多做 2035

用 Docker 一键部署 SillyTavern酒馆 mac/windows/linux通用教程,我再也不手动折腾了!

本文介绍了如何使用 Docker 一键部署 SillyTavern 项目,适用于 Mac、Windows 和 Linux 系统。SillyTavern 是一个本地部署的大语言模型聊天界面,支持多种插件和扩展。文章详细说明了安装 Docker、拉取项目、启动容器、配置白名单、启用插件等步骤,并提供了常见问题的解决方法。通过 Docker 部署,用户可以避免繁琐的手动配置,快速搭建和运行 SillyTavern,适合希望简化部署流程的用户。

代码简单说 Vue、JAVA、PHP、Node.js 熟练运用,接口、架构、性能全搞定。 2627

ZYNQ工业级串口方案:AXI UART 16550扩展RS-485实战(自动方向控制+Linux驱动)

可以轻松扩展出多路工业级串口。但常规方案需要手动控制收发方向(DE/RE引脚),存在实时性差、CPU占用高等痛点。本文从硬件逻辑设计到Linux驱动开发,完整实现了ZYNQ平台的RS-485工业通信方案。,解决了传统方案实时性差的痛点。所有代码均经过实际项目验证,可直接用于生产环境。:尝试将此设计扩展为多协议兼容接口(支持RS-422/RS-232切换)!等特性,依然是现场总线通信的首选。,通过硬件逻辑+Linux驱动协同设计,实现零延迟切换。在工业自动化、能源电力等场景中,RS-485凭借。

QQ_778132974的博客 832

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

上一篇: 29、神经离子电流与线性化:探索神经系统的奥秘
下一篇: 15、频域滤波:MATLAB 实现与原理详解
python9snake
博客等级 码龄1天 0粉丝 1724原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值