Ambari2.5.2+HDP2.6.2+Centos7.3离线大数据平台搭建

1. 介绍

1.1 Ambari

Ambari 跟 Hadoop 等开源软件一样,也是 Apache Software Foundation 中的一个项目,并且是顶级项目。就 Ambari 的作用来说,就是创建、管理、监视 Hadoop 的集群,但是这里的 Hadoop 指的是 Hadoop 整个生态圈(例如 Hive,Hbase,Sqoop,Zookeeper 等), 而并不仅是特指 Hadoop。用一句话来说,Ambari 就是为了让 Hadoop 以及相关的大数据软件更容易使用的一个工具。

Ambari 自身也是一个分布式架构的软件,主要由两部分组成:Ambari Server 和 Ambari Agent。简单来说,用户通过 Ambari Server 通知 Ambari Agent 安装对应的软件;Agent 会定时地发送各个机器每个软件模块的状态给 Ambari Server,最终这些状态信息会呈现在 Ambari 的 GUI,方便用户了解到集群的各种状态,并进行相应的维护。

1.2 HDP

HDP是hortonworks的软件栈,里面包含了hadoop生态系统的所有软件项目,比如HBase,Zookeeper,Hive,Pig等等。

1.3 HDP-UTILS

HDP-UTILS是工具类库。

2. 准备工作

2.1 Ambari-HDP版本介绍

Ambari 2.5.2仅支持HDP版本可以在网站上查看
https://supportmatrix.hortonworks.com/,以及下载报告

2.2 搭建环境准备

2.2.1 软件要求

组件描述安装包

操作系统
Centos7.3CentOS-7-x86_64-DVD-1611.iso

Ambari2.5.2ambari-2.5.2.0-centos7.tar.gz

HDP2.6.2HDP-2.6.2.0-centos7-rpm.tar.gz

HDP-UTILS1.1.0.21HDP-UTILS-1.1.0.21-centos7.tar.gz

MySQL5.6/

OracleJDK8JDK 1.8.0_112jdk-8u112-linux-x64.tar.gz

X86X86-64/

2.2.2 软件下载

在下载的过程中,建议使用迅雷下载,迅雷下载速度很快;有关Ambari的安装包在官网都能找到下载路径。

Centos 7清华镜像
https://mirrors.tuna.tsinghua.edu.cn/centos/

Ambari 2.5.2安装包下载地址:
http://public-repo-1.hortonworks.com/ambari/centos7/2.x/updates/2.5.2.0/ambari-2.5.2.0-centos7.tar.gz

HDP 2.6.2 和 HDP-UTILS 1.1.0.21安装包下载地址:
https://docs.hortonworks.com/HDPDocuments/Ambari-2.5.2.0/bk_ambari-installation/content/hdp_26_repositories.html

MySQL 5.6

OracleJDK8 1.8.0_112下载地址:
https://www.oracle.com/technetwork/cn/java/javase/downloads/java-archive-javase8-2177648-zhs.html

2.3 集群节点规划准备

HostnameIPFunctions内存磁盘

yum.hdp192.168.120.77Ambari/HDP packages1G50G

nd-00.hdp192.168.120.100Ambari Server3G50G

nd-01.hdp192.168.120.101Compute node2G50G

nd-02.hdp192.168.120.102Compute node2G50G

3. 搭建虚拟机

搭建yum.hdp虚拟机,然后完成克隆,虚拟机搭建完毕。

3.1 搭建yum.hdp虚拟机

打开VMwear选择新建虚拟机

选择自定义安装

虚拟机兼容性选择

选择稍后安装操作系统

操作系统的选择

虚拟机位置与命名

处理器与内存的分配

网络连接类型的选择(NAT)

后两项按虚拟机默认即可

创建磁盘,选择容量(>=50G)

磁盘名称,默认即可

取消不需要的硬件,自定义硬件

选择不需要的硬件声卡、打印机等然后移除

点击完成

在“我的计算机”下,新建文件夹Ambari管理集群服务器

安装CentOS,选择ISO镜像文件

开启虚拟机,安装操作系统,选择第一项,安装直接CentOS 7,回车

选择英文、键盘选择美式键盘,点击Continue。

设置时间,时区选择上海

选择需要安装的软件默认minimal,然后点击Done

选择安装位置

最后选择Begin Installation(开始安装)

