Doris单价和集群的部署

1 服务器环境准备

我们这里以3台服务器为列

1.1 硬件配置

Centos7.1及以上
Ubuntu16.04及以上
java1.8及以上
GCC4.8.2及以上

        每台服务器磁盘大小最小50G及时间相差不超或5秒

1.2 环境配置

        1.2.1 修改limits.conf文件

vim /etc/security/limit.conf
#在文件最后添加,*号也要添加
* soft nofile 65535
* hard nofile 65535
* soft nproc 65535
* hard nproc 65535

1.2.2 修改sysctl.conf文件

vim /etc/sysctl.conf
#在文件最后添加
vm.max_map_count = 2000000
vm.swappiness = 0

让该文件永久生效:sysctl -p

1.2.3 关闭swap(交互分区)

# 临时关闭:
swapoff -a
# 或永久关闭, 修改fstab文件, 注册带swap的行
vim /etc/fstab

1.2.4 关闭THP

echo "never" >> /sys/kernel/mm/transparent_hugepage/enabled
echo "never" >> /sys/kernel/mm/transparent_hugepage/defrag

将上面两句命令加入到开机启动中, 防止重启失效

vi /etc/rc.d/rc.local
# 给文件授权
chmod +x /etc/rc.d/rc.local

1.2.5 开发防火墙

如果你是直接关闭防火墙可以跳过该步骤

# 使用root用户, 开放Doris数据库的端口
firewall-cmd --zone=public --add-port=9001/tcp --permanent
firewall-cmd --zone=public --add-port=9020/tcp --permanent
firewall-cmd --zone=public --add-port=9030/tcp --permanent
firewall-cmd --zone=public --add-port=9010/tcp --permanent
firewall-cmd --zone=public --add-port=9060/tcp --permanent
firewall-cmd --zone=public --add-port=8040/tcp --permanent
firewall-cmd --zone=public --add-port=9050/tcp --permanent
firewall-cmd --zone=public --add-port=8060/tcp --permanent
# 参考命令 ,重启防火墙 
关闭防火墙服务:systemctl stop firewalld 
开启防火墙服务:systemctl start firewalld
查看防火墙服务状态:systemctl status firewalld 
自启动防火墙服务:systemctl enable firewalld
查看防火墙端口:firewall-cmd --list-ports

 1.3 安装JAVA JDK

将JDK(版本1.8)压缩包拷贝到 /usr/local目录下(存放位置不强制要求)

# cd 到存放目录
cd /usr/local
#解压
tar -xzvf jdk-8u391-linux-x64.tar.gz

配置java环境

#修改profile文件
vim /etc/profile
#在文件最后添加如下内容
export JAVA_HOME=/usr/local/jdk1.8.0_391
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
#刷新配置文件
source /etc/profile
#验证是否安装成功
java -version

出现上面图片则表示成功

 2 安装Doris数据库

2.1安装数据包

#判断PCU是否支持avx2
lscpu | grep -o 'avx2'
#如果输出为avx2则表示支持,否则表示不支持
#支持avx2下载不带noavx2的如:apache-doris-2.1.8-bin-x64.tar.gz
#不支持avx2下载带noavx2的如:apache-doris-2.1.4-bin-x64-noavx2.tar.gz

doris下载地址:Apache Doris - Download | Easily deploy Doris anywhere - Apache Doris

将安装包上传到对应的目录下,我这里以 /usr/local目录下

# cd到对应的目录
cd /usr/local
# 解压安装包
tar -xzvf apache-doris-2.1.8-bin-x64.tar.gz
#可以修改一个名称(可选)
mv apache-doris-2.1.8-bin-x64 ./doris-2.1.8
#可以配置环境变量 
vim /etc/profile
#将下面内容添加到profile文件的最后
export DORIS_HOME=/usr/local/doris-2.1.8
export PATH=$DORIS_HOME/fe/bin:$DORIS_HOME/be/bin:$PATH

2.2 修改FE与BE的配置参数

2.2.1 修改FE配置参数

#进入doris的根目录
cd /usr/local/doris-2.1.8
#修改fe.conf配置文件
vim fe/conf/fe.conf

CUR_DATE=`date +%Y%m%d-%H%M%S`

