【大数据存储与处理】1. hadoop单机伪分布安装和集群安装

news2024/11/26 5:35:49

0. 写在前面

0.1 软件版本

hadoop2.10.2
ubuntu20.04
openjdk-8-jdk

0.2 hadoop介绍

Hadoop是一个由Apache基金会所开发的分布式系统基础架构。用户可以在不了解分布式底层细节的情况下,开发分布式程序。充分利用集群的威力进行高速运算和存储。Hadoop实现了一个分布式文件系统( Distributed File System),其中一个组件是HDFS(Hadoop Distributed File System)。HDFS有高容错性的特点,并且设计用来部署在低廉的(low-cost)硬件上;而且它提供高吞吐量(high throughput)来访问应用程序的数据,适合那些有着超大数据集(large data set)的应用程序。HDFS放宽了(relax)POSIX的要求,可以以流的形式访问(streaming access)文件系统中的数据。Hadoop的框架最核心的设计就是:HDFS和MapReduce。HDFS为海量的数据提供了存储,而MapReduce则为海量的数据提供了计算 .—百度词条hadoop

1. 创建hadoop用户

lynn@lynn:~$ sudo useradd -m hduser -s /bin/bash	# 创建用户hduser 并指定使用bash终端作为shell
lynn@lynn:~$ cd /home
lynn@lynn:~$ ls
hduser lynn	# 代表用户创建成功
lynn@lynn:~$ sudo passwd hduser					# 设置密码
lynn@lynn:~$ sudo adduser hduser sudo				# 为hduser增加管理员权限
Adding user `hduser' to group `sudo' ...
Adding user hduser to group sudo
Done.
# 然后切换用户登录

在这里插入图片描述

2. 安装java

注意,已经切换到了hduser用户,lynn主机下

hduser@lynn:~$ sudo apt-get update		# 更新包
# The "unable to lock directory /var/lib/apt/lists/" error on Ubuntu typically occurs when the APT package management system is already running or has crashed.如果出现unable to lock,多数是因为APT包管理系统正在运行或崩溃,可尝试重启
# hduser@lynn:~$ ps aux | grep -i apt		# 可使用此命令查看哪些安装在使用apt,如果有则等待这些安装完成
# The error in Ubuntu may be displayed below: 
#       /var/lib/dpkg/lock
#       /var/lib/dpkg/lock-frontend
#       /var/lib/apt/lists/lock
#       /var/cache/apt/archives/lock
# These are lock files, which could prevent two instances of apt or dpkg from using the same files simultaneously. 
# This could occur if an installation is needed or did not finish. Just remove the lock files.
# To delete or erase the lock files, use the rm command:
#        sudo rm /var/lib/dpkg/lock
#        sudo rm /var/lib/apt/lists/lock
#        sudo rm /var/cache/apt/archives/lock
hduser@lynn:~$ sudo apt search jdk		# 查找jdk包,也可以直接运行下一条命令

在这里插入图片描述

# 安装openjdk-8-jdk版本
hduser@lynn:~$ sudo apt install openjdk-8-jdk
# 安装完成之后查看一下版本号,确认安装成功
hduser@lynn:~$ java -version
hduser@lynn:~$ javac -version
hduser@lynn:~$ update-alternatives --display java	# 查看已安装的java版本列表

在这里插入图片描述

hduser@lynn:~$ sudo gedit .bashrc	# 设置环境变量
# 在弹出的窗口最后增加如下语句:
# export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64/bin/java	# 设置Java的运行程序
# export JRE_HOME=$JAVA_HOME/jre
# export CLASSPATH=.:$JAVA_HOME/lib:$JRE_HOME/lib
# export PATH=$PATH:$JAVA_HOME/bin
hduser@lynn:~$ source .bashrc	# 使环境变量生效

3. 安装hadoop

从清华镜像源网站下载hadoop2.10.2版本