设置root密码,点击Done

等待系统安装完毕,重启系统

登录,安装完毕

3.2 配置yum.hdp虚拟机

3.2.1 配置静态IP

打开“编辑-虚拟网络编辑器-更改设置”

打开文件,修改如下:vi
/etc/sysconfig/network-scripts/ifcfg-ens33

重启:service network start

查看:ifconfig【安装命令:yum -y install net-tools】

3.2.2 防火墙设置

systemctl status firewalld.service# 查看防火墙的状态

systemctl stop firewalld.service# 关闭防火墙

systemctl disable firewalld.service# 设置开机不启动

systemctl is-enabled firewalld.service# 查看防火墙服务是否设置开机启动

3.2.3 设置hostname

设置hosts:vi /etc/hosts

修改:vi /etc/sysconfig/network

执行:hostnamectl set-hostname yum.hdp

3.2.4 设置阿里开源镜像yum源

访问:
https://opsx.alibaba.com/mirror

按以下步骤执行:

3.2.5 安装时间同步服务(ntp)

安装:yum install -y ntp

启动并查看状态:

systemctl start ntpd.service

systemctl status ntpd.service

设置开机自启:systemctl enable ntpd.service

3.2.6 安装并配置JDK

使用Xshell操作上传 jdk安装包,或者 rz【安装:yum install lrzsz】

创建目录:mkdir /usr/java

解压至/usr/java目录:tar -zxvf jdk-8u77-linux-x64.tar.gz -C /usr/java/

配置环境变量 vim /etc/profile

使环境变量立即生效命令:source /etc/profile

3.2.7 关闭Selinux和THP(如果不关闭THP,Hadoop的系统CPU使用率很高)

查看状态:sestatus

关闭:vim /etc/sysconfig/selinux

如果出现下述结果说明启动了THP

[root@yum ~]# cat /sys/kernel/mm/transparent_hugepage/defrag

[always] madvise never

[root@yum ~]# cat /sys/kernel/mm/transparent_hugepage/enabled

[always] madvise never

永久关闭:vim /etc/rc.d/rc.local

if test -f /sys/kernel/mm/transparent_hugepage/enabled; then

echo never > /sys/kernel/mm/transparent_hugepage/enabled

fi

if test -f /sys/kernel/mm/transparent_hugepage/defrag; then

echo never > /sys/kernel/mm/transparent_hugepage/defrag

fi

保存退出,然后赋予rc.local文件执行权限:chmod +x /etc/rc.d/rc.local

重启:reboot

3.3 克隆yum.hdp虚拟机

克隆虚拟机之前,保证当前虚拟机处于关闭状态,并修改镜像

3.3.1 开始克隆

虚拟机-管理-克隆

下一步

虚拟机中的当前状态

创建完整克隆

修改虚拟机名称和存储位置

完成,关闭

按照相同步骤,克隆多台虚拟机

修改nd-00/01/02.hdp等克隆出来的所有虚拟机mac地址

在虚拟机启动之前,并重新分配内存

3.3.2 修改参数

启动nd-00.hdp,nd-01.hdp,nd-02.hdp虚拟机,并修改虚拟机的IP地址

vi /etc/sysconfig/network-scripts/ifcfg-ens33

重启network:service network start

修改虚拟机hostname(好像不生效):vi /etc/sysconfig/network

修改虚拟机hostname:hostnamectl set-hostname nd-00.hdp

3.3.3 在nd-00.hdp虚拟机上安装mysql

下载并安装mysql【yum install wget】

wget -i -c http://repo.mysql.com/mysql-community-release-el7-5.noarch.rpm

yum -y install mysql-community-release-el7-5.noarch.rpm

yum -y install mysql-community-server

启动mysql并设置开机自启

systemctl start mysqld.service # 启动mysql

systemctl status mysqld.service # 查看mysql状态

systemctl stop mysqld.service # 关闭mysql

systemctl enable mysqld.service # 开机自启

重置密码【root/root123】:mysql_secure_installation

NOTE: RUNNING ALL PARTS OF THIS SCRIPT IS RECOMMENDED FOR ALL MySQL

SERVERS IN PRODUCTION USE! PLEASE READ EACH STEP CAREFULLY!

In order to log into MySQL to secure it, we’ll need the current

password for the root user. If you’ve just installed MySQL, and

