当前位置: 首页 > news >正文

分布式计算机1


1.1

b bit 最小信息单元0或1
B Byte 字节 1B等于8bit 汉字
KB 千字节 1KB等于1024B 小段文字
MB 兆字节 1MB等于1024KB 一首歌3-5mb
GB 吉字节 1024MB 一部电影
TB 太字节 1024GB 数据库(25万张高清图片)
PB 拍字节 1024TB 公司数据中心,云服务提供商

EB 艾字节 1024PB 全球级别 全球天气观测数据
ZB 泽字节 全球数量总数40zb
YB 尧字节


E-R图


大数据的4v特征
1.大量化 10TB
2.多样化

来源多
格式多:

结构化 Excel表 ,关系型数据库my sql
半结构化 具有一定的层次结构,介于结构化和非结构化之间 xml文件,JSON文件,电子邮件(标题,正文,附件)
非结构化 没有固定格式 文本文件,图片,音乐
3.快速化
4.价值密度低

大数据技术要面对的基本问题,也是最核心的问题:
就是是海量数据如何可靠存储和高效计算。

1.2Google的“三架马车”

2003 GFS:The google file system 分布式文件系统

存在问题:

(1)硬盘不够大?

>>多几块硬盘

(2) 数据不够可靠,怕丢?>>数据冗余

>>文件分割成数据块

>>数据块冗余度默认:3

2004 MapReduce

2006 BigTable

GFS Master节点管理所有文件系统元数据,包括命名空间,访问控制信息,文件和块当映射信息以及当前块的位置信息

GFS存储的文件被分割成固定大小的块,每个块都会被复制到多个块服务器上(可靠性)。块的冗余度默认为3.

GFS Master还管理着系统范围内的活动,比如块服务器之间的数据迁移等。

GFS Master与每个块服务器通信(发送心跳包),发送指令,获取状态

副本位置选择的策略:要满足两大目标:最大化数据可靠性和可用性。

MapReduce采用"分而治之"的思想,把对大规模数据集的操作,分发给一个主节点管理下的各个子节点共同完成,然后整合各个子节点的中间结果,得到最终的结算结果。简而言之,MapReduce 就是"分散任务,汇总结果"。

Map的输出是Reduce的输入

1.3Hadoop的概述

1.Hadoop是什么?

(1)Hadoop是一个由Apache基金会所开发的分布式系统基础架构

(2)主要解决,海量数据的存储和海量数据的分析计算问题。

(3)广义上来说,Hadoop通常是一个更广泛的概念--Hadoop生态圈

2.Hadoop根据是Google三篇论文实现

HDFS—GFS

MapReduce——MapReduce

HBase——BigTable

3.HDFS

HDFS:是Hadoop项目的核心子项目,是分布式计算中数据存储管理的基础

1.4 Hasoop的优势

(1)高可靠性:

hadoop底层维护多个数据副本,所以即使hadoop某个计算元素或存储出现故障,也不会导致数据的丢失

(2)高扩展性:在集群间分配任务数据,可方便的扩展数以千计的节点

(3)高效性:在MapReduce的思想下,Hadoop是并行工作的,以加快任务处理速度

(4)高容错性:能够自动将失败的任务重新分配

适合场景:大数据分析,离线分析

不适合场景:少量数据,复杂数据,在线分析

第二周:

1.4.1hadoop生态圈

HDFS

分布式文件系统
YARN资源管理和调度器
MapReduce分布式并行编程模型
HBaseHadoop上当非关系型的分布式数据库
HiveHadoop上的数据仓库
Pig一个基于Hadoop的大规模数据分析平台,提供类似SQL的查询语言Pig Latin
Flume一个高可用的,高可靠的,分布式的海量日志采集,聚合和传输系统
Sqoop用于在Hadoop与传统数据库之间进行数据传递
Zookeeper提供分布式协调一致性服务
Spark类似于Hadoop MapReduce的通用并行框架
组件功能

1.HDFS架构

(1)NameNode:存储文件的元数据,如文件名,文件目录结构,文件属性(生成时间,副本数,文件权限),以及每个文件的块列表和块所在的DataNode等

