国产化信创,即采用国产信息技术产品和服务,构建自主可控的信息技术体系。近年来,随着国家对网络安全和信息安全的重视程度不断提高,国产化信创已经成为国家战略的重要组成部分,并呈现出以下大趋势:

● 政策驱动,加速发展

国家出台了一系列政策法规,大力支持国产化信创产业发展。例如,《“十四五”数字经济发展规划》提出,到2025年,关键信息技术领域核心技术攻关取得突破性进展,关键软件、硬件产品和服务实现替代能力显著增强。《“十四五”国家信息化规划》提出,加快构建安全可控的数字基础设施,推进关键信息技术领域自主研发应用。

在政策的强力推动下,国产化信创产业发展势头迅猛,市场规模不断扩大。据统计,2023年中国信创产业市场规模突破1万亿元,预计到2025年将达到2万亿元以上。

● 技术突破,生态构建

国产化信创产业的核心是技术攻关和生态构建。近年来,国产操作系统、数据库、中间件等基础软件产品取得了重大进展,性能和稳定性不断提升,与国外产品差距逐渐缩小。同时,国产信创生态体系也在逐步完善,应用软件、安全产品等配套产品和服务得到不断的丰富和创新。

● 应用拓展,场景多样

国产化信创的应用场景不断拓展,从党政机关、金融、电信等关键领域向教育、医疗、交通等更多行业延伸。例如,在教育领域,北京、上海等地已经开展了高校信创试点工作;在医疗领域,多家医院已经部署了国产化信创系统。

● 安全可控,自主可控

国产化信创的根本目标是实现信息技术的自主可控和安全可控。通过采用国产信息技术产品和服务,有效降低信息安全风险,提升国家信息安全水平。

总体而言,国产化信创是时代发展的必然趋势,具有广阔的市场前景,未来,随着技术的不断进步和应用场景的不断拓展,国产化信创将迎来更加快速发展的新阶段。

EasyMR 基于国产化信创适配的支持

EasyMR,作为袋鼠云基于云原生技术和 Hadoop、Hive、Spark、Flink、Hbase、Presto 等开源大数据组件构建的弹性计算引擎。提供安全可靠、低成本、弹性伸缩的大数据存储与计算服务,并实现 Hadoop 集群的一站式创建、管理、部署、运维与监控。

EasyMR 的核心组件采用国产化自研方式,已成功适配多种国产操作系统和处理器,包括:

· 银河麒麟V10(Intel X86、鲲鹏920、飞腾2000)

· 银河麒麟V4(Intel X86、飞腾2000)

· 中标麒麟V7.6(Intel X86)

· 统信UOS V20(Intel X86、鲲鹏920)

· 龙蜥8.4(Intel X86)

在国产化信创数据库方面,EasyMR 已经适配了达梦8数据库,并且将数据库层的增删改查操作做了一层抽象接口。这种设计使得未来适配其他国产化信创数据库变得十分简便。

接下来将从技术实现的角度详细介绍 EasyMR 组件如何适配国产化操作系统和处理器。

关于 Docker Buildx

在 EasyMR 的私有化部署过程中,我们选择了 Docker作为部署媒介。Docker 是一种轻量级容器化平台,可以简化应用程序的部署、管理和扩展。与传统的虚拟机相比,Docker 具有更快的启动时间、更高的资源利用率、更强的可移植性、更容易部署和管理等优势。因此,将 EasyMR 的各个组件打包成 Docker 镜像进行私有化部署,可以显著提高运维部署的效率,降低问题出现的概率。

在适配国产化信创组件时,我们面临的主要问题是如何在 Docker 环境中构建适配这些组件的镜像。为了解决这个问题,我们引入了 Docker Buildx 工具。Docker Buildx 支持构建跨平台的 Docker 镜像,可以轻松适配不同的操作系统和处理器架构。

Docker Buildx 是一个强大的工具,它简化了在多种 CPU 架构上构建和发布 Docker 镜像的过程。本节将重点介绍如何基于 Linux 创建多架构 Docker 镜像,并展示打包镜像的方法以及如何在不同主机环境中配置 Docker Buildx。以 Ubuntu/Debian 的发行版本为例进行说明。

● Docker Buildx 如何编译多版本的服务

Docker Buildx 支持多架构构建,主要有两种方式:一是使用不同架构的原生 builder;二是通过 QEMU 处理器模拟器实现。本文将重点讨论 QEMU,因为这是一个纯粹的基于软件的解决方案,无需拥有运行在不同架构上的服务器即可运行。

QEMU 的工作原理是通过模仿在服务器/处理器上设置好的来自外部 CPU 类型的所有指令。例如,在 x86架构的机器上,QEMU 可以模拟 ARM 架构的 CPU 指令。使用 QEMU 模拟器,可以在服务器上运行不同架构的二进制文件。

幸运的是,Linux 同样也有对运行非原生二进制文件的内建支持——binfmt_misc。当 Linux 尝试执行一个二进制文件时,会检查 binfmt_misc 是否注册了该文件类型的 handler。如果已注册,这个 handler 将被调用执行该二进制文件。

