Hadoop综合应用实践全套课件_第1页
Hadoop综合应用实践全套课件_第2页
Hadoop综合应用实践全套课件_第3页
Hadoop综合应用实践全套课件_第4页
Hadoop综合应用实践全套课件_第5页
已阅读5页,还剩318页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

“十四五”职业教育河南省规划教材书目Hadoop大数据开发技术项目一

大数据基础知识目录项目背景01知识准备02项目设计与准备03项目实施04项目实训05知识拓展06项目背景01从海量数据中快速获取有价值信息的技术,是IT产业颠覆性变革。政策支持:国务院《促进大数据发展行动纲要》对大数据的定义大数据技术企业需求大,应用领域广(大数据相关企业、金融、电商等)。Hadoop职业前景1.项目背景学习目标了解

大数据的基本概念、应用场景与关键技术

;Hadoop的基本概念、起源与发

展、优缺点以及新特性;熟知Hadoop的组成部分和生态系统,大数据开发的相关技能,大数据的发展趋

势与从业人员的职业发展规划;掌握Hadoop虚拟机系统搭建。知识目标会搭建Hadoop虚拟机系统环境

;会安装虚拟机,会在虚拟机上安装CentOS7操作

系统;能说清楚什么是大数据,它有什么应用场景,其主要的关键技术是什么;

能清晰明了Hadoop的组成部分和生态系统。能力目标建立知识框架和思维模式,为后

续的学习和应用打下基础;能够把握正确的技术学习路线。通过讲解大数据从业人员职业规划。素质目标知识准备02数据量巨大、种类繁多、处理速度快、价值密度低的数据集合(总结维基百科、麦肯锡等定义)。定义数据量巨大:超出传统数据库处理能力种类繁多:含结构化、半结构化、非结构化数据处理速度快:需实时/准实时处理价值密度低:需挖掘有价值信息特点2.1什么是大数据2.2大数据应用场景核心作用数据价值化(数据采集、存储、清洗、分析、可视化)。常见场景商业智能分析:市场调研、销售预测等金融风控:信用评分、欺诈检测等医疗健康:药物研发、个性化诊疗等智慧城市:交通疏导、环境监测等教育、农业、物流、零售、旅游等领域。Tableau、D3.js、ECharts、PowerBI等。数据可视化技术YARN、Mesos、Zookeeper、Kubernetes等。分布式计算技术2.3大数据关键技术HDFS、NoSQL数据库(MongoDB、Cassandra等)。数据存储技术MapReduce、Spark、Hive、Storm、Flink等。数据处理技术SSL、SSH、Kerberos等。数据安全技术开源分布式计算框架,Java开发,处理大规模数据集的存储和处理。起源:基于Google的MapReduce和GFS理论,源于Nutch项目定义HDFS(分布式文件系统)、MapReduce(计算框架)其他组件:YARN、Hive、Pig、HBase等核心组件2.4什么是Hadoop?方便添加节点,支持普通硬件。可扩展性开源,部署和维护成本低。低成本2.5为什么要用Hadoop?拆分数据并行处理,提高效率。高性能并行处理多节点存储,确保容错性和可靠性。数据冗余备份支持结构化、半结构化、非结构化数据。处理多种数据格式2003年由DougCutting和MikeCafarella研发,源于NDFS,2006年成为Apache顶级项目。起源生态系统扩展(含MapReduce、Hive、Storm、HBase等),成为大数据处理事实标准发展2.6Hadoop的起源与发展版本更新:Hadoop2.x支持实时处理,Hadoop3.x支持容器化等新特性2003年由DougCutting和MikeCafarella研发,源于NDFS,2006年成为Apache顶级项目。起源生态系统扩展(含MapReduce、Hive、Storm、HBase等),成为大数据处理事实标准发展2.6Hadoop的起源与发展版本更新:Hadoop2.x支持实时处理,Hadoop3.x支持容器化等新特性高可靠性:数据冗余和自动故障转移高扩展性:随需求扩展集群高灵活性:可选择不同模块和编程语言接口处理大数据:支持TB、PB级数据优势资源消耗大:需大量服务器、存储等配置难度高:需掌握技术细节和系统架构数据过程复杂:开发人员需花时间验证优化单一点故障隐患:可能导致集群故障劣势2.7Hadoop的优点和劣势

项目设计与准备03学习路径3.1项目设计搜集学习资料(官方文档、在线教程、社区等)学习Hadoop基本概念和组件(分布式系统基础、核心组件)学习安装、配置与操作(命令行安装,熟悉配置和命令)学习编程模型和API(MapReduce,需Java基础)学习生态系统工具(Hive、HBase、Spark等)参与项目实践(解决实际问题)。环境选择3.2项目准备配置要求环境选择:推荐Linux(Hadoop设计初衷),常用Ubuntu和CentOS(CentOS7更稳定)虚拟机工具:选择VirtualBox(开源免费、易用)。

项目实施04MapReduce(计算+资源调度)、HDFS(数据存储)、Common(辅助工具)Hadoop1.x4.1认识Hadoop组成部分MapReduce(计算)、YARN(资源调度)、HDFS(数据存储)、Common(辅助工具)Hadoop2.xYARN容器隔离、HDFS纠错码、更快数据传输、支持GPU等Hadoop3.xHDFS(存储)、MapReduce(计算)、YARN(资源管理)。狭义HadoopAmbari:集群管理工具 Kafka:分布式流处理平台Zookeeper:分布式协作系统 HBase:实时分布式数据库Hive:数据仓库软件等。广义Hadoop(生态圈)4.2认识Hadoop生态系统4.3认识大数据开发相关技能计算机网络、操作系统、数据结构、计算机组成原理。计算机基础Linux操作和shell编程基础命令、系统管理、脚本编程。MySQL操作、SQL语法(DDL、DML、DQL等)。数据库和SQL语言Java(核心)、Python(辅助)、Scala(进阶)。编程语言数据体量增长、质量提升、生态系统完善,与AI、云计算等融合。发展趋势大数据平台开发工程师:对接业务系统,提供数据接入数据仓库开发工程师:数据接入和维度建模数据挖掘算法工程师:挖掘数据业务价值大数据前端开发工程师:数据可视化呈现职业方向4.4认识大数据从业人员职业发展规划4.5Hadoop虚拟机系统搭建VirtualBox6.1(官网地址及版本选择)。虚拟机下载管理员运行安装文件,自定义路径和组件。安装虚拟机设置名称、系统类型、内存、虚拟硬盘(动态分配,50GB以上)。创建虚拟机加载镜像文件,设置语言、网络、ROOT密码,完成安装。安装CentOS7

