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

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

1. 基础概念

在大数据领域,有许多基于 Apache Hadoop™ 的数据处理栈,例如 Amazon EMR 和 Hortonworks Data Platform。其中,Apache Hadoop™ 可能是最为人熟知的数据处理栈,它由 HDFS(存储层)和 MR(分布式存储之上的计算框架)组成。不过,这种简单的组合已无法满足现代需求,但 Hadoop 常被用作高级计算系统的基础。一个完整的 Hadoop 栈通常会扩展其他组件,如 Apache Hbase™、Apache Hive™、Apache Ambari™(安装和管理应用程序)等,具体扩展组件及版本如下表所示:

组件 版本
hadoop 2.7.1
hbase 0.98.12
hive 1.2.1
ignite-hadoop 1.5.0
giraph 1.1.0
kafka 0.8.1.1
zeppelin 0.5.5

那么,如何构建、验证、部署和管理这样一个“简单”的软件栈呢?我们先从验证说起。

2. 测试栈

测试栈的目的是确保软件在交付时能够正常运行,并实现预期功能。它包含多个应用程序,通过运行特定工作负载、暴露组件集成点以及验证组件之间的兼容性,来验证软件栈的可行性。

例如,在上述示例中,测试栈将包括集成测试应用程序,确保 Hbase v 0.98.16 能在 Hadoop 2.7.1 上正常工作,能与 Hive 1.2.1 协同工作,能使用底层的 Hadoop Mapreduce,能与 YARN(Hadoop 资源导航器)配合,并能将 Hbase 0.98.16 用作外部表的存储。同时,Zeppelin 验证应用程序可确保数据科学家的笔记本能正确构建并配置,以与 Hbase、Hive 和 Ignite 协同工作。

3. “在我笔记本上能运行”的局限性

一个典型的现代数据处理栈包含 10 到 30 多个不同的软件组件,且大多数组件作为独立的开源项目,有自己的发布计划、时间表和路线图。此外,还需要在 CentOS7 和 Ubuntu 14.04 集群上使用 OpenJDK8 运行该栈,同时还要考虑旧版本栈的升级需求。因此,“在我笔记本上能运行”的方法已不再可行。

4. 开发定制化栈

软件开发者、数据科学家或商业供应商如何开发、验证和管理一个可能包含市场上尚未提供的组件版本的复杂系统呢?接下来我们将探讨如何开发一个满足软件和运营需求的软件栈。

4.1 Apache Bigtop 的历史

