全球快资讯:大数据Flink进阶(十五):Flink On Yarn任务提交
Flink On Yarn任务提交
一、Flink On Yarn运行原理
Flink On Yarn即Flink任务运行在Yarn集群中,Flink On Yarn的内部实现原理如下图:
当启动一个新的Flink YARN Client会话时,客户端首先会检查所请求的资源(容器和内存)是否可用,之后,它会上传Flink配置和JAR文件到HDFS。客户端的下一步是向ResourceManager请求一个YARN容器启动ApplicationMaster。JobManager和ApplicationMaster(AM)运行在同一个容器中,一旦它们成功地启动了,AM就能够知道JobManager的地址,它会为TaskManager生成一个新的Flink配置文件(这样它才能连上JobManager),该文件也同样会被上传到HDFS。另外,AM容器还提供了Flink的Web界面服务。Flink用来提供服务的端口是由用户和应用程序ID作为偏移配置的,这使得用户能够并行执行多个YARN会话。之后,AM开始为Flink的TaskManager分配容器(Container),从HDFS下载JAR文件和修改过的配置文件,一旦这些步骤完成了,Flink就可以基于Yarn运行任务了。Flink On Yarn任务提交支持Session会话模式、Per-Job单作业模式、Application应用模式。下面分别介绍这三种模式的任务提交命令和原理。
二、代码及Yarn环境准备
1、准备代码
为了能演示出不同模式的效果,这里我们编写准备Flink代码形成一个Flink Application,该代码中包含有2个job。Flink允许在一个main方法中提交多个job任务,多Job执行的顺序不受部署模式影响,但受启动Job的调用影响,每次调用execute()或者executeAsyc()方法都会触发job执行,我们可以在一个Flink Application中执行多次execute()或者executeAsyc()方法来触发多个job执行,两者区别如下:
(资料图)
execute():该方法为阻塞方法,当一个Flink Application中执行多次execute()方法触发多个job时,下一个job的执行会被推迟到该job执行完成后再执行。executeAsyc():该方法为非阻塞方法,一旦调用该方法触发job后,后续还有job也会立即提交执行。当一个Flink Application中有多个job时,这些job之间没有直接通信的机制,所以建议编写Flink代码时一个Application中包含一个job即可,目前只有非HA的Application模式可以支持多job运行。后续打包运行包含多个job的Flink代码如下:
//1.准备环境StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment();//2.读取Socket数据 ,获取ds1和ds2DataStreamSource ds1 = env.socketTextStream("node3", 8888);DataStreamSource ds2 = env.socketTextStream("node3", 9999);//3.1 对ds1 直接输出原始数据SingleOutputStreamOperator> transDs1 = ds1.flatMap((String line, Collector> out) -> { String[] words = line.split(","); for (String word : words) { out.collect(Tuple2.of(word, 1)); }}).returns(Types.TUPLE(Types.STRING, Types.INT));transDs1.print();env.executeAsync("first job");//3.2 对ds2准备K,V格式数据 ,统计实时WordCountSingleOutputStreamOperator> tupleDS = ds2.flatMap((String line, Collector> out) -> { String[] words = line.split(","); for (String word : words) { out.collect(Tuple2.of(word, 1)); }}).returns(Types.TUPLE(Types.STRING, Types.INT));tupleDS.keyBy(tp -> tp.f0).sum(1).print();//5.execute触发执行env.execute("second job");
将以上代码进行打包,名称为"FlinkJavaCode-1.0-SNAPSHOT-jar-with-dependencies.jar",并在node3节点上启动多个socket服务
[root@node3 ~]# nc -lk 8888[root@node3 ~]# nc -lk 9999
2、yarn 环境准备
在Per-Job模式中,Flink每个job任务都会启动一个对应的Flink集群,基于Yarn提交后会在Yarn中同时运行多个实时Flink任务,在HDFS中$HADOOP_HOME/etc/hadoop/capacity-scheduler.xml中有"yarn.scheduler.capacity.maximum-am-resource-percent"配置项,该项默认值为0.1,表示Yarn集群中运行的所有ApplicationMaster的资源比例上限,默认0.1表示10%,这个参数变相控制了处于活动状态的Application个数,所以这里我们修改该值为0.5,否则后续在Yarn中运行多个Flink Application时只有一个Application处于活动运行状态,其他处于Accepted状态。
所有HDFS节点配置$HADOOP_HOME/etc/hadoop/capacity-scheduler.xml文件,修改如下配置项为0.5:
yarn.scheduler.capacity.maximum-am-resource-percent 0.5 Maximum percent of resources in the cluster which can be used to run application masters i.e. controls number of concurrent running applications.
至此,Flink On Yarn运行环境准备完毕。
三、Yarn Session模式
1、任务提交命令
Yarn Session模式首先需要在Yarn中初始化一个Flink集群(称为Flink Yarn Session 集群),开辟指定的资源,以后的Flink任务都提交到这里。这个Flink集群会常驻在YARN集群中,除非手工停止(yarn application -kill id),当手动停止yarn application对应的id时,运行在当前application上的所有flink任务都会被kill。这种方式创建的Flink集群会独占资源,不管有没有Flink任务在执行,YARN上面的其他任务都无法使用这些资源。
1.1、启动Yarn Session集群
启动Yarn Session 集群前首先保证HDFS和Yarn正常启动,这里在node5节点上来使用名称创建Yarn Session集群,命令如下:
[root@node3 ~]# cd /software/flink-1.16.0/bin/#启动Yarn Session集群,名称为lansonjy,每个TM有3个slot[root@node3 bin]# ./yarn-session.sh -s 3 -nm lansonjy -d
以上启动Yarn Session集群命令的参数解释如下:
参数 | 解释 |
---|---|
-d | --detached,Yarn Session集群启动后在后台独立运行,退出客户端,也可不指定,则客户端不退出。 |
-nm | --name,自定义在YARN上运行Application应用的名字。 |
-jm | --jobManagerMemory,指定JobManager所需内存,单位MB。 |
-tm | --taskManagerMemory,指定每个TaskManager所需的内存,单位MB。 |
-s | --slots,指定每个TaskManager上Slot的个数。 |
-id | --applicationId,指定YARN集群上的任务ID,附着到一个后台独立运行的yarn session中。 |
-qu | --queue,指定Yarn的资源队列。 |
以上命令执行完成后,可以在Yarn WebUI(https://node1:8088)中看到启动的Flink Yarn Session集群:
点击Tracking UI"ApplicationMaster"可以跳转到Flink Yarn Session集群 WebUI页面中:
目前在Yarn Session集群WebUI中看不到启动的TaskManager ,这是因为Yarn会按照提交任务的需求动态分配TaskManager数量,所以Flink 基于Yarn Session运行任务资源是动态分配的。
此外,创建出Yarn Session集群后会在node5节点/tmp/下创建一个隐藏的".yarn-properties-<用户名>" Yarn属性文件,有了该文件后,在当前节点提交Flink任务时会自动发现Yarn Session集群并进行任务提交。
1.2、向Yarn Session集群中提交作业
[root@node3 ~]# cd /software/flink-1.16.0/bin/#执行如下命令,会根据.yarn-properties-<用户名>文件,自动发现yarn session 集群[root@node3 bin]# ./flink run -c com.lanson.flinkjava.code.chapter3.FlinkAppWithMultiJob /root/FlinkJavaCode-1.0-SNAPSHOT-jar-with-dependencies.jar #也可以使用如下命令指定Yarn Session集群提交任务,-t 指定运行的模式[root@node3 bin]# ./flink run -t yarn-session -Dyarn.application.id=application_1671607810626_0001 -c com.lanson.flinkjava.code.chapter3.FlinkAppWithMultiJob /root/FlinkJavaCode-1.0-SNAPSHOT-jar-with-dependencies.jar
以上命令执行之后,可以查看对应的Yarn Session 对应的Flink集群,可以看到启动了2个Flink Job任务、启动1个TaskManager,分配了3个Slot。
1.3、任务资源测试
按照以上方式继续提交一次Flink Application,可以看到会申请新的TaskManager:
查看集群中任务列表并取消各个任务,命令如下:
#查看Yarn Session集群中任务列表 后面跟上Yarn Application ID[root@node3 bin]# ./flink list------------------ Running/Restarting Jobs -------------------87f6f9a45fd9a9533e93a94dff455b66 : first job (RUNNING)0d5cd72d8f59ed0eb51d2d64124d4859 : second job (RUNNING)cff599a2d43a33195702ca7e7512feb4 : first job (RUNNING)6498d664a8e141ed7503046c5fb9fa9a : second job (RUNNING)--------------------------------------------------------------#取消任务命令,也可以在WebUI中“cancel”取消任务[root@node3 bin]# ./flink cancel 87f6f9a45fd9a9533e93a94dff455b66 [root@node3 bin]# ./flink cancel 0d5cd72d8f59ed0eb51d2d64124d4859 [root@node3 bin]# ./flink cancel cff599a2d43a33195702ca7e7512feb4 [root@node3 bin]# ./flink cancel 6498d664a8e141ed7503046c5fb9fa9a
当任务取消后,等待30s后(resourcemanager.taskmanager-timeout=30000ms)可以看到TaskManager数量为0,说明Flink基于Yarn Session模式提交任务会动态进行资源分配。
1.4、集群停止
停止Yarn Session集群可以在Yarn WebUI中找到对应的ApplicationId,执行如下命令关闭任务即可。
[root@node3 bin]# yarn application -kill application_1671607810626_0001
2、任务提交流程
Yarn Session 模式下提交任务首先创建Yarn Session 集群,创建该集群实际上就是启动了JobManager,启动JobManager同时会启动Dispatcher和ResourceManager,当客户端提交任务时,才会启动JobMaster以及根据提交的任务需求资源情况来动态分配启动TaskManager。
Yarn Session模式下提交任务流程如下:
客户端向Yarn Session集群提交任务,客户端会将任务转换成JobGraph提交给JobManager。Dispatcher启动JobMaster并将JobGraph提交给JobMaster。JobMaster向ResourceManager请求Slot资源。ResourceManager向Yarn的资源管理器请求Container计算资源。Yarn动态启动TaskManager,启动的TaskManager会注册给ResourcemanagerResourceManager会在对应的TaskManager上划分Slot资源。TaskManager向JobMaster offer Slot资源。JobMaster将任务对应的task发送到TaskManager上执行。四、Yarn Per-Job模式
Per-Job 模式目前只有yarn支持,Per-job模式在Flink1.15中已经被弃用,后续版本可能会完全剔除。Per-Job模式就是直接由客户端向Yarn中提交Flink作业,每个作业形成一个单独的Flink集群。
1、任务提交命令
Flink On Yarn Per-Job模式提交命令如下:
[root@node5 bin]# ./flink run -t yarn-per-job -d -c com.lanson.flinkjava.code.chapter3.FlinkAppWithMultiJob /root/FlinkJavaCode-1.0-SNAPSHOT-jar-with-dependencies.jar
以上提交任务命令的参数解释如下:
参数 | 解释 |
---|---|
-t | --target,指定运行模式,可以跟在flink run 命令后,可以指定"remote", "local", "kubernetes-session", "yarn-per-job"(deprecated), "yarn-session";也可以跟在 flink run-application 命令后,可以指定"kubernetes-application", "yarn-application"。 |
-c | --class,指定运行的class主类。 |
-d | --detached,任务提交后在后台独立运行,退出客户端,也可不指定。 |
-p | --parallelism,执行应用程序的并行度。 |
以上命令提交后,我们可以通过Yarn WebUI看到有2个Application 启动,对应2个Flink的集群,进入对应的Flink集群WebUI可以看到运行提交的Flink Application中的不同Job任务:
这说明Per-Job模式针对每个Flink Job会启动一个Flink集群。
注意:在基于Yarn Per-Job模式提交任务后,会打印以下错误:
该异常是Hadoop3与Flink整合的bug(https://issues.apache.org/jira/browse/FLINK-19916),不会影响Flink任务基于Yarn提交。错误的原因是Hadoop3启动异步线程来执行一些shutdown钩子,当任务提交后对应的类加载器被释放,这些钩子在作业执行之后执行仍然持有释放的类加载器,因此抛出异常。
取消任务可以使用yarn application -kill ApplicationId也可以执行如下命令:
#取消任务命令执行后对应的 Flink集群也会停止 :flink cancel -t yarn-per-job -Dyarn.application.id=application_XXXX_YY [root@node5 bin]# ./flink cancel -t yarn-per-job -Dyarn.application.id=application_1671610064817_0002 805542d84c9944480196ef73911d1b59[root@node5 bin]# ./flink cancel -t yarn-per-job -Dyarn.application.id=application_1671610064817_0003 56365ae67b8e93b1184d22fa567d7ddf
2、任务提交流程
Flink基于Yarn Per-Job 提交任务时,在提交Flink Job作业的同时启动JobManager并启动Flink的集群,根据提交任务所需资源的情况会动态申请启动TaskManager给当前提交的job任务提供资源。
Yarn Per-Job模式下提交任务流程如下:
客户端提交Flink任务,Flink会将jar包和配置上传HDFS并向Yarn请求Container启动JobManagerYarn资源管理器分配Container资源,启动JobManager,并启动Dispatcher、ResourceManager对象。客户端会将任务转换成JobGraph提交给JobManager。Dispatcher启动JobMaster并将JobGraph提交给JobMaster。JobMaster向ResourceManager申请Slot资源。ResourceManager会向Yarn请求Container计算资源Yarn分配Container启动TaskManager,TaskManager启动后会向ResourceManager注册SlotResourceManager会在对应的TaskManager上划分Slot资源。TaskManager向JobMaster offer Slot资源。JobMaster将任务对应的task发送到TaskManager上执行。Yarn Per-job模式在客户端提交任务,如果在客户端提交大量的Flink任务会对客户端节点性能又非常大的压力,所以在Flink1.15中已经被弃用,后续版本可能会完全剔除,使用Yarn Application模式来替代。
五、Yarn Application模式
Yarn Application 与Per-Job 模式类似,只是提交任务不需要客户端进行提交,直接由JobManager来进行任务提交,每个Flink Application对应一个Flink集群,如果该Flink Application有多个job任务,所有job任务共享该集群资源,TaskManager也是根据提交的Application所需资源情况动态进行申请。
1、任务提交命令
#Yarn Application模式提交任务命令[root@node5 bin]# ./flink run-application -t yarn-application -c com.lanson.flinkjava.code.chapter3.FlinkAppWithMultiJob /root/FlinkJavaCode-1.0-SNAPSHOT-jar-with-dependencies.jar
以上参数解释同Per-Job模式,命令提交后,查看对应Yarn Application,进入到Flink Application的WebUI,可以看到2个Flink 任务共享该集群资源。
查看集群任务、取消集群任务及停止集群命令如下:
#查看Flink 集群中的Job作业:flink list -t yarn-application -Dyarn.application.id=application_XXXX_YY[root@node3 bin]# flink list -t yarn-application -Dyarn.application.id=application_1671610064817_0004------------------ Running/Restarting Jobs -------------------108a7b91cf6b797d4b61a81156cd4863 : first job (RUNNING)5adacb416f99852408224234d9027cc7 : second job (RUNNING)--------------------------------------------------------------#取消Flink集群中的Job作业:flink cancel -t yarn-application -Dyarn.application.id=application_XXXX_YY [root@node3 bin]# flink cancel -t yarn-application -Dyarn.application.id=application_1671610064817_0004 108a7b91cf6b797d4b61a81156cd4863#停止集群,当取消Flink集群中所有任务后,Flink集群停止,也可以使用yarn application -kill ApplicationID 停止集群[root@node3 bin]# yarn application -kill application_1671610064817_0004
2、任务提交流程
Flink Yarn Application模式提交任务与Per-Job模式任务提交非常类似,只是客户端不再提交一个个的Flink Job ,而是运行任务后,一次性将Application信息提交给JobManager,JobManager根据每个Flink Job作业由Dispatcher启动对应的JobMaster进行资源申请和任务提交。
关键词:
相关阅读
-
04-09
-
04-09
-
04-09
推荐阅读
-
全球快资讯:大数据Flink进阶(十五):Flink On
FlinkOnYarn即Flink任务运行在Yarn集群中,FlinkOnYarn的内部实现原理如下图:更多
2023-04-10 03:05:39
-
世界热点!奇瑞混动技术更全面 iCAR布局将做加法
4月7日晚,奇瑞集团在北京水立方举办“科技•进化——2023奇瑞汽车新能源之夜”,奇瑞集团正式公布了全新电动车品牌——i更多
2023-04-09 22:19:22
-
天天滚动:山水之间搭建帐篷!来露营吧 与星光共醉
如不能正常浏览请选用IE浏览器 天津北方网讯:山水之间搭建帐篷,围着篝火,与星光共醉,这是很多人对户外生活的向往。天气渐暖,本市周边更多
2023-04-09 20:16:04
-
每日看点!2021年独特的微信号数字有哪些 2020独
1、微信号只支持6—20个字母、数字、下划线和减号,而且必须以字母开头(不区分大小写),不支持设置中文,仅能设置1次;我们可以用一些好记住更多
2023-04-09 18:36:04
-
WTT新乡冠军赛|“河南姑娘”袁佳楠2:3惜败伯纳
河南日报客户端记者李亚伟实习生韩海林4月9日15时许,WTT新乡冠军赛首日第七场比赛见分晓,伯纳黛特·斯佐科斯3:2战胜袁佳楠。伯纳黛特·斯佐更多
2023-04-09 17:03:06
-
厦门将再办桐花旅游节 点燃乡村振兴新引擎
厦门将再办桐花旅游节点燃乡村振兴新引擎更多
2023-04-09 15:09:52
-
环球播报:控制的错觉——你是你最大的敌人
并非生活中的一切都在我们的掌控之中。相信它是在设计工作和大部分生活中完成事情的严重障碍。学习如何处理控制的错觉会让你更容易接受不在你更多
2023-04-09 13:13:58
-
每日视点!俄媒:人民币在俄市场交易量或在2023年
据俄《消息报》报道称,在2023年年底前,人民币在俄罗斯金融市场的交易量或将超过美元和欧元的总交易量。消息称,俄罗斯早在2022年就开始以更多
2023-04-09 11:23:28
时尚热图
热门标签
-
今日必看
-
精彩话题
-
资讯播报
- 全球快资讯:大数据Flink进阶(十五):Flink On Yarn任务提交
- 焦点滚动:E周看点丨奇瑞打出新能源战略“组合拳”;自游家部分服务停止
- 世界热点!奇瑞混动技术更全面 iCAR布局将做加法
- 天天滚动:山水之间搭建帐篷!来露营吧 与星光共醉
- 每日看点!2021年独特的微信号数字有哪些 2020独特的微信号id数字
- WTT新乡冠军赛|“河南姑娘”袁佳楠2:3惜败伯纳黛特·斯佐科斯
- 厦门将再办桐花旅游节 点燃乡村振兴新引擎
- 环球播报:控制的错觉——你是你最大的敌人
- 世界快资讯丨以生态促发展 共赢数字经济 | 思特奇亮相2023中国・辽宁“专精特新”中小企业博览会
- 每日视点!俄媒:人民币在俄市场交易量或在2023年底前超过美元欧元总和
- 大中型灌区累计灌溉面积9946万亩 高效供水保障春灌需求
- 每日热讯!有人入局、有人离场 新能源汽车迎“淘汰赛”
- “王者归来”,奇瑞还差一步
- “旗帜”超级架构下第三大平台——红旗混动平台HMP正式登场
- 配魔毯功能空悬/3.8s破百 岚图追光预计4月内上市
- 天天快看点丨定了!丰田开发新纯电平台,但未放弃e-TNGA
- 天天观点:公司网站制作流程培训心得_公司网站制作流程
- 【全球新要闻】23胜2平,在梅西进球的正式比赛中巴黎均保持不败
- 焦点精选!为节约开支,英国打算用驳船“装”移民
- 今日最新!诅咒之地怎么去逆风小径_诅咒之地怎么去
- 快资讯丨中国电信发布5G全连接工厂解决方案
- 世界今头条!萨里国际学院_关于萨里国际学院的简介
- 全球聚焦:奇瑞的“新招”:星途再现,高端梦继续
- 联播+丨大国外交中 习近平这样阐释中国式现代化
- 奇瑞“进阶”:发布独立新能源电动品牌iCAR,星途新产品序列星纪元
- 当前关注:中国电信云网路由交换设备(2022年)集采:中兴、新华三等企业入围
- 广东好人|梁庆宁:深耕变压器技术,让世界看到“中国造”
- 县总工会开展“四川省维护职工权益杰出律师事迹宣讲会”活动
- 3月末我国外汇储备规模增至31839亿美元
- 焦点速讯:杭州空港入境航班“搬入”T4 一体化智能闸机带来通关新体验
- 快报:天津联通携手中兴通讯打造校园潮汐场景自智化5G
- 全球新动态:黑莲花攻略手册,究竟是怎么一回事?
- 世界速看:「干掉」特斯拉,比亚迪磨刀向「宁王」
- 今日观点!全新设计/配置更豪华 新款北京X7将于4月16日上市
- 广州:购买新能源车最高补贴10000元/台
- 当前视讯!带头抵制高级AI,马斯克在怕什么
- 纯电动车的驱动电机里,藏着哪些秘密?
- 世界快播:早上几点跑步最好_一定不要错过这个时间点
- 巴西宣布重返南美洲国家联盟
- 世界消息!美媒:莫兰特涉及多个冲突案件 涉案者认为警方没有追究他的责任
- 信息:创新继续塑造未来 - 阿特拉斯·科普柯在大中华区庆祝创新150年
- 智慧停车信息系统统一标准建设
- 动态:宏杉科技成功中标“中国移动2022年至2023年全闪存存储和光纤交换机集中采购项目”!
- 中国移动与中国信通院签署战略合作框架协议
- 西子洁能:一季度新增订单17.94亿元
- 资讯推荐:拜登政府将出台有史以来最严格汽车污染规定
- 12.98万元起,秦PLUS EV 2023冠军版正式上市
- 伟巴斯特推出新EV充电系统:TurboConnect和TurboDX 2.0
- 环球焦点!英雄联盟新手玩什么英雄2020_英雄联盟新手玩什么英雄
- 今日播报!从人造肌肉获灵感 萨尔大学研究人员开发出超小电机
- VEMI实验室首次推出定制的多人自动驾驶汽车仿真器
- 从你的茶园走过 在信阳体验茶农的一天
- 焦点讯息:江淮汽车3月销量5.3万辆,纯电乘用车占比14%
- 世界播报:特斯拉员工被曝私下分享车主隐私画面 特斯拉前员工:永远不会买特斯拉
- 窟窿山挖出“金娃娃” 河南又发现一处金矿
- 世界看热讯:外观不变配置升级 新款马自达3海外发布
- 焦点日报:2023款广汽本田型格上市 售12.99万元起
- 世界简讯:上海车展亮相 北京奔驰EQE SUV正式下线
- 短讯!美国电动车补贴电池细则公布后,多数电动车税收抵免被削减
- 天天热头条丨简单实用 福特E-Transit Courier官图发布
- 【焦点热闻】中国广电5G现全面支持iPhone!将于近期推出合约套餐
- 天天关注:河南漯河召陵区:大干快上不松劲 项目建设加速跑
- 每日速读!12.98万元-17.68万元 秦PLUS EV 2023冠军版重新锚定纯电A轿价值
- 前沿资讯!一份关于春天的订单――威海铁塔公司智联业务展示
- 欠钱可以起诉吗?
- 世界热推荐:理想汽车将于上海车展发布纯电解决方案
- 奇瑞TJ-1内饰官图发布 将于4月7日亮相
- 或搭2.0T插混 曝全新奔驰AMG E53谍照
- 焦点速读:中国电信携手产业各方共促数字经济发展
- 驭“数”有道 中国电信快速织就算力“一张网”
- 当前最新:铁骨铮铮 赤胆忠魂——致敬缅怀公安英烈
- 天天微动态丨中国电信千兆网络助建“5G之城”
- 成都汽车上牌免检最新消息(持续更新)
- 世界今日讯!密歇根理工大学开发新型燃料电池 效率高达60%
- 当前关注:新型“智能层”可以提高固态电池的耐用性和效率
- 观致汽车被强执3384万,累计被执行超10亿
- 再次敲警钟!“胜通债”项目负责人被罚款30万元和5年市场禁入
- 全球热讯:中国移动荣获中国标准创新贡献奖一等奖
- 【当前热闻】第三十三届中国新闻奖他荐参评作品公示
- 世界新资讯:“成本大师”特斯拉计划扩大LFP电池使用,Semi和平价电动车都将搭载
- 广汽:3月销量23万辆,同比微增
- 4月7日机构对金融市场观点汇总
- 滚动:【国际快讯】特斯拉平价电动车或搭载LFP电池;丰田新CEO将全面调整电动车战略;电动车仅占日本2022财年销量的2.1%
- 全球新消息丨通用汽车研发技术探测紧急制动 以提升驾驶安全
- 环球新动态:北京:推进新型基础设施建设 适度超前建设双千兆网络
- 环球播报:我长大了_义乌语文中考满分作文600字 了不起的岁月_河北省
- 热点聚焦:买完怕被销售笑?超六成新能源消费者不认传统豪华品牌
- 今日报丨沃尔沃提升汽车远程解锁锁定安全性 防止利用信号干扰偷车
- 实拍哈弗全新混动SUV枭龙
- 世界速递!秦PLUS EV 2023冠军版今日上市
- 天天滚动:湖北“天价补贴”结束,标致雪铁龙何去何从?
- 【时快讯】谷歌CEO皮查伊:搜索引擎将加入AI聊天功能
- 全球通讯!南宁市2023年事业单位公开考试招聘改报今日进行
- 每日热文:德国反垄断机构将出招“治”苹果,禁止其反竞争行为
- 今日视点:售价10.28-10.98万 2023款比亚迪e2正式上市
- “价格混战”不及预期,3月乘用车零售同比持平
- 价格战殃及保值率 3月二手车预计成交145万辆
- 2023年一季度汽车投诉分析报告
- 当前聚焦:新款卡宴全球首秀 保时捷上海车展参展阵容曝光
- 同性恋是什么造成的 遗传亲密关系疏远经济等