Spark大数据分析与实战(Python+PySpark)课件 第1章 Spark大数据平台与环境搭建_第1页
Spark大数据分析与实战(Python+PySpark)课件 第1章 Spark大数据平台与环境搭建_第2页
Spark大数据分析与实战(Python+PySpark)课件 第1章 Spark大数据平台与环境搭建_第3页
Spark大数据分析与实战(Python+PySpark)课件 第1章 Spark大数据平台与环境搭建_第4页
Spark大数据分析与实战(Python+PySpark)课件 第1章 Spark大数据平台与环境搭建_第5页
已阅读5页,还剩73页未读 继续免费阅读

下载本文档

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

文档简介

第1章Spark大数据平台与环境搭建Spark大数据分析与实战01Spark大数据平台介绍Spark大数据环境搭建0203Python核心语法概览目录CONTENTS01Spark大数据平台介绍Spark是什么Spark与大数据的应用场景Spark编程环境(PySpark)Spark应用程序原理Spark是什么2009年,Spark诞生于伯克利大学的AMPLab实验室2010年,伯克利大学正式开源了Spark项目2013年6月,Spark成为了Apache基金会下的项目2014年2月,Spark以飞快的速度成为了Apache的顶级项目2015年至今,Spark变得愈发火爆,国内大量企业开始重点部署或者使用Spark平台2016年Spark2.0发布2019年Spark3.0发布ApacheSpark在2009年诞生于的U.C.Berkeley的AMPLab实验室,在2010

年被开源,2013年被捐赠给Apache软件基金会(ApacheSoftwareFoundation),目前已发展到3.x版本Spark是什么ApacheSpark是一种用于大数据分析与处理的分布式系统,是一个多语言的开源“数据引擎。Spark框架使用Scala语言编写,借鉴MapReduce思想,保留了分布式并行计算的优点,改进了其存在的明显缺陷,提供了丰富的操作数据的API接口,大大提高了开发效率,并在全球各行各业得到了广泛应用Spark将中间计算数据优先缓存在内存中,迭代计算时直接从内存中读取,只在必要时才将部分数据写入磁盘中,大幅提高了运算速度,还使用DAG(DirectedAcyclicGraph,有向无环图)调度程序、查询优化器和物理执行引擎,在进行离线批量处理数据时具有较高的性能,并且在实时流数据处理时也具有较高的吞吐量Spark是什么Spark提供了一个大数据分析处理的统一解决方案,可应用于批处理、交互式查询(SparkSQL)、实时流处理(SparkStreaming)、机器学习(MLlib)和图计算(GraphX)等场景,这些不同类型的处理工作可以在同一个应用中无缝实现,企业使用一个平台就可以实现不同的工程操作,减少了人力开发和平台部署的成本SparkCore是Spark大数据平台的核心模块,它实现了Spark的分布式数据集、计算任务调度、内存管理、错误恢复、存储系统交互等基本功能SparkSQL模块是强大的用来处理结构化数据的程序包,可以方便地编写SQL语句直接操作数据SparkStreaming是Spark提供的针对实时数据场合下的流式计算模块SparkMLlib模块提供了常见的机器学习程序库,包括分类、回归、聚类、协同过滤等功能SparkGraphX模块则提供了图计算的API,能在海量数据上自如地运行复杂的图算法(像导航路径的选择就是使用图计算的例子,并不是日常生活中的图像处理)Spark是什么Spark相比Hadoop具有较大优势,但它并不是用来取代Hadoop的(Spark主要用于替换Hadoop的MapReduce计算模型)。Spark不仅支持HDFS等分布式文件系统,在集群调度上还支持YARN、SparkStandalone等集群资源管理系统。Spark从诞生开始就已经很好地融入了Hadoop开源大数据生态圈,并成为其中不可或缺的重要一员。不过,Spark对机器的硬件要求相比Hadoop更高,主要是内存和CPU方面,只有这样才能发挥出它的优势Spark当前主要分为2.x和3.x两大系列版本,其中,3.x版本引入了一些新特性并在内部做了优化,考虑到2.x版本的发展时间较长且最为稳定,且3.x和2.x两者在一般的Spark应用程序开发上并无差别,所以这里将以Spark2.4.8为例进行讲解Spark与大数据的应用场景Spark与Excel都是功能强大的数据处理工具,Excel是一个电子表格软件,简单易用,支持对各种数据的可视化展示,还支持VBA脚本编程,可以实现对数据的各种灵活处理和变换,但只能在单机上运行,处理的数据量有限,不适合大数据处理场合。Spark可以在数千台计算机的集群环境下运行,具有强大的数据处理能力,这一点是Excel这类软件无法比拟的Excel电子表格软件Spark大数据处理环境Spark与大数据的应用场景Spark是大数据领域的分布式计算平台,国内外许多公司都在使用Spark帮助简化具有挑战性的密集型计算任务美团生活服务电子商务平台上的点击、浏览、下单支付行为等都会产生海量的日志,通过汇总、处理、分析、挖掘与学习,为美团业务的各种推荐、搜索系统甚至企业战略目标的制定提供客观的数据支撑阿里在搜索和广告业务,通过Spark解决了多次迭代的机器学习算法和高计算复杂度的算法等问题,利用GraphX解决了许多生产方面的问题,如基于度分布的中枢节点发现、基于最大连通图的社区发现等近年我国政府治理活动中的大数据应用场景也不断拓展,“最多跑一次”“掌上办”等服务新模式不断涌现,浙江推行的“浙里办”和“杭州城市数据大脑”便捷、高效的民生服务走在了全国的前列Spark编程环境(PySpark)Spark目前提供了包括Java、Scala、Python、R在内的4种编程语言的API接口。随着数据科学、人工智能的日益发展,特别是人工智能与大数据技术的结合,