# Log dir
LOG_DIR = ${DORIS_HOME}/log #可修改日志文件存放地址

# CMS JAVA OPTS
# JAVA_OPTS="-Dsun.security.krb5.debug=true -Djavax.security.auth.useSubjectCredsOnly=false -Xss4m -Xmx8192m -XX:+UseMembar -XX:SurvivorRatio=8 -XX:MaxTenuringThreshold=7 -XX:+PrintGCDateStamps -XX:+PrintGCDetails -XX:+UseConcMarkSweepGC -XX:+UseParNewGC -XX:+CMSClassUnloadingEnabled -XX:-CMSParallelRemarkEnabled -XX:CMSInitiatingOccupancyFraction=80 -XX:SoftRefLRUPolicyMSPerMB=0 -Xloggc:$DORIS_HOME/log/fe.gc.log.$CUR_DATE"

# G1 JAVA OPTS
JAVA_OPTS="-Dfile.encoding=UTF-8 -Djavax.security.auth.useSubjectCredsOnly=false -Xss4m -Xmx8192m -XX:+UnlockExperimentalVMOptions -XX:+UseG1GC -XX:MaxGCPauseMillis=200 -XX:+PrintGCDateStamps -XX:+PrintGCDetails -Xloggc:$LOG_DIR/fe.gc.log.$CUR_DATE -Dlog4j2.formatMsgNoLookups=true"

# For jdk 9+, this JAVA_OPTS_FOR_JDK_9 will be used as default CMS JVM options
# JAVA_OPTS_FOR_JDK_9="-Dsun.security.krb5.debug=true -Djavax.security.auth.useSubjectCredsOnly=false -Xss4m -Xmx8192m -XX:SurvivorRatio=8 -XX:MaxTenuringThreshold=7 -XX:+CMSClassUnloadingEnabled -XX:-CMSParallelRemarkEnabled -XX:CMSInitiatingOccupancyFraction=80 -XX:SoftRefLRUPolicyMSPerMB=0 -Xlog:gc*:$DORIS_HOME/log/fe.gc.log.$CUR_DATE:time"

# For jdk 9+, this JAVA_OPTS_FOR_JDK_9 will be used as default G1 JVM options
JAVA_OPTS_FOR_JDK_9="-Dfile.encoding=UTF-8 -Djavax.security.auth.useSubjectCredsOnly=false -Xss4m -Xmx8192m -XX:+UseG1GC -XX:MaxGCPauseMillis=200 -Xlog:gc*:$LOG_DIR/fe.gc.log.$CUR_DATE:time -Dlog4j2.formatMsgNoLookups=true"

# For jdk 17+, this JAVA_OPTS will be used as default JVM options
JAVA_OPTS_FOR_JDK_17="-Dfile.encoding=UTF-8 -Djavax.security.auth.useSubjectCredsOnly=false -XX:+UseG1GC -Xmx8192m -Xms8192m -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=$LOG_DIR/ -Xlog:gc*:$LOG_DIR/fe.gc.log.$CUR_DATE:time"

##
## the lowercase properties are read by main program.
##

# store metadata, must be created before start FE.
# Default value is ${DORIS_HOME}/doris-meta
# meta_dir = ${DORIS_HOME}/doris-meta

# Default dirs to put jdbc drivers,default value is ${DORIS_HOME}/jdbc_drivers
# jdbc_drivers_dir = ${DORIS_HOME}/jdbc_drivers

http_port = 8030
rpc_port = 9020
query_port = 9030
edit_log_port = 9010
arrow_flight_sql_port = -1

# Choose one if there are more than one ip except loopback address. 
# Note that there should at most one ip match this list.
# If no ip match this rule, will choose one randomly.
# use CIDR format, e.g. 10.10.10.0/24 or IP format, e.g. 10.10.10.1
# Default value is empty.
# priority_networks = 10.10.10.0/24;192.168.0.0/16
priority_networks = 192.168.88.101 #本机ip地址
# Advanced configurations 
# log_roll_size_mb = 1024
# INFO, WARN, ERROR, FATAL
sys_log_level = WARN         #可选 ,日志文件级别
# NORMAL, BRIEF, ASYNC
sys_log_mode = BRIEF         #可选 ,日志文件级别
# sys_log_roll_num = 10
# sys_log_verbose_modules = org.apache.doris
# audit_log_dir = $LOG_DIR
# audit_log_modules = slow_query, query
# audit_log_roll_num = 10
# meta_delay_toleration_second = 10
# qe_max_connection = 1024
# qe_query_timeout_second = 300
# qe_slow_log_ms = 5000

