文档章节

安装 Cloudera Manager、CDH、KUDU 随手记

balajinima
 balajinima
发布于 2017/03/20 13:10
字数 3545
阅读 2205
收藏 2

#安装 Cloudera Manager、CDH、KUDU 随手记

verson 1.0

####一、关于CDH和Cloudera Manager


CDH (Cloudera's Distribution, including Apache Hadoop),是Hadoop众多分支中的一种,由Cloudera维护,基于稳定版本的Apache Hadoop构建,并集成了很多补丁,可直接用于生产环境。

Cloudera Manager则是为了便于在集群中进行Hadoop等大数据处理相关的服务安装和监控管理的组件,对集群中主机、Hadoop、Hive、Spark等服务的安装配置管理做了极大简化。

####二、系统环境


操作系统:CentOS 6.6 x64
Cloudera Manager:5.10.0
CDH: 5.10.0
KUDU: 1.2.0

####三、安装包准备


1.Cloudera Manager仓库镜像包下载地址:

https://archive.cloudera.com/cm5/repo-as-tarball/5.10.0/cm5.10.0-centos6.tar.gz

2.CDH parcel安装包地址:

https://archive.cloudera.com/cdh5/parcels/5/CDH-5.10.0-1.cdh5.10.0.p0.41-el6.parcel

https://archive.cloudera.com/cdh5/parcels/5/CDH-5.10.0-1.cdh5.10.0.p0.41-el6.parcel.sha1

https://archive.cloudera.com/cdh5/parcels/5/manifest.json

3.kudu 的 parcel 安装包地址:

http://archive.cloudera.com/kudu/parcels/latest/KUDU-1.2.0-1.cdh5.10.0.p0.55-el6.parcel

http://archive.cloudera.com/kudu/parcels/latest/KUDU-1.2.0-1.cdh5.10.0.p0.55-el6.parcel.sha1

4.kudu 的 csd 安装包地址:

http://archive.cloudera.com/kudu/csd/KUDU-5.10.0.jar

注意: 通过 Cloudera Manager 安装parcel时sha1格式的文件需要提前修改为sha。

四、准备工作


1.更新系统(所有节点)
yum -y update
2.网络配置(所有节点)

修改hostname:

vi /etc/sysconfig/network

编辑

NETWORKING=yes
HOSTNAME= hadoop35.test.com

通过service network restart重启网络服务生效。

修改ip与主机名的对应关系

vi /etc/hosts,

编辑

10.10.25.35 hadoop35.test.com
10.10.25.36 hadoop36.test.com
10.10.25.37 hadoop37.test.com
10.10.25.38 hadoop38.test.com

10.10.25.43 hadoop43.test.com
10.10.25.44 hadoop44.test.com
10.10.25.45 hadoop45.test.com
10.10.25.46 hadoop46.test.com

注意:这里需要将每台机器的ip及主机名对应关系都写进去,本机的也要写进去,否则启动Agent的时候会提示hostname解析错误。

3.配置公钥认证(用于免密登录)

在管理节点(hadoop35.test.com)上执行

ssh-keygen -t rsa

一路回车,生成无密码的密钥对。

将公钥添加到认证文件中:

cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys

设置authorized_keys的访问权限:

chmod 600 ~/.ssh/authorized_keys

scp文件到所有受管节点( 10.10.25.35,36,37,38 和 10.10.25.43,44,45,46)的~/.ssh目录:

scp ~/.ssh/authorized_keys root@hadoop35.test.com:~/.ssh/

测试:在管理节点上ssh hadoop36.test.com,正常情况下,不需要密码就能直接登陆进去了。

注意:.ssh目录访问权限是700 authorized_keys的文件访问权限是600

4.关闭防火墙和SELinux(所有节点)

注意:需要在所有的节点上执行,因为涉及到的端口太多了,临时关闭防火墙是为了安装起来更方便,安装完毕后可以根据需要设置防火墙策略,保证集群安全。

关闭防火墙:

service iptables stop (临时关闭)  
chkconfig iptables off (重启后生效)

关闭SELINUX(实际安装过程中发现没有关闭也是可以的,不知道会不会有问题,还需进一步进行验证):

setenforce 0 (临时生效)  
修改 /etc/selinux/config 下的 SELINUX=disabled (重启后永久生效)
5.配置NTP服务

yum安装ntp(所有节点):

yum -y install ntp

在配置之前,先使用ntpdate手动同步一下时间,免得本机与对时中心时间差距太大,使得ntpd不能正常同步。这里选用us.pool.ntp.org作为对时中心,ntpdate us.pool.ntp.org

按照Cloudera 的官方建议,所有的CDH节点和Cloudea Manager节点都需要启动ntpd服务。要不然会报如下错误:

1)此角色的主机的运行状况为不良。 以下运行状况测试不良: 时钟偏差.