hduser@lynn:~$ sudo tar -zxvf hadoop-2.10.2.tar.gz
hduser@lynn:~$ sudo mv hadoop-2.10.2 /usr/local/hadoop
hduser@lynn:~$ sudo gedit ~/.bashrc	# 设置hadoop环境变量,如果gedit打开失败,试试重启终端
export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64
export HADOOP_HOME=/usr/local/hadoop
export PATH=$PATH:$HADOOP_HOME/bin
export PATH=$PATH:$HADOOP_HOME/sbin
export HADOOP_MAPRED_HOME=$HADOOP_HOME
export HADOOP_COMMON_HOME=$HADOOP_HOME
export HADOOP_HDFS_HOME=$HADOOP_HOME
export YARN_HOME=$HADOOP_HOME
export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native
export HADOOP_OPTS="-Djava.library.path=$HADOOP_HOME/lib"
export JAVA_LIBRARY_PATH=$HADOOP_HOME/lib/native:$JAVA_LIBRARY_PATH
hduser@lynn:~$ source ~/.bashrc	# 使环境变量生效

3.0 配置SSH

# 安装ssh
hduser@lynn:~$ sudo apt-get install ssh
hduser@lynn:~$ ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa 
# -t 指定要生成的密钥类型
# -P 表示密码,''表示不指定密码进行连接
# -f 是密钥生成之后保存的位置
hduser@lynn:~$ cp ~/.ssh/id_rsa.pub ~/.ssh/authorized_keys	# 拷贝公钥到要进行免密登录的机器上
hduser@lynn:~$ ssh localhost	# 登录本机
hduser@lynn:~$ ll ~/.ssh		# 查看相关文件

在这里插入图片描述

3.1 单机伪分布模式

在一台运行linux的单机上,用伪分布方式,用不同的进程模拟分布运行下的NameNode、DataNode、JobTracker、TaskTracker等各类节点。

3.1.1 配置hadoop-env

hduser@lynn:~$ sudo gedit /usr/local/hadoop/etc/hadoop/hadoop-env.sh

修改JAVA_HOME:
原来是:export JAVA_HOME=${JAVA_HOME}
修改为:export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd65

3.1.2 配置core-site.xml

设置HDFS的默认名称

hduser@lynn:~$ sudo gedit /usr/local/hadoop/etc/hadoop/core-site.xml
<configuration>
  <property>
    <name>fs.default.name</name>
    <value>hdfs://localhost:9000</value>
  </property>
</configuration>

在这里插入图片描述

3.1.3 设置yarn-site.xml

hduser@lynn:~$ sudo gedit /usr/local/hadoop/etc/hadoop/yarn-site.xml
<configuration>
<!-- Site specific YARN configuration properties -->
<property> 
  <name>yarn.nodemanager.aux-services</name> 
  <value>mapreduce_shuffle</value> 
</property> 
<property> 
  <name>yarn.nodemanager.aux-services.mapreduce.shuffle.class</name> 
  <value>org.apache.hadoop.mapred.ShuffleHandler</value> 
</property>
</configuration>

3.1.4 编辑mapred-site.xml

hduser@lynn:~$ sudo cp /usr/local/hadoop/etc/hadoop/mapred-site.xml.template /usr/local/hadoop/etc/hadoop/mapred-site.xml
hduser@lynn:~$ sudo gedit /usr/local/hadoop/etc/hadoop/mapred-site.xml
<configuration>
<property>
   <name>mapreduce.framework.name</name>
   <value>yarn</value> 
</property>
</configuration>

3.1.5 设置hdfs-site.xml

hdfs-site.xml 用于设置HDFS分布式文件系统的相关配置。Single Node Cluster中只有一台服务器,所以需要身兼NameNode和DataNode.

hduser@lynn:~$ sudo gedit /usr/local/hadoop/etc/hadoop/hdfs-site.xml
<configuration>
  <property>
  <!--设置备份数量为3-->
     <name>dfs.replication</name>
     <value>3</value> 
  </property>
  <property>
    <name>dfs.namenode.name.dir</name>
    <value>file:/usr/local/hadoop/hadoop_data/hdfs/namenode</value>
  </property>
  <property>
    <name>dfs.datanode.data.dir</name>
    <value>file:/usr/local/hadoop/hadoop_data/hdfs/datanode</value>
  </property>
</configuration>

3.1.6 创建hdfs目录并格式化HDFS文件系统