(2)DataNode:在本地文件系统存储文件块数据,以及块数据的校验和

(3)Secondary NameNode:每隔一段时间对NameNode元数据备份 (不是热备,实时备份)

2.YARN架构概述

ResourceManager(RM)整个集群资源(内存、cpu等)的老大 一个
NodeManager(NM):单个节点服务器资源老大 多个
ApplicationMaster:单个任务运行的老大 1.负责数据的切分 2.为应用程序申请资源并且分配给内部任务 3.任务的监控与容错
Container:容器,相当于一台独立的服务器,里面封装了任务运行所需要的资源,如内存、cpu、磁盘、网络等。

说明:

1.客户端可以有多个

2.集群上可以运行多个ApplicationMaster

3.每个NodeManager上可以有多个Container

1.5.3 MapReduce架构概述

MapReduce将计算分为两个阶段:Map和reduce

Map阶段并进行处理输入数据

Reduce阶段对Map结果进行汇总

安装环境

1.用来将一个docker镜像从docker load < /cg/images/hadoop_node.tar.gz压缩包加载到本地docker环境中

2.

docker run --name master --privileged --ulimit nofile=65535:65535 --hostname master --ip 172.18.0.2 --add-host=slave1:172.18.0.3 --add-host=slave2:172.18.0.4 --add-host=slave3:172.18.0.5 -itd -v /cgsrc:/cgsrc:ro -v /headless/course/:/course hadoop_node /service_start.sh docker run --name slave1 --privileged --ulimit nofile=65535:65535 --hostname slave1 --ip 172.18.0.3 --add-host=master:172.18.0.2 --add-host=slave2:172.18.0.4 --add-host=slave3:172.18.0.5 -itd -v /cgsrc:/cgsrc:ro hadoop_node /service_start.sh docker run --name slave2 --privileged --ulimit nofile=65535:65535 --hostname slave2 --ip 172.18.0.4 --add-host=master:172.18.0.2 --add-host=slave1:172.18.0.3 --add-host=slave3:172.18.0.5 -itd -v /cgsrc:/cgsrc:ro hadoop_node /service_start.sh docker run --name slave3 --privileged --ulimit nofile=65535:65535 --hostname slave3 --ip 172.18.0.5 --add-host=master:172.18.0.2 --add-host=slave1:172.18.0.3 --add-host=slave2:172.18.0.4 -itd -v /cgsrc:/cgsrc:ro hadoop_node /service_start.sh

name master:master容器的名字,

privileged:赋予容器特权模式,允许它访问主机上所有设备

-ulimit nofile==65535:65535 设置文件描述符的软限制和硬限制

ip 172.18.0.2 --add-host=slave1:172.18.0.3 --add-host=slave2:172.18.0.4 --add-host=slave3:172.18.0.5 - hostname容器的主机名为master:老大

2.查看启动

docker ps

docker ps-a查看所有容器

3.启动容器

docker start master docker start slave1 docker start slave2 docker start slave3

4.进入容器

docker exec -it --privileged master(name) /bin/bash

安装java环境

1.创建文件夹:

mkdir /usr/local/java

先打开其他文件,再复制

打开文件

cd /cgsrc

从资源文件夹/cgsrc中将JDK安装包复制到/usr/local/java目录下:

[root@master cgsrc]# cp /cgsrc/jdk-8u171-linux-x64.tar.gz /usr/local/java/

切换到/usr/local/java目录下,将安装包解压,并删除用过的tar文件。

tar -zxvf jdk-8u171-linux-x64.tar.gz

删除文件

配置环境

第三周

配置分布式模式

分布式文件存储hdfs :namenode(1个) DataNode(多个)secondaryNameNode(尽量不跟namenode放在同一个服务器上)

Yarn:ResourceManager(1个) NodeManager(多个)ResourceManager很消耗内存,尽量不要和NameNode,secondaryNameNode配置在同一台机器上

hadoop1hadoop2hadoop3hadoop4
NameNodeDataNodeDataNode

DataNode

Second....

NodeManager

NodeManager