项目实训055.1大数据基础知识书面考试简述大数据定义列举大数据应用场景说明大数据关键技术解释Hadoop及使用原因等8个问题。掌握大数据基本概念、Hadoop相关知识、开发技能等。实训目的实训内容5.2搭建Hadoop虚拟机系统实训目的安装VirtualBox和CentOS操作系统实训环境Windows10物理机,提供安装文件和镜像实训内容安装虚拟机、创建虚拟机、安装CentOS7的详细步骤

知识拓展06中国科学家和工程师研发国产操作系统“麒麟”,打破国外垄断,保障信息安全,体现协作和爱国精神。实例“团结一致,众志成城”的家国情怀和爱国意识。主题练习题一、选择题1.(

)不是大数据的定义和特点。A.数据量巨大B.价值密度低C.处理速度快

D.种类单一2.(

)不是使用Hadoop处理大数据的原因。A.高性能并行处理B.可扩展性

C.成本高

D.数据冗余备份3.大数据的关键技术不包括(

)。A.数据存储技术B.数据处理技术C.数据安全技术

D.数据连接技术4.大数据职位不包括(

)。A.大数据平台开发工程师

B.前端开发工程师C.数据挖掘算法工程师D.数据仓库开发工程师5.(

)不是Hadoop组成部分。A.HDFSB.MapReduceC.YARND.Hive6.Hadoop的优点不包括(

)。A.资源消耗小

B.高灵活性C.高扩展性D.高可靠性二、填空题1.大数据就是指数据量巨大、种类繁多、处理速度快、价值密度低的数据集合。2.在海量的各种各样类型的价值密度低的数据中,我们要进行的是

:数据采集、数据存储、数据清洗、数据分析、数据可视化。3.Hadoop框架的核心组件包括HadoopDistributedFileSystem和HadoopMapReduce。4.大数据的核心作用就是

数据价值化

。5.大数据技术的关键技术涵盖了数据存储技术、数据处理技术、数据可视化技术、数据安全技术

分布式计算技术

等多个方面。6.Hadoop是一个适合大数据的

分布式存储

计算

平台。三、问答题01大数据是指数据量巨大、种类繁多、处理速度快、价值密度低的数据集合,这些数据量通常超出传统数据库处理能力,需要通过大数据技术进行管理、存储、处理和分析。1.简述什么是大数据。02包括商业智能分析(市场调研、销售预测)、金融风控(信用评分、欺诈检测)、医疗健康(药物研发、个性化诊疗)、智慧城市(交通疏导、环境监测)、教育评估、农业生产、物流仓储、零售(如“啤酒+尿布”案例)、旅游等多个领域。2.简述大数据的应用场景。03数据存储技术:如HDFS、NoSQL数据库(MongoDB、Cassandra);数据处理技术:如MapReduce、Spark、Hive、Storm、Flink;数据可视化技术:如Tableau、D3.js、ECharts、PowerBI;数据安全技术:如SSL、SSH、Kerberos;分布式计算技术:如YARN、Mesos、Zookeeper、Kubernetes。3.简述大数据的关键技术有哪些。三、问答题04计算机基础、Linux操作和shell编程、数据库和SQL语言、编程语言简述学习大数据开发要具备哪些技能。05Hadoop1.x:核心组件为MapReduce(同时负责计算和资源调度)、HDFS(数据存储)、Common(辅助工具)。Hadoop2.x:新增YARN(负责资源调度),MapReduce仅负责计算,其他组件不变。Hadoop3.x:组成部分与2.x一致,但增加了YARN容器隔离、HDFS纠错码、更快数据传输等新特性Hadoop有哪些版本?其组成部分有什么区别?06广义Hadoop不仅包括HDFS(存储)、MapReduce(计算)、YARN(资源管理),还包括辅助框架:Ambari(集群管理工具)Kafka(分布式流处理平台)Zookeeper(分布式协作系统)HBase(实时分布式数据库)Hive(数据仓库软件)Mahout(机器学习库)ApachePig(大数据处理平台)Sqoop(关系型数据库数据采集)Flume(日志数据采集)等。简述你理解的广义的Hadoop生态圈。感谢大家观看THANKYOU“十四五”职业教育河南省规划教材书目Hadoop大数据开发技术项目二

Hadoop技术入门目录Hadoop发行版介绍01Hadoop运行模式03Hadoop集群概念02项目设计与准备04项目实施05知识目标了解:Hadoop流行的各个版本熟知:Hadoop集群的概念;Hadoop的运行模式掌握:Hadoop依赖环境的安装部署;Hadoop集群的搭建;Hadoop的基本操作。

能力目标会安装Hadoop依赖环境:会虚拟机网络配置;会安装JavaJDK;能通过复制方式创建多个虚拟机;能对主机名称与IP进行映射配置;能够设置SSH免密登录能够安装Hadoop集群:配置Hadoop配置文件、同步Hadoop配置文件、配置Hadoop环境变量能够启动并测试Hadoop集群能够搭建HadoopHA(HA表示高可用,后同)集群,解决单点故障问题。

素质目标项目以实操为主,理论为辅,培养学生手、脑并用的良好学习习惯项目帮助学生熟练掌握Hadoop的基本技能和方法,这有助于将理论知识转化为实践能力,解决实际问题

Hadoop发行版介绍01Hadoop发行版介绍

后面学习的大数据技术框架99%都是Apache开源的,所以在这里我们会学习原

生Hadoop,只要掌握了原生Hadoop的使用,后期想要操作其他发行版的Hadoop也是很

简单的,其他发行版都是会兼容原生Hadoop的。原生Hadoop的缺点是没有技术支持,遇

到问题需要自己解决,或者通过官网的社区提问,但是回复一般比较慢,也不保证能解决

问题

;还有一点就是原生Hadoop搭建集群的时候比较麻烦,需要修改很多配置文件,如