#保存退出ESC
:wq

2.2.2 修改be参数

#修改be.conf配置文件
vim be/conf/be.conf

CUR_DATE=`date +%Y%m%d-%H%M%S`

# Log dir
LOG_DIR="${DORIS_HOME}/log/"  #日志存放目录,可修改

# For jdk 8 根据实际可以是不是需要添加内存大小
JAVA_OPTS="-Dfile.encoding=UTF-8 -Xmx
8192m -DlogPath=$LOG_DIR/jni.log -Xloggc:$DORIS_HOME/log/be.gc.log.$CUR_DATE -Djavax.security.auth.useSubjectCredsOnly=false -Dsun.security.krb5.debug=true -Dsun.java.command=DorisBE -XX:-CriticalJNINatives  -Darrow.enable_null_check_for_get=false"

# For jdk 9+, this JAVA_OPTS will be used as default JVM options
JAVA_OPTS_FOR_JDK_9="-Dfile.encoding=UTF-8 -Xmx2048m -DlogPath=$DORIS_HOME/log/jni.log -Xlog:gc:$LOG_DIR/be.gc.log.$CUR_DATE -Djavax.security.auth.useSubjectCredsOnly=false -Dsun.security.krb5.debug=true -Dsun.java.command=DorisBE -XX:-CriticalJNINatives --add-opens=java.base/java.nio=ALL-UNNAMED  -Darrow.enable_null_check_for_get=false"

# For jdk 17+, this JAVA_OPTS will be used as default JVM options
JAVA_OPTS_FOR_JDK_17="-Dfile.encoding=UTF-8 -Xmx2048m -DlogPath=$LOG_DIR/jni.log -Xlog:gc:$LOG_DIR/be.gc.log.$CUR_DATE -Djavax.security.auth.useSubjectCredsOnly=false -Dsun.security.krb5.debug=true -Dsun.java.command=DorisBE -XX:-CriticalJNINatives --add-opens=java.base/java.net=ALL-UNNAMED --add-opens=java.base/java.nio=ALL-UNNAMED  -Darrow.enable_null_check_for_get=false"

# since 1.2, the JAVA_HOME need to be set to run BE process.
# JAVA_HOME=/path/to/jdk/

# https://github.com/apache/doris/blob/master/docs/zh-CN/community/developer-guide/debug-tool.md#jemalloc-heap-profile
# https://jemalloc.net/jemalloc.3.html
JEMALLOC_CONF="percpu_arena:percpu,background_thread:true,metadata_thp:auto,muzzy_decay_ms:5000,dirty_decay_ms:5000,oversize_threshold:0,prof:true,prof_active:false,lg_prof_interval:-1"
JEMALLOC_PROF_PRFIX="jemalloc_heap_profile_"

# ports for admin, web, heartbeat service 
be_port = 9060
webserver_port = 8040
heartbeat_service_port = 9050
brpc_port = 8060
arrow_flight_sql_port = -1

# HTTPS configures
enable_https = false
# path of certificate in PEM format.
ssl_certificate_path = "$DORIS_HOME/conf/cert.pem"
# path of private key in PEM format.
ssl_private_key_path = "$DORIS_HOME/conf/key.pem"


# Choose one if there are more than one ip except loopback address. 
# Note that there should at most one ip match this list.
# If no ip match this rule, will choose one randomly.
# use CIDR format, e.g. 10.10.10.0/24 or IP format, e.g. 10.10.10.1
# Default value is empty.
# priority_networks = 10.10.10.0/24;192.168.0.0/16
priority_networks = 192.168.88.101 #ip地址
# data root path, separate by ';'
# You can specify the storage type for each root path, HDD (cold data) or SSD (hot data)
# eg:
# storage_root_path = /home/disk1/doris;/home/disk2/doris;/home/disk2/doris
# storage_root_path = /home/disk1/doris,medium:SSD;/home/disk2/doris,medium:SSD;/home/disk2/doris,medium:HDD
# /home/disk2/doris,medium:HDD(default)