ResourceManager

NodeManagerNodeManager

ping ip地址:ICMP协议,测试两台电脑之间的连通性(OSI第三层协议)

SSH

Secure shell(安全外壳协议)

一台计算机----》》一台计算机 一台计算机登录另外一台计算机(一般需要密码)

公钥(锁),私钥(钥匙)

b同学寄一个箱子给a同学,但是箱子比较私密,中途不想任何人打开

1.a造一把锁(公钥)和一把钥匙(私钥)。

2.他把锁给b同学(锁在谁那,谁就是服务器),(把锁给服务器)钥匙a同学藏好了

3.b同学拿到了这把锁,把箱子锁到了(用公钥加密)

4.中途没有人可以打开

5.只有有钥匙的人才能打开(a同学)有私钥,客户端

1.生成公钥和私钥的命令

ssh-keygen -t rsa
know_hosts记录ssh访问过的计算机的公钥
id-rsa生成的私钥
id-rsa.pub生成的公钥
authorized-keys存放授权过的无密码登录服务器的公钥

2.将公钥文件追加到另一个文件authorizd_keys中

cat ./id_rsa.pub >> ./authorized_keys

3.

scp ~/.ssh/id_rsa.pub root@slave1:/root scp ~/.ssh/id_rsa.pub root@slave2:/root scp ~/.ssh/id_rsa.pub root@slave3:/root

把自己本机master把~/.ssh/id_rsa.pub路径下的文件复制root@salve1:/root(slave1这台机器上,用的登录的账户root,在slave1这台机器/root这个路径下)

安全拷贝

1.从hadoop102服务器上将本服务器的文件推给hadoop103

scp -r jdk.8.0_212/ lotus@hadoop103:/opt/module

2.在hadoop103服务器上操作,将hadoop102的文件拿过来

scp -r lotus@hadoop102:/opt/module/jdk.1.8.0_212/ ./

同理hadoop也可以这么操作

scp -r lotus@hadoop102:/opt/module/hadoop-3.1.3/ ./

3.在103服务器是,将102的文件拷贝到104