果集群机器过多的话,运维人员的压力是比较大的,等后面我们自己在搭建集群的时候就

可以感受到了。01官方原生版本ApacheHadoopHadoop发行版介绍CDH是一个商业版本,它对官方原生版本做了一些优化,提供收费技术支持,提供

界面操作,方便集群运维管理,目前在企业中使用CDH的还是比较多的。虽然CDH是收

费的,但是CDH中的一些基本功能是不收费的,可以一直使用,只有高级功能是需要付

费才能使用的。02ClouderaHadoop(CDH)Hadoop发行版介绍HDP是开源的,也提供界面操作,方便运维管理,一般互联网公司偏向于使用HDP。

目前HDP已经被CDH收购,二者属于同一个公司的产品。03HortonworksHadoop(HDP)Hadoop发行版本介绍

一般初学者都会先使用官方原生版

本ApacheHadoop,其对于入门学习最好用,但需维护的工作比较多,更新频率比较快,

稳定性相对比较差

;Cloudera在大型互联网企业中用得较多

;Hortonworks文档较好。但

在实际生产环境中,包括Yahoo、IBM、Facebook、亚马逊、阿里巴巴、华为、百度、腾

讯等实力强的公司,都基于Hadoop原生版本进行了二次开发,来构建自己的大数据系统。

其他一些公司一般都会选择CDH或者HDP,方便运维管理,否则使用原生Hadoop集群

管理多台机器,效率会非常低。Cloudera在与Hortonworks合并后,便推出了新一代大数

据平台CDP,并正在逐步停用原有的大数据平台CDH和HDP。如何选择Hadoop版本呢?Hadoop集群概念02Hadoop集群概念

集群中的一台机器,负责管理文件系统的命名空间,并记录数据块分配情况。01NameNodeHadoop集群是由多台计算机组成的分布式系统,它们协同工作以存储和处理大规模

数据集。一个典型的Hadoop集群通常包括以下组件。Hadoop集群概念

集群中的多台机器,存储实际的数据块,并向

NameNode汇报数据块的状态。02DataNodeHadoop集群概念

集群中的另

个组件,负责资源管理和任务调度,可以调度运行MapReduce、Spark等计算任务03YARNHadoop集群概念

集群中可能还运行着多种数据处理和管理工具,如Hive、HBase、Pig等,用于数据分析、查询、存储等任务。04多种工具和应用程序Hadoop集群概念

在Hadoop集群中,数据被分割和存储在多个数据节点上,通过网络传输和并行计算的方式进行处理。这种分布式存储和处理方式具有高可靠性、高扩展性和高效性,可以在更广阔的空间和更短的时间内处理大量数据。

总的来说,Hadoop集群是为大数据处理而设计的分布式计算集群,它使用了许多分

布式计算和存储技术,为用户提供了高效、稳定和可靠的大数据处理环境。Hadoop运行模式03Hadoop运行模式

默认情况下Hadoop即为该模式,用于开发和调试,不对配置文件

进行修改,使用本地的文件系统,而不是分布式的文件系统。Hadoop不会启动NameNode(名称节点)、DataNode(用于存储数据)、JobTracker、TaskTracker等守

护进程,用于对MapReduce程序的逻辑进行调试,确保程序的正确。01单机模式Hadoop的运行模式分为三种:单机模式、伪分布式模式和完全分布式模式。Hadoop运行模式Hadoop的守护进程运行在本地机器上,模拟一个小规模的集群,Hadoop启动NameNode、DataNode、JobTracker、TaskTracker这些守护进程都在同

一台机器上运行,它们是互相独立的Java进程。在这种模式下,Hadoop使用的是分布式文件系统,各个作业也是由JobTracker服务来管理的独立进程。在单机模式

之上增加了代码调试功能,允许检查内存使用情况、HDFS输入、输出及其他的守

护进程交互。它类似于完全分布式模式,因此,这种模式常用来测试Hadoop程序

的执行是否正确。02伪分布式模式Hadoop运行模式

真正的分布式,数据存储在HDFS,由3个及以上的实体机或者

虚拟机组建的集群。现在企业大量使用的就是这种模式。03完全分布式模式Hadoop运行模式

从分布式应用的角度来说,集

群中的节点由一个JobTracker和若干个TaskTracker组成,JobTracker负责任务的调度,TaskTracker负责并行执行任务。TaskTracker必须运行在DataNode上,这样便于数据的

本地计算。JobTracker和NameNode则无须在同一台机器上。在伪分布式模式下,

一台机

器既当NameNode又当DataNode,或者说既是JobTracker又是TaskTracker。没有所谓的

在多台机器上进行真正的分布式计算,故称为“伪分布式”。即使开启多个进程模拟完全分布式,也并不会真正提高程序执行的效率,这就是伪分布式模式与完全分布式模式的

区别。

那么伪分布式模式与完全分布式模式区别在哪里呢?总结

单机模式:无须任何守护进程,所有的程序都运行在同一个JVM上。在独立模式

下调试MR程序非常高效方便,所以一般该模式主要是在学习或者开发阶段调试

使用。

伪分布式模式:Hadoop守护进程运行在本地机器上,模拟一个小规模的集群,伪

分布式是完全分布式的一个特例,一般用于模拟应用。

完全分布式模式:Hadoop守护进程运行在一个集群上,是企业选择的应用模式。

项目设计与准备04项目设计与准备

两者在逻辑上分离,但

在物理上常在一起。HDFS集群负责海量数据的存储,集群中的角色主要有NameNode、DataNode、SecondaryNode。YARN集群负责海量数据运算时的资源调度,集群中的角色主

要有ResourceManager、NodeManager。01Hadoop集群主要包含两个集群:HDFS集群和YARN集群项目设计与准备MapReduce是一个分布式运算编程框架,是应用程序开发包,由用户按照编程规范进

行程序开发,打包运行在HDFS集群上,并且受到YARN集群的资源调度管理。02MapReduce项目设计与准备

Hadoop是

构。HDFS的NameNode是

主,DataNode是

;YARN的ResourceManager是主,NodeManager是从。在正式集群部署之前,首先要做规划,规划好每个主机/节点分别运行Hadoop的哪些进程.03Hadoop集群架构项目设计与准备

指导部署,没有规划图,很可能在部署过程中迷失方向,