加上Python语言具有像英语一样的语法学习起来简单易懂,通过PySpark使用Python语言就能进行Spark的编程工作Spark编程环境(PySpark)PySpark只是在Spark基础上做了一层API接口的封装,支持绝大多数的Spark框架功能,像SparkCore、SparkSQL、SparkStreaming、MLlib等,因此只要掌握了Python的基本语法,就能够使用Python代码来调用Spark的各种功能,减少了学习多编程语言的困扰在实际工作中,经常要用到多种数据处理工具以满足不同的业务需求,其中使用较多的是SQL、Pandas和Spark这三大工具,PySpark支持这几种数据处理工具之间灵活切换和组合,为Spark的大数据处理提供了很好的补充Spark应用程序原理Spark应用程序通常运行在集群环境中,

一般包含ClusterManager集群管理节点、Master主节点、Worker工作节点等几个部分,运行流程与普通单机应用程序相比,差别较大(1)Client客户端将代码提交到集群的主节点,主节点随即启动一个Driver进程负责接收用户代码(2)Driver进程立即创建一个SparkContext对象向集群管理机申请计算资源,确定计算任务工作节点(3)SparkContext分析代码,将代码和数据划分成若干个独立片段发送给工作节点上的Executor进程(4)Executor进程计算完毕,会把生成的结果返回Driver进程汇总,输出或保存到磁盘Spark应用程序=

用户代码+

Driver+