在本案例中,我们将利用 binfmt_misc 模块,显式执行 QEMU 模拟的外部 CPU 架构的二进制文件。

● 使用 Docker Buildx 的软件需求

如果想使用 Docker Buildx 构建镜像,需要满足以下几个条件:

· Docker>=19.03: Docker 本身需要包含 Buildx 特性

· Experimental 模式要打开

· Linux 内核版本>=4.8: binfmt_misc 需要 Linux 内核支持F参数

· 挂载 binfmt_misc 文件系统

· 主机模式或者 Docker 镜像安装 QEMU 和 binfmt_misc 支持工具

如果使用的是 Docker Desktop(>=2.1.0版本),比如在 Mac OSX 或者 Windows 上,那么就无需其他配置,因为它已经满足了上面所有的需求。以下是针对在 Linux x86 架构机器上,特别是以 Ubuntu 22.04 为例,安装和配置 Docker Buildx 运行环境的步骤。

Docker Buildx 安装步骤

01 安装 Docker

在19.03以后的 Docker 版本才支持 Buildx,所以部署的 Docker 版本至少得是这个版本,可以用下面的命令检查:

root@localhost:~# docker --version
Docker version 25.0.3, build 4debf41

如果服务器上没有安装 Docker,那么可以试着用对应 Docker Linux 发行版安装。

sudo apt-get install -y docker-ce

02 开启 Docker Experimental 特性

可以通过两种方式开启 Experimental 特性

· 通过设置环境变量

export DOCKER_CLI_EXPERIMENTAL=enabled

· 通过在配置文件 $HOME/.docker/config.json 中打开特性开关

{
"experimental": "enabled"
}

配置完成之后,可以使用 Docker Version 查看是否开启成功。

之后可以检查一下 Docker Buildx 命令是否可用。

03 检查 Linux 内核版本

root@localhost:~# uname -r
5.15.0-72-generic

上面说过 Linux 内核版本至少需要大于等于4.8。

04 检查 binfmt_misc 文件系统是否挂载

$ ls /proc/sys/fs/binfmt_misc/
register status

05 安装 QEMU

sudo apt-get install -y qemu-user-static

执行完成之后就安装好了支持多种架构的 QEMU,可以通过下面的命令执行检查 aarch64。

ls -l /usr/bin/qemu-aarch64-static
qemu-aarch64-static --version

sudo apt-get install -y binfmt-support
update-binfmts --version

确保 update-binfmts 版本大于等于2.1.7。

使用 Docker Buildx 构建镜像

● 创建 Buildx Builder

docker buildx create --name mybuilder
docker buildx use mybuilder
docker buildx inspect --bootstrap
docker buildx ls

● 使用 Buildx 构建

docker buildx build --platform linux/arm64 -f Dockerfile.arm --tag=easymanager/matrix:6.1.2-rel-rel . --load

上述命令用于将 Docker 镜像打包,以便其能够在 Linux/arm64 架构的服务器上运行。如果有其他类型的架构,可以修改 --platform 参数,比如 linux/amd64, linux/arm/v6, linux/arm/v7, linux/arm64/v8, linux/386, linux/ppc64le, linux/s390x 等等。

总结

国产化信创是国家战略的关键组成部分,对于确保国家网络安全和信息安全具有重要意义。近年来,随着国家对信创产业的持续重视,这一领域已经取得了显著进展,信创组件日益丰富。

EasyMR 致力于深耕国产化信创领域,专注于将 EasyMR 打造成最适合国产化信创组件的大数据弹性计算引擎,助力企业构建安全、稳定、高效的大数据解决方案。

通过不断优化和升级,EasyMR 未来会不断加快国产化信创的适配进程,更好地满足国产化信创产业的需求,为国家网络安全和信息安全贡献力量。

《行业指标体系白皮书》下载地址:https://www.dtstack.com/resources/1057?src=szsm

《数栈产品白皮书》下载地址:https://www.dtstack.com/resources/1004?src=szsm

《数据治理行业实践白皮书》下载地址:https://www.dtstack.com/resources/1001?src=szsm

想了解或咨询更多有关大数据产品、行业解决方案、客户案例的朋友,浏览袋鼠云官网:https://www.dtstack.com/?src=szbky