2)The host’s NTP service is not synchronized to any remote server.

解决方法如下: 先配置一台NTP服务,然后所有的CDH节点都作为此NTP服务的客户端。 1,NTPD服务,hadoop35.test.com,此机器负责与外部网络的NTPD服务同步标准时间,并作为局域网内的NTPD服务器。 2,NTPD客户端,10.10.25.35,36,37,38 和 10.10.25.43,44,45,46,这些机器与hadoop35.test.com上的NTPD服务同步时间。

配置步骤:

a,配置内网NTP-Server(管理节点)

(1) 允许客户机的配置

修改ntp.conf配置文件 vi /etc/ntp.conf

①、第一种配置:允许任何IP的客户机都可以进行时间同步 将restrict default kod nomodify notrap nopeer noquery这行修改成:

restrict default nomodify

②、第二种配置:只允许10.10.25.*网段的客户机进行时间同步 在restrict default nomodify notrap noquery(表示默认拒绝所有IP的时间同步)之后增加一行: restrict 10.10.25.0 mask 255.255.255.0 nomodify

(2) 同步时间设置 ①通过网络同步时间

server 0.centos.pool.ntp.org
server 1.centos.pool.ntp.org
server 2.centos.pool.ntp.org

②使用本地时间

server 127.127.1.0     # local clock
fudge  127.127.1.0 stratum 10

配置文件完成,保存退出,启动服务,执行如下命令:service ntpd start

检查是否成功,用ntpstat命令查看同步状态,出现以下状态代表启动成功:

synchronised to NTP server (80.241.0.72) at stratum 2 
time correct to within 144 ms
polling server every 64 s

如果出现异常请等待几分钟,一般等待5-10分钟才能同步。

设置ntp服务,开机自启动:chkconfig ntpd on

b,配置NTP客户端(受管节点)

修改ntp.conf配置文件 vi /etc/ntp.conf 通过 hadoop35.test.com 同步时间

server  hadoop35.test.com

配置文件完成,保存退出,启动服务,执行如下命令:service ntpd start 设置ntp服务,开机自启动:chkconfig ntpd on

客户端校验配置

ntpq -p查询上级时间服务器

ntpstat 查询状态

6.优化虚拟内存需求率(所有节点)

1)检查虚拟内存需求率

cat /proc/sys/vm/swappiness

显示如下:

60

2)临时降低虚拟内存需求率

sysctl vm.swappiness=0

3)永久降低虚拟内存需求率

使用命令 vi /etc/sysctl.conf 增加

vm.swappiness = 0

并运行如下命令使生效

sysctl -p
7.解决透明大页面问题(所有节点)

1)检查透明大页面问题

cat /sys/kernel/mm/transparent_hugepage/defrag

如果显示为:

[always] madvise never

2)临时关闭透明大页面问题

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

确认配置生效:

cat /sys/kernel/mm/transparent_hugepage/defrag

应该显示为:

always madvise [never]

3)配置开机自动生效

使用命令 vi /etc/rc.local,加入如下内容

echo never > /sys/kernel/mm/transparent_hugepage/defrag
8.安装Oracle的Java(主节点安装,其他节点卸载)

CentOS,自带OpenJdk,不过运行CDH5需要使用Oracle的Jdk,需要Java 7的支持。

卸载自带的OpenJdk,使用 rpm -qa | grep java 查询java相关的包,使用 rpm -e --nodeps 包名 卸载。或者使用 yum remove java 卸载

在这里使用了cloudera仓库中的jdk的rpm安装包,使用rpm -ivh 包名进行安装。 配置环境变量:

修改profile vi /etc/profile

