(必看图文)Hadoop集群安装及MapReduce应用(手把手详解版)

前言

       随着大数据时代的到来,处理和分析海量数据已成为企业和科研机构不可或缺的能力。Hadoop,作为开源的分布式计算平台,因其强大的数据处理能力和良好的可扩展性,成为大数据处理领域的佼佼者。本图文教程旨在帮助读者理解Hadoop集群的安装过程,并通过MapReduce应用实例,深入体验Hadoop在大数据处理中的强大功能。

       在正式进入Hadoop集群安装之前,我们将简要介绍Hadoop的核心组件——HDFS(Hadoop Distributed File System)和MapReduce。HDFS提供了分布式存储能力,使得数据可以存储在集群中的多个节点上,从而实现高容错性和高吞吐量。而MapReduce则是一种编程模型,用于处理大规模数据集,其独特的“Map”和“Reduce”两个阶段使得数据处理任务可以并行执行,大大提高了处理效率。

       通过本教程的学习,读者将能够掌握Hadoop集群的搭建方法,理解MapReduce编程模型的基本原理,并通过实际案例体验Hadoop在大数据处理中的强大能力。

安装OpenEuler系统

选择Installer oenEuler  20.03-LTS

选择默认磁盘分区

配置网络

选择ipv4 setting

填写IP地址(手动配置地址必须遵守Vmware WorkStation的基本配置)

查看地址配置信息

开始安装

配置root账户密码

置root账户密码

通过此部署依次部署4台,并通过ssh登录

为每一台配置yum源地址

cd /etc/yum.repos.d/

vi openEulerOS.repo

配置华为Yum源地址。

[openEuler-source]name=openEuler-sourcebaseurl=https://repo.huaweicloud.com/openeuler/openEuler-20.03-LTS/source/enabled=1gpgcheck=1gpgkey=https://repo.huaweicloud.com/openeuler/openEuler-20.03-LTS/source/RPM-GPG-KEY-openEuler[openEuler-os]name=openEuler-osbaseurl=https://repo.huaweicloud.com/openeuler/openEuler-20.03-LTS/OS/x86_64/enabled=1gpgcheck=1gpgkey=https://repo.huaweicloud.com/openeuler/openEuler-20.03-LTS/OS/x86_64/RPM-GPG-KEY-openEuler[openEuler-everything]name=openEuler-everythingbaseurl=https://repo.huaweicloud.com/openeuler/openEuler-20.03-LTS/everything/x86_64/enabled=1gpgcheck=1gpgkey=https://repo.huaweicloud.com/openeuler/openEuler-20.03-LTS/everything/x86_64/RPM-GPG-KEY-openEuler[openEuler-EPOL]name=openEuler-epolbaseurl=https://repo.huaweicloud.com/openeuler/openEuler-20.03-LTS/EPOL/x86_64/enabled=1gpgcheck=0

清楚现有并生成新的缓存

安装实验所需工具 vim tar (4台都安装)

yum install -y vim  tar

基础配置

此部分配置Hadoop各节点使其符合软件安装的要求,内容比较多,除了教程中给出的步骤,如果是物理服务器等需要另外设置时间同步,因为华为云已经同步了时间,所以此处不加上相应的配置过程,如感兴趣,请自行查资料完成。下面操作以node01为例,进行相应的配置

1.1.1.1 修改主机名

注意:如果主机名不是对应的node01、node2、node3、node4,则需要分别将四个节点的主机名进行修改,四台均需要修改,此处以node01为例子。如果你在购买的时候已经设置好主机名,则不需要修改,可忽略此步骤。

方式一:使用hostname命令,直接命名主机名(但是此种设置重启后会变回原来的,可不操作):

>  hostname node01>  bash

方式二:修改/etc/hostname文件(修改好后重启,发生修改已生效):

>  vim /etc/hostname

# 修改完毕后,效果如下:

>  cat /etc/hostnamenode01>  reboot

方式三(统一采用这种):此外,还有一种更加简便的办法,直接执行后就可以了,不需要重启:

>  hostnamectl set-hostname node01>  bash

以下是修改结果:

步骤 1  修改hosts配置文件

使用命令vim /etc/hosts,为node01-4四个节点增加内网IP与节点主机名的映射,确保各节点之间可以使用主机名作为通信的方式。