# 创建NameNode数据存储目录
hduser@lynn:~$ sudo mkdir -p /usr/local/hadoop/hadoop_data/hdfs/namenode
# 创建DataNode数据存储目录
hduser@lynn:~$ sudo mkdir -p /usr/local/hadoop/hadoop_data/hdfs/datanode
# 将hadoop目录的所有者更改为hduser
hduser@lynn:~$ sudo chown hduser:hduser -R /usr/local/hadoop
# 格式化namenode-将HDFS格式化
hduser@lynn:~$ hadoop namenode -format

在这里插入图片描述

3.1.7 启动HDFS

# 启动hdfs
hduser@lynn:~$ start-dfs.sh
# 启动YARN
hduser@lynn:~$ start-yarn.sh

在这里插入图片描述

# jps可以列出运行的所有java虚拟机进程
hduser@lynn:~$ jps

在这里插入图片描述

3.1.8 查看集群状态

http://localhost:8088
在这里插入图片描述http://localhost:50070
在这里插入图片描述

3.2 集群分布方式

在真实的集群环境下安装运行hadoop系统,集群的每个节点可以运行linux.
在这里插入图片描述

多节点hadoop
将在VMware上创建4台虚拟机,分别是master,data1,data2,data3

将在每一台虚拟机设置两张网卡:

  1. 网卡1:设置为NAT网卡,可以通过host主机连接到外部网络internet
  2. 网卡2:设置为“仅主机模式”,用于创建内部网络,内部网络连接4台虚拟主机与Host主机
  3. IP地址:master 192.168.56.100
    data1 192.168.56.101
    data2 192.168.56.102
    data3 192.168.56.103

3.2.1 创建data1节点

从刚才创建的Single node clutch节点克隆出data1节点。选择创建完整克隆,命名为data1.
克隆新的虚拟机
添加网卡
添加网卡

3.2.1.1 设置固定IP
# 查看data1中的网卡
hduser@lynn:/$ ifconfig
# 显示分别是ens33,ens37 
# ens33是ubuntu默认的NAT的网卡
# 对应我们集群使用的网卡为ens37
# 配置静态IP
hduser@lynn:/$ sudo gedit /etc/netplan/01-network-manager-all.yaml 
network:
  ethernets:
    ens37:
      addresses: [192.168.56.101/24]	# 注意冒号后面需要有空格
      dhcp4: no
      optional: true
      gateway4: 192.168.56.1
      nameservers:
        addresses: [192.168.56.1,114.114.114.114]	# 114.114.114.114是电信的
  version: 2
  renderer: NetworkManager
hduser@lynn:/$ sudo netplan apply
hduser@lynn:/$ ifconfig

在这里插入图片描述

3.2.1.2 编辑主机名和hosts文件
# 编辑hostname主机名 设置data1
hduser@lynn:/$ sudo gedit /etc/hostname
data1
# 编辑hosts文件
hduser@lynn:/$ sudo gedit /etc/hosts
192.168.56.100 master
192.168.56.101 data1
192.168.56.102 data2
192.168.56.103 data3
3.2.1.3 编辑core-site.xml,yarn-site.xml,mapred-site.xml,hdfs-site.xml
hduser@lynn:/$ sudo gedit /usr/local/hadoop/etc/hadoop/core-site.xml

<configuration>
  <property>
         <name>fs.default.name</name>
         <value>hdfs://master:9000</value>
  </property>
</configuration>
hduser@lynn:/$ sudo gedit /usr/local/hadoop/etc/hadoop/yarn-site.xml 

<configuration>
<!--设置ResouceManager主机与NodeManager的连接地址,NodeManager通过这个地址向ResourceManager汇报运行情况-->
<property>
        <name>yarn.resourcemanager.resource-tracker.address</name>
        <value>master:8025</value>
 </property>
 <!--设置ResourceManager与ApplicationMaster的连接地址,ApplicationMaster通过这个地址向ResourceManager申请资源、释放资源等-->
 <property>
        <name>yarn.resourcemanager.scheduler.address</name>
        <value>master:8030</value>
 </property>
<!--设置ResourceManager与客户端的连接地址,客户端通过该地址ResourceManger注册应用程序、删除程序等-->
   <property>
        <name>yarn.resourcemanager.address</name>
        <value>master:8050</value>
    </property>