一个小小的细节没处理

好,可能导致集群启动失败。

方便日后项目交接,便于其他人进行查询,例如查询哪些进程在哪些节点上运行等。集群规划好处项目实施05项目设计与准备Hadoop集群规划表虚拟机名称主机

IP主机名称HDFSYARNcentos7-101hp-masterNameNodeDataNodeResourceManagerNodeManagercentos7-202hp-slave1DataNodeSecondaryNodeNodeManagercentos7-303hp-slave2DataNodeNodeManager特别提示:每个虚拟机的IP网段可能都不一样,上面的主机IP需根据实际的IP

地址进行相应修改。项目实施1.虚拟机网络配置结合NAT模式和BridgedAdapter模式,在CentOS7环境里进行环境配置实现:(1)宿主机Ping通虚拟机;(2)虚拟机Ping通宿主机;(3)虚拟机Ping通外网;(4)虚拟机Ping通其他虚拟机。步骤如下:Hadoop集群规划特别提示:每个虚拟机的IP网段可能都不一样,上面的主机IP需根据实际的IP

地址进行相应修改。项目实施步骤一:虚拟机“网络”配置:打开“OracleVMVirtualBox管理器”→选中虚拟机列表中要设置的虚拟机→工具条单击“设置”按钮;步骤二:在设置对话框中选中左侧列表“网络”,发现右侧“网卡1”已经默认启用“启用网络连接”,且连接方式为“网络地址转换(NAT)”。单击“高级”按钮,发现“控制芯片”设置为“IntelPRO/1000MT桌面(82540EM)”;步骤三:在上面的基础上,选择“网卡2”选项卡。选中“启用网络连接”,连接方式选择“仅主机(Host-Only)客户端”;步骤四:修改虚拟机内网卡配置文件。为了重启后各个虚拟机的IP地址不变,需要到具体的系统中去设置网络,把各个虚拟机的IP地址固定化;步骤五:关闭防火墙。Hadoop集群规划项目实施2.安装JDK(1)下载JDK1.8安装包;(2)解压下载的JDK1.8安装包;(3)执行编辑profile文件,配置JDK环境;(4)保存profile配置,验证JDK环境。Hadoop集群规划表项目实施3.创建其他虚拟机(1)关闭虚拟机,让虚拟机处于关机状态;(2)在虚拟机首页,单击“控制”→“复制”;(3)在弹出的对话框中设置新虚拟机名称和保存路径;(4)单击“下一步”,选择“完全复制”;(5)单击“确认”后,复制第一台虚拟机;(6)进入虚拟机,修改enp0s8的IP地址;(7)依此操作,复制第二台虚拟机。Hadoop集群规划项目实施4.主机名称与IP映射配置(1)修改主机名称、IP地址;(2)修改Hosts文件,使用域名访问;(3)同步时间(发现未安装需要先安装插件);(4)测试机器的连通性。Hadoop集群规划表项目实施5.设置SSH免密登录(1)使用ssh-keygen生成SSH登录的key;(2)通过ssh-copy-id拷贝到其他所有的虚拟主机;(3)测试互相之间能否免密登录。Hadoop集群项目实施下载Hadoop修改Hadoop配置文件(1)修改Shell文件,编辑hadoop-env.sh、yarn-env.sh两个文件;(2)修改core-site.xml配置文件(3)修改hdfs-site.xml配置文件(4)修改mapred-site.xml配置文件(5)修改yarn-site.xml配置文件Hadoop集群项目实施(6)修改workers文件(7)修改Hadoop启动文件(8)把配置好的Hadoop发送到2个slave机器(9)配置Hadoop环境变量(10)NameNode格式化(11)启动和停止HDFS(12)查看节点进程状态Hadoop集群规划表Thankyou谢谢“十四五”职业教育河南省规划教材书目Hadoop大数据开发技术项目三

HDFS文件

系统入门目录HDFS项目背景01HDFS知识准备02HDFS系统架构学习03HDFS常用命令操作04HDFS文件系统的JavaAPI操作05项目实训06HDFS项目背景01HDFS为海量的数据提供了存储空间,能支持高吞吐量的数据访问。HDFS有高容错性的特点,被设计用来部署在低廉的硬件上;而且它提供高吞吐量来访问应用程序的数据,适合那些有着超大数据集的应用程序。Hadoop实现了一个分布式文件系统,其中一个组件是HDFS。HDFS文件系统HDFS作为Hadoop的基础存储设施,实现了分布式、高容错、可线性扩

展等功能,可用于多种场景,如

:网站用户行为数据存储、生态系统数据存储、气象数

据存储等。应用场景3.1项目背景学习目标了解HDFS的基本概念、数据模型、设计特点及优缺点;熟知HadoopHDFS的系统架构原理;掌握HDFS常用命令操作及JAVAAPI操作。知识目标能使用HDFS命令行进行常规操作;能使用HDFS文件系统的JAVAAPI进行项目开发;能通过Web浏览器查看与操作HDFS。能力目标以实操为主,理论为辅,培养学生手脑并用的良好学习习惯,将理论知识转化为实践能力,解决实际问题。素质目标HDFS知识准备02随着数据量增大,单个操作系统无法存储所有数据,分布式文件管理系统应运而生,HDFS是其中一种,用于管理多台机器上的文件。分布式文件系统需求首先,它是一个文件系统,用于存储文件,通过目录树来定位文件

;其次,它是分布式的,

由很多服务器联合起来实现其功能,集群

中的服务器具有各自的角色。HDFS核心组件3.2.1HDFS概述3.2.2HDFS数据模型概念HDFS数据模型就是通过文件、数据块、目录等概念,提供一种以层次化

方式组织和访问大规模数据的方法,使得分布式存储和处理变得更加高效和可靠。核心概念包括文件、数据块、名称空间、目录、数据节点和元数据等,通过层次化方式组织和访问大规模数据。数据块特点数据块是HDFS存储的基本单位,通常大小为128MB,大文件被拆分成多个数据块存储,分布在不同数据节点上。通过数据块的冗余和副本机制保证数据可靠性,当节点故障时可快速恢复数据。高容错性支持并行处理大规模数据,优化数据传输速度和处理效率,适合存储和处理大数据集。高吞吐量3.2.3HDFS设计特点Hadoop分布式文件系统HDFS是一个高容错性的系统,适合部署在廉价的机器上。HDFS能支持高吞吐量的数据访问,非常适合大规模数据集上的应用。HDFS数据模型的设计目标是高可靠性和高吞吐量。通过将大文件切分成固定大小的