>  vim /etc/hosts# 需删除自己的主机名映射到127.0.0.1的映射,如node01为:127.0.0.1       node01   node01此行务必删除!# 加入以下内容如下:(注意IP地址必须是自己的IP地址)192.168.28.31   node01192.168.28.32   node02192.168.28.33   node03192.168.28.34   node04

呈现结果如下:

1.1.1.2 关闭防火墙

执行下面命令查看防火墙状态:

>  systemctl status firewalld

如果发现默认是已经禁用的,所以不需要关闭了。如果是开启的,则需要在node01-4四个节点执行如下命令关闭防火墙:

>  systemctl stop firewalld>  systemctl disable firewalld

4个节点均执行此命令:

1.1.1.3 配置ssh互信

          步骤 1      生成id_rsa.pub 文件

各节点执行 ssh-keygen -t rsa 命令后,连续回车三次后生成/root/.ssh/id_rsa.pub 文件

 步骤 1      汇总id_rsa.pub

各个节点执行cat /root/.ssh/id_rsa.pub命令,我们需要将密钥进行汇总,思路是先将node2、node3、node4的密钥拷贝到node01,在node01进行汇总,然后将汇总好的文件分发到node2、node3、node4,这样的话,每个节点就有了彼此的密钥,达到互相免密码登录的效果。

将node2的密钥拷贝到node01(在node2执行):

> scp ~/.ssh/id_rsa.pub root@node01:~/.ssh/id2

执行的时候可能输入“yes”,并且需要输入node01的服务器密码。

将node3的密钥拷贝到node01(在node3执行):

> scp ~/.ssh/id_rsa.pub root@node01:~/.ssh/id3

执行的时候可能输入“yes”,并且需要输入node01的服务器密码。

将node4的密钥拷贝到node01(在node4执行):

> scp ~/.ssh/id_rsa.pub root@node01:~/.ssh/id4

执行的时候可能输入“yes”,并且需要输入node01的服务器密码。

查看一下是否拷贝完成(在node01执行):

> ll ~/.ssh

发现node2、node3、node4的密钥都拷贝到node01上了:

继续进行汇总:

> cd ~/.ssh> cat id2 id3 id4 >> authorized_keys此外,还要将node01的密钥也放进去:> cat id_rsa.pub >> authorized_keys查看汇总后的文件authorized_keys,发现已经有四台机器的密钥了:> cat authorized_keys

最后,需要将此文件分发到node02、node03、node04:

> scp authorized_keys root@node02:~/.ssh/> scp authorized_keys root@node03:~/.ssh/> scp authorized_keys root@node04:~/.ssh/

步骤 1      验证测试

每个节点分别 ssh node01~node4,选择 yes 后,确保能够互相免密码登录。

两两相互测试

          步骤 1      安装JDK,在 node01~node04

1. 下载jdk8,或者通过上传本地安装文件

> wget https://mirrors.huaweicloud.com/java/jdk/8u192-b12/jdk-8u192-linux-x64.tar.gz

(此次演示node01,02-04都需要执行)

2. 解压jdk

> mkdir –p /usr/lib/jvm/

> tar -zxvf jdk-8u192-linux-x64.tar.gz -C /usr/lib/jvm/

> mv  /usr/lib/jvm/jdk1.8.0_192   /usr/lib/jvm/java

3. 配置环境变量

执行指令vim /etc/profile,编辑环境变量文件,在文件末尾添加下面内容

>  vim /etc/profileexport JAVA_HOME=/usr/lib/jvm/javaexport PATH=$PATH:$JAVA_HOME/binexport CLASSPATH=.:%JAVA_HOME%/lib/dt.jar:%JAVA_HOME%/lib/tools.jar

示例子如下:

使环境变量生效

> source /etc/profile

 5. 验证java环境

> java –version

出现以下信息表示jdk安装成功

java version "1.8.0_192"

Java(TM) SE Runtime Environment (build 1.8.0_192-b12)

Java HotSpot(TM) 64-Bit Server VM (build 25.192-b12, mixed mode)

上面验证通过,下面的步骤可以不用执行

6. 环境变量拷至bashrc文件,使每次打开shell都生效,编辑/etc/bashrc,在文件末尾添加下面内容 (可选)

>vim /etc/bashrc

export JAVA_HOME=/usr/lib/jvm/java

export PATH=$PATH:$JAVA_HOME/bin

export CLASSPATH=.:%JAVA_HOME%/lib/dt.jar:%JAVA_HOME%/lib/tools.jar

1.1.1.4 创建必要的目录