</configuration>
hduser@lynn:/$ sudo gedit /usr/local/hadoop/etc/hadoop/mapred-site.xml
# mapred-site.xml用于设置监控Map与Reduce程序的JobTracker任务分配情况,以及TaskTracker任务运行状况
# 修改设置mapreduce.job.tracker的连接地址为master:54311

<configuration>
<property>
   <name>mapred.job.tracker</name>
   <value>master:54311</value> 
</property>
</configuration>
hduser@lynn:/$ sudo gedit /usr/local/hadoop/etc/hadoop/hdfs-site.xml 
<configuration>
  <property>
     <name>dfs.replication</name>
     <value>3</value> 
  </property>
  <property>
    <name>dfs.datanode.data.dir</name>
    <value>file:/usr/local/hadoop/hadoop_data/hdfs/datanode</value>
  </property>
</configuration>

3.2.2 创建data2,data3,master节点

克隆data1到data2,data3,master

3.2.2.1 分别设置每个主机的固定IP
hduser@data1:/$ sudo gedit /etc/netplan/01-network-manager-all.yaml
 ens37:
 # 只需要更改此处的IP地址,data2为192.168.56.102
 # data3为192.168.56.103
 # master为192.168.56.100
    addresses: [192.168.56.102/24]
    dhcp4: no
    optional: true
# 使设置生效
hduser@data1:/$ sudo netplan apply
# 查看网卡信息,确认ip地址无误
hduser@data1:/$ ifconfig	
3.2.2.2 设置每个主机的主机名
# data2设置为data2;data3设置为data3,master设置为master
hduser@data1:/$ sudo gedit /etc/hostname

3.2.3 设置master服务器

3.2.3.1 设置hdfs-site.xml

因为master现在只是单纯的NameNode,删除DataNode的HDFS设置

hduser@master:~$ sudo gedit /usr/local/hadoop/etc/hadoop/hdfs-site.xml
<configuration>
  <property>
     <name>dfs.replication</name>
     <value>3</value> 
  </property>
  <property>
    <name>dfs.namenode.name.dir</name>
   <value>file:/usr/local/hadoop/hadoop_data/hdfs/namenode</value>
  </property>
</configuration>
3.2.3.2 编辑masters文件和slaves文件

masters文件主要是告诉hadoop系统哪一台服务器是NameNode.

slaves文件主要是告诉hadoop系统哪些服务器是DataNode.

hduser@master:~$ sudo gedit /usr/local/hadoop/etc/hadoop/masters
master
hduser@master:~$ sudo gedit /usr/local/hadoop/etc/hadoop/slaves
data1
data2
data3

3.2.4 测试

  1. 启动master,data1,data2,data3四个节点
  2. 从master主机连接到data1
hduser@master:~$ ssh data1

master主机连接到data1

  1. 创建HDFS目录datanode,对data2及data3重复此操作.
hduser@data1:~$ sudo rm -rf /usr/local/hadoop/hadoop_data/hdfs/
[sudo] password for hduser: 
hduser@data1:~$ mkdir -p /usr/local/hadoop/hadoop_data/hdfs/datanode
hduser@data1:~$ sudo chown -R hduser:hduser /usr/local/hadoop
hduser@data1:~$ exit
logout
Connection to data1 closed.
  1. 重新创建并格式化NameNode HDFS目录
# 创建NameNode目录
hduser@master:~$ sudo rm -rf /usr/local/hadoop/hadoop_data/hdfs
[sudo] password for hduser: 
hduser@master:~$ mkdir -p /usr/local/hadoop/hadoop_data/hdfs/namenode
hduser@master:~$ sudo chown -R hduser:hduser /usr/local/hadoop
# 格式化
hduser@master:~$ hdfs namenode -format
  1. 启动hadoop multinode cluster