数据块,并在集群中多节点上存储和备份数据块,实现了数据的冗余和容错。HDFS还支

持高并发的数据访问,可以同时处理多个读写请求。高容错性、高吞吐量、易扩展性、适合批处理、可构建在廉价机器上。优点不适合低延迟读写、不支持高并发小文件写入、小文件存储寻址时间长、仅支持数据追加、配置和管理复杂。缺点3.2.4HDFS优缺点3.3项目设计与准备1.HDFS知识准备思考:为什么需要开发HDFS?开发HDFS肯定是为了更好地支持分布式存储和计算。HDFS对于分布式中的分而治之,并行计算的支持,HDFS对于分布式中的计算向数据移动的支持等,这些都决定了HDFS是Hadoop的核心组件。HDFS的一些设计理念:(1)硬件错误硬件错误是常态而非异常。(2)流式数据访问HDFS的设计中更多地考虑了数据批处理,而不是用户交互处理。(3)大规模数据集运行在HDFS上的应用具有很大的数据集。(4)简单的一致性模型HDFS应用需要一个“一次写入、多次读取”的文件访问模型。(5)移动计算比移动数据更划算一个应用请求的计算,离它操作的数据越近就越高效。(6)异构软硬件平台间的可移植性方便了HDFS作为大规模数据应用平台的推广。HDFS系统架构学习任务3-1HDFS采用Master-Slave架构。一个HDFS集群是由一个NameNode和一定数目的DataNode组成。HDFS

暴露了文件系统的名字空间,用户能够以文件的形式在上面存储数据。

从内部看,一个文件其实被分成一个或多个数据块,这些数据块存储在一组DataNode上。Master-Slave架构NameNode是一个中心服务器,负责管理文件系统的名字空间(Namespace)

以及客户端对文件的访问。集群中的DataNode一般是一个节点一个,负责管理它所在节点上的存储。NameNode执行文件系统的名字空间操作,比如打开、关闭、重命名文件或目录,它也负责确定数据块到具体DataNode节点的映射。DataNode负责处理文件系统客户端的读写请求。在NameNode

的统一调度下进行数据块的创建、删除和复制。节点角色1.整体架构图3-1 HadoopHDFS架构集群中单一NameNode的结构大大简化了系统的架构。NameNode是所有HDFS元数据的仲裁者和管理者,这样,用户数据永远不会流过NameNode。本质上,一个File被分割为1~n个Block,这些Block存在一组DataNode中。DataNode负责Client的读、写请求。同时,DataNode也会执行来自NameNode的指令:对Block进行creation、deletion、replication等操作。(1)NameNode(nn):对应Master,它是一个主管或管理者。管理HDFS的名字空间;配置副本策略;管理数据块(Block)映射信息;处理客户端读写请求。(2)DataNode:对应Slave,NameNode下达命令,DataNode执行实际的操作。存储实际的数据块(Block);执行数据块(Block)的读或写操作。(3)Client:对应客户端。文件上传HDFS的时候,Client将文件切分成一个个的Block,然后进行上传;与NameNode交互,获取文件的位置信息;与DataNode交互,读取或者写入数据;Client提供例如NameNode格式化等一些命令来管理HDFS;Client可以通过一些命令来访问HDFS,例如对HDFS进行增、删、查、改操作。1.整体架构支持传统层次型文件组织结构,用户可创建目录并保存文件,NameNode负责维护文件系统名字空间。当前,HDFS不支持用户磁盘配额和访问权限控制,也不支持硬链接和软链接。但是HDFS架构并不妨碍实现这些特性层次结构NameNode负责维护文件系统的名字空间,任何对文件系统名字空间或属性的修改都将被NameNode记录下来。应用程序可以设置HDFS保存的文件的副本数目。文件副本的

数目称为文件的副本系数,这个信息也是由NameNode保存的。副本策略2.文件系统名字空间3.数据复制HDFS被设计成能够在一个大集群中跨机器可靠地存储超大文件。它将每个文件存储

成一系列的数据块,除了最后一个,所有的数据块都是同样大小的。为了容错,文件的

所有数据块都会有副本。每个文件的数据块大小和副本系数都是可配置的。应用程序可

以指定某个文件的副本数目。副本系数可以在文件创建的时候指定,也可以在之后改变。

HDFS

中的文件都是一次性写入的,并且严格要求在任何时候只能有一个写入者。NameNode负责管理数据块的复制,它周期性地从集群中的每个DataNode接收心跳信

号和块状态报告(Blockreport)。接收到心跳信号意味着该DataNode节点工作正常。块状

态报告包含该DataNode上所有数据块的列表。图3-2 HadoopHDFS数据复制副本存放在不同机架的节点上,减少机架间数据传输,提高写操作效率,同时保证数据可靠性和读取性能。副本存放策略读取时优先选择离客户端最近的副本,降低带宽消耗和读取延时。副本选择机制3.数据复制NameNode启动后会进入一个称为安全模式的特殊状态。在安全模式下,NameNode不会进行数据块的复制。NameNode会从所有的DataNode接收心跳信号和块状态报告安全模式NameNode使用EditLog记录元数据修改操作,FsImage存储文件系统元数据,启动时将EditLog中的事务作用于FsImage并保存。EditLog和FsImageNameNode启动时进行检查点操作,将新版本的FsImage保存到本地磁盘,删除旧的EditLog。检查点机制4.文件系统元数据持久化NameNode上保存着HDFS的名字空间。对于任何对文件系统元数据产生修改的操作,NameNode都会使用一种称为EditLog的事务日志记录下来。所

的HDFS通

协议

都是

建立

在TCP/IP协议