you haven’t set the root password yet, the password will be blank,

so you should just press enter here.

Enter current password for root (enter for none): # 输入enter

OK, successfully used password, moving on…

Setting the root password ensures that nobody can log into the MySQL

root user without the proper authorisation.

Set root password? [Y/n] y# [设置root用户密码]

New password:

Re-enter new password:

Password updated successfully!

Reloading privilege tables..

… Success!

By default, a MySQL installation has an anonymous user, allowing anyone

to log into MySQL without having to have a user account created for

them. This is intended only for testing, and to make the installation

go a bit smoother. You should remove them before moving into a

production environment.

Remove anonymous users? [Y/n] y# [删除匿名用户]

… Success!

Normally, root should only be allowed to connect from ‘localhost’. This

ensures that someone cannot guess at the root password from the network.

Disallow root login remotely? [Y/n] n# [禁止root远程登录]

… skipping.

By default, MySQL comes with a database named ‘test’ that anyone can

access. This is also intended only for testing, and should be removed

before moving into a production environment.

Remove test database and access to it? [Y/n] y# [删除test数据库]

– Dropping test database…

ERROR 1008 (HY000) at line 1: Can’t drop database ‘test’; database doesn’t exist

… Failed! Not critical, keep moving…

– Removing privileges on test database…

… Success!

Reloading the privilege tables will ensure that all changes made so far

will take effect immediately.

Reload privilege tables now? [Y/n] y# [刷新权限]

… Success!

All done! If you’ve completed all of the above steps, your MySQL

installation should now be secure.

Thanks for using MySQL!

Cleaning up…

授权登录

grant all privileges on *.* to ‘root’@’%’;

flush privileges;

配置mysql编码,字符格式:vim /etc/my.cnf

重启mysql服务:systemctl restart mysqld.service

查看字符集: show variables like ‘character_set_%’;

3.3.4 在mysql数据库创建相应的用户和DB

创建ambari数据库及数据库的用户名和密码

mysql> create database ambari character set utf8;

Query OK, 1 row affected (0.00 sec)

mysql> CREATE USER ‘ambari’@’%’IDENTIFIED BY ‘Ambari123’;

Query OK, 0 rows affected (0.00 sec)

mysql> GRANT ALL PRIVILEGES ON ambari.* TO ‘ambari’@’%’;

Query OK, 0 rows affected (0.00 sec)

mysql> FLUSH PRIVILEGES;

Query OK, 0 rows affected (0.01 sec)

创建hive数据库及hive库的用户名和密码

mysql> create database hive character set utf8;

Query OK, 1 row affected (0.00 sec)

mysql> CREATE USER ‘hive’@’%’IDENTIFIED BY ‘Hive123’;

Query OK, 0 rows affected (0.00 sec)

mysql> GRANT ALL PRIVILEGES ON hive.* TO ‘hive’@’%’;

Query OK, 0 rows affected (0.00 sec)

mysql> FLUSH PRIVILEGES;

Query OK, 0 rows affected (0.01 sec)

创建oozie数据库及oozie库的用户名和密码

mysql> create database oozie character set utf8;

Query OK, 1 row affected (0.00 sec)

mysql> CREATE USER ‘oozie’@’%’IDENTIFIED BY ‘Oozie123’;

Query OK, 0 rows affected (0.00 sec)

mysql> GRANT ALL PRIVILEGES ON oozie.* TO ‘oozie’@’%’;

Query OK, 0 rows affected (0.00 sec)

mysql> FLUSH PRIVILEGES;

Query OK, 0 rows affected (0.01 sec)

下载mysql-connection-java:

yum install mysql-connector-java

查看下载后的jar包,看目录中是否有mysql-connector-java:

ls /usr/share/java

3.3.5 免密登录

nd-00.hdp ⇒ 00,01,02的免密登录:

[root@nd-00 ~]# ssh-keygen -t rsa# 一路回车

[root@nd-00 ~]# ssh-copy-id nd-00.hdp# 输入密码

[root@nd-00 ~]# ssh-copy-id nd-01.hdp# 输入密码

[root@nd-00 ~]# ssh-copy-id nd-02.hdp# 输入密码

nd-01.hdp ⇒ 01,02的免密登录:

[root@nd-01 ~]# ssh-keygen -t rsa# 一路回车

[root@nd-01 ~]# ssh-copy-id nd-01.hdp# 输入密码