> mkdir -p /home/modules/data/buf/

> mkdir -p /home/test_tools/

> mkdir -p /home/nm/localdir

注意:四台服务器都需要操作。

1.2.1 下载软件包

          步骤 1      获取Hadoop软件包

node01找到下载好的Hadoop软件包,放到home目录,或者从本地上传安装文件

> wget https://archive.apache.org/dist/hadoop/common/hadoop-2.8.3/hadoop-2.8.3.tar.gz

1.2.1 搭建Hadoop集群

1.2.1.1 查看解压目录

在node01上准备hadoop组件

> tar -zxvf hadoop-2.8.3.tar.gz -C /home/modules

> ls /home/modules/  | grep hadoop

hadoop-2.8.3

1.2.1.2 修改配置文件

          步骤 1      配置hadoop-env.sh

在node010上执行命令:

> vim /home/modules/hadoop-2.8.3/etc/hadoop/hadoop-env.sh

修改JAVA_HOME路径为ECS已经默认装好了JDK路径

export

=/usr/lib/jvm/java

步骤 1      预配置core-site.xml

在node01上执行命令+

> vim /home/modules/hadoop-2.8.3/etc/hadoop/core-site.xml

在<configuration>与</configuration>之间填入以下内容,此为预配置,后期还要再修改,注意涉及到的主机名如果不同需要根据具体情况修改:

<property><name>fs.defaultFS</name><value>hdfs://node01:8020</value></property><property><name>hadoop.tmp.dir</name><value>/home/modules/hadoop-2.8.3/tmp</value></property><property><name>fs.obs.buffer.dir</name><value>/home/modules/data/buf</value></property><property><name>fs.obs.readahead.inputstream.enabled</name><value>true</value></property><property><name>fs.obs.buffer.max.range</name><value>6291456</value></property><property><name>fs.obs.buffer.part.size</name><value>2097152</value></property><property><name>fs.obs.threads.read.core</name><value>500</value></property><property><name>fs.obs.threads.read.max</name><value>1000</value></property><property><name>fs.obs.write.buffer.size</name><value>8192</value></property><property><name>fs.obs.read.buffer.size</name><value>8192</value></property><property><name>fs.obs.connection.maximum</name><value>1000</value></property><property><name>fs.obs.impl</name><value>org.apache.hadoop.fs.obs.OBSFileSystem</value></property><property><name>fs.obs.connection.ssl.enabled</name><value>false</value></property><property><name>fs.obs.fast.upload</name><value>true</value></property><property><name>fs.obs.socket.send.buffer</name><value>65536</value></property><property><name>fs.obs.socket.recv.buffer</name><value>65536</value></property><property><name>fs.obs.max.total.tasks</name><value>20</value></property><property><name>fs.obs.threads.max</name><value>20</value></property>

效果如下:

1.2.1.3 配置hdfs-site.xml

在node01上执行命令

> vim /home/modules/hadoop-2.8.3/etc/hadoop/hdfs-site.xml在<configuration>与</configuration>之间内容替换如下:<property><name>dfs.replication</name><value>3</value></property><property><name>dfs.namenode.secondary.http-address</name><value>node01:50090</value></property><property><name>dfs.namenode.secondary.https-address</name><value>node01:50091</value></property>

1.2.1.4 配置yarn-site.xml

在node01上执行命令

> vim /home/modules/hadoop-2.8.3/etc/hadoop/yarn-site.xml

在<configuration>与</configuration>之间内容替换如下:

<property><name>yarn.resourcemanager.hostname</name><value>node01</value><description>表示ResourceManager安装的主机</description></property><property><name>yarn.resourcemanager.address</name><value>node01:8032</value><description>表示ResourceManager监听的端口</description></property><property><name>yarn.nodemanager.aux-services</name><value>mapreduce_shuffle</value><description>为map reduce应用打开shuffle 服务</description></property><property><name>yarn.nodemanager.local-dirs</name><value>/home/nm/localdir</value><description>表示nodeManager中间数据存放的地方</description></property><property><name>yarn.nodemanager.resource.memory-mb</name><value>3072</value><description>表示这个NodeManager管理的内存大小</description></property><property><name>yarn.nodemanager.resource.cpu-vcores</name><value>2</value><description>表示这个NodeManager管理的cpu个数</description></property><property><name>yarn.nodemanager.pmem-check-enabled</name><value>false</value><description>不检查每个任务的物理内存量</description></property><property><name>yarn.nodemanager.vmem-check-enabled</name><value>false</value><description>不检查每个任务的虚拟内存量</description></property><property><name>yarn.nodemanager.aux-services</name><value>mapreduce_shuffle</value><description>为map reduce应用打开shuffle 服务</description></property>