hduser@master:~$ start-dfs.sh
hduser@master:~$ start-yarn.sh
hduser@master:~$ jps
  1. 可以看见master服务器的状态:
    HDFS功能:Namenode,SecondaryNameNode
    MapReduce2(YARN): ResourceManager
    启动Hadoop
  2. 查看数据服务器节点data1(DataNode)进程的状态
    在data1的终端上输入jps
    HDFS:DataNode
    MapReduce2(YARN
    : NodeManager
    data1
  3. 打开Hadoop ResouceManager Web界面 http://master:8088
    在这里插入图片描述
  4. 打开NameNode Web界面 http://master:50070/

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

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

相关文章

数据结构_红黑树

1、二叉树 每一个分支不能超过两个 2、 排序数/查找树 在二叉树的基础上&#xff0c;元素是有大小顺序的左 子树 小&#xff0c;右 子树 大 3、平衡树 左孩子数 和 右孩子数 相等 4、不平衡树 5、 红黑树 特点&#xff1a;趋近于平衡树&#xff0c;查询的速度非常的快&#xf…

【论文笔记】A Review of Motion Planning for Highway Autonomous Driving

文章目录 I. INTRODUCTIONII. CONSIDERATIONS FOR HIGHWAY MOTION PLANNINGA. TerminologyB. Motion Planning SchemeC. Specificities of Highway DrivingD. Constraints on Highway DrivingE. What Is at Stake in this Paper III. STATE OF THE ARTA. Taxonomy DescriptionB…

全新iphone15 pro max拆解,内部元件供应链曝光 | 百能云芯

苹果顶级版iPhone 15 Pro Max热销&#xff0c;国外维修网站ifixit拆解内部零组件后评估&#xff0c;苹果在电源、无线通讯、音频等关键元件比重增加。台企华邦电子供应编码型快闪存储器&#xff08;NOR Flash&#xff09;。 苹果&#xff08;Apple&#xff09;iPhone 15 Pro Ma…

Powershell 实现禁用密码复杂性,空密码

前提条件 开启wmi,配置网卡,参考 实现一键关闭密码策略和远程空密码登录 最近客户需要的一个无法理解的需求,需要远程登录不输入密码,安全性没有了还要实现,没办法客户是上帝,客户怎么开心怎么来都行,安全性问题告知不重视,实际环境不建议一下操作,只要联网你被黑的哦…

《重磅发布 | 80+大屏组件模板,即刻下载、快速构建应用!遥遥领先~》

smardaten没有酱香拿铁、没有李佳琦79元的眉笔套餐…… 但给大家准备了50可视化应用模板、30页面组件模板&#xff0c;免费用&#xff01;这不比酱香拿铁香&#xff1f; 其实&#xff0c;自今年2月份商超上线以来&#xff0c;已上架10个软件系统、3个大屏模板&#xff08;还不…

JAVA自动化之Junit单元测试框架详解

一、JUnit概述&配置 1、Junit是什么&#xff1f; Junit是一个Java 编程语言的开源测试框架&#xff0c;用于编写和运行测试。官网 地址&#xff1a;https://junit.org/junit4/ 2、Maven配置 ?xml version"1.0" encoding"UTF-8"?> <project…

一文搞懂模板(template)

背景引入&#xff1a; 想象一下&#xff0c;我们要实现一个整数相加&#xff0c;浮点数相加的函数&#xff0c;如果按C语言的思路&#xff0c;我们需要写两个函数名不同的函数&#xff0c;来完成相加&#xff1b;如果C语言&#xff0c;则可以通过函数重载的特性&#xff0c;写两…

LC1305. 两棵二叉搜索树中的所有元素(JAVA)

两棵二叉搜索树中的所有元素 题目描述中序遍历 归并排序 题目描述 难度 - 中等 LC1305. 两棵二叉搜索树中的所有元素 给你 root1 和 root2 这两棵二叉搜索树。请你返回一个列表&#xff0c;其中包含 两棵树 中的所有整数并按 升序 排序。. 示例1&#xff1a; 输入&#xff1a;…

燃气安全如何保障?万宾燃气管网监测系统时刻感知管网运行态势

近年来随着我国城镇化建设的加快&#xff0c;燃气已经成为每个家庭的必需品。然而&#xff0c;每年夏季频繁发生的燃气爆炸事故&#xff0c;已经严重危害人民生命财产安全危害社会公共安全和公共利益。为了保障燃气安全运行&#xff0c;近日&#xff0c;许多城市都在大力推进燃…

Redis代码实践总结(二)

使用 CLI 探索 Redis 外部程序使用 TCP 套接字和 Redis 特定协议与 Redis 进行通信。该协议在不同编程语言的 Redis 客户端库中实现。然而&#xff0c;为了使使用 Redis 进行黑客攻击变得更简单&#xff0c;Redis 提供了一个命令行实用程序&#xff0c;可用于向 Redis 发送命令…

Docker配置镜像加速器

1.登录阿里云 阿里云-计算&#xff0c;为了无法计算的价值 (aliyun.com) 2.容器 说明&#xff1a;找到产品下的容器 3.容器镜像服务ACR 4.点击控制台 5. 点击镜像加速器 6.操作文档

项目开发过程中,成员提离职,怎么办?

之前写过一篇《如何应对核心员工提离职》反响特别好&#xff0c;今天做个延展篇&#xff0c;在项目过程中&#xff0c;员工突然提离职&#xff0c;我们有什么办法让项目按时按质的上线。 项目做多了&#xff0c;总会碰到这种情况。这里给大家介绍一个解决项目问题的分析方法&a…

【0223】源码剖析smgr底层设计机制(3)

1. smgr设计机制 PG内核中smgr完整磁盘存储介质的管理是通过下面三部分实现的。 1.1 函数指针结构体 f_smgr 函数指针结构体 f_smgr。 通过该函数指针类型,可完成类似于UNIX系统中的VFD功能,上层只需要调用open()、read()、write()等系统函数,用户不必去关系底层的文件系统…

Git那些事系列:从业务场景到高级技巧的完整指南(三)

文件修改的记录居然没有了&#xff01;&#xff01;&#xff01; 如何隐蔽的把一次修改记录搞丢&#xff01; 大家好&#xff0c;有到了Git那些事系列了&#xff0c;近期笔者遇到了一个十分奇怪的事情&#xff0c;一个Git仓库的文件被莫名其妙的修改了&#xff0c;问题是&…

1、SpringBoot_快速入门

一、SpringBoot 概述 文档下载地址&#xff1a;https://docs.spring.io/spring-boot/docs/current/reference/ 1.SpringBoot介绍 概述&#xff1a;SpringBoot 开发团队认为Spring操作太繁琐了&#xff0c;目的在于简化开发配置&#xff0c;能够快速搭建开发环境&#xff0c;…

25422-2010 草地潜松犁 阅读笔记

声明 本文是学习GB-T 25422-2010 草地潜松犁. 而整理的学习笔记,分享出来希望更多人受益,如果存在侵权请及时联系我们 1 范围 本标准规定了草地潜松犁(以下简称潜松犁)的技术要求、试验方法、检验规则、标志、包装与贮存。 本标准适用于在草地上进行不翻垡松土、切根等项作…

RK3588 VDD_CPU_BIG0/1 电源PCB设计注意事项

RK3588 VDD_CPU_BIG0/1 电源PCB设计 1、如图1所示的滤波电容&#xff0c;原理图上靠近 RK3588的VDD_CPU_BIG电源管脚绿线以内的去耦电容务必放在对应的电源管脚背面&#xff0c;电容GND PAD尽量靠近芯片中心的GND管脚放置&#xff0c;如图2所示。其余的去耦电容尽量摆放在3588…

python学习--特殊方法和属性

名称描述特殊属性dict获得类对象或实例对象所绑定的所有属性和方法的字典特殊方法len()通过重写_len_()方法&#xff0c;让内置函数len()的参数可以是自定义的类型特殊方法add()通过重写_add_()方式&#xff0c;&#xff0c;可使自定义对象有‘’的功能特殊方法new()用于创建对…

overleaf杂谈-Springer文献格式问题

目录 overleaf写作问题记录1.Latex中的%问题&#xff08;文本变成灰色&#xff09;2.Springer文献格式问题2.1 新建reference.bib2.2 谷歌学术搜索文章并引用2.3 复制BibTex2.4 复制进reference.bib2.5 在sn-article.tex的\end{document}前添加语句2.6 引用文献2.7 Springer模板…

视频下载器助手:如何把微信视频号的视频下载下来

随着移动互联网的飞速发展&#xff0c;短视频已深入人心&#xff0c;成为我们生活中不可或缺的一部分。我们常常在各种社交平台上发现有趣、有价值的视频内容&#xff0c;但不知道如何把微信视频号的视频下载下来并保存到本地手机相册 今天&#xff0c;我为大家带来了一款实用…