上。客户端通过TCP端口连接NameNode,使用ClientProtocol协议进行交互,NameNode响应来自客户端的RPC请求。客户端与NameNode交互DataNode使用DatanodeProtocol协议与NameNode交互,定期发送心跳信号和块状态报告。DataNode与NameNode交互5.通信协议6.健壮性DataNode周期性向NameNode发送心跳信号,NameNode检测到DataNode宕机后,启动数据块复制操作。磁盘数据错误处理集群均衡策略HDFS支持数据均衡策略,自动将数据从空闲空间不足的DataNode移动到其他空闲DataNode。HDFS客户端软件实现Checksum功能,计算每个数据块的校验和并保存,读取时校验数据完整性。数据完整性校验和机制NameNode可配置多个FsImage和EditLog副本,确保系统高可用性,任何修改同步到副本上。元数据磁盘错误处理快照功能快照功能支持在某一特定时刻复制数据备份。利用快照,HDFS可以在数据损坏时恢复

到过去一个已知正确的时间点。7.数据组织HDFS数据块的大小设置主要取决于磁盘传输速率。如果数据块设置得太小,会增加

寻址时间,程序一直在寻找数据块的开始位置

;如果数据块设置得过大,从磁盘传输数

据的时间会明显增加,影响数据处理速度。默认为128MB。数据块大小设置客户端创建文件的请求实际上并没有立即发送给NameNode。在初始阶段,HDFS客户端会先将文件数据缓存到本地的一个临时文件中。应用程序的写操作被透明地重定向到

这个临时文件。当这个临时文件累积的数据量超过一个数据块的大小时,客户端才会联系NameNode。Staging机制数据块在DataNode之间以流水线方式复制,提高数据写入效率。DataNode能流水线式地从前一个节点接收数据,并同时转发给下一个节点,

数据以流水线的方式从前一个DataNode复制到下一个DataNode。流水线复制当用户或应用程序删除某个文件时,这个文件并没有立刻从HDFS中删除。删除文件时,文件被转移到/trash目录,超过一定时间后NameNode删除文件,释放数据块。目前的默认策略是删除/trash中保留时间超过6小时的文件。文件删除与恢复文件副本数减小时,NameNode选择删除过剩副本,在下次心跳检

测时,会将该信息传递给DataNode。DataNode随即移除相应的数据块,从而增加集群中

的空闲空间。减小副本数8.存储空间回收9.HDFS存储流程客户端向NameNode申请读取文件,NameNode返回Block列表,客户端在DataNode上读取数据。客户端向NameNode发起请求,NameNode审核权限并告知DataNode位置,客户端向DataNode发送数据,DataNode完成副本复制,写入完成后通知NameNode记录元数据。写入流程读取流程HDFS常用命令操作任务3-21.HDFSDFS常用命令概述命令格式命令集特点HDFS提供类似其他shell的命令集,如hadoopfs、hadoopdfs和hdfsdfs,用于查看HDFS文件系统的目录结构、上传结构、创建文件等命令通用格式为“hdfsdfs-操作”,可通过“hdfsdfs-help”查看具体操作帮助。2.目录操作使用“hdfsdfs-rm-r/目录名”删除目录,需使用-r参数;如果想要彻底删除,可加-skipTrash参数跳过回收站。使用“hdfsdfs-mkdir/目录名”创建目录,需注意路径前加正斜杠。使用“hdfsdfs-ls/”列出根目录下所有目录,也可通过Web端浏览器查看目录结构。查看目录删除目录创建目录3.文件操作使用“hdfsdfs-cat/HDFS路径/文件名”输出文件内容,可使用“hdfsdfs-tail”查看文件末尾内容。输出文件内容使用“hdfsdfs-get/HDFS路径/文件名”下载文件到本地。下载操作使用“hdfsdfs-moveFromLocal”剪切文件到HDFS,或使用“hdfsdfs-copyFromLocal”复制文件到HDFS。上传操作3.文件操作使用“hdfsdfs-appendToFile”将本地文件内容追加到HDFS文件末尾。追加文件操作使用“hdfsdfs-cp”复制文件,“hdfsdfs-mv”移动文件。复制和移动文件使用“hdfsdfs-chmod”修改文件属性,“hdfsdfs-chgrp”修改组,“hdfsdfs-chown”修改所属用户。修改文件所属权限3.文件操作包括将集群设置为安全模式、生成DataNode列表、下线或上线DataNode等操作。DFSAdmin命令使用“hdfsdfs-setrep副本数/HDFS路径/文件名”设置文件副本数,实际副本数受限于DataNode节点数量。设置HDFS中文件的副本数使用“hdfsdfs-du”统计文件夹大小,“hdfsdfs-du-h”以易读方式显示,“hdfsdfs-du-s”查看汇总信息。统计信息HDFS文件系统的JavaAPI操作任务3-31.配置HDFS开发环境在系统环境变量中增加HADOOP_HOME、JAVA_HOME、MAVEN_HOME,并在Path中添加相关执行路径。从官网下载Hadoop依赖组件,解压至指定目录,下载hadoop-winutils文件并复制到Hadoopbin目录。下载依赖组件配置环境变量2.创建Java项目在src/main/resources目录下新建perties文件,配置日志输出。使用IntelliJIDEA创建Maven项目,编辑项目信息,修改Maven安装路径和本地仓库地址。在pom.xml文件中添加Hadoop客户端、JUnit、SLF4J-log4j12等依赖,确保版本与集群一致。新建Maven工程添加依赖配置日志3.基于HDFSJAVAAPI的基本操作新建测试类:参数优先级排序如下:·客户端代码中设置的值

;ClassPath下的用户自定义配置文件