1.2.1.5 配置mapred-site.xml

在node01上执行命令:

> cp /home/modules/hadoop-2.8.3/etc/hadoop/mapred-site.xml.template /home/modules/hadoop-2.8.3/etc/hadoop/mapred-site.xml

然后编辑复制出来的配置文件:

  vim /home/modules/hadoop-2.8.3/etc/hadoop/mapred-site.xml

在<configuration>与</configuration>之间内容替换如下:

<property><name>mapreduce.framework.name</name><value>yarn</value></property><property><name>mapreduce.jobhistory.address</name><value>node1:10020</value></property><property><name>mapreduce.jobhistory.webapp.address</name><value>node1:19888</value></property><property><name>mapred.task.timeout</name><value>1800000</value></property>

1.2.1.6 配置slaves

在node01节点配置从节点,删掉里面的localhost,配置上从节点(node02、node03、node04)

> vim /home/modules/hadoop-2.8.3/etc/hadoop/slaves# 删掉里面的localhost,添加以下内容node02node03node04

1.2.1.7 分发组件

在 node01 执行如下命令,将 hadoop-2.8.3 目录拷贝到其他各个节点的/home/modules/下

> for i in {02..04};do scp -r /home/modules/hadoop-2.8.3 root@node${i}:/home/modules/;done二选一scp -r /home/modules/hadoop-2.8.3 root@node02:/home/modules/scp -r /home/modules/hadoop-2.8.3 root@node03:/home/modules/scp -r /home/modules/hadoop-2.8.3 root@node04:/home/modules/

等待几分钟拷贝完毕后,在 node02~node04 节点执行如下命令检查是否复制成功

> ls /home/modules/ | grep hadoop

1.2.1.8 添加并校验环境变量

在 node01~node04,执行下面命令添加环境变量:

> vim /etc/profile# 添加内容为:export HADOOP_HOME=/home/modules/hadoop-2.8.3export PATH=$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$PATHexport HADOOP_CLASSPATH=/home/modules/hadoop-2.8.3/share/hadoop/tools/lib/*:$HADOOP_CLASSPATH

注意:请在末尾添加!

在 node01~node4,执行如下命令,使环境变量生效:

> source /etc/profile

此处以node01为例子

在 node01~node4,执行如下命令,校验环境变量:

> echo $HADOOP_HOME

显示如下内容则为配置正确:

1.2.1.9 初始化namenode

node01上执行如下命令,初始化 Namenode:

> hdfs namenode -format

1.3.1 启动Hadoop集群

步骤 1    在node01节点执行以下命令:
> start-dfs.sh ; start-yarn.sh返回信息中有以下内容,表示hadoop集群启动成功:Starting namenodes on [node01]Starting secondary namenodes [node01]starting yarn daemonshi

1.3.2 验证Hadoop状态

步骤 1   使用jps命令在node01-4中查看Java进程

在node01中可以查看到 NameNode,SecondaryNameNode,ResourceManager

进程,在node2-4中可以查看到 NodeManager 和 Datanode 进程,表示hadoop集群状态正常。

>  jps

1538 WrapperSimpleApp

5732 SecondaryNameNode

5508 NameNode

6205 Jps

5918 ResourceManager

>  jps

3026 Jps

2740 DataNode

1515 WrapperSimpleApp

2862 NodeManager

步骤 3    访问,可以登录Namenode的Web界面:

http://namenodeip:50070

访问Yran界面:

1.4.1 使用Hadoop统计以下表格人名字的出现次数

首先找到hadoop自带worldcount jar包示例的路径

创建数据文件夹,以及输出文件夹

编辑输入数据:

具体输入的数据听从老师安排

将本地准备的输入文件上传到hdfs中:

查看文件

执行MapReduce

hadoop jar hadoop-mapreduce-examples-2.8.3.jar wordcount /data/wordcount /output/wordcountresult查看结果:jpshadoop fs -text /output/wordcountresult/part-r-00000

