• ubuntu2204部署hbase2.3.7


    开启root

    修改root用户的密码

    sudo passwd root
    
    • 1

    SSH放行

    sudo sed -i 's/^#\?PermitRootLogin.*/PermitRootLogin yes/g' /etc/ssh/sshd_config;
    sudo sed -i 's/^#\?PasswordAuthentication.*/PasswordAuthentication yes/g' /etc/ssh/sshd_config;
    
    • 1
    • 2

    重启服务

    sudo service sshd restart
    
    • 1

    修改主机名

    分别在四台机器上修改

    hostnamectl set-hostname --static "server100"
    hostnamectl set-hostname --static "server101"
    hostnamectl set-hostname --static "server102"
    hostnamectl set-hostname --static "server103"
    
    • 1
    • 2
    • 3
    • 4

    查看主机名

    hostname
    
    • 1

    在这里插入图片描述

    修改hosts

    vi /etc/hosts
    
    • 1

    添加以下内容

    192.168.30.100 server100
    192.168.30.101 server101
    192.168.30.102 server102
    192.168.30.103 server103
    
    • 1
    • 2
    • 3
    • 4

    配置免密登录

    生成密匙

    四台机器上都执行执行

    ssh-keygen -t rsa
    
    ssh-copy-id -i ~/.ssh/id_rsa.pub root@server100
    ssh-copy-id -i ~/.ssh/id_rsa.pub root@server101
    ssh-copy-id -i ~/.ssh/id_rsa.pub root@server102
    ssh-copy-id -i ~/.ssh/id_rsa.pub root@server103
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    关闭防火墙

    sudo ufw disable
    
    • 1

    查看防火墙状态

    sudo ufw status
    
    • 1

    挂载硬盘(如果需要的话)

    假设你想要将额外的空间添加到现有的 LVM 逻辑卷 /dev/ubuntu-vg/ubuntu-lv 中:

    1. 首先,使用 lvdisplay 命令查看 LVM 逻辑卷的详细信息,确保有足够的未分配空间可用:

      sudo lvdisplay
      
      • 1

      注意其中的 “Free PE / Size” 部分,确保有足够的空间。

    2. 如果有足够的未分配空间,使用 lvextend 命令扩展现有的逻辑卷。假设你有 500G 的空闲空间,命令可能如下所示:

      sudo lvextend -l +100%FREE /dev/ubuntu-vg/ubuntu-lv
      
      • 1

      这将利用所有可用的空闲空间进行扩展。

    3. 扩展逻辑卷后,你需要将文件系统扩展到新的空间。对于 ext4 文件系统,可以使用 resize2fs 命令:

      sudo resize2fs /dev/ubuntu-vg/ubuntu-lv
      
      • 1
    4. 最后,使用 df -h 命令检查文件系统的大小,确保已经成功扩展。

      df -h
      
      • 1

    如果你想要使用硬盘的剩余空间,你需要创建一个新的逻辑卷。以下是相应的步骤:

    1. 使用 lvcreate 命令创建一个新的逻辑卷。假设你想要创建一个名为 data-lv 的逻辑卷,可以执行:

      sudo lvcreate -l +100%FREE -n data-lv ubuntu-vg
      
      • 1

      这将使用硬盘上所有可用的空闲空间创建一个新的逻辑卷。

    2. 接下来,你需要创建一个文件系统。对于 ext4 文件系统,可以使用 mkfs 命令:

      sudo mkfs -t ext4 /dev/ubuntu-vg/data-lv
      
      • 1
    3. 确保目标目录 /data 存在,如果不存在,创建它:

      sudo mkdir /data
      
      • 1
    4. 然后,将新创建的逻辑卷挂载到 /data

       sudo mount /dev/ubuntu-vg/data-lv /data
      
      • 1
    5. 最后,如果你希望系统启动时自动挂载 /data,你可以编辑 /etc/fstab 文件,添加一行:

      /dev/ubuntu-vg/data-lv   /data   ext4   defaults   0   0
      
      • 1

      保存并退出编辑器。

    修改可打开文件数(可选)

    vi ~/.bashrc
    
    • 1

    末尾添加一行

    ulimit -n 新的文件打开数
    
    • 1

    保存并关闭文件,然后重新加载配置文件:

    source ~/.bashrc
    
    • 1

    使用以下命令验证更改是否已生效:

    ulimit -n
    
    • 1

    设置时区:

    sudo dpkg-reconfigure tzdata
    
    • 1

    运行上述命令后,你会看到一个交互式的界面,其中可以选择你所在的地区和城市。选择完毕后,系统将自动更新时区设置。
    通过timedatectl命令查看时间状态

    安装jdk

    上传到/usr/loca目录,然后解压

    tar -zxvf jdk-8u202-linux-x64.tar.gz
    
    • 1

    配置环境变量

    vi /etc/profile
    
    • 1
    JAVA_HOME=/usr/local/jdk1.8.0_202
    JRE_HOME=/usr/local/jdk1.8.0_202/jre
    CLASS_PATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib
    PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin
    export JAVA_HOME JRE_HOME CLASS_PATH PATH
    export HADOOP_HOME=/usr/local/hadoop
    export PATH=$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$PATH
    export HBASE_HOME=/usr/local/hbase
    export PATH=$HBASE_HOME/bin:$HBASE_HOME/sbin:$PATH
    export LD_LIBRARY_PATH=/usr/local/hadoop/lib/native:$LD_LIBRARY_PATH
    export PATH=/usr/local/cmake/bin/:$PATH
    export MAVEN_HOME=/usr/local/maven
    export PATH=$MAVEN_HOME/bin:$PATH
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13

    配置生效

    source /etc/profile
    
    • 1

    本次部署计划四台服务器server100,server102,server101,server103,其中server103作为master节点,其它三个节点作为数据节点

    部署zookeeper

    在三个agent节点安装zookeeper
    上传到/usr/local
    解压

    tar -zxvf apache-zookeeper-3.7.1-bin.tar.gz
    
    • 1

    建立软连接,方便后期升级

    ln -s apache-zookeeper-3.7.1-bin/ zookeeper
    
    • 1

    修改配置文件

    cd /usr/local/zookeeper/conf
    
    cp zoo_sample.cfg zoo.cfg
    
    vi zoo.cfg
    
    dataDir=/usr/local/zookeeper/tmp
    
    server.1=server100:2888:3888
    server.2=server101:2888:3888
    server.3=server102:2888:3888
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    在data目录中创建一个空文件,并向该文件写入ID。

    touch /usr/local/zookeeper/data/myid
    echo 1 > /usr/local/zookeeper/data/myid
    
    • 1
    • 2

    同步配置到其它节点

    将配置好的ZooKeeper拷贝到其它节点

    scp -r /usr/local/apache-zookeeper-3.7.1-bin root@server101:/usr/local
    scp -r /usr/local/apache-zookeeper-3.7.1-bin root@server102:/usr/local
    
    • 1
    • 2

    登录server101、server102,创建软链接并修改myid内容
    server101

    cd /usr/local
    ln -s apache-zookeeper-3.7.1-bin zookeeper
    echo 2 > /usr/local/zookeeper/data/myid
    
    • 1
    • 2
    • 3

    server102

    cd /usr/local
    ln -s apache-zookeeper-3.7.1-bin zookeeper
    echo 3 > /usr/local/zookeeper/data/myid
    
    • 1
    • 2
    • 3

    运行验证

    cd /usr/local/zookeeper/bin
    ./zkServer.sh start
    
    • 1
    • 2

    查看启动状态

    ./zkServer.sh status
    
    • 1

    在这里插入图片描述

    安装hadoop

    将“hadoop-3.2.3.tar.gz”放置于server1节点的“/usr/local”目录,并解压。

    cd /usr/local
    tar -zxvf hadoop-3.2.3.tar.gz
    
    • 1
    • 2

    建立软链接

    ln -s hadoop-3.2.3 hadoop
    
    • 1

    修改配置文件

    cd $HADOOP_HOME/etc/hadoop
    
    • 1

    修改hadoop-env.sh

    echo "export JAVA_HOME=/usr/local/jdk1.8.0_202" >> hadoop-env.sh
    echo "export HDFS_NAMENODE_USER=root" >> hadoop-env.sh
    echo "export HDFS_SECONDARYNAMENODE_USER=root" >> hadoop-env.sh
    echo "export HDFS_DATANODE_USER=root" >> hadoop-env.sh
    
    • 1
    • 2
    • 3
    • 4

    修改yarn-env.sh

    echo "export YARN_REGISTRYDNS_SECURE_USER=root" >> yarn-env.sh
    echo "export YARN_RESOURCEMANAGER_USER=root" >> yarn-env.sh
    echo "export YARN_NODEMANAGER_USER=root" >> yarn-env.sh
    
    • 1
    • 2
    • 3

    修改core-site.xml

    vi core-site.xml
    
    • 1
    <property>
        <name>fs.defaultFSname>
        <value>hdfs://server103:9000value>
    property>
    <property>
      <name>hadoop.tmp.dirname>
      <value>/home/hadoop_tmp_dirvalue>
    property>
    <property>
       <name>ipc.client.connect.max.retriesname>
       <value>100value>
    property>
    <property>
       <name>ipc.client.connect.retry.intervalname>
       <value>10000value>
    property>
    <property>
       <name>hadoop.proxyuser.root.hostsname>
       <value>*value>
    property>
    <property>
       <name>hadoop.proxyuser.root.groupsname>
       <value>*value>
    property>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24

    修改hdfs-site.xml

    vi hdfs-site.xml
    
    • 1
    <property>
        <name>dfs.replicationname>
        <value>3value>
    property>
    <property>
        <name>dfs.namenode.name.dirname>
        <value>/home/data1/hadoop/nnvalue>
    property>
    <property>
        <name>dfs.datanode.data.dirname>
    <value>/home/data1/hadoop/dnvalue>
    property>
    <property>
        <name>dfs.namenode.http-bind-hostname>
        <value>0.0.0.0value>
    property>
    <property>
        <name>dfs.datanode.handler.countname>
        <value>600value>
    property>
    <property>
        <name>dfs.namenode.handler.countname>
        <value>600value>
    property>
    <property>
        <name>dfs.namenode.service.handler.countname>
        <value>600value>
    property>
    <property>
        <name>ipc.server.handler.queue.sizename>
        <value>300value>
    property>
    <property>
        <name>dfs.webhdfs.enabledname>
        <value>truevalue>
    property>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36

    修改mapred-site.xml

    vi mapred-site.xml
    
    • 1
    <property>
        <name>mapreduce.framework.namename>
        <value>yarnvalue>
        <final>truefinal>
        <description>The runtime framework for executing MapReduce jobsdescription>
    property>
    <property>
        <name>mapreduce.job.reduce.slowstart.completedmapsname>
        <value>0.88value>
    property>
    <property>
        <name>mapreduce.application.classpathname>
        <value>
            /usr/local/hadoop/etc/hadoop,
            /usr/local/hadoop/share/hadoop/common/*,
            /usr/local/hadoop/share/hadoop/common/lib/*,
            /usr/local/hadoop/share/hadoop/hdfs/*,
            /usr/local/hadoop/share/hadoop/hdfs/lib/*,
            /usr/local/hadoop/share/hadoop/mapreduce/*,
            /usr/local/hadoop/share/hadoop/mapreduce/lib/*,
            /usr/local/hadoop/share/hadoop/yarn/*,
            /usr/local/hadoop/share/hadoop/yarn/lib/*
        value>
    property>
    <property>
        <name>mapreduce.map.memory.mbname>
        <value>6144value>
    property>
    <property>
        <name>mapreduce.reduce.memory.mbname>
        <value>6144value>
     property>
     <property>
        <name>mapreduce.map.java.optsname>
        <value>-Xmx5530mvalue>
    property>
    <property>
        <name>mapreduce.reduce.java.optsname>
        <value>-Xmx2765mvalue>
    property>
    <property>
        <name>mapred.child.java.optsname>
        <value>-Xmx2048m -Xms2048mvalue>
    property>
    <property>
        <name>mapred.reduce.parallel.copiesname>
        <value>20value>
    property>
    <property>
        <name>yarn.app.mapreduce.am.envname>
        <value>HADOOP_MAPRED_HOME=/usr/local/hadoopvalue>
    property>
    <property>
        <name>mapreduce.map.envname>
        <value>HADOOP_MAPRED_HOME=/usr/local/hadoopvalue>
    property>
    <property>
        <name>mapreduce.reduce.envname>
        <value>HADOOP_MAPRED_HOME=/usr/local/hadoopvalue>
    property>
    <property>
        <name>mapreduce.job.counters.maxname>
        <value>1000value>
    property>
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
    • 61
    • 62
    • 63
    • 64
    • 65

    修改yarn-site.xml

    vi yarn-site.xml
    
    • 1
    <property>
        <name>yarn.nodemanager.aux-servicesname>
        <value>mapreduce_shufflevalue>
        <final>truefinal>
    property>
    <property>
        <name>yarn.nodemanager.aux-servicesname>
        <value>mapreduce_shufflevalue>
    property>
    <property>
        <name>yarn.resourcemanager.hostnamename>
        <value>server1value>
    property>
    <property>
        <name>yarn.resourcemanager.bind-hostname>
        <value>0.0.0.0value>
    property>
    <property>
        <name>yarn.nodemanager.resource.memory-mbname>
        <value>371200value>
    property>
    <property>
        <name>yarn.scheduler.maximum-allocation-mbname>
        <value>371200value>
    property>
    <property>
        <name>yarn.scheduler.minimum-allocation-mbname>
        <value>1024value>
    property>
    <property>
        <name>yarn.nodemanager.resource.cpu-vcoresname>
        <value>64value>
    property>
    <property>
        <name>yarn.scheduler.maximum-allocation-vcoresname>
        <value>64value>
    property>
    <property>
        <name>yarn.scheduler.minimum-allocation-vcoresname> 
        <value>1value>
    property>
    <property>
        <name>yarn.log-aggregation-enablename>
        <value>truevalue>
    property>
    <property>
        <name>yarn.client.nodemanager-connect.max-wait-msname>
        <value>300000value>
    property>
    <property>
        <name>yarn.nodemanager.vmem-pmem-rationame>
        <value>2.1value>
    property>
    <property>
        <name>yarn.nodemanager.vmem-check-enabledname>
        <value>falsevalue>
    property>
    <property>
        <name>yarn.nodemanager.pmem-check-enabledname>
        <value>falsevalue>
    property>
    <property>
        <name>yarn.application.classpathname>
        <value>
            /usr/local/hadoop/etc/hadoop,
            /usr/local/hadoop/share/hadoop/common/*,
            /usr/local/hadoop/share/hadoop/common/lib/*,
            /usr/local/hadoop/share/hadoop/hdfs/*,
            /usr/local/hadoop/share/hadoop/hdfs/lib/*,
            /usr/local/hadoop/share/hadoop/mapreduce/*,
            /usr/local/hadoop/share/hadoop/mapreduce/lib/*,
            /usr/local/hadoop/share/hadoop/yarn/*,
            /usr/local/hadoop/share/hadoop/yarn/lib/*
        value>
    property>
    <property>
        <name>yarn.nodemanager.local-dirsname>
    <value>/home/data1/hadoop/yarn/local,/home/data2/hadoop/yarn/local,/home/data3/hadoop/yarn/local,/home/data4/hadoop/yarn/local,/home/data5/hadoop/yarn/local,/home/data6/hadoop/yarn/local,/home/data7/hadoop/yarn/local,/home/data8/hadoop/yarn/local,/home/data9/hadoop/yarn/local,/home/data10/hadoop/yarn/local,/home/data11/hadoop/yarn/local,/home/data12/hadoop/yarn/localvalue>
        property>
    <property>
        <name>yarn.nodemanager.log-dirsname><value>/home/data1/hadoop/yarn/log,/home/data2/hadoop/yarn/log,/home/data3/hadoop/yarn/log,/home/data4/hadoop/yarn/log,/home/data5/hadoop/yarn/log,/home/data6/hadoop/yarn/log,/home/data7/hadoop/yarn/log,/home/data8/hadoop/yarn/log,/home/data9/hadoop/yarn/log,/home/data10/hadoop/yarn/log,/home/data11/hadoop/yarn/log,/home/data12/hadoop/yarn/logvalue>
    property>
    <property>
        <name>yarn.timeline-service.enabledname>
        <value>truevalue>
    property>
    <property>
        <name>yarn.timeline-service.hostnamename>
        <value>server1value>
    property>
    <property>
        <name>yarn.timeline-service.http-cross-origin.enabledname>
        <value>truevalue>
    property>
    <property>
        <name>yarn.resourcemanager.system-metrics-publisher.enabledname>
        <value>truevalue>
    property>
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
    • 61
    • 62
    • 63
    • 64
    • 65
    • 66
    • 67
    • 68
    • 69
    • 70
    • 71
    • 72
    • 73
    • 74
    • 75
    • 76
    • 77
    • 78
    • 79
    • 80
    • 81
    • 82
    • 83
    • 84
    • 85
    • 86
    • 87
    • 88
    • 89
    • 90
    • 91
    • 92
    • 93
    • 94
    • 95
    • 96
    • 97
    • 98
    • 99

    修改workers

    确认Hadoop版本,3.x以下的版本编辑slaves文件,3.x及以上的编辑workers文件

    vi workers
    
    • 1

    修改workers文件,只保存所有agent节点的IP地址(可用主机名代替),其余内容均删除

    server100
    server101
    server102
    
    • 1
    • 2
    • 3

    拷贝hadoop-3.2.3到server100、server101、server102节点的“/usr/local”目录。

    scp -r /usr/local/hadoop-3.2.3 root@server100:/usr/local
    scp -r /usr/local/hadoop-3.2.3 root@server101:/usr/local
    scp -r /usr/local/hadoop-3.2.3 root@server102:/usr/local
    
    • 1
    • 2
    • 3

    分别登录到server100、server101、server102节点,为hadoop-3.2.3建立软链接。、

    cd /usr/local
    ln -s hadoop-3.2.3 hadoop
    
    • 1
    • 2

    启动Hadoop集群
    1、启动ZooKeeper集群。
    分别在server100、server101、server102节点上启动ZooKeeper。

    cd /usr/local/zookeeper/bin
    ./zkServer.sh start
    
    • 1
    • 2

    2、启动JournalNode。
    分别在server100、server101、server102节点上启动JournalNode。

    只在第一次进行格式化操作时,需要执行2-4,完成格式化后,下次启动集群,只需要执行1、5、6。

    cd /usr/local/hadoop/sbin
    ./hadoop-daemon.sh start journalnode
    
    • 1
    • 2

    3、格式化HDFS

    在server1节点上格式化HDFS。

    hdfs namenode -format
    
    • 1

    启动hdfs

    start-all.sh
    
    • 1

    访问web页面验证
    http://server103:9870

    在这里插入图片描述

    HBase部署

    上传并解压到/usr/local
    建立软连接

    tar -zxvf hbase-2.3.7-bin.tar.gz
    
    ln -s hbase-2.3.7 hbase
    
    • 1
    • 2
    • 3

    添加hbase到环境变量

    
    vim /etc/profile
    
    export HBASE_HOME=/usr/local/hbase
    export PATH=$HBASE_HOME/bin:$HBASE_HOME/sbin:$PATH
    
    source /etc/profile
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    修改hbase配置文件

    cd $HBASE_HOME/conf
    
    vim hbase-env.sh
    
    • 1
    • 2
    • 3
    export JAVA_HOME=/usr/local/jdk1.8.0_202
    export HBASE_MANAGES_ZK=false
    export HBASE_LIBRARY_PATH=/usr/local/hadoop/lib/native
    
    • 1
    • 2
    • 3
    vi hbase-site.xml
    
    • 1
    <property>
           <name>hbase.rootdirname>
           <value>hdfs://server1:9000/HBasevalue>
       property>
     <property>
       <name>hbase.cluster.distributedname>
       <value>truevalue>
     property>
     <property>
       <name>hbase.tmp.dirname>
       <value>/usr/local/hbase/tmpvalue>
     property>
     <property>
       <name>hbase.unsafe.stream.capability.enforcename>
       <value>falsevalue>
     property>
    <property>
           <name>hbase.zookeeper.quorumname>
           <value>server100:2181,server101:2181,server102:2181value>
       property>
       <property>
     <name>hbase.wal.providername>
     <value>filesystemvalue>
    property>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24

    修改regionservers

    vim regionservers
    
    server100
    server101
    server102
    
    • 1
    • 2
    • 3
    • 4
    • 5

    拷贝hdfs-site.xml

    
    cp /usr/local/hadoop/etc/hadoop/hdfs-site.xml /usr/local/hbase/conf/hdfs-site.xml
    
    
    • 1
    • 2
    • 3

    拷贝hbase-2.3.7到server100、server101、server102节点的“/usr/local”目录。

    
    scp -r /usr/local/hbase-2.3.7 root@server100:/usr/local
    scp -r /usr/local/hbase-2.3.7 root@server101:/usr/local
    scp -r /usr/local/hbase-2.3.7 root@server102:/usr/local
    
    
    • 1
    • 2
    • 3
    • 4
    • 5

    分别登录到server100、server101、server102节点,为hbase-2.3.7建立软链接

    cd /usr/local
    ln -s hbase-2.3.7 hbase
    
    • 1
    • 2

    启动hbase

    /usr/local/hbase/bin/start-hbase.sh
    
    • 1

    访问验证
    http://server103:16010/
    在这里插入图片描述

  • 相关阅读:
    2024年11月1日Github流行趋势
    2022下半年(软考中级)系统集成项目管理工程师备考开班啦!
    7_1数据结构与算法基础:::数据结构
    Cesium快速上手9-Camera和Scene中的其他函数使用
    anaconda+tensorflow+sklearn,安装过程的一些问题
    CF505B Mr. Kitayuta‘s Colorful Graph
    C语言部分复习笔记
    深度剖析monai(一) Data和Transforms部分
    转码服务serverless探索
    echarts:通过自定义工具栏来实现一些功能
  • 原文地址:https://blog.csdn.net/weixin_43169720/article/details/135765111