EasyMR 基于国产化信创的适配实践技术详解的更多相关文章

  1. 腾讯技术分享:GIF动图技术详解及手机QQ动态表情压缩技术实践

    本文来自腾讯前端开发工程师“ wendygogogo”的技术分享,作者自评:“在Web前端摸爬滚打的码农一枚,对技术充满热情的菜鸟,致力为手Q的建设添砖加瓦.” 1.GIF格式的历史 GIF ( Gr ...

  2. IPv6技术详解:基本概念、应用现状、技术实践(下篇)

    本文来自微信技术架构部的原创技术分享. 1.前言 在上篇<IPv6技术详解:基本概念.应用现状.技术实践(上篇)>,我们讲解了IPV6的基本概念. 本篇将继续从以下方面展开对IPV6的讲解 ...

  3. IPv6技术详解:基本概念、应用现状、技术实践(上篇)

    本文来自微信技术架构部的原创技术分享. 1.前言 普及IPV6喊了多少年了,连苹果的APP上架App Store也早已强制IPV6的支持,然并卵,因为历史遗留问题,即使在IPV4地址如果饥荒的情况下, ...

  4. 手游录屏直播技术详解 | 直播 SDK 性能优化实践

    在上期<直播推流端弱网优化策略 >中,我们介绍了直播推流端是如何优化的.本期,将介绍手游直播中录屏的实现方式. 直播经过一年左右的快速发展,衍生出越来越丰富的业务形式,也覆盖越来越广的应用 ...

  5. Comet技术详解:基于HTTP长连接的Web端实时通信技术

    前言 一般来说,Web端即时通讯技术因受限于浏览器的设计限制,一直以来实现起来并不容易,主流的Web端即时通讯方案大致有4种:传统Ajax短轮询.Comet技术.WebSocket技术.SSE(Ser ...

  6. 基于python中staticmethod和classmethod的区别(详解)

    例子 ? 1 2 3 4 5 6 7 8 9 10 11 12 13 class A(object):   def foo(self,x):     print "executing foo ...

  7. 基于Python对象引用、可变性和垃圾回收详解

    基于Python对象引用.可变性和垃圾回收详解 下面小编就为大家带来一篇基于Python对象引用.可变性和垃圾回收详解.小编觉得挺不错的,现在就分享给大家,也给大家做个参考. 变量不是盒子 在示例所示 ...

  8. iOS开发——屏幕适配篇&Masonry详解

    Masonry详解 前言 MagicNumber -> autoresizingMask -> autolayout 以上是纯手写代码所经历的关于页面布局的三个时期 在iphone1-ip ...

  9. 基于Docker搭建Maven私服Nexus,Nexus详解

    备注:首先在linux环境安装Java环境和Docker,私服需要的服务器性能和硬盘存储要高一点,内存不足可能到时启动失败,这里以4核8GLinux服务器做演示 一:基于Docker安装nexus3 ...

  10. comet基于HTTP长连接技术(java即时通信,推送技术详解)

    服务器推送技术的基础思想是将浏览器主动查询信息改为服务器主动发送信息,服务器发送一批数据,浏览器显示消息,同时保证与服务器的连接,当服务器需要再一次的发送数据,浏览器显示数据并保持连接. comet基 ...

随机推荐

  1. .NET Core奇技淫巧之WinForm使用Python.NET并打包

    前言 之前整了一个GZY.EFCoreCompare 的库,可以用做对比实体与数据库结构.感兴趣可以去看看,地址:GZY.EFCoreCompare 但是只能导出execl表格. 后来大佬用Pytho ...

  2. linux 各种防火墙

    一.iptables防火墙1.基本操作 # 查看防火墙状态 service iptables status # 停止防火墙 service iptables stop # 启动防火墙 service ...

  3. VSCode 终端中文乱码解决方案

    问题描述 以下为一个简单的 c++ 文件代码,注意中文部分的显示内容 //测试代码 #include <stdio.h> int main() { int y = 10; int coun ...

  4. 用正则表达式做爬取--java进阶day06

    1.String类中与正则有关的方法 replaceAll方法中要填入两个正则表达式,第一个是我们要修改的字符串,第二个则是我们要改成以后的字符串 如下图,出师表中存在很多数字,我们要删去这些数字,就 ...

  5. 【Linux】5.10 输入输出重定向

    Shell 输入/输出重定向 大多数 UNIX 系统命令从你的终端接受输入并将所产生的输出发送回​​到您的终端.一个命令通常从一个叫标准输入的地方读取输入,默认情况下,这恰好是你的终端.同样,一个命令 ...

  6. ArrayBlockingQueue的put方法底层原理

    一.ArrayBlockingQueue的put方法底层原理 ArrayBlockingQueue 是 Java 并发包 (java.util.concurrent) 中的一个基于数组实现的有界阻塞队 ...

  7. 格林威治时间(Tue Jan 01 00:00:00 CST 2019)转Date

    Excel导入时后台接受日期格式数据为[格林威治时间](例:Tue Jan 01 00:00:00 CST 2019) 格林威治时间转Date package com.cn; import java. ...

  8. python爬虫,beatifulsop获取标签属性值(取值)案例

    前面的案例里,均采用正则匹配的方式取值 title = re.findall('">(.*?)</a>', i, re.S)[0]#标题 url = re.findall( ...

  9. 适合Java程序员的Go入门笔记

    0.背景 3年java开发背景(因此这篇文章的特点是:比较适合java程序员doge),业余时间有了解过一些go,如今加入字节团队主要技术栈是go,此篇主要结合go语言圣经和团队内go项目,总结一些基 ...

  10. 康谋分享 | 从CAN到CAN FD:ADTF在汽车网络中的应用

    随着汽车电子技术的发展,车辆上配备了越来越多的电子装置,这些设备多采用点对点的方式通信,这也导致了车内存在庞大的线束.造成汽车制造和安装的困难并进一步降低汽车的配置空间,汽车总线逐步开始向网络化方向发 ...