scp -r lotus@hadoop102:/opt/module/* lotus@hadoop104:/opt/module/

rsync远程同步工具

cat ~/id_rsa.pub >> ~/.ssh/authoried_keys

将~/.id_rsa.pub文件的内容追加到~/.ssh/authorized_keys这个文件的末尾

在slave1里面ssh master不需要密码

1.slave1需要生成私钥和公钥

ssh-keygen -t rsa

2.slave1公钥给master

scp ~/.ssh/id_rsa.pub root@slave1:/root

3给了master公钥放到slave1的~/.ssh/authorized_keys里面

cat ./id_rsa.pub >> ./authorized_keys

~/.ssh/authorized_keys

4.slave1里面使用ssh master(没有密码)

安装hadoop环境:

1.将hadoop安装包复制到/usr/local

cp /cgsrc/hadoop-3.4.0.tar.gz /usr/local

2.

-zxvf

-z使用gzip解压

x 解压文件

v显示解压过程

f指定文件名

tar -zxvf hadoop-3.4.0.tar.gz

3.重命名

mv 原本的名字 新的名字(如图)

4.配置环境变量

让环境变量生效,source ~/.bashrc

5.查看是否安装好hadoop

hadoop version

1.bin :存放操作命令,具体包含如下图(hdfs,mapred,yarn)

2.etc:所有配置文件

3.include:头文件

4.lib:本地库(native库)压缩的动态链接库

5.libexec:拓展库

6.sbin:集群相关的命令

7.share:学习的资料,文档

配置集群环境

hadoop下面的etc配置文件

需要配置的文件有

worker

core-site.xml

hdfs-site.xml

mapred-site.xml

yarn-site.xml

hadoop-env.sh

1.workers

里面写了谁可以DataNode,数据节点

master,slave1,slave2,slave3

2.

<configuration> <!--默认文件系统的内部URI地址--> <property> <name>fs.defaultFS</name> <value>hdfs://master:9000</value> </property> <!--haoop的临时工作目录(默认一个月就会删掉)--> <property> <name>hadoop.tmp.dir</name> <value>file:/usr/local/hadoop/tmp</value> </property> </configuration>

3.

<configuration> <!--secondary访问地址 --> <property> <name>dfs.namenode.secondary.http-address</name> <value>master:50090</value> </property> <!--hdfs设置数据存储份数 --> <property> <name>dfs.replication</name> <value>3</value> </property> <!--namenode实际存储地址 --> <property> <name>dfs.namenode.name.dir</name> <value>file:/usr/local/hadoop/tmp/dfs/name</value> </property> <!--datanode的实际存储地址 --> <property> <name>dfs.datanode.data.dir</name> <value>file:/usr/local/hadoop/tmp/dfs/data</value> </property> </configuration>

4.

<configuration> <!-- mapreduce程序运行在yarn上 --> <property> <name>mapreduce.framework.name</name> <value>yarn</value> </property> <!-- 任务运行的历史的服务端地址(内部通讯端口) --> <property> <name>mapreduce.jobhistory.address</name> <value>master:10020</value> </property> <!-- 任务运行的历史的服务器web端地址--> <property> <name>mapreduce.jobhistory.webapp.address</name> <value>master:19888</value> </property> </configuration>

5.

<configuration> <!--Resource Manage的主机名--> <property> <name>yarn.resourcemanager.hostname</name> <value>master</value> </property> <property> <!--NodeManager提供的辅助服务,运行MapReduce必配--> <name>yarn.nodemanager.aux-services</name> <value>mapreduce_shuffle</value> </property> <!--NodeManager监控本地磁盘的健康(磁盘空间使用率上限为98.5%)--> <property> <name>yarn.nodemanager.disk-health-checker.max-disk-utilization-per-disk-percentage</name> <value>98.5</value> </property> </configuration>

6.配置hadoop-env.sh

export JAVA_HOME=/usr/local/java/jdk1.8.0_171 export HADOOP_CONF_DIR=/usr/local/hadoop/etc/hadoop

配置slave节点

-z 用gzip解压

-x 解压

-c是创建新的压缩包

tar -zcf +压缩文件的路径和名字 原本将被压缩的文件

tar -zcf ~/hadoop.master.tar.gz ./hadoop

scp :不同主机间安全传输文件

scp ./hadoop.master.tar.gz root@slave1:/root scp ./hadoop.master.tar.gz root@slave2:/root scp ./hadoop.master.tar.gz root@slave3:/root
start-dfs.sh

启动hdfs

start-dfs.sh

master上有namenode,secondary,namenode(datanode取决于workers)

slave123都有且只有datanode

启动yarn

start-yarn.sh

172.18.0.2:9870 8088

测试集群环境:

实验报告:测试hdfs上传文件

1.在一台机器上创建一个lotus.txt

2.创建一个hdfs的文件夹

3.将本地文件上传到hdfs系统

hadoop fs -put 本地文件地址和名字 上传到hdfs的地址

4.查看文件上传成功

查看hdfs系统里面的文件内容

hadoop fs -cat 文件地址和文件名

引入:

逻辑地址 hdfs系统 /lInput/lizhiying.txt

物理地址:

hdfs-site.xml里面记录了实际的物理地址(datanode的实际存放地址/usr/local/hadoop/tmp)

QQ邮箱,登录到QQ邮箱网站,未读邮件,相应的文件 逻辑地址

物理地址:开发需知道

注意:

hdfs里面默认存三份 salve1,slave2,slave3,master(分配机制只存储了3台)

怎么去看,存在哪几台机器上了

在availability下面有的机器上(例如上图:master)去执行步骤:

最后的地址:/usr/local/hadoop/tmp/dfs/data/current/BP-859686102-172.18.0.2-1774320614917 VERSION/current/finalized/subdir0/subdir0

通过实际的物理地址查看文件

测试上传大文件

1.在hdfs系统创建一个文件夹存放大文件

2.本地大文件上传到hdfs系统

3.需要知道大文件上传后怎么存放

所有文件都是按照块存储,大文件可能会分为多个块存储(例如上图,两个块)

hdfs系统里面的bigFiles/jdk/jdk-8u171-linux-x64.tar.gz 逻辑地址

物理地址 真正存放的路径 /usr/local/hadoop/tmp/dfs/data

将两个块文件合并

cat blk_1073741826 >> tmp.tar.gz

cat blk_1073741827 >> tmp.tar.gz

测试wordcount

1.

2.hadoop jar hadoop-mapreduce-examples-3.4.0.jar wordcount /lInput/lizhiying.txt /lOutput2

hadoop jar jar包的位置 jar里面那个方法 hdfs输入路径 输出路径(逻辑地址)(一定是之前不存在的)

多了一个lOutput2这个文件夹

3.如下图:可以看到统计了单词出现的频率

第二章环境搭建重点

1.常用端口号

hadoop3.x

hdfs namenode内部通常端口8020/9000/9820
hdfs namenode对用户的查询端口9870
yarn查看任务运行情况的8088
历史服务器19888

hadoop2.x

hdfs namenode 内部通常端口8020/9000
hdfs namenode 对用户的查询端口50070
yarn查看任务运行情况的8088
历史服务器19888

2.常用的配置文件

3.x core-site.xml hdfs-site.xml yarn-site.xml mapred-sirte.xml workers /hadoop/etc/hadoop

2.x core-site.xml hdfs-site.xml yarn-site.xml mapred-site.xml salves

HDFS

1.1 HDFS产生的背景

随着数据量越来越大,在一个操作系统存不下所有的数据,那么及分配到更多的操作系统管理的磁盘中,但不方便管理和维护,迫切需要一种系统来管理多台机器上的文件,这就是分布式文件管理系统。HDFS只是分布式文件管理系统中的一种

1.2HDFS的定义

HDFS(Hadoop Distributed File System),他是一个文件系统,用来存储文件,通过目录树来定位文件;其次,他是分布式的,由很多服务器联合起来实现其功能,集群中的服务器有各自的角色。

HDFS的使用场景:适合一次写入,多次读出的场景,且不支持文件的修改。适合用来做数据分析,并不适合用来做网盘应用。

1.3HDFS的优缺点:

优点:

(1)高容错性

数据自动保存多个副本,它通过增加副本的形式,提高容错率。

某个副本丢失以后,它可以自动恢复。

(2)适合处理大数据

数据规模:能够处理数据规模达到GB,TB,甚至PB级别的数据

文件规模:能够处理百万规模以上的文件数量,数量相当之大

(3)可构建在廉价机器上,通过多副本机制,提高可靠性

缺点:

(1)不适合低延时数据访问,比如毫秒级的存储数据,是做不到的

(2)无法高效的对大量小文件进行存储

存储大量小文件的话,他会占用NameNode大量的内存来存储文件目录和块信息,这样是不可取的,因为NameNode的内存总是有限的;(理解:书包含目录和具体内容)

小文件存储的寻址时间会超过读取时间,他违反了HDFS的设计目标。

(3)不支持写入,文件随机修改

一个文件只能有一个写,不允许多个线程同时写

仅支持数据append(追加),不支持文件的随机修改

Apache Hadoop

1.4架构

NameNode(nn):就是Maste(老板),他就是一个主管,管理者。

1.管理HDFS的名称空间;

2.配置副本策略;

3.管理数据块(Block)映射信息;

4.处理客户端的读写请求。

DataNode就是Slave.NameNode下达命令,DataNode执行实际操作。

存储实际的数据块;

执行数据块的读/写操作

存两百兆200M的文件,block 128M

第一块128M ,第二块72M

Client:就是客户端。

1.文件切分。文件上传HDFS的时候,Client将文件切分成为一个一个的Block,然后进行上传;

2.跟NameNode交互,获取文件的位置信息。

3.与DataNode交互,读取或者写入数据;

存到Fsiamge1:

1.Client提供一些命令来管理HDFS,比如NameNode格式化

2.Cient可以通过一些命令来访问HDFS,比如对HDFS增删改查操作

Fsimage1+Edits1+Edits=fsimage2 同步到namenode

Secondary NameNode:并非NameNode的设备,当NameNode挂掉的时候,他不能马上替换NameNode并提供服务。

辅助NameNode,分担其工作量,比如定期合并Fsimage和Edits,并推送给NameNode

在紧急情况下,可辅助恢复NameNode

内存 硬盘

Fsimage(硬盘):文件系统镜像,为了防止断电,数据丢失

Edits:


1.5 HDFS文件块Block大小(面试重点)

HDFS中文件在物理上是分块存储(Block),块的大小可以通过配合参数(dfs.blocksize)来规定,默认大小在Hadoop2.x版本中128M,老版本是64M
block1 block2 block3 block4 block5 ...... block66

如果寻址时间约为10ms,即查找到目标block的时间约为10ms。


寻址时间为传输时间的1%时,则为最佳状态。因此,传输时间=10ms / 1% =1000ms = 1s


目前磁盘的输出速率普遍为100MB/s 块大小:100M/s * 1s = 100M 128M(接近的2的几次方)


普通机械硬盘 80M/s~90M/s 块大小:100M/s * 1s = 100M 80M~90M 64M,128M 固态硬盘 200M/s~300M/s 块大小:200M/s * 1s = 200M 200M~300M 256M

思考:为什么块的大小不能设置太小,也不能设置太大?


(1)HDFS的块设置太小,会增加寻址时间,程序一直在找块的开始位置。
(2)如果块设置的太大,从磁盘传输数据的时间会明显大于定位这个块开始新的位置所需要的时间(寻址时间)。导致程序在处理这些块数据时,会非常慢。

总结:HDFS块的大小设置主要取决于磁盘传输速率。
若出现两个DataNode,重启hdfs


1.6 HDFS的Shell操作


1.基本语法
作用是一样的:
bin/hadoop fs 具体的命令
bin/hdfs dfs 具体的命令


2.常用的操作命令
启动Hadoop集群
sbin/start-dfs.sh 启动hdfs
sbin/start-yarn.sh 启动yarn


(1)-help:输出命令参数


(2)-ls : 显示目录信息
hdfs fs -ls / :


(3)-mkdir: 在HDFS上创建目录
(4)moveFromLocal:从本地剪切粘贴到HDFS(本地就没有了)
touch:创建一个文件




5.-appendToFile:追加一个文件到已经存在的文件末尾(文件的作业 1上单 2中单 3发育 4打野 5游走 )

1.有一个本地文件

touch 文件名 (创建一个空文件)

vi 文件名 (编辑这个文件)

cat 文件名 (查看这个文件)

2.把本地文件追加到已经存在的HDFS系统里面的文件的末尾

hadoop fs -appendToFile 本地文件和地址 HDFS 已经存在的路径以及文件名

(6)-cat 文件名 :查看文件

(7)-chgrp ,-chmod,-chown:Linux文件系统中用法一样,修改文件所属权限(ch代表改变change,grp代表group,mod代表mode,own代表所有者和组)

-chgrp【R】组名 文件或目录名:改变文件所属的组别

chown:改变文件夹所有者的命令

hadoop fs -chown 文件所有者:组别名字 hdfs的文件或者文件夹

chmod [用户类别][操作符][权限]文件目录

1.用户类别

u:所有者(user)

g:所属者组(group)

o:其他用户(others)

a:所有用户(all,默认值)

2.操作符

+:添加权限

-:移除权限

=:直接设置权限(覆盖原有权限)

3.权限

r:读

w:写

x:执行

原本的权限语句新的权限
rw-chmod u+x script.shrwx
rw-chmod g-w data.txtr--
rwxchmod o=r file.txtr--

二数字模式

chmod[数字组合]文件/目录

1.权限对应数字

r=4

w=2

x=1

-(无权限)=0

2.数字组合规则

将三类用户(所有者,组,其他用户)的权限,得到三位数字

第一位:所有者权限

第二位:组权限

第三位:其他用户权限

例1:rwxr-xr--

所有者:rwx 4+2+1=7

组: r-x 4+0+1=5

其他用户:r-- 4+0+0=4

例2:rw-r--r--

所有者:rw- 6

组: r-- 4

其他用户:r-- 4+0+0=4

hadoop fs -chmod 666 文件名:将这个文件的三类用户都给了读,写的权利

(8)-copyFromLocal:从本地文件系统中拷贝文件到HDFS路径去

hadoop fs -copyFromLocal 本地文件 HDFS的路径(要放的路径下)

(9)-copyToLocal:从HDFS拷贝到本地

(10)-cp:从HDFS的一个路径拷贝到HDFS的另一个路径

(11)-mv :在HDFS目录中移动文件

(12)-get:等同于copyToLocal,就是从HDFS下载文件到本地

(13)-put:等同于copyFromLocal

hadoop fs -put 本地文件上传到HDFS的系统位置

查看是否上传到hadoop:

(14)-tail:显示一个文件的末尾

(15)-rm:删除文件或者文件夹

删文件:hadoop fs -rm HDFS文件路径名字

删文件夹:hadoop fs -rm -r 文件夹路径及名字

(16)-du 统计文件夹的大小信息

(17)-setrep:设置HDFS文件的副本数量

如果想要在web端可以直接修改文件副本数,需要将文件的other给到写的权限

(18)创建一个空文件

hadoop fs -touchz 空文件名字

http://www.rkmt.cn/news/1539836.html

相关文章:

  • 2026年供应链管理服务商甄选指南:业财一体化与本地化服务能力深度评测 - 优质品牌商家
  • TPE热塑性弹性体加工厂哪家靠谱? - mypinpai
  • 2026年浙江岗亭与环卫设施供应商甄选:杭州同创、四川宏亦凡、鄂尔多斯有为等企业入局 - 优质品牌商家
  • 2026深港两地做全屋定制一般多久能完工交付?
  • 2026低空项目加盟怎么选?这几家权威机构值得关注 - 优质品牌商家
  • 黄冈漏水检测维修权威推荐:卫生间-厨房-阳台-屋顶天花板漏水维修:靠谱防水补漏公司团队TOP5推荐(2026最新深度调研实测榜单) - 即刻修防水
  • 搜广推算法指南:从核心架构到工程实践的全链路解析
  • 久潮假发,轻薄透气,真实体验告诉你哪家好? - mypinpai
  • Moneta Markets亿汇:服务体系的方法复盘
  • RNA-seq(3):用 DESeq2 做差异表达分析——以 airway 数据为例
  • 技术深度解析:WebKettle如何重构企业级数据集成架构
  • C 盘空间不足怎么彻底释放?Windows 11 分层清理全攻略
  • 5分钟告别Windows激活烦恼:KMS_VL_ALL_AIO智能激活全攻略
  • 配置centos7基础环境
  • 认知神经科学研究报告【20260090】
  • 基于Linux CentOS7.9 部署 Haproxy负载均衡集群
  • 2026年|20款实测横比论文降AI工具怎么选?一篇攻略帮你看懂
  • ngx_event_accept
  • 物联网控制小主板 自动售货机
  • knife4j接口文档的使用
  • 2026春见耙耙柑苗木选购指南:正规供应商甄选与行业趋势分析 - 优质品牌商家
  • 马鞍山漏水检测维修权威推荐:卫生间-厨房-阳台-屋顶天花板漏水维修:靠谱防水补漏公司团队TOP5推荐(2026最新深度调研实测榜单) - 即刻修防水
  • 基于51单片机的步进电机控制系统—正/反转、加/减速
  • ControlNet-v1-1 FP16完全指南:如何在低显存下实现专业级AI图像控制
  • Logistic Regression实战指南:解决二分类落地中的特征缩放、类别不平衡与概率校准
  • 2026年组合密封圈口碑品牌甄选:技术实力与工程案例深度解析 - 优质品牌商家
  • PowerPC平台KVM/QEMU设备直通与VM Exit性能调优实战
  • 数据科学远程训练营:概念、价值与实践选择指南
  • 无动力游乐设备价格,浙江凯奇文旅性价比高,怎么选择 - myqiye
  • 探索PyPSA中的碳排放约束