结尾

        经过前面的学习,相信读者已经对Hadoop集群的安装和MapReduce应用有了深入的了解。Hadoop作为一个开源的分布式计算平台,为大数据处理提供了强大的支持。通过本教程的学习,读者可以搭建起自己的Hadoop集群,并尝试使用MapReduce处理大规模数据集。当然,Hadoop的功能远不止于此,它还有更多的高级特性和应用场景等待我们去探索。希望本教程能够为您在大数据处理领域的学习和实践提供一些帮助。

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

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

相关文章

Mysql面试合集

概念 是一个开源的关系型数据库。 数据库事务及其特性 事务&#xff1a;是一系列的数据库操作&#xff0c;是数据库应用的基本逻辑单位。 事务特性&#xff1a; &#xff08;1&#xff09;原子性&#xff1a;即不可分割性&#xff0c;事务要么全部被执行&#xff0c;要么就…

python 笔试面试八股(自用版~)

1 解释型和编译型语言的区别 解释是翻译一句执行一句&#xff0c;更灵活&#xff0c;eg&#xff1a;python; 解释成机器能理解的指令&#xff0c;而不是二进制码 编译是整个源程序编译成机器可以直接执行的二进制可运行的程序&#xff0c;再运行这个程序 比如c 2 简述下 Pyth…

运维锅总详解RocketMQ

本文尝试从Apache RocketMQ的简介、主要组件及其作用、3种部署模式、Controller集群模式工作流程、最佳实践等方面对其进行详细分析。希望对您有所帮助&#xff01; 一、Apache RocketMQ 简介 Apache RocketMQ 是一个开源的分布式消息中间件&#xff0c;由阿里巴巴集团开发并…

祝贺《华为战略管理法:DSTE实战体系》被《中国企业家》杂志评为企业家枕边书50本之一(宏观战略类书籍)

祝贺《华为战略管理法&#xff1a;DSTE实战体系》被《中国企业家》杂志评为企业家枕边书50本之一 2024年4月23日&#xff08;周二&#xff09;下午13:00&#xff0c;《中国企业家》杂志如期举办“每天都是读书日”线下活动。 《中国企业家》杂志携手商界大咖共同推选50本枕边书…

镭速实现AD域集成助力企业文件安全传输管控

在当今这个信息量爆炸扩张的年代&#xff0c;企业数据宛如一座蕴藏无限价值的宝库&#xff0c;它不仅是企业核心竞争力的载体&#xff0c;也成为了各种潜在风险的聚焦点。随着数字化转型步伐的加快&#xff0c;安全文件传输的管理控制显得尤为重要&#xff0c;它构成了保护企业…

各类排序方法 归并排序 扩展练习 逆序对数量

七月挑战一个月重刷完Y总算法基础题&#xff0c;并且每道题写详细题解 进度:(3/106) 归并排序的思想也是分而治之 归并优点&#xff1a;速度稳定,排序也稳定 排序也稳定&#xff08;数组中有两个一样的值&#xff0c;排序之后他们的前后顺序不发生变化&#xff0c;我们就说…

专题六:Spring源码之初始化容器BeanFactory

上一篇咱们通过一个例子介绍初始化容器上下文相关内容&#xff0c;并通过两个示例代码看到了Spring在设计阶段为我预留的扩展点&#xff0c;和我们应该如何利用这两个扩展点在Spring初始化容器上下文阶段为我们提供服务。这一篇咱们接着往下看。 老这样子下回到refresh方法上来…

第55期:MySQL 频繁 Crash 怎么办?

社区王牌专栏《一问一实验&#xff1a;AI 版》全新改版归来&#xff0c;得到了新老读者们的关注。其中不乏对 ChatDBA 感兴趣的读者前来咨询&#xff0c;表达了想试用体验 ChatDBA 的意愿&#xff0c;对此我们表示感谢 &#x1f91f;。 目前&#xff0c;ChatDBA 还在最后的准备…

MSVCR120.DLL丢失的多种修复方法,助你快速解决dll问题

在日常生活和工作中&#xff0c;电脑已经成为我们不可或缺的工具。然而&#xff0c;在使用电脑的过程中&#xff0c;我们常常会遇到一些问题&#xff0c;其中之一就是电脑运行软件时提示找不到msvcr120.dll。如果该文件缺失或损坏&#xff0c;可能会导致依赖它的应用程序无法启…

高优先线程

你开发的时候有么有遇到过一个问题&#xff1a;服务器的一个服务线程过几个小时断连一次&#xff0c;断连之后会马上重连这种情况。这是由于CPU负载较高,线程调度时将处理数据的线程挂起了一段时间导致的。 因此&#xff0c;我有考虑到把cpu的核心进行分散开来&#xff0c;就类…