export JAVA_HOME=/usr/java/jdk1.7.0_67-cloudera
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
export PATH=${JAVA_HOME}/bin:$PATH

立即生效 source /etc/profile

9.安装配置MariaDB(管理节点)

a. 确保/var/lib/mysql目录有足够大的磁盘空间

b. 卸载自带的mysql。

yum remove mysql

c. 创建MariaDB yum仓库

vi /etc/yum.repos.d/MariaDB.repo

添加以下内容

[mariadb]
name = MariaDB
baseurl = http://yum.mariadb.org/10.1/centos6-amd64
gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB
gpgcheck=1

d. 安装MariaDB

yum install MariaDB-server MariaDB-client MariaDB-devel

e. 配置my.conf

vi /etc/my.cnf	

用以下内容替换

[mysqld]
transaction-isolation = READ-COMMITTED
# Disabling symbolic-links is recommended to prevent assorted security risks;
# to do so, uncomment this line:
# symbolic-links = 0

key_buffer = 16M
key_buffer_size = 32M
max_allowed_packet = 32M
thread_stack = 256K
thread_cache_size = 64
query_cache_limit = 8M
query_cache_size = 64M
query_cache_type = 1

max_connections = 550
#expire_logs_days = 10
#max_binlog_size = 100M

#log_bin should be on a disk with enough free space. Replace '/var/lib/mysql/mysql_binary_log' with an appropriate path for your system
#and chown the specified folder to the mysql user.
log_bin=/var/lib/mysql/mysql_binary_log

binlog_format = mixed

read_buffer_size = 2M
read_rnd_buffer_size = 16M
sort_buffer_size = 8M
join_buffer_size = 8M

# InnoDB settings
innodb_file_per_table = 1
innodb_flush_log_at_trx_commit  = 2
innodb_log_buffer_size = 64M
innodb_buffer_pool_size = 4G
innodb_thread_concurrency = 8
innodb_flush_method = O_DIRECT
innodb_log_file_size = 512M

[mysqld_safe]
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid

h. 启动MariaDB

service mysql start

g. 查看MariaDB版本

mysql --version

输出

mysql  Ver 15.1 Distrib 10.1.21-MariaDB, for Linux (x86_64) using readline 5.1

h. 设置开机启动

chkconfig mysql on

i. 初始化数据库

$ sudo /usr/bin/mysql_secure_installation
[...]
Enter current password for root (enter for none):
OK, successfully used password, moving on...
[...]
Set root password? [Y/n] y
New password:
Re-enter new password:
Remove anonymous users? [Y/n] Y
[...]
Disallow root login remotely? [Y/n] N
[...]
Remove test database and access to it [Y/n] Y
[...]
Reload privilege tables now? [Y/n] Y
All done!

j. 使用mysql -uroot -p进入mysql命令行,创建数据库和用户:

create database hive DEFAULT CHARACTER SET utf8;
grant all on hive.* TO 'hive'@'%' IDENTIFIED BY 'hive';

create database hue DEFAULT CHARACTER SET utf8;
grant all on hue.* TO 'hue'@'%' IDENTIFIED BY 'hue';

create database oozie DEFAULT CHARACTER SET utf8;
grant all on oozie.* TO 'oozie'@'%' IDENTIFIED BY 'oozie';	

刷新 flush privileges;

10.安装mysql JDBC 驱动(管理节点)

下载mysql JDBC 驱动放到目录 /usr/share/java/ 并修改名为mysql-connector-java.jar 下载地址 http://www.mysql.com/downloads/connector/j/5.1.html.

五、安装配置 Cloudera Manager(管理节点)


1.建立Cloudera Manager安装文件自定义存储库

a.安装httpd服务器

查询一下是否已经安装了apache

rpm -qa httpd   

如果还没有则进行安装

yum -y install httpd 

启动apache

service httpd start

开机自启动

chkconfig httpd on

b.将Cloudera Manager仓库镜像包cm5.10.0-centos6.tar.gz

解压到/var/www/html/cm目录,文件目录结构如下

输入图片说明

2.通过rpm安装包本地安装 Cloudera Manager

到目录 /var/www/html/cm/5/RPMS/x86_64

 yum --nogpgcheck localinstall cloudera-manager-daemons-5.10.*.rpm cloudera-manager-server-5.10.*.rpm enterprise-debuginfo-5.10.*.rpm