;·服务器的自定义配置;·服务器的默认配置。01从客户机上传文件到Hadoop集群使用“fs.copyFromLocalFile”方法将本地文件上传到HDFS,可设置是否删除源文件和覆盖目标文件。03HDFS文件和文件夹的判断使用“fs.listStatus”方法获取文件信息数组,通过“fsFile”方法判断对象是文件还是目录。05移动与更名集群文件使用“fs.rename”方法移动或重命名文件,可修改文件名或移动到其他目录。07020406新建HDFS文件夹·使用“fs.mkdirs(newPath("/目录名"))”创建HDFS文件夹,通过浏览器验证创建成功。从集群下载文件到客户机使用“fs.copyToLocalFile”方法将HDFS文件下载到本地,可设置是否删除源文件。查看集群文件详情使用“fs.listFiles”方法获取文件信息集合,输出文件的长度、数据块大小、副本数等元数据。删除集群文件使用“fs.delete”方法删除HDFS文件,需指定路径和是否递归删除。08项目实训05项目实训一、HDFS常用命令操作实践实训目的实训环境实训内容掌握HDFS常用Shell命令操作,理解HDFS在Hadoop生态系统中的作用。宿主客户机:Windows10或11;虚拟机软件:VirtualBox6.x;虚拟机操作系统:Linux(CentOS7);Hadoop版本:3.0及以上;JDK版本:1.8及以上。包括文件上传、下载、内容输出、文件信息显示、文件和目录创建删除、内容追加、文件移动重命名、权限修改、文件夹统计、副本数设置、DFSAdmin操作等。熟悉HDFS操作的常用JavaAPI,掌握通过JavaAPI实现HDFS操作。实训目的宿主客户机:Windows10或11;虚拟机软件:VirtualBox6.x;虚拟机操作系统:Linux(CentOS7);Hadoop版本:3.0及以上;JDK版本:1.8及以上;JavaIDE:IntelliJIDEA2020及以上。实训环境包括配置开发环境、创建Java项目、基于HDFSJavaAPI的文件夹创建、文件上传下载、文件和文件夹判断、文件详情查看、文件移动重命名、文件删除等操作。实训内容项目实训二、HDFSJavaAPI操作实践数据存储安全知识拓展数据存储安全数据已成为影响社会生产的关键要素,数据安全是数字经济时代最紧迫的安全问题,需加强数据安全治理。数据安全重要性包括数据泄露风险、内部威胁、数据安全治理人才缺口、数据隐私保护不足等问题。数据安全问题在合规保障及风险管理的前提下,实现数据的开发利用,保障企业数据管理业务的持续健康发展。数据安全治理目标练习题07一、选择题1.下列(

)不是HDFS

的优点。A.高容错性

B.

高吞吐量C.易扩展性

D.高并发小文件写入2.下列(

)不是HDFS的缺点。A.构建在廉价机器上

B.不适合低延迟读写C.配置和管理相对复杂

D.小文件存储的寻址时间会超过读取时间3.下列说法错误的是

(

)A.NameNode负责管理整个文件系统元数据B.DataNode负责管理具体文件数据块存储C.SecondaryNameNode协助NameNode进行元数据的备份D.客户端请求访问HDFS都是通过向DataNode

申请来进行4.NameNode

的作用不包括下列(

)。A.管理HDFS的命名空间

B.配置副本策略C.存储实际的数据块

D.处理客户端读写请求5.Client

的作用不包括下列(

)。A.执行数据块的读或写操作B.与NameNode交互,获取文件的位置信息C.与DataNode交互,读取或者写入数据D.文件上传到HDFS时,Client将文件切分成一个个的Block,然后进行上传6.

Hadoop

的命令不包括(

)。A.hadoopfs

B.hadoop

dfsC.hdfsdfs

D.fsfs二、填空题1.HDFS是一个分布式文件系统,用于存储文件,通过目录树来定位文件。2.HDFS数据模型是指HDFS中数据的组织方式和访问方式。它是一种层次化的模型。3.HDFS是一个高度容错的系统,适合部署在廉价的机器上。4.HDFS能提供高吞吐量的数据访问,非常适合大规模数据集上的应用。5.HDFS数据模型的设计目标是高可靠性和高吞吐量。6.HDFS适合一次写入、多次读出的场景,且不支持文件的修改。7.一个HDFS集群是由一个

NameNode

和一定数目的

DataNode组成。8.FsImage

和EditLog是HDFS的核心数据结构。三、问答题01为了解决海量数据存储和高吞吐量访问问题,满足分布式存储和计算需求。1.为什么需要开发HDFS?02包括文件、数据块、名称空间、目录、数据节点和元数据等。2.简述HDFS数据模型的核心概念。03SecondaryNameNode作用协助NameNode进行元数据备份,不能作为NameNode的热备。3.SecondaryNameNode的作用是什么?能够做NameNode的热备吗?三、问答题04默认为128MB,可通过配置参数调整,影响数据存储和读写效率。简述HDFS块的大小如何进行设置。05包括写入流程和读取流程,写入时客户端向NameNode请求,NameNode分配DataNode,客户端向DataNode写入数据并复制副本;读取时客户端向NameNode申请,获取Block列表后在DataNode上读取数据。简述HDFS的存储流程。06使用HDFSJavaAPI,通过FileSystem获取文件信息并输出。编写Java程序:输出Hadoop集群的文件详情。感谢大家观看THANKYOU“十四五”职业教育河南省规划教材书目Hadoop大数据开发技术项目四

YARN资源管理知识目标了解:YARN的基本概念、YARN的优点、Hadoop中引入YARN的原因熟知:YARN的系统架构掌握:YARN常用命令操作、YARN的任务调度与管理能力目标能够使用YARN命令行进行常用操作能够进行YARN任务调度与管理、YARN生产环境核心参数配置、YARN多资源队列配置掌握YARN的基本运维工作素质目标项目以实操为主,理论为辅,培养学生手、脑并用的良好学习习惯该项目帮助学生熟练掌握YARN的基本技能和方法,有助于将理论知识转化为实践能力,解决实际问题目录YARN概述01YARN优点03YARN缘由02YARN架构0405YARN运行机制YARN组成部分06YARN概述01YARN概述资源管理器(ResourceManager)是整个集群的资源分配和调度的中心。它接收客户端的作业提交请求,并为应用程序分配资源。ResourceManager负责管理集群中的资源,包括内存、CPU、磁盘等。01资源管理器节点管理器(NodeManager)运行在每个集群节点上,负责管理该节点上的资源。NodeManager接收来自ResourceManager的指令,启动和监控容器,管理节点上的资源使用情况。02节点管理器YARN(Yet

Another

Resource

Negotiator)

是Hadoop

的一个资源管理器和作业调度器。其核心目标在于实现计算与存储的分离,以及资源管理和作业调度的分离,从而提高资源

