• VMware下Hbases完全分布式安装-1master+2slave


    资料准备

    参考博客

    Hadoop完全分布式

    Hbase完全分布式安装

    Hbase快速单机部署和伪分布式部署,完全分布式部署这里面写了Hbase配置的作用挺详细的

    全分布式下安装hbase(使用hbase自带的zookeeper)

    使用到的文件

    onedrive下载地址(不限速)

    https://mailszpteducn-my.sharepoint.com/:f:/g/personal/15020739_mail_szpt_edu_cn/Eh0lYpfEn2ZAga928a9A3HUBtIU4qwzJEN3rzjId1tApyA?e=OB68NP

    VMware和XshellXftp可以用我的,其他的你有别的版本也可以用自己的

    清华镜像

    Hadoop

    Hbase文档

    中文文档

    官方文档

    版本适配

    官网搬运的

    绿色就可用

    黄色是没测试,可能可以、可能不可以

    红色就是没法用

    我这里直接用的比较新的Hadoop3.1.3+Hbase2.2.4

    安装VMware

    提供的文件里把这个下下来,然后安装。

    image-20200506195233435

    一路装下去就好,安装完毕,第一次打开会让你输入密钥

    image-20200506195503406

    用这个生成密钥复制粘贴即可XD

    VMware网络设置

    打开控制面板

    之后一路双击

    image-20200506195807230

    image-20200506195852303

    image-20200506195927847

    这里要勾选然后双击

    然后这样设置

    然后打开VMware

    找到这里

    先给权限

    按照我给顺序一路设置好

    弄好之后一路确定

    这样VMware网络就设置好了

    安装Ubuntu(后面配置比较麻烦就不推荐了,还是老老实实用CentOS)

    之前都是用的centOS感觉安装很麻烦,这次试试Ubuntu。

    先创建一个虚拟机

    选择你的镜像文件路径

    这里随便写记住密码就好了,全名是你系统登录时的名字,用户名是你终端的名字,这里我填填反了哈哈哈

    虚拟机起名master

    位置随意

    这样设置

    自定义

    这样设置比较好

    接下来等他自己安装就好了XD,等了有几十分钟吧,回来的时候卡住了,但是重启一下虚拟机就好了。Ubuntu真的省事不知道后面会不会出啥问题

    root密码

    好吧第一个问题它的root密码默认不启动,是自动生成的每次登录都不一样

    解决办法:打开终端输入sudo passwd root

    然后输入在创建虚拟机时我叫你记住的密码

    一路走下来就OK了,Linux密码不回显的跟着提示做就好了

    中文设置

    系统自带英文,中文需要下载语言包。这个我就不写了吧,百度一下就好了。

    写到这里,再往后写我发现Ubuntu和CentOS差异太大,网络配置之类的区别很大,练得研究了。还是用回CentOS吧T^T

    安装CentOS 8(7也可以自己找教程哦)

    创建虚拟机

    image-20200506210239369

    自定义

    以下除了我列出来的全部直接下一步

    VMware暂不支持CentOS8故先选择Red Had Linux 8

    名字填master位置随意

    剩下的一直点下一步即可

    编辑虚拟机选择镜像位置

    确定后开启虚拟机

    选择安装

    语言翻到最下面选中文,你要是会别的也行hhh

    我选的最小安装,你也可以安装GUI不过可能会装的久点,记住到网络和主机名里把网连上(右上角有个滑块,点击就打开了)

    安装界面可以设置root密码和添加用户等,这里我已经添加好了,静待安装完成。

    重启

    image-20200506233043176

    输入用户名和密码(这里也可以直接输入root 和root密码进入管理员)

    这样就登录成功了

    Master网络配置

    输入cd /etc/sysconfig/network-scripts(这里告诉大家一个小技巧alt+tab可以补全命令自己试试吧)

    进入该目录后输入ls查看配置文件名

    输入vi ifcfg-ens160出现以下内容

    改成这样

    按i编辑

    按esc进入普通(命令)模式

    按“shift+:”进入命令行模式,此时输入wq即可保存并退出

    重启网络service network restart

    此时会报错:Failed to restart network.service: Unit network.service not found.

    出现这个错误的原因是CentOS8已经废弃network.service。只能通过其他方法进行网络配置包括NM命令工具集

    可以参考:https://www.cnblogs.com/RXDXB/p/11660184.html

    这里我已经完成了网络的配置,此时只需要使用这个命令使其生效即可(别问我我也不知道啥是NM)

    nmcli c reload

    如果还是不行先输入service NetworkManager start开启NetworkManager

    想要开机自启NetworkManager 输入chkconfig NetworkManager on

    NetworkManager(NetworManager)是检测网络、自动连接网络的程序。无论是无线还是有线连接,它都可以令您轻松管理。对于无线网络,网络管理器可以自动切换到最可靠的无线网络。利用网络管理器的程序可以自由切换在线和离线模式。网络管理器可以优先选择有线网络,支持 VPN。网络管理器最初由 Redhat 公司开发,现在由 GNOME 管理。
    ————————————————
    版权声明:本文为CSDN博主「xtggbmdk」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
    原文链接:https://blog.csdn.net/xtggbmdk/java/article/details/80921606

    ping 一下自己

    ping 192.168.56.110

    这样就成功了。Ctrl c停止

    然后输入shutdown now关机为下一步做准备

    从master克隆slave0和slave1

    右击master,选择克隆

    image-20200507132815330

    image-20200507141713543

    image-20200507141814282

    用同样方法克隆slave1

    完成后

    image-20200507142636837

    slave0和slave1的网络配置

    首先打开slave0登录root账户

    输入vi /etc/sysconfig/network-scripts/ifcfg-ens160最后一个字段是你的网卡名,具体是啥自己改呀。可以先进入/etc/sysconfig/network-scripts再ls即可看到

    修改ip地址即可,改为192.168.56.111

    image-20200507143456174

    image-20200507143719803

    同样的方法更改slave1的ip地址为192.168.56.112

    image-20200507144304328

    同步时间

    关闭三台虚拟机

    image-20200507144442814

    image-20200507144613003

    将三台机器都设置成这样

    image-20200507144825635

    Xshell5的安装与使用

    Xshell可以连接多台服务器,并进行命令操作

    1、安装

    双击

    image-20200507145405702

    image-20200507145458266

    位置随意

    image-20200507145610765

    其余的直接下一步就行了

    2、Xshell5的使用

    image-20200507145754170

    名字最好和虚拟机相同,ip地址对应好就行

    master:192.168.56.110

    slave0:192.168.56.111

    slave1:192.168.56.112

    image-20200507150155831

    首次连接要输入用户名和密码,记得点保存

    双击

    image-20200507152706488

    记住用户名

    image-20200507152755726

    记住密码

    image-20200507152826345

    出现如下字样就成功了

    image-20200507152905988

    其它两台从机同样的操作

    这之后只需要打开虚拟机,Xshell里输入命令就好了,Xshell里可以复制粘贴(终于不用手敲命令了yes!!!)

    Xftp5的安装与使用

    Xftp5的作用

    可以同时连接多台服务器,将多台服务器连接在一台机器上操作,这样就不用在每台服务器上进行操作,方便远程操作服务器;主要是对服务器进行文件传输操作

    Xftp5的安装

    双击

    image-20200605150243358

    image-20200605150456205

    image-20200605150518195

    后面随意就好了

    Xftp5的使用

    image-20200605150907193

    image-20200605151032367

    如果FTP协议不行就换SFTP

    防止乱码

    image-20200605151121369

    slave0和slave1用同样的方法连上

    关闭防火墙

    首先打开并登陆master服务器

    先查看防火墙状态

    systemctl status firewalld.service
    

    image-20200605161347558

    绿色部分不表示防火墙已打开

    关闭防火墙

    systemctl stop firewalld.service
    

    image-20200605161626746

    已关闭

    防止重启服务器防火墙启动

    systemctl disable firewalld.service
    

    image-20200605161804798

    这样master的防火墙就关闭了,另外两台操作相同

    设置主机名

    先在master服务器上操作’,输入下面命令

    vi /etc/sysconfig/network
    

    按 i 编辑,输入如下代码,按esc>shift+:>wq

    # Created by anaconda
    NETWORKING=yes
    HOSTNAME=master//另外两台改成slave0和slave1
    

    这样从起后又会变成localhost

    修改静态主机名

    vi /etc/hostname
    

    删掉原来的改为

    maser
    

    重启主机,就发现主机名变了,另外两台同理

    hosts设置

    如果要使用计算机名进行网络访问,需要修改hosts文件的主机名IP地址对照表,(root用户下操作)

    输入

    vi /etc/hosts
    

    再输入

    127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
    ::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
    192.168.56.110 master
    192.168.56.111 slave0
    192.168.56.112 slave1
    
    

    三台都需要这样设置

    免密钥登陆配置

    首先在master服务器输入下面命令

    ssh-keygen -t rsa
    

    然后按四次回车,出现下面内容

    image-20200605170544966

    然后输入下面命令进入ssh文件夹

    cd ~/.ssh
    

    输入下面命令可以看文件夹里面的内容

    ls -l
    

    image-20200605170706851

    然后输入下面命令把公钥文件发送到自己和其它服务器

    发送给自己

    ssh-copy-id -i id_rsa.pub root@master
    

    输入yes

    image-20200605170900345

    输入密码

    image-20200605170918538

    成功后显示如下内容

    image-20200605171047116

    然后再分别发送给slave0和slave1

    image-20200605171155057

    image-20200605171232377

    验证是否成功

    在master服务器输入下面的命令,都不需要输入密码,就说明成功了,注意每执行完一条命令都用exit退出一下再执行下一条

    ssh master
    ssh slave0
    ssh slave1
    

    image-20200605171407604

    安装JDK

    首先在master服务器的usr/local目录下新建一个java文件夹,用下面命令就可以完成

    mkdir /usr/local/java
    

    然后用Xftp连接master服务器,打开usr/local/java这个目录,把jdk-8u162-linux-x64.tar复制进去

    image-20200605182309254

    接着用下面的命令进入到该目录

    cd /usr/local/java
    

    接着用下面的命令进行解压

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

    然后就解压好了

    image-20200605183315649

    接下来开始配置环境变量,先用cd命令回到总目录

    img

    输入下面命令开始配置

    vi /root/.bash_profile
    

    按照我的配置来

    # .bash_profile
    
    # Get the aliases and functions
    if [ -f ~/.bashrc ]; then
            . ~/.bashrc
    fi
    
    # User specific environment and startup programs
    
    PATH=$PATH:$HOME/bin
    
    export PATH
    export JAVA_HOME=/usr/local/java/jdk1.8.0_162
    export PATH=$JAVA_HOME/bin:$PATH
    
    

    然后保存退出输入下面内容使环境变量生效

    source /root/.bash_profile
    

    然后输入java、javac和java -version验证,如果都出现一大堆代码说明配置成功了,如果其中有一个或多个出现不是内部或外部命令,也不是可运行的程序或批处理文件等类似语句,就说明配置失败了,需要重新配置jdk环境

    image-20200605184135102

    这样就安装好master服务器的jdk了,但是还没有安装好slave0和slave1的jdk,我们可以用下面命令把master中的jdk复制到slave0上面

    scp -r /usr/local/java root@slave0:/usr/local
    

    这时已经把jdk复制到slave0了,但是slave0的环境变量还没有配置,我们同样可以使用下面命令来复制环境变量

    scp -r /root/.bash_profile root@slave0:/root
    

    img

    然后在slave0中输入下面内容使环境变量生效

    source /root/.bash_profile
    
    java -version
    

    验证下

    这样 slave0中的jdk就安装成功了,slave1,与slave0类似,这里不做演示

    Hadoop安装与环境配置

    先用下面的命令给opt文件夹中新建一个hapoop文件夹

    mkdir /opt/hadoop
    

    image-20200605190027193

    把hadoop-3.1.3.tar.gz复制到hadoop文件夹(从左边本地拖过去即可)

    使用下面命令进入到hadoop文件夹

    cd /opt/hadoop
    

    使用下面命令把hadoop-3.1.3.tar.gz进行解压

    tar -zxvf hadoop-3.1.3.tar.gz
    

    image-20200605190907924

    使用下面命令把hadoop-2.7.5文件夹重命名成hadoop

    mv hadoop-3.1.3 hadoop
    

    image-20200605191005437

    配置hadoop-env.sh

    该文件设置的是Hadoop运行时需要的环境变量。JAVA_HOME是必须设置的,即使我们当前的系统设置了JAVA_HOME,它也是不认识的,因为Hadoop即使是在本机上执行,它也是把当前执行的环境当成远程服务器。所以这里设置的目的是确保Hadoop能正确的找到jdk。

    先用cd回到主目录

    img

    然后输入下面命令进入该文件所在的文件夹

    cd /opt/hadoop/hadoop/etc/hadoop
    

    img

    用ls就可以看到该文件

    image-20200605191317728

    然后输入下面命令打开该文件

    vi hadoop-env.sh
    

    然后修改成下面的内容

    export JAVA_HOME=/usr/local/java/jdk1.8.0_162/
    

    image-20200605191823053

    配置core-site.xml

    core-site.xm所在的目录和上面的目录一样,所以直接使用下面命令打开该文件即可

    vi core-site.xml
    

    接着把下面命令写入中,注释不用写

    <!-- 指定Hadoop所使用的文件系统schema(URL),HDFS的老大(NameNode)的地址 -->
    <property>
    	<name>fs.defaultFS</name>
    	<value>hdfs://master:9000</value>
    </property>
    <!-- 指定Hadoop运行时产生文件的储存目录,默认是/tmp/hadoop-${user.name} -->
    <property>
    	<name>hadoop.tmp.dir</name>
    	<value>/opt/hadoop/hadoopdata</value>
    </property>
    

    image-20200605192135194

    配置hdfs-site.xml

    hdfs-site.xml所在的目录和上面的目录一样,所以直接使用下面命令打开该文件即可

    vi hdfs-site.xml
    

    接着把下面命令写入中,注释不用写

    <!-- 指定HDFS副本的数量 -->
    <property>
    	<name>dfs.replication</name>
    	<value>1</value>
    </property>
    

    img

    配置yarn-site.xml

    yarn-site.xml所在的目录和上面的目录一样,所以直接使用下面命令打开该文件即可

    vi yarn-site.xml
    

    img

    接着把下面命令写入中,里面自带的注释不用删除

    <property>
    	<name>yarn.nodemanager.aux-services</name>
    	<value>mapreduce_shuffle</value>
    </property>
    <property>
    	<name>yarn.resourcemanager.address</name>
    	<value>master:18040</value>
    </property>
    <property>
    	<name>yarn.resourcemanager.scheduler.address</name>
    	<value>master:18030</value>
    </property>
    <property>
    	<name>yarn.resourcemanager.resource-tracker.address</name>
    	<value>master:18025</value>
    </property>
    <property>
    	<name>yarn.resourcemanager.admin.address</name>
    	<value>master:18141</value>
    </property>
    <property>
    	<name>yarn.resourcemanager.webapp.address</name>
    	<value>master:18088</value>
    </property>
    

    image-20200605192836598

    配置mapred-site.xml

    然后用下面命令打开该文件

    vi mapred-site.xml
    

    接着把下面命令写入中,注释不用写

    <!-- 指定mr运行时框架,这里指定在yarn上,默认是local -->
    <property>
    	<name>mapreduce.framework.name</name>
    	<value>yarn</value>
    </property>
    

    img

    配置slaves(3.0以上变为workers)

    img

    slaves所在的目录和上面的目录一样,所以直接使用下面命令打开该文件即可

    vi slaves(workers)
    

    把下面代码写进去(删掉localhost)

    master
    slave0
    slave1
    

    配置Hadoop环境变量

    先用cd命令回到总目录

    img

    输入下面命令开始配置

    vi /root/.bash_profile
    

    image-20200605194010429

    把下面命令输入进去

    export HADOOP_HOME=/opt/hadoop/hadoop
    export PATH=$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$PATH
    

    image-20200605194116048

    然后保存退出输入下面内容使环境变量生效

    source /root/.bash_profile
    

    新建Hadoop运行时产生文件的储存目录

    先用cd命令回到总目录

    img

    接着用下面命令新建目录

    mkdir /opt/hadoop/hadoopdata
    

    给slave0和slave1复制Hadoop

    用下面命令就可以把master的Hadoop复制到slave0

    scp -r /opt/hadoop root@slave0:/opt
    

    用下面命令把master的Hadoop复制到slave1

    scp -r /opt/hadoop root@slave1:/opt
    

    接着用下面命令把master的环境变量复制到slave0上

    scp -r /root/.bash_profile root@slave0:/root
    

    然后在slave0中输入下面内容使环境变量生效

    source /root/.bash_profile
    

    slave1与slave0类似,这里不做演示

    格式化文件系统

    在master中输入下面命令格式化文件系统,其余俩台服务器不用,注意该命令只能使用一次

    hadoop namenode -format
    

    启动Hadoop

    在master服务器上,先用下面命令进入Hadoop的sbin目录

    cd /opt/hadoop/hadoop/sbin
    

    然后输入下面命令启动

    start-all.sh
    

    报错(如问题指南中最后一个问题)

    解决后重新启动,各个结点显示如下信息

    image-20200605231008241

    image-20200605231908256

    image-20200605231049710

    在浏览器中输入

    192.168.56.110:9870
    

    可通过web端查看

    image-20200606091840717

    关闭Hadoop

    只需要在master服务器输入下面命令即可

    stop-all.sh
    

    Hbase安装与配置

    master节点

    新建hbase文件夹

    mkdir /opt/hbase
    

    image-20200606100937731

    把hbase-2.2.4-bin.tar.gz复制到hbase文件夹(从左边本地拖过去即可)

    使用下面命令进入到hadoop文件夹

    cd /opt/hbase
    

    使用下面命令把hbase-2.2.4-bin.tar.gz进行解压

    tar -zxvf hbase-2.2.4-bin.tar.gz
    

    重命名文件夹

    mv hbase-2.2.4 hbase
    

    image-20200606104551477

    ~/.bash-profile中配置环境变量

    vi /root/.bash_profile
    
    //添加下面两个参数
    export HBASE_HOME=/opt/hbase/hbase
    export PATH=$HBASE_HOME/bin:$PATH
    

    配置生效

    source /root/.bash_profile
    

    配置hbase-env.sh

    cd /opt/hbase/hbase/conf
    
    vi hbase-env.sh
    

    然后修改成c下面的内容

    export JAVA_HOME=/usr/local/java/jdk1.8.0_162/
    #使用自带zk,false为使用外部zk
    export HBASE_MANAGES_ZK=true
    

    image-20200606105124111

    配置hbase-site.xml

    新建zookeeper数据文件夹

    cd /opt/hbase
    
    mkdir hbasedata
    
    cd hbasedata
    
    mkdir zookeeper
    

    {$HBASE_HOME}/conf/hbase-site.xml

    cd /opt/hbase/hbase/conf
    
    vi hbase-site.xml
    
    <!--将本地文件系统更改为HDFS实例的地址,即hbase产生的数据将位于hdfs集群上 -->
      <property>
        <name>hbase.rootdir</name>
        <value>hdfs://master:9000/hbase</value>
      </property>
     <!--hbase依赖于zookeeper,指定zookeeper产生的数据位置 -->
      <property>
        <name>hbase.zookeeper.property.dataDir</name>
        <value>/opt/hbase/hbasedata/zookeeper</value>
      </property>
       <property>
            <name>hbase.master</name>
            <value>master</value>
      </property>
     
      <!--该属性默认为true -->
      <!--指示HBase以分布式模式运行 -->
      <property>
        <name>hbase.cluster.distributed</name>
        <value>true</value>
      </property>
    <!--指示使用zk的主机地址,奇数个 -->
      <property>
        <name>hbase.zookeeper.quorum</name>
        <value>master,slave0,slave1</value>
      </property>
    <property>
      <name>hbase.unsafe.stream.capability.enforce</name>
      <value>false</value>
    </property>
    

    配置regionservers

    修改{$HBASE_HOME}/conf/regionservers,原文件内容为localhost

    vi regionservers
    
    slave0
    slave1
    

    配置高可用备份master(可以不配)

    在conf下创建backup-masters文件并添加备用master节点信息

    slave0
    

    配置zookeeper服务所在的节点,在hbase-site.xml下添加

      <property>
        <name>hbase.zookeeper.quorum</name>
        <value>master,slave0,slave1</value>
      </property>
    

    给slave0和slave1复制Hbase

    用下面命令就可以把master的Hbase复制到slave0

    scp -r /opt/hbase root@slave0:/opt
    

    用下面命令就可以把master的Hbase复制到slave1

    scp -r /opt/hbase root@slave1:/opt
    

    接着用下面命令把master的环境变量复制到slave0上

    scp -r /root/.bash_profile root@slave0:/root
    

    然后在slave0中输入下面内容使环境变量生效

    source /root/.bash_profile
    

    slave1与slave0类似,这里不做演示

    启动Hbase

    先启动hdfs

    vi /opt/hadoop/hadoop/sbin/start-dfs.sh
    

    再启动Hbase

    cd /opt/hbase/hbase/bin
    
    start-hbase.sh
    

    访问web页面

    192.168.56.110:16010(master:16010也可)

    image-20200606142512401

    大功告成!!!!

    问题指南

    无法连接Xshell或者Xftp

    如果Xshell或者Xftp连接不上,看看虚拟机ping自己能不能连上,不行的话需要重启网络

    先输入第一个命令,能ping通就好,不行就再输入下面两个应该就可以了

    nmcli c reload
    nmcli networking off
    nmcli networking on
    

    Hadoop 3.0的坑

    1、hdfs的web页面默认端口是9870 yarn的web页面端口是8088
    2、配置文件中的slaves文件没了,变成了workers文件,在里面配置datanode节点
    3、在进行namenode格式化是有几个Fail,不要因此怀疑自己,只要common.Storage: Storage directory /usr/local/hadoop-3.0.2/hdfs/name has been successfully formatted. 这个提醒是存在的就没有问题
    4、在启动时,start-dfs.sh start-yarn.sh时报错

    Starting namenodes on [namenode]
    ERROR: Attempting to operate on hdfs namenode as root
    ERROR: but there is no HDFS_NAMENODE_USER defined. Aborting operation.
    Starting datanodes
    ERROR: Attempting to operate on hdfs datanode as root
    ERROR: but there is no HDFS_DATANODE_USER defined. Aborting operation.
    Starting secondary namenodes [datanode1]
    ERROR: Attempting to operate on hdfs secondarynamenode as root
    ERROR: but there is no HDFS_SECONDARYNAMENODE_USER defined. Aborting operation.
    Starting resourcemanager
    ERROR: Attempting to operate on yarn resourcemanager as root
    ERROR: but there is no YARN_RESOURCEMANAGER_USER defined. Aborting operation.
    Starting nodemanagers
    ERROR: Attempting to operate on yarn nodemanager as root
    ERROR: but there is no YARN_NODEMANAGER_USER defined. Aborting operation.
    

    解决办法:

    进入sbin目录

    cd /opt/hadoop/hadoop/sbin
    

    在里面修改四个文件

    vi start-dfs.sh
    
    vi stop-dfs.sh
    
    vi start-yarn.sh
    
    vi stop-yarn.sh
    

    注意是在文件开始空白处
    对于start-dfs.sh和stop-dfs.sh中:

    #!/usr/bin/env bash
    HDFS_DATANODE_USER=root
    HADOOP_SECURE_DN_USER=hdfs
    HDFS_NAMENODE_USER=root
    HDFS_SECONDARYNAMENODE_USER=root
    

    对于start-yarn.sh和stop-yarn.sh文件,添加下列参数:

    #!/usr/bin/env bash
    YARN_RESOURCEMANAGER_USER=root
    HADOOP_SECURE_DN_USER=yarn
    YARN_NODEMANAGER_USER=root
    

    这样就解决了

    Hmaster先打开又关闭,导致无法访问web页面

    打开日志

    报错

    image-20200606140320949

    hbase-site.xml添加配置

        <property>
          <name>hbase.unsafe.stream.capability.enforce</name>
          <value>false</value>
        </property>
    
  • 相关阅读:
    AVX2整数向量运算
    AVX2浮点向量运算
    AVX2浮点向量运算
    二进制128位整数运算
    二进制128位整数运算
    CCF201512-2 消除类游戏(100分)
    CCF201512-2 消除类游戏(100分)
    CCF201312--模拟练习试题参考答案(Java)
    CCF201312--模拟练习试题参考答案(Java)
    CCF认证历年试题集
  • 原文地址:https://www.cnblogs.com/renxuw/p/13052856.html
Copyright © 2020-2023  润新知