# you also can specify the properties by setting '<property>:<value>', separate by ','
# property 'medium' has a higher priority than the extension of path
#
# Default value is ${DORIS_HOME}/storage, you should create it by hand.
# storage_root_path = ${DORIS_HOME}/storage

# Default dirs to put jdbc drivers,default value is ${DORIS_HOME}/jdbc_drivers
# jdbc_drivers_dir = ${DORIS_HOME}/jdbc_drivers

# Advanced configurations
# INFO, WARNING, ERROR, FATAL
sys_log_level = WARNING  #日志级别可选择
# sys_log_roll_mode = SIZE-MB-1024
# sys_log_roll_num = 10
# sys_log_verbose_modules = *
# log_buffer_level = -1
# palo_cgroups 

# aws sdk log level
#    Off = 0,
#    Fatal = 1,
#    Error = 2,
#    Warn = 3,
#    Info = 4,
#    Debug = 5,
#    Trace = 6
# Default to turn off aws sdk log, because aws sdk errors that need to be cared will be output through Doris logs
aws_log_level=0
## If you are not running in aws cloud, you can disable EC2 metadata
AWS_EC2_METADATA_DISABLED=true
string_type_length_soft_limit_bytes = 10485760  #修改单字段数据大小为10M,可选

2.3 主节点启动

2.3.1 启动fe

#没有配doris环境, 在doris根目录下
fe/bin/start_fe.sh --daemon
be/bin/start_be.sh --daemon
#如果配置了doris环境 ,二选一执行即可
start_fe.sh --daemon
start_be.sh --daemon#查看是否启动成功
jps

如果出现这个图片的内容,则代表成功。

可以前往游览器查看:

#FE的web端,默认用户root,密码空

http://IP:8030

#BE的web端

http://IP:8040/

通过FE、BE的网址查看,如果正常,则安装成功。

2.4 数据库初始化

#如果服务器安装有mysql,可以mysql客服端连接FE
mysql -hhadoop102 -P9030 -uroot
#设置密码
SET PASSWORD FOR 'root' = PASSWORD('密码');#如果没有客户端,可以通过DBeaver连接,端口为9030#配置高可用
#扩容FE节点,新节点添加为follower
ALTER SYSTEM ADD FOLLOWER "192.168.88.102:9010";
#或新节点添加为observer
ALTER SYSTEM ADD OBSERVER "192.168.88.103:9010";#将BE关联到FE,如果只添加一个本机的BE,那么只就是个单价
ALTER SYSTEM ADD BACKEND "192.168.88.101:9050";
ALTER SYSTEM ADD BACKEND "192.168.88.102:9050";
ALTER SYSTEM ADD BACKEND "192.168.88.103:9050";#修改密码
alter user 'root' identified by '密码';

下面配置可选

开启 SQL 跟踪日志

set global enable_profile=true;

#查看跟踪是否开启

show variables like '%enable_profile%';

#关闭跟踪日志

set global enable_profile = false;

注:为避免影响性能日常运行中可以关闭跟踪日志,查问题时再打开。

​​​​​​​开启审计日志

set global enable_audit_plugin = true;

其它命令

#查看审计日志是否开启

show variables like '%enable_audit_plugin%';

#关闭审计日志

set global enable_audit_plugin = false;

注:为避免影响性能日常运行中可以关闭审计日志,查问题时再打开。

3 配置高可用