[root@nd-01 ~]# ssh-copy-id nd-02.hdp# 输入密码

4. 在yum.hdp上安装Ambari

4.1 安装yum相关工具

[root@yum ~]# yum install yum-utils -y

[root@yum ~]# yum repolist

[root@yum ~]# yum install createrepo -y

4.2 安装Apache httpd

使用yum在线安装httpd:上传下载文件(借助xftp工具)

[root@yum ~]# yum install httpd -y

安装完成后,会生成 /var/www/html目录(相当于Tomcat的webapps目录),进入到/var/www/html目录下,创建ambari和hdp目录,用来存放安装文件。

[root@yum ~]# mkdir /var/www/html/ambari

[root@yum ~]# mkdir /var/www/html/hdp

[root@yum ~]# mkdir /var/www/html/hdp/HDP-UTILS-1.1.0.21

[root@yum ~]# tar -zxvf ambari-2.5.2.0-centos7.tar.gz -C /var/www/html/ambari/

[root@yum ~]# tar -zxvf HDP-2.6.2.0-centos7-rpm.tar.gz -C /var/www/html/hdp/

[root@yum ~]# tar -zxvf HDP-UTILS-1.1.0.21-centos7.tar.gz -C /var/www/html/hdp/HDP-UTILS-1.1.0.21/

启动httpd服务:

[root@yum ~]# systemctl start httpd# 启动httpd

[root@yum ~]# systemctl status httpd# 查看httpd状态

[root@yum ~]# systemctl enable httpd# 设置httpd开机自启

默认端口80,浏览器输入:http://192.168.120.77

4.3 配置本地 Repo

4.3.1 配置Ambari

下载

wget -nv http://public-repo-1.hortonworks.com/ambari/centos7/2.x/updates/2.5.2.0/ambari.repo -O /etc/yum.repos.d/ambari.repo

1

修改配置文件:vim
/etc/yum.repos.d/ambari.repo

4.3.1 配置HDP和HDP-UTILS

创建配置文件:[root@yum yum.repos.d]# touch /etc/yum.repos.d/HDP.repo

添加内容

#VERSION_NUMBER=2.6.2.0

[HDP-2.6.2.0]

name=HDP Version – HDP-2.6.2.0

baseurl=http://192.168.120.77/hdp/HDP/centos7/

gpgcheck=1

gpgkey=http://192.168.120.77/hdp/HDP/centos7/RPM-GPG-KEY/RPM-GPG-KEY-Jenkins

enabled=1

priority=1

[HDP-UTILS-1.1.0.21]

name=HDP-UTILS Version – HDP-UTILS-1.1.0.21

baseurl=http://192.168.120.77/hdp/HDP-UTILS-1.1.0.21/

gpgcheck=1

gpgkey=http://192.168.120.77/hdp/HDP-UTILS-1.1.0.21/RPM-GPG-KEY/RPM-GPG-KEY-Jenkins

enabled=1

priority=1

4.3.2 分发Ambari.repo和HDP.repo

把ambari.repo HDP.repo分发到各个节点的相同目录下

[root@yum yum.repos.d]# scp ambari.repo HDP.repo nd-00.hdp:$PWD

[root@yum yum.repos.d]# scp ambari.repo HDP.repo nd-01.hdp:$PWD

[root@yum yum.repos.d]# scp ambari.repo HDP.repo nd-02.hdp:$PWD

4.3.3 生成本地源

使用createrepo命令,创建yum本地源(软件仓库),即为存放本地特定位置的众多rpm包建立索引,描述各包所需依赖信息,并形成元数据。

[root@yum ~]# createrepo /var/www/html/hdp/HDP/centos7/

Spawning worker 0 with 51 pkgs

Spawning worker 1 with 50 pkgs

Spawning worker 2 with 50 pkgs

Spawning worker 3 with 50 pkgs

Workers Finished

Saving Primary metadata

Saving file lists metadata

Saving other metadata

Generating sqlite DBs

Sqlite DBs complete

[root@yum ~]# createrepo /var/www/html/hdp/HDP-UTILS-1.1.0.21/

Spawning worker 0 with 4 pkgs

Spawning worker 1 with 4 pkgs

Spawning worker 2 with 4 pkgs

Spawning worker 3 with 4 pkgs

Workers Finished

Saving Primary metadata

