基于M芯片MAC系统的hadoop、zookeeper、hbase安装

news2024/11/26 0:27:17

hadoop、zookeeper、hbase安装

1. vmware配置

搜索:“vmware for mac”,购买正版并下载,或通过其他渠道下载均可

  • 随机掉落的奇怪链接

2. 下载镜像并安装虚拟机

bug记录1

此处选用ubuntu的20以及24,分别出现无法加载安装程序、x86无法适配arm系统。

  1. 在虚拟机的设置界面,选中CDC,配置镜像地址。
  2. 将虚拟机重启后会进入安装界面
    • bug:并未进入,重启后进入boot系统
    • 在boot中,手动将CDC加载的优先级调整至最高,应用后重启,仍然无法解决

前者原因难以判断,但后者是由于下载了基于windows系统的ubuntu导致的,在下载中应注意标记ubuntu-ports等与mac系统相关关键词

bug记录2

此处选用centos9,正常进入安装程序,但选择完语言后进度卡住,选择后无限返回至选择语言界面。预计更换centos7继续安装

bug记录3

https://cloud.tencent.com/developer/article/2416622

该文直接分区,然后加载ubuntu,还是找iso文件吧…………

在分区后合并分区,搜索磁盘工具,点击分区,选中想要删除的分区并点击"—",最后应用,即可合并

安装记录

  1. 下载镜像
    • https://ubuntu.com/download/server/arm
    • 以上为适配于arm系统的ubuntu,该链接为官方服务器端下载链接
    • Tip:并未找到国内镜像源,部分国内镜像源主要包含基于arm的插件工具,不包含安装用iso。下载过程可能较长
  2. 基于vmware安装虚拟机
    • 按照该链接执行安装过程,https://blog.csdn.net/qq_24950043/article/details/123764210

3. 虚拟机配置

该部分内容不分先后,没有遇到的问题可以直接跳过

  1. 安装桌面
    • 上述服务器端安装完成后默认为命令行,如需安装桌面版,参照该链接https://blog.csdn.net/qq_24950043/article/details/125774990
    • 请注意,最好先更换至国内源再安装桌面版
    • 过程非常长漫长

  1. 点击setting,搜索lan,点击语言,选中下载/删除语言,选中简体中文并下载

  2. 过程中发现部分磁盘空间爆了,就剩KB级别的空间了,故扩容

    1. 扩容前先清理盘空间

      • 系统垃圾清理
        # 清理旧版本的软件缓存,删除你已经卸载掉的软件包
        sudo apt-get autoclean
        # 清理所有软件缓存,电脑上存储的安装包全部卸载
        sudo apt-get clean
        # 删除系统不再使用的孤立软件
        sudo apt-get autoremove
        
    2. 然后确定哪个部分的空间满了:df -h

    3. 将上一步中占用率较高的一个扩容即可

      • 参考如下命令

      lvextend -L 10G /dev/mapper/ubuntu--vg-ubuntu--lv      //增大或减小至10G
      lvextend -L +10G /dev/mapper/ubuntu--vg-ubuntu--lv     //增加10G
      lvreduce -L -10G /dev/mapper/ubuntu--vg-ubuntu--lv     //减小10G
      lvresize -l  +100%FREE /dev/mapper/ubuntu--vg-ubuntu--lv   //按百分比扩容
      
      resize2fs /dev/mapper/ubuntu--vg-ubuntu--lv            //执行调整
      
    4. 扩充后效果如下

      • 扩容前,占用率92%

      • 扩容后,占用61%

  3. 安装open-vm-tools

    • sudo apt-get autoremove open-vm-tools
      sudo apt-get install open-vm-tools
      sudo apt-get install open-vm-tools-desktop
      
  4. 配置新镜像源

    1. 执行如下命令sudo cp /etc/apt/sources.list.d/ubuntu.sources /etc/apt/sources.list.d/ubuntu.sources.bak
    2. sudo vim /etc/apt/sources.list.d/ubuntu.sources
    3. 按照清华源更新,https://mirrors.tuna.tsinghua.edu.cn/help/ubuntu-ports/
      • 在ubuntu24以后采用bed822格式,按自己版本配置即可
  5. 安装jdk与jre

    1. 根据java -version的返回内容确定是否安装,建议安装openjdk-8-jdk
      1. 若正常返回路径,则说明已经安装
      2. 若返回一堆命令,则
        • sudo apt-get install default-jre
        • sudo apt-get install default-jdk
  6. 配置静态ip

    1. 安装net-tools:sudo apt net-tools

    2. 查看网关:ifconfigroute -d

    3. cd ~/etc/netplan,在该目录下查看,下属文件即是网络配置(名称不一定一样)

    4. 保存副本 sudo cp 00-installer-config.yaml 00_installer-config.yaml_before

    5. 开始修改sudo vim 00-installer-config.yaml

      • network:
          ethernets:
            eth0:
              dhcp4: false
              addresses: [192.168.1.11/24]
              optional: true
              routes:
                - to: default
                  via: 192.168.1.1
              nameservers:
                addresses: [192.168.1.1]
          version: 2
        
      • 注:gateway4这个标签已经废弃了,将网关信息写在routes下即可

    6. 应用修改sudo netplan apply

    7. 测试ping baidu.com

  7. 配置无密码ssh登录

    1. 安装ssh服务器以及客户端

      • sudo apt-get install openssh-server
      • sudo apt-get install openssh-client
    2. 登录本机,测试ssh localhost

    3. 退出登录exit

    4. 配置无密码登录,执行以下命令并按enter

      •  cd ~/.ssh/
         ssh-keygen -t rsa
        
    5. cat ./id_rsa.pub >> ./authorized_keys

    6. 再用ssh localhost