3.Parcel和csd格式文件上传

a. 上传下列文件到Parcel包的存放路径: /opt/cloudera/parcel-repo/

	CDH-5.10.0-1.cdh5.10.0.p0.41-el6.parcel             
	CDH-5.10.0-1.cdh5.10.0.p0.41-el6.parcel.sha         
	KUDU-1.2.0-1.cdh5.10.0.p0.55-el6.parcel             
	KUDU-1.2.0-1.cdh5.10.0.p0.55-el6.parcel.sha         
	manifest.json                                       

b.上传最新的kudu csd文件到csd包存放路径: /opt/cloudera/csd/

KUDU-5.10.0.jar

最后目录结构如下:

输入图片说明

输入图片说明

4.配置 Cloudera Manager Server 数据库

使用命令scm_prepare_database.sh创建Cloudera Manager Server数据库配置文件

命令格式如下

/usr/share/cmf/schema/scm_prepare_database.sh database-type [options] database-name username password

如:

/usr/share/cmf/schema/scm_prepare_database.sh mysql -hlocalhost -uroot -p123456 --scm-host localhost scm scm scm

执行完成后生成数据库配置文件/etc/cloudera-scm-server/db.properties

# Auto-generated by scm_prepare_database.sh on Tue Feb 28 18:23:16 CST 2017
#
# For information describing how to configure the Cloudera Manager Server
# to connect to databases, see the "Cloudera Manager Installation Guide."
#
com.cloudera.cmf.db.type=mysql
com.cloudera.cmf.db.host=localhost
com.cloudera.cmf.db.name=scm
com.cloudera.cmf.db.user=scm
com.cloudera.cmf.db.password=scm
com.cloudera.cmf.db.setupType=EXTERNAL

参考链接: http://www.cloudera.com/documentation/enterprise/latest/topics/cm_ig_installing_configuring_dbs.html

5.启动Cloudera Manager Server
service cloudera-scm-server start

等待大概两分钟,访问 http://10.10.25.35:7180/ 进入管理端 (登陆名:admin 密码:admin)

6.配置

输入图片说明


输入图片说明


输入图片说明


输入图片说明


输入图片说明


输入图片说明


输入图片说明


输入图片说明


输入图片说明


输入图片说明


输入图片说明


输入图片说明


输入图片说明


输入图片说明


输入图片说明


输入图片说明


输入图片说明


输入图片说明


输入图片说明


输入图片说明


输入图片说明

六、修改impala参数

1、时区问题:

默认impala配置不是中国的时区,所以在用from_unixtime的时候,有误差。 解决方案:impala启动时加 -use_local_tz_for_unix_timestamp_conversions=true

在cdh里面 impala->配置->impala Daemon ->Impala Daemon 命令行参数高级配置代码段(安全阀)

 -use_local_tz_for_unix_timestamp_conversions=true

七、安装配置 kudu 服务

安装参考

http://www.cloudera.com/documentation/betas/kudu/latest/topics/kudu_installation.html 的 Install Kudu Using Parcels 章节。


输入图片说明


输入图片说明


输入图片说明


输入图片说明


输入图片说明

输入图片说明


输入图片说明


八、验证安装情况

登录 # impala-shell

a.查看impala-shell版本

Starting Impala Shell without Kerberos authentication
Connected to hadoop36.test.com:21000
Server version: impalad version 2.7.0-cdh5.10.0 RELEASE (build 785a073cd07e2540d521ecebb8b38161ccbd2aa2)
***********************************************************************************
Welcome to the Impala shell.
(Impala Shell v2.7.0-cdh5.10.0 (785a073) built on Fri Jan 20 12:03:56 PST 2017)

To see live updates on a query's progress, run 'set LIVE_SUMMARY=1;'.
***********************************************************************************
[hadoop36.test.com:21000] > 

执行

select version();

显示