Saving file lists metadata

Saving other metadata

Generating sqlite DBs

Sqlite DBs complete

5. 安装Ambari-Server

5.1 nd-00.hdp 节点安装

[root@nd-00 ~]# yum install ambari-server

[root@nd-00 ~]# ambari-server setup

Using python /usr/bin/python

Setup ambari-server

Checking SELinux…

SELinux status is ‘disabled’

Customize user account for ambari-server daemon [y/n] (n)? y

Enter user account for ambari-server daemon (root):root# 用户

Adjusting ambari-server permissions and ownership…

Checking firewall status…

Checking JDK…

[1] Oracle JDK 1.8 + Java Cryptography Extension (JCE) Policy Files 8

[2] Oracle JDK 1.7 + Java Cryptography Extension (JCE) Policy Files 7

[3] Custom JDK

==============================================================================

Enter choice (1): 3# 选择自定义jdk

WARNING: JDK must be installed on all hosts and JAVA_HOME must be valid on all hosts.

WARNING: JCE Policy files are required for configuring Kerberos security. If you plan to use Kerberos,please make sure JCE Unlimited Strength Jurisdiction Policy Files are valid on all hosts.

Path to JAVA_HOME: /usr/java/jdk1.8.0_112 # jdk安装路径

Validating JDK on Ambari Server…done.

Completing setup…

Configuring database…

Enter advanced database configuration [y/n] (n)? y

Configuring database…

==============================================================================

Choose one of the following options:

[1] – PostgreSQL (Embedded)

[2] – Oracle

[3] – MySQL / MariaDB

[4] – PostgreSQL

[5] – Microsoft SQL Server (Tech Preview)

[6] – SQL Anywhere

[7] – BDB

==============================================================================

Enter choice (1): 3# 选择安装的mysql

Hostname (localhost): nd-00# 配置hostname

Port (3306): # 默认

Database name (ambari):

Username (ambari):

Enter Database Password (bigdata): # 输入密码不显示

Re-enter password:

Configuring ambari database…

Configuring remote database connection properties…

WARNING: Before starting Ambari Server, you must run the following DDL against the database to create the schema:
/var/lib/ambari-server/resources/Ambari-DDL-MySQL-CREATE.sql# 此处需注意,启动ambari之前需要执行此句

Proceed with configuring remote database connection properties [y/n] (y)? y

Extracting system views…

ambari-admin-2.5.2.0.298.jar

………..

Adjusting ambari-server permissions and ownership…

Ambari Server ‘setup’ completed successfully.# 安装成功

执行上面安装过程中给出的提示

# 使用root登录,设置允许远程登录

mysql> GRANT ALL PRIVILEGES ON ambari.* TO ‘ambari’@’localhost’ IDENTIFIED BY ‘Ambari123’;

Query OK, 0 rows affected, 1 warning (0.03 sec)

mysql> GRANT ALL PRIVILEGES ON ambari.* TO ‘ambari’@’%’ IDENTIFIED BY ‘Ambari123’;

Query OK, 0 rows affected, 1 warning (0.00 sec)

mysql> FLUSH PRIVILEGES;

Query OK, 0 rows affected (0.00 sec)

使用ambari登录

[root@nd-00 ~]# mysql -uambari -p

Enter password:

Welcome to the MySQL monitor. Commands end with ; or \g.

Your MySQL connection id is 4

Server version: 5.6.43 MySQL Community Server (GPL)

Copyright (c) 2000, 2019, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its

affiliates. Other names may be trademarks of their respective

owners.

Type ‘help;’ or ‘\h’ for help. Type ‘\c’ to clear the current input statement.

mysql> show databases;

+——————–+

| Database |

+——————–+

| information_schema |

| ambari |

+——————–+

2 rows in set (0.04 sec)

mysql> use ambari;

Database changed

mysql> source /var/lib/ambari-server/resources/Ambari-DDL-MySQL-CREATE.sql

mysql> show tables;

+——————————-+

| Tables_in_ambari |

+——————————-+

| ClusterHostMapping |

| QRTZ_BLOB_TRIGGERS |

| QRTZ_CALENDARS |

| QRTZ_CRON_TRIGGERS |

| QRTZ_FIRED_TRIGGERS |

| QRTZ_JOB_DETAILS |

| QRTZ_LOCKS |