4. 配置hadoop(单机)

  1. 下载文件,在如下链接,根据自身需求进行下载hadoop-3.4.0,aarch64为arm版本

    • https://mirrors.tuna.tsinghua.edu.cn/apache/hadoop/common/hadoop-3.4.0/
  2. 将已经下载好的文件移动至vmware窗口上,上传至虚拟机

    • 默认的上传地址为tmp/VMwareDnD
  3. 该链接下执行如下命令,文件名称根据自己下载的配置

    • sudo tar -zxf ./hadoop-3.3.5.tar.gz -C /usr/local
  4. 修改文件名称为hadoop

    • cd /usr/local
    • sudo mv ./xxx ./hadoop
  5. 赋予可执行权限

    • sudo chown -R hadoop ./hadoop
  6. 查看安装信息

    • cd ./hadoop
      ./bin/hadoop version
      
  7. 运行实例

    1. 新建input子目录sudo mkdir input

    2. 复制 “/usr/local/hadoop/etc/hadoop” 中的配置文件到 input 目录下:

      sudo cp ./etc/hadoop/*.xml ./input
      
    3. 运行grep实例:./bin/hadoop jar /usr/local/hadoop/share/hadoop/mapreduce/hadoop-mapreduce-examples-3.2.2.jar grep ./input ./output 'dfs[a-z.]+'

      • 注意修改文件名称
    4. 查看运行结果

      • cd ./output
      • ls
      • 结果如下

5. 完全分布式部署

  1. 创建虚拟机的完全克隆两个,并分别命名slave1、slave2

  2. 在虚拟机设置 → \rightarrow 网络适配器 → \rightarrow 在高级选项中生成新的mac地址

    • Slave1:00:50:56:22:A3:94
    • Slave2:00:50:56:28:28:D9
  3. 按照上面的方法配置静态ip,分别为

    • Master:172.16.227.129
    • Slave1:172.16.227.130
    • Slave2:172.16.227.131
  4. 修改主机名、ip映射

    • sudo vim /etc/hostname
    • sudo vim /etc/hosts
  5. 使用ssh将公钥分发,ssh-copy-id master

    • 注意:每个机器都要分发
  6. 修改配置文件,在hadoop根目录下/etc/hadoop

    • 可以根据自己的需求进行修改
    1. 集群规划如下

    2. 分别修改一下内容

      • core-site.xml

      • <configuration>
            <!-- 指定NameNode的地址 -->
            <property>
                <name>fs.defaultFS</name>
                <value>hdfs://master:8020</value>
            </property>
            <!-- 指定hadoop数据的存储目录 -->
            <property>
                <name>hadoop.tmp.dir</name>
                <value>/opt/module/hadoop-3.1.3/data</value>
            </property>
            <!-- 配置HDFS网页登录使用的静态用户为shuaikai -->
            <property>
                <name>hadoop.http.staticuser.user</name>
                <value>shuaikai</value>
            </property>
        </configuration>
        
      • hdfs-site.xml

      • <configuration>
        	<!-- nn web端访问地址-->
        	<property>
                <name>dfs.namenode.http-address</name>
                <value>master:9870</value>
            </property>
        	<!-- 2nn web端访问地址-->
            <property>
                <name>dfs.namenode.secondary.http-address</name>
                <value>slave2:9868</value>
            </property>
        </configuration>
        
      • yarn-site.xml

      • <configuration>
            <!-- 指定MR走shuffle -->
            <property>
                <name>yarn.nodemanager.aux-services</name>
                <value>mapreduce_shuffle</value>
            </property>
            <!-- 指定ResourceManager的地址-->
            <property>
                <name>yarn.resourcemanager.hostname</name>
                <value>slave1</value>
            </property>
            <!-- 环境变量的继承 -->
            <property>
                <name>yarn.nodemanager.env-whitelist</name>
                             <value>JAVA_HOME,HADOOP_COMMON_HOME,HADOOP_HDFS_HOME,HADOOP_CONF_DIR,CLASSPATH_PREPEND_DISTCACHE,HADOOP_YARN_HOME,HADOOP_MAPRED_HOME</value>
            </property>
            
            <!-- 开启日志聚集功能 -->
            <property>
                <name>yarn.log-aggregation-enable</name>
                <value>true</value>
            </property>
            <!-- 设置日志聚集服务器地址 -->
            <property>  
                <name>yarn.log.server.url</name>  
                <value>http://master:19888/jobhistory/logs</value>
            </property>
            <!-- 设置日志保留时间为7天 -->
            <property>
                <name>yarn.log-aggregation.retain-seconds</name>
                <value>604800</value>
            </property>
        </configuration>
        
      • mapred-site.xml

      • <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>
        
  7. 创建分发命令xsync

    • sudo vim /home/usr/bin/xsync

    • # 编写以下内容:
      #!/bin/bash
      #1. 判断参数个数
      if [ $# -lt 1 ]
      then
          echo Not Enough Arguement!
          exit;
      fi
      #2. 遍历集群所有机器
      for host in master slave1 slave2
      do
          echo ====================  $host  ====================
          #3. 遍历所有目录,挨个发送
          for file in $@
          do
              #4. 判断文件是否存在
              if [ -e $file ]
                  then
                      #5. 获取父目录
                      pdir=$(cd -P $(dirname $file); pwd)
                      #6. 获取当前文件的名称
                      fname=$(basename $file)
                      ssh $host "mkdir -p $pdir"
                      rsync -av $pdir/$fname $host:$pdir
                  else
                      echo $file does not exists!
              fi
          done
      done
      
    • 设置权限sudo chmod 777 xsync

    • 更新source ~/.profile

    • 注:亦可将上述内容编写在某固定文件夹下,并将该文件夹添加入环境变量~/.profile,并更新环境变量

  8. 在集群上分发xsync $HADOOP_HOME/etc/hadoop

  9. 配置hadoop环境变量,路径如上所示

    • export HADOOP_HOME=本机的hadoop安装路径
      export PATH=$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$PATH
      
  10. debug:过高版本jdk导致的bug,cannot set priority of nodemanger&resourcemanager process

    1. 原因:查看日志文件后发现有一个java.lang相关的调用失败,搜索后发现是高版本jdk导致的bug,同时该文也指出hive3.x仅支持jdk1.8(即低版本),遂决定降低版本

    2. 步骤如下

      1. 安装jdk:运行命令apt install openjdk-8-jdk

      2. 配置环境变量/etc/environment~/.bashrc

      3. 配置hadoop环境变量/etc/hadoop/hadoop-env.sh,修改java版本

      4. xsync分发文件,source更新系统配置

      5. 若已经启动过,则需重新执行hdfs namenode -format

  11. 执行命令hdfs namenode -format

  12. 执行命令start-dfs.sh

    • 调用jps查看进程
    • 外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传
  13. slave1执行命令start-yarn.sh

    • 调用jps查看进程

6. 单机zookeeper

  1. 下载zookeeper基于清华镜像

  2. 上传至虚拟机并解压

    • tar -zxvf zookeeper -C $路径
  3. 转至解压目录下cd $路径

  4. 重命名mv -i zookeeper zookeeper

  5. 转至zk目录下cd zookeeper

  6. 转至配置目录下cd conf

  7. 复制样本配置文件cp zoo_sample.cfg zoo.cfg,复制后的才能作为运行时调用配置文件

    • 注:最后为服务器列表,server后的数字需要与hosts的最后一位相同
    • # The number of milliseconds of each tick
      tickTime=2000
      # The number of ticks that the initial 
      # synchronization phase can take
      initLimit=10
      # The number of ticks that can pass between 
      # sending a request and getting an acknowledgement
      syncLimit=5
      # the directory where the snapshot is stored.
      # do not use /tmp for storage, /tmp here is just 
      # example sakes.
      dataDir=/usr/local/soft/apache-zookeeper-3.9.2-bin/data
      dataLogDir=/usr/local/soft/apache-zookeeper-3.9.2-bin/log
      # the port at which the clients will connect
      clientPort=2181
      # the maximum number of client connections.
      # increase this if you need to handle more clients
      #maxClientCnxns=60
      #
      # Be sure to read the maintenance section of the 
      # administrator guide before turning on autopurge.
      # 授权监听所有ip
      quorumListenOnAllIPs=true
      # http://zookeeper.apache.org/doc/current/zookeeperAdmin.html#sc_maintenance
      #
      # The number of snapshots to retain in dataDir
      #autopurge.snapRetainCount=3
      # Purge task interval in hours
      # Set to "0" to disable auto purge feature
      #autopurge.purgeInterval=1
      server.1=node11:2888:3888
      server.2=node12:2888:3888
      server.3=node13:2888:3888
      
  8. 修改数据存储地址dataDir=/opt/module/zookeeper/zkData,任意路径均可

  9. 在文件home路径下创建日志文件夹mkdir logs

  10. /zookeeper/bin目录下执行./zkServer.sh start

    • 若出现授权相关问题,则分别为上述两个文件夹授权,同时为zkData下.pid文件授权
  11. 配置环境变量sudo vim ~/.bashrc

    • export ZK_HOME=/usr/local/zookeeper
    • export PATH=${ZK_HOME}/bin:$PATH
  12. 更新配置文件source ~/.bashrc

  13. 最后再运行./zkServer.sh start

7. 完全分布式zookeeper

建议按照顺序1、2、3等命名服务器

  1. /usr/local下所有文件通过xsync传输入slave1和slave2

    • 若上述方法出现权限相关问题,则在slave1和slave2上重复之前步骤
    • 或者将文件压缩之后发送,然后在相应文件夹下解压即可
  2. 在zkdata创建myid

    • 根据zoo.cfg中的server编号赋值
  3. 按照上述内容配置环境变量

  4. 创建集群启动脚本,并授权

    •  touch zkStart.sh
       touch zkStop.sh
       touch zkStatus.sh
      
    •  chmod +x zkStart.sh
       chmod +x zkStop.sh
       chmod +x zkStatus.sh
      
    • zkStart.sh内容如下

    •  #!/bin/bash
       echo "zookeeper start 11,12,13..."
       # 更新配置文件,然后启动,配置文件路径按照自身配置填写,以下同理
       ssh node11 "source /etc/profile;zkServer.sh start"
       ssh node12 "source /etc/profile;zkServer.sh start"
       ssh node13 "source /etc/profile;zkServer.sh start"
      
    • zkStatus.sh内容如下

    •  #!/bin/bash
       echo "zookeeper start 11,12,13..."
        
       ssh node11 "source /etc/profile;zkServer.sh status"
       ssh node12 "source /etc/profile;zkServer.sh status"
       ssh node13 "source /etc/profile;zkServer.sh status"
      
    • zkStop.sh内容如下

    •  #!/bin/bash
       echo "zookeeper start 11,12,13..."
        
       ssh node11 "source /etc/profile;zkServer.sh stop"
       ssh node12 "source /etc/profile;zkServer.sh stop"
       ssh node13 "source /etc/profile;zkServer.sh stop"
      
  5. 最后测试

    1. 启动

    2. 查看状态

      • tip:注意每个服务器最后一行应当是follower或者leader,若未显示,则检查当前用户是否拥有zookeeper安装目录管理权限,查看zoo.cfg是否设置监听,IP映射名称是否与ID匹配
      • 外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传
    3. 启动客户端

8. 磁盘扩容以及数据恢复

  1. 在配置hbase,磁盘空间已满导致虚拟机无法启动,重新配置虚拟机

  2. 尝试扩容磁盘但无效

  3. 将原vmdk删除

    1. 先写在目录sudo umount /dev/shm
    2. 删除目录本身sudo rmdir /dev/shm(慎重)
      • 存储一些设备文件。这个目录中的文件都是保存在内存中,而不是磁盘上。其大小是非固定的,即不是预先分配好的内存来存储的。
    3. 验证df -hT | grep /dev/shm
    4. 重新挂载sudo mount -t tmpfs -o defaults none /dev/shm
  4. 按照剩余容量扩容

    1. sudo lvextend -L +<size> /dev/mapper/ubuntu--vg-ubuntu--lv
  5. 如果还是无效,那么可以调整文件系统的大小以利用新增的空间

    1. sudo resize2fs /dev/mapper/ubuntu--vg-ubuntu--lv
  6. 数据恢复:由于各机器内容大致相同,因此采用克隆方式进行,以下主要记录克隆后操作

  7. 使用vmware,右键点击完全克隆

  8. 配置静态ip

    1. cd /etc/netplan
    2. sudo vim xxx.yaml
    3. 将ip修改为172.16.227.130
    4. source netplan
  9. 配置主机名

    1. (临时)sudo hostnamectl set-hostname new_hostname
    2. (永久)sudo nano /etc/hostname
    3. 更新ip中的代称sudo nano /etc/hosts,修改本机即可
  10. 修改zookeeper的workid

    1. cd /usr/local/zookeeper/zkdata
    2. sudo vim workid

主从节点允许的最大时间误差

9. 单机hbase

这部分不基于zookeeper部署,仅使用hbase自带的zookeeper;后续完全分布式部署时,使用zookeeper

  1. 下载hbase基于清华镜像

    • tar -zxvf hbase-2.4.18-bin.tar.gz
      sudo mv -i hbase-2.4.18 hbase
      
  2. 设置环境变量

    • sudo vim ~/.bashrc
      export HBASE_HOME=/path/to/hbase
      export PATH=$PATH:$HBASE_HOME/bin
      source ~/.bashrc
      
  3. 配置hbase

    • <configuration>
        <property>
          <name>hbase.rootdir</name>
          <value>hdfs://localhost:9000/hbase</value>
        </property>
        <!--zookeeper数据路径:注意创建目录-->
        <property>
          <name>hbase.zookeeper.property.dataDir</name>
          <value>/path/to/hbase/zookeeper</value>
        </property>
        <property>
          <name>hbase.zookeeper.quorum</name>
          <value>localhost</value>
        </property>
        <property>
          <name>hbase.cluster.distributed</name>
          <value>false</value>
        </property>
      </configuration>
      
  4. 创建存储目录mkdir -p /path/to/hbase/zookeeper

  5. 格式化hbase

    • cd $HBASE_HOME/bin
      ./hbase-daemon.sh format
      
  6. 启动hbasestart-hbase.sh

10. Hbase 完全分布式部署

  1. 编辑hbase-env.sh

    • export HBASE_HOME=/usr/local/hbase
      export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-arm64
      export HBASE_MANAGES_ZK=false  # 如果你已经管理了 ZooKeeper,则设置为 false
      export HBASE_PID_DIR=${HBASE_HOME}/run
      export HBASE_LOG_DIR=${HBASE_HOME}/logs
      export HBASE_CONF_DIR=${HBASE_HOME}/conf
      
  2. 编辑hadoop-env.sh

    • export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-arm64
      export LANG=en_US.UTF-8
      
  3. 编辑hbase-site.xml

    • <configuration>
        <!-- 指定 ZooKeeper 服务器列表 -->
        <property>
          <name>hbase.zookeeper.quorum</name>
          <value>hadoop01:2181,hadoop02:2181,hadoop03:2181</value>
        </property>
      
        <!-- 指定 HBase 的根目录 -->
        <property>
          <name>hbase.rootdir</name>
          <value>hdfs://hadoop01:8020/hbase</value>
        </property>
      
        <!-- 指定 ZooKeeper 客户端端口 -->
        <property>
          <name>hbase.zookeeper.property.clientPort</name>
          <value>2181</value>
        </property>
      
        <!-- 指定 ZooKeeper 的会话超时时间 -->
        <property>
        <name>zookeeper.session.timeout.upper.limit</name>
          <value>60000</value>
        </property>
      
        <!--zookeeper数据目录-->
        <property>
          <name>hbase.zookeeper.property.dataDir</name>
          <value>/usr/local/zookeeper/zkdata</value>
        </property>
      
        <!--主从节点允许的最大时间误差-->
        <property>
          <name>hbase.master.maxlockskew</name>
          <value>180000</value>
        </property>
      
        <!-- 其他可选配置 -->
        <property>
      		<name>hbase.regionserver.global.memstore.size</name>
          <value>0.4</value>
        </property>
        <property>
          <name>hbase.regionserver.maxlogs</name>
          <value>64</value>
        </property>
        <property>
          <name>hbase.regionserver.wal.codec</name>
      		<value>org.apache.hadoop.hbase.regionserver.WALCellCodec</value>
        </property>
        <property>
          <name>hbase.cluster.distributed</name>
          <value>true</value>
        </property>
        <property>
           <name>dfs.replication</name>
           <value>2</value>
        </property>
        <!-- 指定HBase Master Web页面访问端口,默认端口号16010 -->
        <property>
          <name>hbase.master.info.port</name>
          <value>16010</value>
        </property>
        <!-- 指定HBase RegionServer Web页面访问端口,默认端口号16030 -->
        <property>
          <name>hbase.regionserver.info.port</name>
          <value>16030</value>
        </property>
        <property>
          <name>hbase.unsafe.stream.capability.enforce</name>
          <value>false</value>
        </property>
        <property>
            <name>hbase.wal.provider</name>
            <value>filesystem</value>
          </property>
      </configuration>
      
  4. 创建目录

    • sudo mkdir logs
      chmod 777 logs
      
  5. 修改regionservers文件

    • hadoop01
      hadoop02
      hadoop03
      
  6. 格式化hbase集群

    • # $hbase_home/bin
      ./format
      
  7. 启动hbase集群start-hbase.sh

配置过程中的debug

  1. 没有format命令

    • 尝试了使用守护进程启动、终端命令启动、hbase命令行启动等方式,均无该命令
    • 故手动创建hbase目录以及加载hbase.rootdir
  2. zookeeper相关错误导致初始化失败

    • <!--zookeeper数据目录-->
        <property>
          <name>hbase.zookeeper.property.dataDir</name>
          <value>/usr/local/zookeeper/zkdata</value>
        </property>
      
    • 确保该部分内容和zookeeper当中配置一致

  3. hmaster未启动,可能导致无法正常关闭hbase等某些错误

    • 手动启动hmaster/regionserver
    • hbase-daemon.sh start regionserver/master hadoop02
  4. 请注意查看hbase-site.xml中的各项配置,配置缺失或者错误均可能导致bug。按需配置同样重要,对于不需要的部分可以酌情处理

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

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

相关文章

会话管理:深入理解SQLAlchemy会话及其事务处理

引言 SQLAlchemy是一个流行的Python SQL工具包和对象关系映射&#xff08;ORM&#xff09;系统&#xff0c;它提供了一个高层的ORM以及底层的SQL表达式语言。在SQLAlchemy中&#xff0c;会话&#xff08;Session&#xff09;是与数据库交互的核心概念&#xff0c;它不仅负责对…

外卖配送小程序源码系统 带源代码包以及搭建部署教程

系统概述 外卖配送小程序源码系统是一套完整的解决方案&#xff0c;旨在帮助用户快速搭建自己的外卖配送平台。它融合了先进的技术和创新的设计理念&#xff0c;为用户提供了一个稳定、高效、易用的系统环境。 该系统基于移动端开发&#xff0c;能够与各种操作系统兼容&#…

2.stm32 GPIO输出

GPIO简介 GPIO&#xff08;General Purpose Input Output&#xff09;通用输入输出口 可配置为8种输入输出模式 引脚电平&#xff1a;0V~3.3V&#xff0c;部分引脚可容忍5V 输出模式下可控制端口输出高低电平&#xff0c;用以驱动LED、控制蜂鸣器、模拟通信协议输出时序等 …

网络变压器的作用是什么

在网络通讯主板上,在PHY芯片与RJ45连接器之间,会有一个黑属的小方块,这个东西就叫网络变压器,书名"数据录”人们常把它称为网络隔真变压务,LAN变压客,局域网变压器,滤波器等。 它在一块网络设备接口上所起的作用主要有两个; 一、传输数据,它把PHY送出来的差分信号用差模合…

电子元器件是电子电路中的基本组成部分

电子元器件是电子电路中的基本组成部分&#xff0c;主要包括以下几类&#xff1a; 一、电阻器 作用 限流&#xff1a;限制电路中的电流大小。分压&#xff1a;将电压按照一定比例分配。负载&#xff1a;作为电路中的负载元件。 分类 固定电阻&#xff1a;阻值固定不变。可变电阻…

ros1编译wpr_simulation库

目录 安装项目依赖包编译将环境参数加载到终端程序中运行编译好的ros程序 首先你下载好这个库以后。 安装项目依赖包 scripts库中&#xff0c;存放的是一些依赖项安装脚本以及python脚本。 进入到这个路径的终端。 输入 ./install_for_noetic.sh编译 输入下面命令&#xf…

小猿口算自动PK脚本

大家好&#xff0c;我是小黄。 近期&#xff0c;众多大学生炸鱼小猿口算APP,把一众小学生都快虐哭了&#xff0c;小黄听闻后&#xff0c;也跃跃欲试。对此小黄也参考网上的资料写了一个自动Pk的脚步。 首先大家需要安装一个pytorch环境过程中&#xff0c;如果小伙伴对此不熟悉的…

【YOLOv11】ultralytics最新作品yolov11 AND 模型的训练、推理、验证、导出 以及 使用

​目录 一 ultralytics公司的最新作品YOLOV11 1 yolov11的创新 2 安装YOLOv11 3 PYTHON Guide 二 训练 三 验证 四 推理 五 导出模型 六 使用 文档&#xff1a;https://docs.ultralytics.com/models/yolo11/ 代码链接&#xff1a;https://github.com/ultralytics/ult…

MyBatis 用法详解

文章目录 一、普通 SQL1.1 注解实现&#xff1a;1.1.1 参数传递&#xff1a;1.1.2 增&#xff08;Insert&#xff09;&#xff1a;1.1.3 删&#xff08;Delete&#xff09;&#xff1a;1.1.4 改&#xff08;Update&#xff09;&#xff1a;1.1.5 查&#xff08;Select&#xff…

大疆M2006+C610 pid参数调优

官方给的示例代码里给的是1.5, 0.1, 0 但试了下空转时显然不太行. 自己摸索出0.8, 0.03, 0 表现如图中的蓝色线 期望速度先两秒的1000,然后一秒的2000,一秒的3000, 0 2000 表现还不错,可以看到0.5秒后与期望值的差距控制在大概10%之内,但还是感觉有些过调 对了先说一下基础知识…

UnityComputeShader Challenge2

UnityComputeShader Challenge2 大部分内容与Challenge1中的一致&#xff0c;重复的地方不做说明 using UnityEngine; using System.Collections;public class Challenge2 : MonoBehaviour {public ComputeShader shader;//纹理的分辨率&#xff0c;正方形public int texReso…

PHP拼团接龙商城系统小程序源码

拼团接龙商城系统&#xff0c;解锁购物新乐趣&#xff01; &#x1f389; 拼团接龙&#xff0c;购物也能玩出新花样 你是否厌倦了单调的购物方式&#xff1f;想要尝试一种既有趣又实惠的购物新体验&#xff1f;那么&#xff0c;“拼团接龙商城系统”绝对是你的不二之选&#…

fluke双绞线测试-外部串扰AxTALK-测试DEMO样本

外部串扰是电缆束或跳线中相邻电缆之间传输的噪音或串扰。外部串扰是 10GBASE-T 通信应用中主要的噪音源。 电缆线对&#xff08;NEXT 和 FEXT&#xff09;之间的串扰信号与传输信号有关&#xff0c;所以网络设备可以利用数字信号处理 (DSP) 技术除去数据信号中的串扰信号。但…

力扣题11~20

题11&#xff08;中等&#xff09;&#xff1a; 思路&#xff1a; 这种题目第一眼就是双循环&#xff0c;但是肯定不行滴&#xff0c;o(n^2)这种肯定超时&#xff0c;很难接受。 所以要另辟蹊径&#xff0c;我们先用俩指针&#xff08;标志位&#xff09;在最左端和最右端&am…

Android iOS 使用 ARMS 用户体验监控(RUM)的最佳实践

作者&#xff1a;元泊 引言 背景信息 随着移动互联网技术的持续演进与全民互联网时代的深入&#xff0c;用户在 Android、iOS 应用程序、小程序、H5 游戏及网页等多元化平台上的交互时长显著增长。这一趋势加剧了用户体验&#xff08;UX&#xff09;场景的复杂性&#xff0c…

谈到数据集成和数据分析,这三个概念你得分清楚!

谈及数据集成和数据分析相关的概念&#xff0c;总是会提到异构数据源、异构数据库和分布式数据库&#xff0c;他们所涉及到的方面略有不同&#xff0c;今天来详细说下它们之间的区别&#xff01; 一、异构数据源 异构数据源是指不同类型、不同结构、不同格式的数据源。 在数据…

PyQt基本功能

简单的窗口 #!/usr/bin/python3 # -*- coding: utf-8 -*- import sys # 这⾥引⼊了PyQt5.QtWidgets模块&#xff0c;这个模块包含了基本的组件 from PyQt5.QtWidgets import QApplication, QWidgetif __name__ __main__:# 每个PyQt5应⽤都必须创建⼀个应⽤对象# sys.argv是⼀…

雷达图怎么绘制?!超简单,一次性告诉你Python和R绘制方法~~

今天给大家介绍的的图表为雷达图(Radar/Spider chart),这种类型图表在生活中较常使用&#xff0c;是一种以从同一点开始的轴上表示的三个或更多个定量变量的二维图表的形式显示多变量数据的图形方法。较常用的场景多为分析企业经营状况(收益性、生产性、流动性、安全性和成长性…

Vatee万腾平台:企业数字化转型的加速器

在当今这个信息化、数字化高速发展的时代&#xff0c;企业要想在激烈的市场竞争中立于不败之地&#xff0c;就必须紧跟时代步伐&#xff0c;实现数字化转型。而Vatee万腾平台&#xff0c;正是这样一款能够助力企业快速、高效完成数字化转型的利器&#xff0c;它如同一位经验丰富…