利用率和作业调度的灵活性。YARN概述容器(Container)是YARN中的基本执行单元,它是一个虚拟的计算资源,包含了执行任务所需的CPU、内存等资源。YARN通过容器来管理和分配集群中的资源,每个应用程序可以申请一个或多个容器来执行任务。。容器YARN概述应用程序主管(ApplicationMaster)是每个应用程序的管理器,负责向资源管理器申请资源,并与节点管理器协调任务的执行。每个应用程序都有自己独立的ApplicationMaster,它负责监控和管理应用程序的执行过程。应用程序主管YARN缘由02YARN缘由在旧版Hadoop中,资源管理和作业调度是由MapReduce框架直接负责的。存在相关问题解决旧版Hadoop中的资源管理和作业调度的问题Hadoop为什么会有YARN?YARN缘由旧版Hadoop中的资源管理器是MapReduce框架的一部分,它负责整个集群的资源分配和调度。这导致资源管理器成为整个集群的瓶颈,无法有效地支持多种应用程序。单一的资源管理器YARN缘由旧版Hadoop使用的是FIFO(先进先出)调度策略,没有考虑作业的优先级和资源需求,导致资源利用率低和作业的长时间等待。低效的作业调度YARN缘由旧版的整个集群只支持MapReduce作业,不支持其他作业,例如Spark,因此需要根据不同的框架搭建多个集群。这样就会导致资源利用率低及运维成本过高,因为多个集群会导致服务环境复杂。资源利用率低和运维成本高为了解决以上问题,Hadoop引入了YARN作为新一代的资源管理和作业调度框架。YARN优点03YARN优点YARN可将计算和存储分离,以及将资源管理和作业调度分离,使得不同应用程序可以共享集群资源。这样可以提高资源利用率,充分利用集群中的闲置资源,提高整个集群的计算效率。01资源利用率提高YARN优点YARN引入了容器的概念,将资源划分为虚拟的计算单元。每个应用程序可以根据自身的需求申请一个或多个容器进行资源调度。这样可以实现更灵活的作业调度,根据不同应用程序的优先级和资源需求来进行调度,提高作业的执行效率。02灵活的作业调度

YARN优点YARN支持多种应用程序框架,如MapReduce、Spark、Hive等。不同的应用程序可以共享集群资源,提高集群的利用率。同时,YARN提供了灵活的编程接口和资源管理机制,使得开发人员可以更方便地开发和部署自己的应用程序。03多种应用程序支持

YARN优点YARN的架构设计使得Hadoop集群更加灵活和可扩展。通过增加节点管理器和资源管理器的数量,可以轻松地扩展集群的计算和存储能力,适应不同规模和类型的工作负载。。04可扩展性强

YARN优点YARN具有高可靠性和容错性,当某个节点或组件发生故障时,YARN能够自动检测并进行故障转移,保证应用程序的正常执行。。05高可靠性和容错性

以上优点使得YARN成为Hadoop生态系统中重要的组成部分。YARN架构04YARN架构资源管理器(ResourceManager)是是集群资源的仲裁者,它包括两部分:一个是可插拔式的调度器Scheduler;一个是ApplicationManager,用于管理集群中的用户作业。01ResourceManagerYARN从整体上还是属于master/slave模型,主要依赖于以下三个组件来实现功能。YARN架构每个节点上的NodeManager,管理该节点上的用户作业和工作流,也会不断发送自己Container使用情况给ResourceManager。02NodeManagerYARN从整体上还是属于master/slave模型,主要依赖于以下三个组件来实现功能。YARN架构ApplicationMaster,是用户作业生命周期的管理者,它的主要功能就是向ResourceManager(全局的)申请计算资源(Containers)并且和NodeManager交互来执行和监控具体task。03ApplicationMasterYARN从整体上还是属于master/slave模型,主要依赖于以下三个组件来实现功能。YARN架构主要概念010203Client提交作业,查询作业的运行进度,杀死作业。ResourceManager集群中唯一的全局资源管理器,负责整个系统的资源管理和分配。它主要包括两个组件,即Scheduler(调度器)及ApplicationManager(应用管理器)。。Scheduler根据既定策略为应用程序分配资源。YARN架构主要概念0405ApplicationManager负责系统中所有应用程序的管理工作,主要包括应用程序提交、与调度器协商资源以启动ApplicationMaster、监控ApplicationMaster

的运行状态,并在失败时重新启动等。NodeManagerr整个集群中有多个NodeManager,是ResourceManager在每台机器上的代理。其主要工作是负责容器的管理,并监控容器的资源使用情况,定期向ResourceManager

和Scheduler报告资源的使用报告。根据这些报告,ResourceManager

会决定对节点资源进行何种操作(分配,回收等)。。YARN架构主要概念060708Container集群资源(包含内存、CPU、磁盘、网络等)的抽象和封装。每个容器代表一组分配给应用程序的系统资源。Job/Application

YARN中需要执行的工作单元,它包括输入数据、MapReduce程序和配置信息。ApplicationMaster(AppMstr)每个作用或应用对应一个ApplicationMaster。每当Client提交一个Application时,就会新建一个ApplicationMaster。ApplicationMaster

负责向ResourceManager

申请容器资源,获得资源后,它会将待运行的程序发送到容器并启动,然后进行分布式计算。YARN组成部分05YARN组成部分处理客户端请求,如submit、kill。监控NodeManager的状态。启动或监控ApplicationMaster。负责资源的分配与调度。01ResourceManagerYARN组成部分管理单个节点上的资源。处理来自ResourceManager的命令。处理来自ApplicationMaster的命令。02NodeManagerYARN组成部分数据的切分。为应用程序申请资源并分配给内部任务。监控任务的执行与处理容错情况。03ApplicationMasterYARN组成部分作为YARN中资源的抽象。封装节点上的多维度资源,如内存、CPU、磁盘和网络等。04ContainerYARN组成部分注意要点010203YARN并不清楚用户提交的程序的运行机制。YARN只提供运算资源的调度,用户程序向YARN申请资源,YARN负责分配这些资源YARN中的主管角色称为ResourceManager。YARN组成部分注意要点0405YARN中具体提供运算资源的角色称为NodeManager。YARN与运行的用户程序完全解耦,意味着YARN上可以运行各种类型的分布式计算程序,比如MapReduce、Storm、Spark、Tez等YARN组成部分注意要点0607Spark、Storm等计算框架都可以在YARN上运行,只要它们各自的框架中有符合YARN规范的资源请求机制即可。YARN成为一个通用的资源调度

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论