| QRTZ_PAUSED_TRIGGER_GRPS |

| QRTZ_SCHEDULER_STATE |

| QRTZ_SIMPLE_TRIGGERS |

| QRTZ_SIMPROP_TRIGGERS |

| QRTZ_TRIGGERS |

| adminpermission |

| adminprincipal |

| adminprincipaltype |

| adminprivilege |

| adminresource |

| adminresourcetype |

| alert_current |

| alert_definition |

| alert_group |

| alert_group_target |

| alert_grouping |

| alert_history |

| alert_notice |

| alert_target |

| alert_target_states |

| ambari_operation_history |

| ambari_sequences |

| artifact |

| blueprint |

| blueprint_configuration |

| blueprint_setting |

| cluster_version |

| clusterconfig |

| clusterconfigmapping |

| clusters |

| clusterservices |

| clusterstate |

| confgroupclusterconfigmapping |

| configgroup |

| configgrouphostmapping |

| execution_command |

| extension |

| extensionlink |

| groups |

| host_role_command |

| host_version |

| hostcomponentdesiredstate |

| hostcomponentstate |

| hostconfigmapping |

| hostgroup |

| hostgroup_component |

| hostgroup_configuration |

| hosts |

| hoststate |

| kerberos_descriptor |

| kerberos_principal |

| kerberos_principal_host |

| key_value_store |

| members |

| metainfo |

| permission_roleauthorization |

| remoteambaricluster |

| remoteambariclusterservice |

| repo_version |

| request |

| requestoperationlevel |

| requestresourcefilter |

| requestschedule |

| requestschedulebatchrequest |

| role_success_criteria |

| roleauthorization |

| servicecomponent_history |

| servicecomponent_version |

| servicecomponentdesiredstate |

| serviceconfig |

| serviceconfighosts |

| serviceconfigmapping |

| servicedesiredstate |

| setting |

| stack |

| stage |

| topology_host_info |

| topology_host_request |

| topology_host_task |

| topology_hostgroup |

| topology_logical_request |

| topology_logical_task |

| topology_request |

| upgrade |

| upgrade_group |

| upgrade_item |

| users |

| viewentity |

| viewinstance |

| viewinstancedata |

| viewinstanceproperty |

| viewmain |

| viewparameter |

| viewresource |

| viewurl |

| widget |

| widget_layout |

| widget_layout_user_widget |

+——————————-+

105 rows in set (0.00 sec)

5.2 启动Ambari-Server

如果启动失败,关闭服务【ambari-server stop】,重新启动

[root@nd-00 ~]# ambari-server start

Using python /usr/bin/python

Starting ambari-server

Ambari Server running with administrator privileges.

Organizing resource files at /var/lib/ambari-server/resources…

Ambari database consistency check started…

Server PID at: /var/run/ambari-server/ambari-server.pid

Server out at: /var/log/ambari-server/ambari-server.out

Server log at: /var/log/ambari-server/ambari-server.log

Waiting for server start……………………………

Server started listening on 8080

DB configs consistency check: no errors and warnings were found.

Ambari Server ‘start’ completed successfully.

5.3 安装Agent

nd-00/01/02.hdp 所有节点安装ambari-agent

yum -y install ambari-agent

1

5.4 访问Ambari web页面

默认端口8080,Username:admin;Password:admin;
http://192.168.120.100:8080

6. 开始安装集群

启用安装向导创建集群,并起一个名字

选择版本

配置节点、密钥

主机确认

选择大数据组件

节点分配

分配从属和客户端

配置组件

Hive配置,测试与mysql的链接

[root@nd-00 ~]# ambari-server setup –jdbc-db=mysql –jdbc-driver=/usr/share/java/mysql-connector-java.jar

1

Ambari Metrics,SmartSense

集群整体概况,点击部署

等待启动完毕,不用担心警告,后期可以调整,搭建完成,可以在展示页面进行查看集群状态。

可以查看监控界面,可以看到大数据组件中出现错误,单个组件点开处理,由于本次搭建集群使用虚拟机,性能不好,可以少选择一些组件。

内容出处:,

声明:本网站所收集的部分公开资料来源于互联网,转载的目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。如果您发现网站上有侵犯您的知识产权的作品,请与我们取得联系,我们会及时修改或删除。文章链接:http://www.yixao.net/tech/26091.html

发表评论

登录后才能评论