Executor+Executor+…02Spark大数据环境搭建Linux系统安装和配置Hadoop伪分布集群环境搭建Spark单机运行环境搭建Linux系统安装和配置Linux虚拟机的安装Ubuntu20.04操作系统基本使用具体步骤参见教材我们的Spark运行环境是搭建在Linux虚拟机上的,因此这里准备安装Ubuntu20.04系统,选用这一图形环境的Linux的目的,是为了后续方便写代码具体步骤参见教材Linux系统安装和配置Ubuntu20.04是桌面版,默认是不支持远程登录功能,为方便起见,我们将openssh-server安装进来以支持sshd远程终端连接服务为了避免版本冲突,这里需要先卸载Ubuntu内置的openssh-client,在安装openssh-server时会自动安装正确版本的openssh-clientLinux系统安装和配置安装vim软件包,它是默认的vi编辑器(简称vi)的增强版,支持一些更丰富的功能,如不同颜色的高亮代码显示等。当vim安装完毕后,在终端输入vi或vim命令,实际启动的就是这个增强版的vim编辑器将Ubuntu20.04自带的防火墙禁用,以避免在远程终端连接时出现问题,在运行Hadoop和Spark时也要禁用防火墙Windows自带的记事本是一个简单易用的文本编辑器,在Ubuntu20.04操作系统桌面环境中也有一个类似的TextEditor图形化文本编辑器,用户可在应用程序列表中找到,也可通过终端命令来启动Vi编辑器模式切换(命令/编辑)Vi编辑器常用编辑命令Linux系统安装和配置vi是绝大多数Linux/Unix类系统的一个默认编辑器,日常工作中几乎随时会用到,掌握它也是Linux学习的一个必修内容,因为大部分服务器上安装的Linux系统没有附带桌面环境,无法直接使用图形化文本编辑器Linux系统安装和配置Windows上常用的远程连接工具有PuTTY、SecureCRT、XShell等,其实还有一个功能更全面的终端工具MobaXterm,还支持直接上传文件到远程服务器使用首先MobaXterm连接远程Linux之前,需要在Linux终端窗体中输入ipaddr命令查看当前虚拟机的IP地址Linux系统安装和配置在MobaXterm界面左上角单击Session图标,打开连接设置窗体,在这个窗体中列出了MobaXterm支持的各种远程连接类型,单击SSH图标,输入虚拟机的IP地址,指定登录所用的账户spark,单击OK按钮即可Linux系统安装和配置连接远程Linux时,需要输入对应的账户密码,在弹出的是否要保存密码的窗体中,勾选Donotshowthismessageagain(不再显示本确认信息)复选框,单击No按钮不保存登录密码Linux系统安装和配置MobaXterm成功连接远程服务器后,可以像在Linux操作系统本地一样执行命令,还可以将Windows本地文件拖放上传到远程服务器Linux系统安装和配置MobaXterm还会将连接使用过的服务器信息保存在收藏栏中,双击保存的连接信息即可自动连接,或单击鼠标右键选择Editsession(编辑)或Deletesession(删除)对连接信息进行管理Hadoop伪分布集群环境搭建Spark是一个完全独立的大数据处理框架,不依赖于其他大数据平台,但作为Hadoop大数据生态的重要一员,Spark通常还会搭配HDFS和YARN一起使用。这里尝试搭建一个单机环境下最小配置的Hadoop伪分布集群环境(1)JDK的安装配置以上是将JDK解压缩到/usr/local目录下,并创建一个软链接指向JDK的解压缩目录(软链接相当于Windows的快捷方式)Hadoop伪分布集群环境搭建(1)JDK的安装配置修改/etc/profile配置文件,在其中添加有关JDK的环境变量设置Hadoop伪分布集群环境搭建(1)JDK的安装配置回到Linux终端窗体测试一下JDK的配置是否正常。如果出现以下信息,则说明JDK的配置是正确的,JDK的安装也就完成了JDK安装完毕最好重新启动一下虚拟机,这样设置的环境变量就会在Linux系统全局生效。否则即使当前Linux终端执行过source命令,在另一个新开Linux终端执行java命令很可能就会失败,需要重新执行一次source命令才行Hadoop伪分布集群环境搭建(2)

Linux免密登录考虑到远程登录服务sshd已经运行,因此可先在本机中通过ssh命令测试一下远程连接是否正常Hadoop伪分布集群环境搭建(2)

Linux免密登录先通过ssh-keygen命令生成免密登录所需的密钥信息Hadoop伪分布集群环境搭建(2)

Linux免密登录通过ssh-copy-id命令,把本机的公钥复制到远程主机的authorized_keys文件上,以便双方在连接通信时使用Hadoop伪分布集群环境搭建(2)

Linux免密登录在本机通过ssh命令再次进行远程连接,测试是否免密登录功能,正常情况下此时不再需要输入密码,ssh就能够连接成功Hadoop、Spark等大数据平台之所以需要进行免密登录的原因,比如在主节点上启动Hadoop集群时,主节点要自动将其他节点上的相应服务程序启动,此时就要借助免密登录,以便主节点远程登录到其他节点机器上执行启动服务程序的命令,相当于“一只手直接伸进对方机器中进行操作”的效果Hadoop伪分布集群环境搭建(3)