#将主节点的be和fe分发其他两个节点
# 1.先到另外两个节点创建对应目录
mkdir -r /usr/local/doris-2.1.8.1
# 2.把主节点配置分发给另外两个节点
rsync -avz /usr/local/doris-2.1.8.1/* root@192.168.88.102:/usr/local/doris-2.1.8
rsync -avz /usr/local/doris-2.1.8.1/* root@192.168.88.103:/usr/local/doris-2.1.8

 分发完成后到另外两个节点的doris根目录下修改各自的ip地址

vim fe/conf/fe.conf
vim be/conf/be.conf
#修改如下内容, 修改为本机对应的ip
priority_networks = 192.168.88.102#删除doris的fe目录下的元数据
rm -rf doris-meta

另一个节点与上面步骤一致。

第一次启动时候需要在两个从节点执行该命令

#进入Doris的根目录, 第一次启动FE执行下面命令 主节点ip地址
fe/bin/start_fe.sh --helper 192.168.88.101:9010 --daemon#进入Doris的根目录,启动BE
be/bin/start_be.sh --daemon

如果状态都为true则代表成功。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/36247.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Linux上的`i2c-tools`工具集的编译构建和安装

源码复制到Ubuntu系统中并解压 的i2c-tools工具集的源码百度网盘下载链接&#xff1a; https://pan.baidu.com/s/1XNuMuT1auT1dMzYo3LAFmw?pwdi6xe 终端进入源码目录 cd /home/book/mybuild/i2c-tools-4.2执行编译构建命令 运行下面的命令进行编译构建 make CC${CROSS_COM…

织梦DedeCMS优化文章模版里的“顶一下”与“踩一下”样式

测试的版本5.7.1UTF-8 一、插入<head>Js代码 将下面代码插入到文章模版里的<head>标签里 <script language"javascript" type"text/javascript" src"{dede:global.cfg_cmsurl/}/include/dedeajax2.js"></script> <…

基于javaweb的SpringBoot食品溯源系统设计与实现(源码+文档+部署讲解)

技术范围&#xff1a;SpringBoot、Vue、SSM、HLMT、Jsp、PHP、Nodejs、Python、爬虫、数据可视化、小程序、安卓app、大数据、物联网、机器学习等设计与开发。 主要内容&#xff1a;免费功能设计、开题报告、任务书、中期检查PPT、系统功能实现、代码编写、论文编写和辅导、论…

数据采集技术之python网络爬虫(中国天气网的爬取)

一、爬取中国天气网所有地区当天的天气数据&#xff08;PyCharm&#xff09;&#xff1a; 网址&#xff1a;https://www.weather.com.cn/ 下面爬取数据&#xff1a; 因为现在已经到了夜间&#xff0c;所以白天的数据已经不见了&#xff0c;但原理是一样的。 二、代码以及详情…

实验四 文件管理

实验四 文件管理 实验目的 &#xff08;一&#xff09;实验1 1&#xff0e;加深对文件&#xff0c;目录&#xff0c;文件系统等概念的理解。 2&#xff0e;掌握Linux文件系统的目录结构。 3&#xff0e;掌握有关Linux文件系统操作的常用命令。 4&#xff0e;了解有关文件…

一文了解ThreadLocal

什么是ThreadLocal&#xff1f; ThreadLocal是每个线程私有的&#xff0c;线程可以把自己的私有数据放到ThreadLocal里面&#xff0c;不用担心其他线程访问到自己ThreadLocal。 通过set()方法将值存入ThreadLocal或者修改值&#xff0c;get()方法取出值&#xff0c;remove()方…

河南大学数据库实验5

由于版本问题图片无法正常上传&#xff0c;如果word版本需要请私信 1.现有读者购书数据库&#xff0c;该数据库中包含三个表&#xff1a;读者相关信息表R&#xff0c;图书信息表B&#xff0c;读者订购图书表OD&#xff0c;具体情况如下表&#xff1a; 表1 R表 表2 B表 表3 …

利用通义灵码AI在VS Code中快速开发扫雷游戏:Qwen2.5-Max模型的应用实例

引言 随着人工智能技术的不断进步&#xff0c;开发过程中的自动化程度也在逐步提高。阿里云推出的通义灵码AI程序员&#xff0c;作为一款创新型的智能编程助手&#xff0c;现已全面上线并兼容VS Code、JetBrains IDEs等多种开发环境。本文将介绍如何利用最新的Qwen2.5-Max模型…

Java多线程与高并发专题——在 Thread 中多个 ThreadLocal 是怎么存储的?

Thread、 ThreadLocal 及 ThreadLocalMap 三者之间的关系 在解答本文的标题问题之前&#xff0c;先要搞清楚 Thread、 ThreadLocal 及 ThreadLocalMap 三者之间的关系。 首先我们梳理下它们的定义与作用&#xff1a; Thread&#xff08;线程&#xff09; 定义&#xff1a;Th…

git tag常用操作

git tag是干嘛用的&#xff0c;相当于一个轻量级的分支。在一个分支上&#xff0c;创建一个tag&#xff0c;就是标记某一次的提交。然后方便checkout到 这个标签上。用tag的意思就是不用专门再创建一个新分支来修改后续的改动。分支不变&#xff0c;继续在上面改动&#xff0c;…

大模型开发(六):LoRA项目——新媒体评论智能分类与信息抽取系统

LoRA项目——新媒体评论智能分类与信息抽取系统 0 前言1 项目介绍1.1 项目功能1.2 技术原理1.3 软硬件环境1.4 项目结构 2 数据介绍与处理2.1 数据集介绍2.2 数据处理2.3 数据导入器 3 模型训练3.1 配置文件3.2 工具函数3.3 模型训练3.4 模型评估 4 模型推理 0 前言 微调里面&…

简单几步完成dify的本地搭建

简单几步完成dify的本地搭建

网络爬虫【爬虫库request】

我叫不三不四&#xff0c;很高兴见到大家&#xff0c;欢迎一起学习交流和进步 今天来讲一讲爬虫 Requests是Python的一个很实用的HTTP客户端库&#xff0c;完全满足如今网络爬虫的需求。与Urllib对比&#xff0c;Requests不仅具备Urllib的全部功能&#xff1b;在开发使用上&…

深度学习:从零开始的DeepSeek-R1-Distill有监督微调训练实战(SFT)

原文链接&#xff1a;从零开始的DeepSeek微调训练实战&#xff08;SFT&#xff09; 微调参考示例&#xff1a;由unsloth官方提供https://colab.research.google.com/github/unslothai/notebooks/blob/main/nb/Qwen2.5_(7B)-Alpaca.ipynbhttps://colab.research.google.com/git…

MySQL 调优

&#x1f9d1; 博主简介&#xff1a;CSDN博客专家&#xff0c;历代文学网&#xff08;PC端可以访问&#xff1a;https://literature.sinhy.com/#/literature?__c1000&#xff0c;移动端可微信小程序搜索“历代文学”&#xff09;总架构师&#xff0c;15年工作经验&#xff0c;…

Clion远程开发配置

代码开发环境&#xff1a;windows下&#xff0c;基于Clion 2024.3开发&#xff0c;标准为C20 代码运行环境&#xff1a;远程服务器&#xff0c;ubuntu&#xff0c;cmake版本3.12&#xff0c;gcc11.4&#xff0c;g11.4&#xff0c;gdb12.1 实现功能&#xff1a;在本地windows开…

男女搭配(数学思维)

#include <bits/stdc.h> using namespace std; int main() {// 请在此输入您的代码int t;cin>>t;while(t--){int n,m,k;cin>>n>>m>>k;int smin(n,2*m)/2;if(nm-k > 3*s) cout<<s<<endl;else cout<<(nm-k)/3<<endl;}r…

SakuraCat(1)整体架构概述 (完善中)

项目功能概述 支持Servlet组件可部署一个标准的Web App 项目架构总览 HTTP服务器&#xff1a;负责建立链接&#xff0c;处理请求的数据&#xff0c;并转发给Servlet容器。Servlet容器&#xff1a;将HttpServletRequest和HttpServletResponse对象传给对应的业务类进行相应的逻…

一种基于大规模语言模型LLM的数据分析洞察生成方法

从复杂数据库中提取洞察对数据驱动决策至关重要,但传统手动生成洞察的方式耗时耗力,现有自动化数据分析方法生成的洞察不如人工生成的有洞察力,且存在适用场景受限等问题。下文将介绍一种新的方法,通过生成高层次问题和子问题,并使用SQL查询和LLM总结生成多表数据库中的见…

单片机学完开发板,如何继续提升自己的技能?

很多人学完开发板后都会卡在一个尴尬的阶段&#xff1a;觉得自己会的东西不少&#xff0c;但又不知道下一步该干啥。会点C语言&#xff0c;能烧录程序&#xff0c;能点亮LED&#xff0c;玩转按键&#xff0c;搞定串口等等&#xff0c;能用开发板做点小玩意儿&#xff0c;但面对…