Apache Bigtop(http://bigtop.apache.org)经历了多次演变和修订:
- 2004 - 2005 年,Sun Microsystems Java Enterprise Stack(JES)的创建和交付结合了 Tinderbox CI 和描述栈组成的构建清单。
- Sun Microsystems 进一步尝试开发栈框架概念,旨在管理企业存储服务器的软件栈。该框架跟踪更多信息,但具有特定领域性、严格的数据库模式和依赖实现的构建系统。
- Yahoo! Hadoop 团队开发了用于管理和支持 Hadoop 0.20.2xx 软件栈生产的框架,这是 Apache Bigtop 的前身。随着安全性的引入,组合复杂性急剧增加,在现有时间和资源限制下难以管理。
- 现代 Apache Bigtop 的第一个版本由实现 Yahoo! 框架的工程师开发,引入了软件和测试栈的正确概念化,提供了能在分布式环境中工作的集成测试框架等诸多改进。早期的部署配方和打包由 Cloudera 的开发者贡献,2011 年春季提交给 Apache 软件基金会进行孵化,后来成为顶级项目。

如今,Apache Bigtop 被所有 Apache Hadoop 商业供应商用作其发行版的基础框架,这为最终用户带来了许多好处,因为不同发行版的包布局、配置位置和生命周期管理路由方式相同。不过,Apache Ambari 和一些闭源集群管理器除外,它们使用自己的生命周期控制电路,绕过了标准的 Linux init.d 协议。

4.2 Apache Bigtop 的概念和哲学

从概念上讲,Bigtop 由四个子系统组成,各有不同用途:
1. 栈组成清单或物料清单(BOM) :定义了栈中包含的组件、版本、源代码位置等信息。
2. Gradle 构建系统 :管理工件创建(包)、开发环境配置、集成测试执行等功能。
3. 集成和冒烟测试及 iTest 测试框架 :用于验证软件栈的集成性和正确性。
4. 部署层 :通过 Puppet 配方实现无缝集群部署和配置管理,可快速部署功能齐全的分布式集群。

Apache Bigtop 为栈应用开发者、数据科学家和商业供应商提供了可预测和完全可控的流程,用于迭代设计、实现和交付数据处理栈。其哲学理念是经验验证,而非软件开发中的理性方法。这是因为栈运行的环境复杂多变,许多因素会影响分布式系统的性能和稳定性,如内核补丁级别、运行时环境版本、网络策略等。通过 Apache Bigtop 进行全栈集成验证,可以发现已发布项目中可能存在的向后不兼容更改,从而及时修复问题。

同时,结合 Jenkins 和 TeamCity 等持续集成工具,使用 Apache Bigtop 可以缩短开发周期,提高软件质量,快速发现 bug。你可以通过信息散热器(https://cwiki.apache.org/confluence/display/BIGTOP/Index)快速了解当前问题。

5. 项目结构

Bigtop 项目的顶级结构包含以下重要部分:
- build.gradle :构建系统的核心。
- packages.gradle :构建系统的核心。
- bigtop.bom :默认的栈组成清单。
- bigtop_toolchain/ :设置开发环境。
- bigtop-test-framework/ :iTest 集成测试框架的所在目录。
- bigtop-tests/ :包含集成和系统测试的所有代码以及 Maven 构建,用于配置环境并针对集群运行测试。
- bigtop-deploy/ :包含分布式集群、虚拟和容器环境的所有部署代码。
- bigtop-packages/ :提供创建可安装二进制工件所需的所有内容。

6. 构建系统

Apache Bigtop 构建系统使用 Gradle(http://gradle.org/),Bigtop 源代码树包含一个 gradlew 包装脚本。要开始使用 Bigtop,你需要 JDK7 或更高版本,并克隆 Bigtop 仓库:

git clone https://git-wip-us.apache.org/repos/asf/bigtop.git

你也可以从 github.com 镜像(http://github.com/apache/bigtop.git)进行分叉。要查看可用任务列表,可运行:

cd bigtop
./gradlew tasks

可以一次性构建栈组件:

./gradlew deb 或 ./gradlew rpm

也可以进行显式选择:

./gradlew allclean hive-rpm

Bigtop 构建系统可用于创建开发环境和构建二进制文件、编译和运行测试、将项目工件部署到中央仓库、构建项目网站等。它还可以指定栈中组件之间的依赖关系,确保上游依赖项在需要时自动先构建。例如,在构建时传递 -Dbuildwithdeps=true 参数,Bigtop 会先下载并构建 Hadoop,然后再构建 Hive。默认情况下,Bigtop 仅构建显式指定的组件。

此外,Bigtop 提供了从现有包生成本地 apt 和 yum 仓库的功能,允许栈开发者通过指向本地文件系统中的仓库位置来快速测试新构建的包:

./gradlew apt|yum

这将使用顶级 output/ 目录下找到的所有 DEB 或 RPM 包创建相应的仓库。在任何时候,要探索最终用户可用的所有标准任务,可执行:

./gradlew tasks
7. 工具链和开发环境

为了创建包含数十个组件的栈,系统需要配备大量开发工具。Bigtop 工具链(位于 bigtop_toolchain/ 顶级目录下)提供了所有受支持平台的开发需求。Bigtop 使用 Puppet 不仅用于部署,还用于设置开发环境。你无需成为 Puppet 专家,只需确保具有 sudo 权限并运行以下命令:

./gradlew toolchain

这将自动为你的系统安装所有包,包括栈组件所需的正确版本的 JDK。

8. BOM 定义

Bigtop 提供了物料清单(BOM)文件,用于表达包含的组件、版本、源代码位置等属性。默认的 BOM 文件名为 bigtop.bom ,使用简单的自文档化 DSL。以下是一个典型的组件描述示例:

'hbase' {
  name    = 'hbase'
  relNotes = 'Apache Hbase'
  version { base = '0.98.12'; pkg = base; release = 1 }
  tarball { destination = "${name}-${version.base}.tar.gz"
            source      = "${name}-${version.base}-src.tar.gz"}
  url  { download_path = "/$name/$name-${version.base}/"
         site =    "${apache.APACHE_MIRROR}/${download_path}"
         archive = "${apache.APACHE_ARCHIVE}/${download_path}"}
}

可以使用同一作用域或 BOM 其他部分中已定义的变量,如 pkg = base 。DSL 处理器在检测到任何错误时将停止构建。

组件的标准源是官方 Apache 项目发布,但你也可以通过指向不同的源存档位置来从其他地方构建组件。可下载的 URL 会自动构造为 url.site/url.download_path/tarball.source 。例如,如果你想从 GitHub 仓库的 branch - 1.2 分支构建 Hbase,可将定义修改为:

tarball { destination = "${name}-${version.base}.tar.gz"
          source      = "hbase-1.2.zip" }
url     { download_path = "apache/hbase/archive"
         site = "https://github.com/${download_path}"
         archive = site }

然后运行 ./gradlew hbase-clean hbase-deb 为 Debian 生成一组新的二进制文件。此外,还可以直接从 Git 版本控制系统创建组件包,更多信息请参考 Bigtop 源代码树顶级文件夹中的 README.md 文件。

9. 部署

拥有开发和验证栈的工具只能构建包,如果无法部署和运行工作负载,这些包的价值就有限。软件栈通常提供安装(在分布式环境中为部署)、管理和控制其组件及状态的方法,Bigtop 也提供了几种配置环境的方式。

9.1 Bigtop 预配置器

Bigtop 预配置器是框架的一个子系统,提供了使用虚拟机或 Docker 容器快速启动完全分布式 Hadoop 集群的便捷方式,位于项目源代码树的 bigtop-deploy/vm 目录下。详细信息可参考:https://cwiki.apache.org/confluence/display/BIGTOP/Bigtop+Provisioner+User+Guide。以下是使用步骤:
1. 打开 <BIGTOP_ROOT>/bigtop-deploy/vm/vagrant-puppet-docker vi vagrantconfig.yaml 文件。
2. 更新 Docker 镜像名称,从 bigtop/deploy:centos-6 或 bigtop/deploy:debian-8 更改,并将仓库指向 https://cwiki.apache.org/confluence/display/BIGTOP/Index。选择要部署的组件,如 [hadoop, yarn, hbase] 。
3. 运行命令: ./docker-hadoop.sh --create 3

标准预配置器带有预定义的配置,如果你不需要特殊配置,可直接使用。预配置器集成到了构建系统中:

./gradlew -Pnum_instances=3 docker-provisioner

假设你的计算机已安装 Vagrant 和 Docker,执行上述命令后将启动一个完全分布式的集群。你可以通过 SSH 进入集群节点并执行常规操作。预配置器脚本支持更多命令,详细信息请参考顶级 README.md 文件。要了解更多关于使用 Docker 进行 Hadoop 预配置的信息,可参考 Evans Ye 的相关演示(http://is.gd/FRP1MG)。

9.2 无主 Puppet 集群部署

对于更复杂的集群配置情况,可使用 Bigtop Puppet 配方(位于项目源代码树的 bigtop-deploy/puppet 目录下)。这是一种高级的集群设置方式,除非你需要自行管理集群,否则可以跳过此部分。完全分布式部署与预配置器示例相比需要更多步骤,但通过几个额外的命令,你可以根据需要启动任意规模的集群,可选择为 HDFS 和/或 YARN 提供高可用性,以及设置或不设置安全性。

部署系统的实现是一个无主动态系统,所有节点具有相同的配方,但不同节点接收自己的配置文件。部署系统使用 Puppet Hiera 查找和收集模块收集节点信息,并将其与 Bigtop 配方中的角色定义进行对比。以下是一个高级示例:
- Bigtop 提供默认拓扑模板文件 bigtop-deploy/puppet/hieradata/site.yaml ,定义了集群的一些关键参数,如 bigtop::hadoop_head_node 、 hadoop::hadoop_storage_dirs 、 hadoop_cluster_node::cluster_components 以及可选的 bigtop::roles 列表。重要的是,头节点必须设置为完全限定域名(FQDN),否则节点识别将无法工作。
- 默认情况下,角色机制关闭,集群中的所有节点被分配为工作节点,头节点承担主节点角色。如果部署 HDFS 和 YARN,头节点将运行 NameNode 进程和 Resource Manager 进程。组件集由 hadoop_cluster_node::cluster_components 定义,如果未显式设置该列表,将安装和配置所有可用包。
- 要使用角色机制,在 site.yaml 中设置 bigtop::roles_enabled: true 并为每个节点指定角色。但这可能需要为不同节点管理单独的配置,尤其是在集群拓扑简单的情况下。每个守护进程的完整角色列表可在 bigtop-deploy/puppet/manifests/cluster.pp 清单中找到。
- 完整的配置参数列表及其默认值可在 bigtop-deploy/puppet/hieradata/bigtop/cluster.yaml 文件中找到。

假设存在五个运行 Ubuntu 14.04 的节点,主机名分别为 node[1 - 5].my.domain ,节点功能如下:
- node1 到 node5 为工作节点。
- node1 作为头节点。
- node5 处理网关功能。

要部署的栈包括 HDFS、mapred - app、ignite - hadoop 和 Hive 组件。以下是部署步骤:
1. 在 node1.my.domain 节点上,在 /work 目录下克隆项目 Git 仓库。
2. 根据上述布局, site.yaml 文件内容如下:

bigtop::hadoop_head_node: "node1.my.domain"
bigtop::hadoop_gateway_node: "node5.my.domain"
hadoop::hadoop_storage_dirs:
  - /data/1
  - /data/2
hadoop_cluster_node::cluster_components:
  - ignite_hadoop
  - hive
bigtop::jdk_package_name: "openjdk-7-jre-headless"
bigtop::bigtop_repo_uri: \
"http://bigtop-repos.s3.amazonaws.com/releases/1.1.0/
ubuntu/14.04/x86_64"
  1. 确保所有节点具有相同的配方和配置。由于 Puppet 会修改系统状态,必须以特权账户(如 root)执行。如果节点之间具有无密码 SSH 登录,操作会更方便,否则可在提示时手动输入密码。使用 rsync 或其他方式将 /work 文件夹的内容同步到集群中的所有节点,推荐使用 pdsh 和 rsync 命令,但需指定 SSH 用户名和 SSH 密钥路径,详细信息可查看 rsync 手册页。

通过以上步骤,你可以使用 Apache Bigtop 开发、验证、部署和管理复杂的数据处理栈,满足不同的软件和运营需求。

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

10. 集成验证

在完成了数据处理栈的开发与部署后,集成验证是确保整个系统能够正常工作的关键步骤。通过集成验证,可以发现各个组件之间的兼容性问题、数据传输问题以及系统整体的稳定性问题。

10.1 集成测试框架 iTest

Bigtop 提供了集成测试框架 iTest,它位于 bigtop-test-framework/ 目录下。iTest 能够在分布式环境中工作,对软件栈进行全面的集成测试。测试代码位于 bigtop-tests/ 目录中,使用 Maven 进行构建和配置环境,然后针对集群运行测试。

以下是使用 iTest 进行集成测试的一般步骤:
1. 确保开发环境已经正确配置,并且集群已经部署完成。
2. 进入 bigtop-tests/ 目录。
3. 使用 Maven 命令进行测试:

mvn clean test

这个命令会执行所有的集成测试用例,并输出测试结果。

10.2 具体测试场景

以 Hbase、Hive 和 Ignite 为例,测试它们之间的集成情况。
1. Hbase 与 Hadoop 的集成测试 :确保 Hbase v 0.98.16 能够在 Hadoop 2.7.1 上正常工作,使用 Hadoop 的存储和计算资源。
2. Hbase 与 Hive 的集成测试 :验证 Hbase 能够作为 Hive 的外部表存储,实现数据的交互和查询。
3. Zeppelin 与 Hbase、Hive、Ignite 的集成测试 :保证数据科学家的笔记本能够正确构建并配置,与这些组件协同工作。

11. 持续集成与质量保障

持续集成工具如 Jenkins 和 TeamCity 已经成为日常软件工程过程的一部分。结合 Apache Bigtop 使用持续集成工具,可以带来诸多好处。

11.1 缩短开发周期

通过持续集成,每次代码提交后都会自动触发构建和测试流程。如果发现问题,能够及时反馈给开发者,避免问题积累到后期才被发现,从而大大缩短了开发周期。

11.2 提高软件质量

持续集成过程中,会对软件栈进行全面的集成测试和验证。这有助于发现软件中的 bug 和兼容性问题,及时进行修复,提高软件的整体质量。

以下是使用 Jenkins 与 Apache Bigtop 进行持续集成的基本流程:
1. 安装 Jenkins :在服务器上安装 Jenkins,并进行基本配置。
2. 配置 Jenkins 项目 :创建一个新的 Jenkins 项目,配置项目的源代码仓库(如 Bigtop 的 Git 仓库)。
3. 设置构建步骤 :在 Jenkins 项目中设置构建步骤,包括克隆代码、运行 ./gradlew 命令进行构建和测试等。
4. 设置定时任务 :可以设置定时任务,定期触发构建和测试流程,确保软件栈的稳定性。

12. 总结与展望

通过本文的介绍,我们了解了基于 Apache Bigtop 的 Hadoop 数据处理栈的开发、部署和管理过程。Apache Bigtop 提供了一套完整的解决方案,从栈的组成定义、构建系统、测试框架到部署机制,都为开发者和数据科学家提供了便利。

在未来,随着大数据技术的不断发展,数据处理栈的规模和复杂度可能会进一步增加。Apache Bigtop 也需要不断地进行改进和优化,以适应新的需求。例如,支持更多的组件和版本,提高部署的灵活性和效率,加强安全性能等。

同时,持续集成和质量保障将变得更加重要。通过引入更多的自动化测试和监控工具,可以进一步提高软件的质量和稳定性,减少人为错误和故障的发生。

13. 关键知识点总结

为了方便大家回顾和掌握本文的关键知识点,下面以表格的形式进行总结:

知识点 描述
Apache Bigtop 概念 由栈组成清单(BOM)、Gradle 构建系统、集成测试框架和部署层组成,提供可预测和可控的流程
构建系统 使用 Gradle,可一次性或显式选择构建组件,能处理组件依赖关系,还能生成本地仓库
开发环境 通过 bigtop_toolchain/ 工具链和 Puppet 自动安装所需包和 JDK
BOM 定义 使用简单 DSL 定义组件信息,可修改源位置构建组件
部署方式 包括 Bigtop 预配置器和无主 Puppet 部署,可根据需求选择
集成验证 使用 iTest 框架进行集成测试,确保组件间的兼容性和系统稳定性
持续集成 结合 Jenkins 等工具,缩短开发周期,提高软件质量
14. 流程图:基于 Apache Bigtop 的数据处理栈开发部署流程
graph LR
    classDef process fill:#E5F6FF,stroke:#73A6FF,stroke-width:2px

    A(开始):::process --> B(开发环境配置):::process
    B --> C(构建系统设置):::process
    C --> D(定义 BOM):::process
    D --> E(组件构建):::process
    E --> F(部署):::process
    F --> G{部署方式}:::process
    G -->|Bigtop 预配置器| H(使用预配置器部署):::process
    G -->|无主 Puppet 部署| I(使用 Puppet 部署):::process
    H --> J(集成验证):::process
    I --> J
    J --> K(持续集成):::process
    K --> L(结束):::process

这个流程图展示了基于 Apache Bigtop 进行数据处理栈开发和部署的主要步骤,从开发环境配置开始,经过构建、部署、验证,最后进入持续集成阶段,形成一个完整的开发流程。

通过以上内容,我们全面了解了基于 Apache Bigtop 的 Hadoop 数据处理栈的开发、部署、验证和持续集成过程,掌握了相关的技术和操作方法,能够更好地应对大数据领域的挑战。

相关推荐

Apache Bigtop再论与卖书求生存

快一年没写博客了,终于回来了,最近因公司业务需要,要基于cdh发行版打包自定义patch的rpm,于是又搞起了bigtop,就是那个hadoop编译打包rpm和deb的工具,由于国内基本没有相关的资料和文档,所以觉得有必要把阅读bigtop源码和修改的思路分享一下。 我记得很早以前,bigtop在以前版本吧,是用make进行打包的,其实这个以前的版本,搁我觉得就不应该出现在apache正

iqmae68024的博客 634

19、大数据处理:Apache Bigtop与内存计算技术深度解析

本文深入探讨了Apache Bigtop框架及其在大数据处理中的应用,重点解析了其集成测试框架iTest的故障注入机制和简化测试流程的烟雾测试。同时,文章对比了传统磁盘优先与现代内存优先的计算模型,介绍了Apache Ignite、Spark和HBase等技术的优势与应用场景。特别强调了Apache Ignite在加速MapReduce、实现状态共享和快速SQL查询方面的高级功能,并讨论了HDFS内存缓存策略。整体内容涵盖大数据处理架构、测试验证、性能优化及实际行业应用,为构建高效、可靠的大数据系统提供了全

python9snake的博客 143

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

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

loss4bartender的博客 185

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

本文介绍了如何使用 Apache Bigtop 实现 Hadoop 集群的自动化部署、配置管理和集成验证。内容涵盖 Puppet 与 Hiera 的配置、集群编排与管理的区别、基于 Groovy 和 iTest 的测试框架应用,以及通过 Gradle 和 Maven 进行集成测试开发与执行的完整流程。同时提供了详细的部署命令、验证步骤和最佳实践,帮助用户构建稳定、可维护的大数据集群环境。

python9snake的博客 141

19、Apache Bigtop与Hadoop栈中的内存计算技术

本文介绍了Apache Bigtop的功能与测试机制,包括其故障注入测试和冒烟测试,并探讨了Hadoop栈中内存计算技术的应用。文章重点分析了Apache Ignite如何提升MapReduce性能、作为HDFS缓存以及支持快速SQL和状态共享的高级特性。最后总结了Bigtop和内存计算在大数据处理中的价值与未来发展趋势。

loss4bartender的博客 95

18、基于Apache Bigtop的Hadoop生态系统搭建与验证

本文详细介绍了基于Apache Bigtop搭建Hadoop生态系统的方法,涵盖了环境准备、集群部署、配置管理以及集成验证的全过程。同时,探讨了使用Puppet和Git进行自动化配置管理的最佳实践,以及如何通过持续集成和性能优化提升集群的稳定性和效率。适合系统管理员、DevOps工程师及大数据技术爱好者参考学习。

loss4bartender的博客 203

21、Hadoop集群管理工具:Cloudera Manager与Apache Bigtop深度解析

本文深入解析了Hadoop生态系统中的两大工具:Cloudera Manager与Apache Bigtop。详细介绍了Cloudera Manager的安装、运行及功能,包括可视化管理、parcels更新机制和自定义报表;同时阐述了Apache Bigtop的集成安装流程及其在确保Hadoop组件兼容性方面的优势。通过对比分析和实际应用案例,帮助用户根据使用场景选择合适的集群管理方案,提升Hadoop集群的部署效率与运维能力。

swift5iosmith的博客 69

从0开始,部署micro_ros+stm32f407+stm32cubeIDE

(5)安装依赖项rosdep时,必须处于创建的microros_ws中,因为里面有clone的src文件夹。(3)教程a中的安装docker不是必须的,取决于运行agent时是否想使用docker。(4)记得安装rosdep,并在以后的命令中将rosdep替换为rosdepc。4、运行agent,选择udp、tcp、can、串口,这里没有使用docker。(1)首先参考教程a安装虚拟机和ubuntu,注意版本选择22.04;(2)参考教程b部署micro_ros构建系统。二、安装和运行agent。

m0_37963053的博客 2236

从共现矩阵到共现图一步到位——详解版

1.共现矩阵 判断大量不同文本之间,相邻词的联系,两词在所有文本中相邻的次数在矩阵中用数值表示。(参考此) 例子如下: 1.1 文本 • I like deep learning. • I like NLP. • I enjoy flying. 1.2 共现矩阵 2.共现图 2.1 数据预处理(节点和边) 获取文件node.csv和edge.csv。代码详见github仓库 2.2 共现图的制作 2.2.1 gephi的安装(参考此) (1)先下载gephi (2) 再配置java环境(下载java1.8

微乐的博客 4404

C++五子棋人机对战

使用C++,开发五子棋人机对战,快速提升C++项目开发能力。

程序员Rock的博客 5万+

零基础微信理财通基金实操指南(2026版)

先活下来:保证不亏大钱,再想赚钱慢慢变富:年化10%,7年翻倍,这已经很好了开始比完美重要:今天先存100元到零钱通,就是最好的开始现在打开微信,进入理财通,完成第一步风险测评吧!有任何问题可以随时问,我会用最通俗的方式解释。

老韩的Linux云计算架构师进阶之路 1694

【亲测有效】OpenClaw Gateway 出现 “(no output)“ 卡死问题完整解决指南:从手动重启到 systemd Watchdog 自动恢复

最近在使用 OpenClaw(自托管 AI 助手框架,前身 Clawdbot/Moltbot)时,遇到了一个非常常见的顽疾:TUI(终端界面)或 Telegram 等通道经常显示 "(no output)",消息发出去后机器人完全没反应,看起来像是卡死了。

hampeter的博客 8612

5分钟用AI搞定顶刊级引言!掌握三段式结构+避坑要点,让你的Introduction更有说服力(附提示词)

说明你是怎么来填补这个缺口的,一句话概括你的研究,再简述你采用了什么新方法、新模型或新视角,也就是创新点,最后说明你的方案是怎么克服第二段提到的缺口的,带来了哪些贡献,注意要确保方案与第二段提到的缺口一一对应。以上三段式引言模板,是非常经典的问题导向型结构,相比传统的结构,这种结构更能吸引是审稿人的注意,希望这篇分享的模板能给在你写论文引言时,提供一点帮助。上一段写好后,就在前人研究的基础上,亮出自己的方案,借助AI说明自己的研究,用了什么新方法/框架/理论/视角来填补这个缺口的。

智能AI让学术科研更容易 747

手把手教你完成YOLOv8 PyQt5和PySide6目标检测界面搭建,前台系统+后台管理系统开发实战,可用于大论文凑工作量或毕设必备,全网最详细教程

目标检测是计算机视觉中的重要任务,广泛应用于安防监控、自动驾驶、智能家居等领域。YOLO系列模型由于其高效的检测速度和较高的准确率,成为目标检测任务的首选算法之一。本项目结合 YOLOv8 与 PyQt5,构建了一个图形化界面,便于用户进行目标检测的操作和展示,实现对图片、视频和摄像头的实时目标检测,不仅可以用于大论文的工作量展示,还可以作为毕业设计。支持目标检测、目标分割等模型进来检测

在职AI算法工程师,擅长计算机视觉,YOLO目标检测、分割等,擅长web、pyqt界面可视化,好内容持续更新中,来这里跟大家一起学习,共同进步 1万+

12-RK平台U-Boot启动流程

先看概述,把这一章要回答的问题摆出来,带着问题听。RK 特有的 BootROM -> MiniLoader -> SPL -> U-Boot -> Kernel。这是因为 RK 平台使用闭源的 DDR 初始化固件,需要通过 MiniLoader 来加载和运行。为什么多一层?这是 RK 平台的特殊性决定的。RK 平台使用闭源的 DDR 初始化固件,这段代码 Rockchip 不开源,只能以二进制形式提供,它需要一个载体来加载和运行,这个载体就是 MiniLoader。

内核笔记 1150

数学建模模型总结

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

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

efm32 入门.pdf

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

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

上一篇: 13、模糊技术在系统处理中的应用与实现
下一篇: 14、模糊技术与二维离散傅里叶变换在图像处理中的应用
python9snake
博客等级 码龄1天 0粉丝 1724原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值