Hadoop的安装Hadoop的安装比较简单,也是先解压缩hadoop-2.6.5.tar.gz软件包,然后像JDK一样建立一个软链接这里创建jdk和hadoop链接文件的目的是为了后续维护上的便利。如果直接将带版本号的JDK和Hadoop软件包名称写入/etc/profile配置文件,将来在遇到升级或修改软件版本时,就必须同步修改/etc/profile配置文件,而使用软链接的方式,只需将链接文件指向新版本的目录即可,而不用修改/etc/profile配置文件。此外,有的地方将jdk1.8.0_201或hadoop-2.6.5这种带版本号的文件夹名名直接改成类似jdk、hadoop这样的目录名,此时从文件夹名称就看不出是什么版本了,这样也会造成一些不便Hadoop伪分布集群环境搭建(3)

Hadoop的安装将解压缩的hadoop-2.6.5目录的用户和组的权限调整一下,方便在启动Hadoop时能够完全控制这个目录,避免因为文件的访问权限问题导致无法进行操作Hadoop伪分布集群环境搭建(3)

Hadoop的安装现在可以测试一下Hadoop是否能够正常使用Hadoop伪分布集群环境搭建(4)

HDFS的配置HDFS用来提供分布式存储功能,所需的相关配置主要在hdfs-site.xml文件中。不过,由于HDFS是Hadoop三大模块(HDFS+MapReduce+YARN)的基础组件,所以还会涉及hadoop-env.sh和core-site.xml这两个Hadoop核心配置文件的修改Hadoop伪分布集群环境搭建(4)

HDFS的配置切换到Hadoop的配置文件目录,修改其中的hadoop-env.sh运行环境,找到里面的JAVA_HOME环境变量。由于Hadoop没有使用Linux操作系统的JAVA_HOME环境变量,而是重新定义了一个JAVA_HOME环境变量,所以就要告知Hadoop所依赖的JDK安装位置Hadoop伪分布集群环境搭建(4)

HDFS的配置修改Hadoop核心配置文件core-site.xml,在里面增加HDFS地址端口和临时工作目录信息Hadoop伪分布集群环境搭建(4)

HDFS的配置修改HDFS配置文件hdfs-site.xml,在其中指定NameNode和DataNode的数据保存位置。其中,NameNode负责管理文件系统,DataNode负责存储数据Hadoop伪分布集群环境搭建(4)

HDFS的配置查看slaves配置文件的内容,这个文件中保存了运行DateNode进程的节点信息。由于我们配置的是单节点环境,slaves文件中默认是localhost,即本机,所以不用进行任何修改Hadoop伪分布集群环境搭建(4)

HDFS的配置配置文件修改完毕,首次运行HDFS服务之前,还要初始化HDFS的文件系统,相当于平时的磁盘格式化操作,这个工作只执行一次。如果要重新进行初始化,应先清除相关目录中的内容(即NameNode和DataNode对应的目录,这样HDFS存储的数据也会丢失)Hadoop伪分布集群环境搭建(4)

HDFS的配置启动HDFS服务,在执行过程中会分别运行NameNode、SecondaryNameNode以及DataNode进程Hadoop伪分布集群环境搭建(4)