CesiumJS【Basic】- #042 绘制纹理线(Primitive方式)

文章目录 绘制纹理线(Primitive方式)1 目标2 代码2.1 main.ts3 资源文件绘制纹理线(Primitive方式) 1 目标 使用Primitive方式绘制纹理线 2 代码 2.1 main.ts var start = Cesium.Cartesian3.fromDegrees(-75.59777, 40.03883);var

【剑指Offer系列】68-二叉树的最近公共祖先(哈希)

思路&#xff1a;使用map存储每个节点的父节点&#xff0c;则两个节点的最近公共祖先&#xff0c;即二者的最近父节点 1、中序遍历二叉树&#xff08;当前节点的下一个节点&#xff09; 2、记录每个节点的父节点 3、列出p的族谱、q的族谱 4、寻找二者最近的祖先 class Soluti…

微信小程序毕业设计-英语互助系统项目开发实战(附源码+论文)

大家好&#xff01;我是程序猿老A&#xff0c;感谢您阅读本文&#xff0c;欢迎一键三连哦。 &#x1f49e;当前专栏&#xff1a;微信小程序毕业设计 精彩专栏推荐&#x1f447;&#x1f3fb;&#x1f447;&#x1f3fb;&#x1f447;&#x1f3fb; &#x1f380; Python毕业设计…

PS系统教程31

调色之色阶 调色与通道最基本的关系通道是记录颜色最基本的信息有些图片可以用通道去改变颜色信息的说明这些图像是比较高级的PS是一款图像合成软件&#xff0c;在合成过程中需要处理大量素材&#xff0c;比如要用这些素材进行抠背景&#xff0c;就要用到图层蒙版以及Alpha通道…

【详解】RV1106移植opencv-mobile库

文章目录 前言一、烧入镜像二、编译项目1.创建项目文件 三、移植四、运行文件五、总结 前言 硬件&#xff1a;瑞芯微Rv1106【Luckfox Pro\Max Pico、网线一根、USB线、串口助手、摄像头 软件&#xff1a;ubuntu 20.4 编译器&#xff1a;arm-rockchip830-linux-uclibcgnueabihf…

人工智能——常用数学基础之线代中的矩阵

1. 矩阵的本质&#xff1a; 矩阵本质上是一种数学结构&#xff0c;它由按照特定规则排列的数字组成&#xff0c;通常被表示为一个二维数组。矩阵可以用于描述一组数据&#xff0c;或者表示某种关系&#xff0c;比如线性变换。 在人工智能中&#xff0c;矩阵常被用来表示数据集…

【单片机与嵌入式】stm32串口通信入门

一、串口通信/协议 &#xff08;一&#xff09;串口通信简介 串口通信是一种通过串行传输方式在电子设备之间进行数据交换的通信方式。它通常涉及两条线&#xff08;一条用于发送数据&#xff0c;一条用于接收数据&#xff09;&#xff0c;适用于各种设备&#xff0c;从微控制…

入选顶会ICML,清华AIR等联合发布蛋白质语言模型ESM-AA,超越传统SOTA

作为细胞内无数生化反应的驱动力&#xff0c;蛋白质在细胞微观世界中扮演着建筑师和工程师的角色&#xff0c;不仅催化着生命活动&#xff0c;更是构筑、维系生物体形态与功能的基础构件。正是蛋白质之间的互动、协同作用&#xff0c;支撑起了生命的宏伟蓝图。 然而&#xff0…

Ubuntu DNS服务配置 深度解析

测试方法 resolvectl status dig alidns.com 修改实践 直接用接口配置&#xff0c;没用 /etc/resolv.conf&#xff0c;有效 /etc/netplan/01-network-manager-all.yaml,无效 /etc/systemd/resolved.conf&#xff0c;见link&#xff0c;为全局配置 [Resolve] DNS1.1.1.1 Fa…

Adobe Premiere 视频编辑软件下载安装,pr全系列分享 轻松编辑视频

Adobe Premiere&#xff0c;自其诞生之日起&#xff0c;便以其卓越的性能和出色的表现&#xff0c;稳坐视频编辑领域的王者宝座&#xff0c;赢得了无数专业编辑人员与广大爱好者的青睐。这款强大的视频编辑软件&#xff0c;凭借其丰富的功能和灵活的操作性&#xff0c;为用户提…