Query: select version()
Query submitted at: 2017-03-01 11:52:01 (Coordinator: http://hadoop36.test.com:25000)
Query progress can be monitored at: http://hadoop36.test.com:25000/query_plan?query_id=3240bf5cc2cbfa7b:390c36da00000000
+------------------------------------------------------------------------------------------+
| version()                                                                                |
+------------------------------------------------------------------------------------------+
| impalad version 2.7.0-cdh5.10.0 RELEASE (build 785a073cd07e2540d521ecebb8b38161ccbd2aa2) |
| Built on Fri Jan 20 12:03:56 PST 2017                                                    |
+------------------------------------------------------------------------------------------+
Fetched 1 row(s) in 1.11s

b.使用impala-shell

CREATE DATABASE impala_kudu;

USE impala_kudu;


CREATE TABLE my_first_table (
  id BIGINT PRIMARY KEY,
  name STRING
)
PARTITION BY HASH PARTITIONS 5
STORED AS KUDU  
TBLPROPERTIES('kudu.master_addresses' = 'hadoop36.test.com:7051,hadoop37.test.com:7051,hadoop38.test.com:7051,hadoop43.test.com:7051,hadoop44.test.com:7051,hadoop45.test.com:7051,hadoop46.test.com:7051') ;

insert into my_first_table values(100,'张三');

select * from my_first_table;

九、常见问题

问题1:在主节点初始化 CM5的数据库
报错:ld-linux.so.2   bad ELF interpreter
解决:安装 glibc 和 glibc.i686
 
问题2:安装主机时报错
报错:ProtocolError: <ProtocolError for 127.0.0.1/RPC2: 401 Unauthorized>
解决:$> ps -ef | grep supervisord
$> kill -9 <processID>
/opt/cm-5.6.0/etc/init.d/cloudera-scm-agent restart
 
问题3:server启动时,日志提示端口被占用。
解决:关闭java进程。
 
问题4:web安装,当前管理的主机显示都是本地地址
解决:注释/etc/hosts 的loaclhost ,在检查agent日志的报错。
重启所有agent
重启server
 
问题5:web数据库设置,登入被拒绝
解决:grant all privileges on *.* to 'hive'@'cdh1' identified by '123456' with grant option;
FLUSH privileges;
 
问题6:web安装时,群集设置 HDFS格式失败
解决:删除原有的/dfs
 
问题7:web安装时,群集设置HDFS 创建/tmp失败
解决:ntp一定启动服务器,不能光用命令同步。(这个好像不是问题的所在,但是ntp服务必须要启动的)
还出现,再重试试试。
 
问题8:web管理页面提示时间偏差
解决:检查ntpdc -c loopinfo
Name or service not known
vim /etc/hosts
添加 本机IP对应localhost 地址

问题9
报错	JDBC driver cannot be found. Unable to find the JDBC database jar on host
解决
下载jar包: 
MySQL-connector-Java-5.1.27.jar
重命名:
mv mysql-connector-java-5.1.27.jar mysql-connector-java.jar
移动:
mv mysql-connector-java.jar  /usr/share/java/

问题10
登录用户共同私钥
私钥文件id_rsa所在位置
$ cd ~/.ssh/
将此文件下载后,在cm在线安装界面上传即可。

问题11
添加zookeeper实例错误
当有一台机器正在跑zookeeper的时候,再添加其他的,就会报错如下
Starting these new ZooKeeper Servers may cause the existing ZooKeeper Datastore to be lost. Try again after restarting any 
existing ZooKeeper Servers with outdated configurations. If you do not want to preserve the existing Datastore, you can start 
each ZooKeeper Server from its respective Status page.
将正在运行的zookeeper实例停止,然后再三台一起启动即可。

问题12
启动kudu失败,错误日志提示Service unavailable: Cannot initialize clock: Error reading clock. Clock considered unsynchronized
现状:
到kudu实例节点运行ntpstat 输出unsynchronised polling server every 64 s  发现节点未完成同步,
解决: 检查ntp服务,或等待2分钟后再查看是否完成同步

十、非root用户方案

1.所有节点添加普通用户(在本例中使用hadoop)

useradd -u 1050 hadoop

2.让普通用户获得sudo执行操作权限

编辑sudoers文件 vi /etc/sudoers

在
# %wheel        ALL=(ALL)       NOPASSWD: ALL
下增加
%hadoop        ALL=(ALL)       NOPASSWD: ALL

允许用户组hadoop里面的用户执行sudo命令,并且在执行的时候不输入密码.

3.ssh免密登录

同准备步骤中的免密登录配置方式一致,用户hadoop用户生成秘钥,拷贝到其他机器的hadoop用户名目录,注意目录权限。

参考

http://blog.csdn.net/ymh198816/article/details/52423200

http://www.cnblogs.com/jasondan/p/4011153.html?utm_source=tuicool&utm_medium=referral

http://www.cloudera.com/documentation/enterprise/latest/topics/cm_ig_install_path_b.html

https://mariadb.com/kb/en/mariadb/yum/

http://www.aboutyun.com/thread-9006-1-1.html

####卸载cloudera参考

http://www.cloudera.com/documentation/enterprise/latest/topics/cm_ig_uninstall_cm.html

© 著作权归作者所有

balajinima
粉丝 4
博文 12
码字总数 22112
作品 0
西城
高级程序员
私信 提问
如何在CDH中安装Kudu&Spark2&Kafka

1.概述 在CDH的默认安装包中,是不包含Kafka,Kudu和Spark2的,需要单独下载特定的Parcel包才能安装相应服务。本文档主要描述在离线环境下,在CentOS6.5操作系统上基于CDH5.12.1集群,使用C...

hblt-j
2018/09/04
119
1
0030-如何在CDH中安装Kudu&Spark2&Kafka

1.概述 在CDH的默认安装包中,是不包含Kafka,Kudu和Spark2的,需要单独下载特定的Parcel包才能安装相应服务。本文档主要描述在离线环境下,在CentOS6.5操作系统上基于CDH5.12.1集群,使用C...

Hadoop实操
2018/11/20
19
0
Uninstalling Cloudera Manager and CDH in SLES

一、如果在安装过程中因为某些原因没有正常完成安装,你想重新继续安装。 执行: 1、删除文件和目录 rm -Rf /usr/share/cmf /var/lib/cloudera /var/cache/yum/cloudera 2、重新启用安装程序...

ArvinHan
2015/10/15
99
0
cloudra安装hadoop集群

http://archive-primary.cloudera.com/cdh5/parcels/5.3.2/ http://www.cnblogs.com/oftenlin/p/4217670.html http://www.jianshu.com/p/57179e03795f 准备工作 以下步骤要在所有节点上执行 ......

泡海椒
2016/04/16
102
0
cm5.4和cdh5.4安装

本文例子使用单机安装 操作系统: centos6.5 内存:4G 安装中文支持包(可选操作) yum groupinstall "Chinese Support" 修改vim /etc/sysconfig/i18n 更新centos系统时间(可选操作) 1、关闭...

penngo
2015/10/14
2.2K
3

没有更多内容

加载失败,请刷新页面

加载更多

Excption与Error包结构,OOM 你遇到过哪些情况,SOF 你遇到过哪些情况

Throwable 是 Java 中所有错误与异常的超类,Throwable 包含两个子类,Error 与 Exception 。用于指示发生了异常情况。 Java 抛出的 Throwable 可以分成三种类型。 被检查异常(checked Exc...

Garphy
今天
5
0
计算机实现原理专题--二进制减法器(二)

在计算机实现原理专题--二进制减法器(一)中说明了基本原理,现准备说明如何来实现。 首先第一步255-b运算相当于对b进行按位取反,因此可将8个非门组成如下图的形式: 由于每次做减法时,我...

FAT_mt
昨天
6
0
好程序员大数据学习路线分享函数+map映射+元祖

好程序员大数据学习路线分享函数+map映射+元祖,大数据各个平台上的语言实现 hadoop 由java实现,2003年至今,三大块:数据处理,数据存储,数据计算 存储: hbase --> 数据成表 处理: hive --> 数...

好程序员官方
昨天
7
0
tabel 中含有复选框的列 数据理解

1、el-ui中实现某一列为复选框 实现多选非常简单: 手动添加一个el-table-column,设type属性为selction即可; 2、@selection-change事件:选项发生勾选状态变化时触发该事件 <el-table @sel...

everthing
昨天
6
0
【技术分享】TestFlight测试的流程文档

上架基本需求资料 1、苹果开发者账号(如还没账号先申请-苹果开发者账号申请教程) 2、开发好的APP 通过本篇教程,可以学习到ios证书申请和打包ipa上传到appstoreconnect.apple.com进行TestF...

qtb999
昨天
10
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部