HDFS的配置使用jps命令查看HDFS服务的进程是否正常运行,如果Java进程列表中有NameNode、SecondaryNameNode、DataNode这3个进程在运行,则说明HDFS启动是正常的Hadoop伪分布集群环境搭建(5)YARN的配置YARN是一个通用的Hadoop集群资源调度平台,负责为应用程序提供服务器计算资源(主要是CPU和内存),为上层应用提供统一的资源管理和调度。由于Spark支持运行在YARN集群管理服务之上,因此接下来将配置一下YARN,主要涉及yarn-env.sh和yarn-site.xml两个文件的修改Hadoop伪分布集群环境搭建(5)YARN的配置打开yarn-site.xml文件,在其中增加与内存检查相关的设置。这是因为虚拟机使用的内存和CPU资源比较有限,若要求必须有多少内存和CPU核,一些应用程序可能就无法正常启动。当然,在正式的生产环境中要去掉这两个参数设置Hadoop伪分布集群环境搭建(5)YARN的配置配置完毕,现在可以启动YARN服务相关的程序,在执行过程中会分别运行ResourceManager和NodeManager这两个进程Hadoop伪分布集群环境搭建(6)HDFS和YARN的测试经过前面的一系列配置,现在的HDFS和YARN服务都已经在正常运行,它们的启动脚本分别是start-dfs.sh和start-yarn.sh,停止脚本分别是stop-dfs.sh和stop-yarn.sh,这些脚本均位于/usr/local/hadoop路径下的sbin目录而不是bin目录使用vi修改/etc/profile配置文件,在其中添加有关Hadoop环境变量的设置Hadoop伪分布集群环境搭建(6)HDFS和YARN的测试执行source命令使/etc/profile配置文件的内容修改生效,测试一下是否能够正常操作HDFS,比如创建目录,上传文件等Hadoop伪分布集群环境搭建(6)HDFS和YARN的测试在Ubuntu20.04里面启动浏览器,访问http://localhost:50070即可查看HDFS的WebUI管理页面Hadoop伪分布集群环境搭建(6)HDFS和YARN的测试在Ubuntu20.04浏览器中访问http://localhost:8088,可以查看YARN的WebUI管理页面Spark单机运行环境搭建(1)Spark的安装配置将Spark安装软件包解压到/usr/local目录下,并创建一个软链接文件指向Spark目录,同时修改目录的所属用户和组Spark单机运行环境搭建(1)Spark的安装配置开始配置Spark运行环境,所有配置文件均位于conf目录下Spark单机运行环境搭建(1)Spark的安装配置使用vi修改/etc/profile配置文件,在其中添加有关Spark的环境变量设置Spark单机运行环境搭建(1)Spark的安装配置执行source命令使/etc/profile配置文件的内容修改生效,然后测试配置好的Spark能否正常工作如果一切正常,则终端窗体上会输出计算得到的pi的近似值,但这个值是不固定的,每次运行输出的pi值都是会变化的Spark单机运行环境搭建(2)SparkShell交互编程环境Spark安装目录的bin文件夹中包含了一些实用的工具命令脚本,包括spark-submit、spark-shell、pyspark等。其中,spark-shell和pyspark都是交互式操作方式的Spark编程环境,前者支持Scala,后者支持Python,它们都是采用“输入一条执行一条”的工作模式,对于学习阶段的确是比较方便的Spark单机运行环境搭建(2)SparkShell交互编程环境当SparkShell启动后默认支持运行Scala代码。我们先输入下面两行简单的Scala代码进行测试(不理解也没关系)Spark单机运行环境搭建(2)SparkShell交互编程环境新打开一个Linux终端窗体,在里面输入jps命令查看HDFS服务是否正在运行,如果没有运行就要先将HDFS服务启动,正如在配置HDFS服务时所做的那样Spark单机运行环境搭建(2)SparkShell交互编程环境现在可以验证Spark能否正常访问HDFS上的文件。前面在测试HDFS时已经上传过一个文件,HDFS的路径为/mydata/hello.txt,下面准备在SparkShell中将这个文件的数据读取出来。继续回到SparkShell的窗体中输入下面的代码通过上述测试,说明Spark的安装配置是正确的Spark单机运行环境搭建(2)SparkShell交互编程环境要退出SparkShell交互编程环境,可以按下键盘上的Ctrl+D快捷键,或输入:quit(冒号也要输入)并按回车键,这样就退回到终端的命令行提示符状态Spark单机运行环境搭建(3)python3.6的安装Ubuntu20.04默认安装了python3.8,但是Spark2.4.8最高只能支持到python3.6,从Spark3.x开始才支持python3.8。如果直接使用默认安装的python3.8,容易造成Spark的兼容性问题,所以这里准备在Ubuntu20.04虚拟机中另外安装一下python3.6的运行环境。我们先查看一下Ubuntu20.04安装的Python相关程序文件Spark单机运行环境搭建(3)python3.6的安装从输出的文件列表中可以看出,python3实际是一个链接文件,它指向了python3.8命令程序。我们可以分别运行python3和python3.8命令,以确认它们是否为同一个Spark单机运行环境搭建(3)python3.6的安装现在有两种做法:一种是将系统默认安装的python3.8卸载,替换成python3.6,不过这种做法存在一定风险,因为可能会影响到系统中一些程序的使用;另一种是在系统同时保留多个Python版本,然后根据实际需要切换使用(也有现成的工具辅助Python的多版本管理),我们准备采取第2种做法由于Ubuntu软件源不含python3.6的预编译版本,为简单起见,我们这里使用一个第三方的软件源DeadsnakesPPASpark单机运行环境搭建(3)python3.6的安装现在可以正式开始安装python3.6了,安装完毕后再查看一下python3.6的启动程序当python3.6成功安装后,在/usr/bin目录下会多出两个可执行程序,即python3.6和python3.6m,其中python3.6m在内存分配方式上做了优化,在实际使用时任选其一即可(这里“m”就是指memory内存)Spark单机运行环境搭建(3)python3.6的安装Spark包含一个名为“pyspark”的交互式编程脚本,它需在Python的运行环境中才能使用。为了使pyspark脚本能够找到正确的Python运行环境,可以在运行脚本之前设置一个名为PYSPARK_PYTHON的环境变量,我们将其添加到/etc/profile配置文件中(或添加到Spark的spark-env.sh配置文件也可以)Spark单机运行环境搭建(4)PySparkShell交互编程环境当python3.6运行环境准备就绪后,就可以启动PySparkShell交互式编程环境了从PySparkShell启动输出的提示信息中可以看出,Spark2.4.8使用的是python3.6,这也再次证明之前的配置是正确的Spark单机运行环境搭建(4)PySparkShell交互编程环境这里测试一下PySparkShell访问本地和HDFS文件的功能。首先确认HDFS服务是否正常运行,具体步骤可参考前述内容,这里假定HDFS已正常运行测试完毕,直接按Ctrl+D快捷键,或者输入quit()就可以退出PySparkShell交互式编程环境的界面,回到终端的命令行提示符状态Spark单机运行环境搭建(5)Pip的安装配置Pip是一个Python包管理工具,提供了Python软件库的查找、下载、安装和卸载等功能。实际上,Pip本身也是Python标准库中的一个包,只是这个包比较特殊,它是用来管理Python标准库中的其他包。Ubuntu20.04默认没有附带Pip包管理工具,下面通过apt命令在线安装进来Spark单机运行环境搭建(5)Pip的安装配置Pip工具安装完毕,就要考虑如何处理系统中现存的两个Python版本,即python3.6和python3.8。由于Ubuntu20.04中的python3命令默认指向python3.8,pip和pip3脚本命令也都是用来管理python3.8软件包的,因此就面临一个问题,如何分别管理python3.6和python3.8的软件包呢?当然,使用python3.6-mpip或python3.8-mpip这样的命令形式进行软件包安装是可以的,如果有更直接的办法,比如使用pip脚本命令管理python3.6的软件包,使用pip3脚本命令管理python3.8的软件包,这样自然就把它们隔离开了前面配置过的PYSPARK_PYTHON环境变量,它的目的是让pyspark脚本能够找到合适的Python运行环境。假如未设置过PYSPARK_PYTHON环境变量,pyspark脚本默认会调用系统的python命令来启动后续过程(相当于配置PYSPARK_PYTHON=python的结果)。基于此,可以考虑创建一个名为python的链接文件指向python3.6,同时配置pip命令管理python3.6的软件包。与此对应的,保留python3链接文件指向python3.8,并维持pip3管理python3.8的软件包的功能不变。经过这样的安排,python3.6和python3.8就可以使用它们各自的命令和包管理工具,而且相互不存在冲突(这样的选择不是必须的,只是提供一种可行的做法)Spark单机运行环境搭建(5)Pip的安装配置先创建一个/usr/bin/python文件链接到python3.6程序,然后分别查看一下pip和pip3两个命令文件中前两行的内容Spark单机运行环境搭建(5)Pip的安装配置先创建一个/usr/bin/python文件链接到python3.6程序,然后分别查看一下pip和pip3两个命令文件中前两行的内容Spark单机运行环境搭建(5)Pip的安装配置分别修改一下/usr/bin/pip文件和/usr/bin/pip3两个文件Spark单机运行环境搭建(5)Pip的安装配置分别修改一下/u

温馨提示

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

最新文档

评论

0/150

提交评论