版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
HBase安装与配置主讲:李强任务描述HBase分布式数据库需要运行在Hadoop完全分布式集群和ZooKeeper分布式协调服务框架上,所以在本任务中,完成该组件的基本安装后,主要是针对Hadoop集群及ZooKeeper集群的相关属性配置,以及HBase本身的集群框架部署。任务分析由于Hadoop版本和HBase版本之间的兼容性问题,如果是Hadoop2.7.7版本基本与目前HBase的各版本均兼容,但是Hadoop3.1.4版本只兼容HBase2.3.X和HBase2.4.X,所以本项目选择HBase2.4.11版本部署。6.1.1master节点安装HBase组件1.解压安装文件本手册所使用的版本是HBase2.4.11,可以从HBase官网下载。下载好的安装包都需上传到指定目录下,本手册指定为/root/目录,使用ls/root/命令可以查看上传的安装包(具体上传方式请参考项目1),如图6-1所示。图6-1查看安装包1.解压安装文件使用tar命令解压HBase到/usr/local/src文件夹,并切换到安装目录下查看,可以使用ls查看解压后的效果,如代码6-1所示,效果如图6-2所示。代码6-1解压安装包图6-2查看解压好的安装包tar-zxvfhbase-2.4.11-bin.tar.gz-C/usr/local/src/ls/usr/local/src/2.修改文件夹名称由于解压后的文件夹名称带有比较复杂的版本号,为了简化后续配置,此处修改文件夹名称。使用mv命令将解压的hbase-2.4.11目录重命名为hbase,如代码6-2所示,效果如图6-3所示。代码6-2重命名文件夹图6-3重命名文件夹mv/usr/local/src/hbase-2.4.11/usr/local/src/hbasels3.修改环境变量文件为了可以在任何目录下直接执行HBase的相关命令,可以在环境变量文件中添加HBase的环境变量。参考项目2,使用vi/root/.bash_profile将如表6-1所示的配置信息添加到/root/.bash_profile文件的末尾,保存退出。表6-1环境变量文件的添加内容#setHBaseenvironmentexportHBASE_HOME=/usr/local/src/hbaseexportPATH=$HBASE_HOME/bin:$PATH4.生效用户环境变量文件在master节点上运行如代码6-3所示的命令,使master节点上配置的HBase的环境变量生效。代码6-3master节点生效环境变量source/root/.bash_profile6.1.2master节点修改配置文件1.修改hbase-env.sh配置文件hbase-env.sh是HBase执行时去加载Hadoop环境变量和ZooKeeper的配置文件,用于指定Hadoop环境变量和ZooKeeper配置,修改文件内容,如代码6-4所示。代码6-4修改hbase-env.sh文件cd/usr/local/src/hbase/conf/vihbase-env.sh该文件中需要修改三处设置:首先是JAVA_HOME需要设置为项目1中安装java的路径;同时将HBase_CLASSPATH配置为项目2中安装的Hadoop路径;HBase_MANAGES_ZK在配置文件偏后的位置,读者需要自行查找,其默认值为true表示使用HBase自带的ZooKeeper,需要改为false表示使用在Hadoop上装的ZooKeeper服务。另外请注意将配置项前面的“#”去掉,具体设置参考内容,如表6-2所示。表6-2文件的添加内容exportJAVA_HOME=/usr/local/src/java#修改Java安装位置exportHBASE_CLASSPATH=/usr/local/src/hadoop/etc/hadoop/#修改HBase类路径exportHBASE_MANAGES_ZK=false#修改true为falseexportHBASE_DISABLE_HADOOP_CLASSPATH_LOOKUP="true"#去掉前面的#2.修改hbase-site.xml配置文件hbase-site.xml是HBase集群运行必须的核心配置文件,用于配置Hadoop集群相关和ZooKeeper集群相关的属性,修改文件,如代码6-5所示。代码6-5修改hbase-site.xmlcd/usr/local/src/hbase/conf/vihbase-site.xml2.修改hbase-site.xml配置文件可以将文件中<configuration>和</configuration>一对标签之间的配置项内容先删除,然后追加配置信息,如表6-3所示,保存退出。表6-3HBase-site.xml配置文件的修改内容<property><name>hbase.rootdir</name><value>hdfs://master:9000/hbase</value>#使用9000端口</property><property><name>.port</name><value>60010</value>#使用master节点60010端口</property><property><name>hbase.ZooKperty.clientPort</name><value>2181</value>#使用master节点2181端口</property>......省略2.修改hbase-site.xml配置文件该文件需要添加的配置项参数,如表6-4所示。表6-3HBase-site.xml配置文件的修改内容序号配置项默认值修改值1hbase.rootdir${hbase.tmp.dir}/HBasehdfs://master:9000/hbase2.port16000600103hbase.ZooKperty.clientPortlocalhost21814ZooKeeper.session.timeout600001200005hbase.ZooKeeper.quorumlocalhostmaster,slave1,slave26hbase.tmp.dirjava.io.tmpdir/HBase−{}/usr/local/src/hbase/tmp7hbase.cluster.distributedfalsetrue3.创建临时数据文件夹由于在上面的配置文件中配置了HBase的临时文件夹信息,使用如代码6-6错误!未找到引用源。所示的命令创建临时文件夹目录。代码6-6创建文件夹文件mkdir/usr/local/src/hbase/tmp4.修改regionservers文件可以将文件中<configuration>和</configurataregionservers文件中标识HBase集群中的从节点,使用“viregionservers”删除该文件中原有“localhost”内容,在文件中追加配置信息,如表6-5所示,保存退出。ion>一对标签之间的配置项内容先删除,然后追加配置信息,如表6-3所示,保存退出。请注意:regionservers文件中添加的内容结尾不允许有空格,文件中不允许有空行。表6-3HBase-site.xml配置文件的修改内容slave1slave26.1.3在Slave节点安装HBase1.同步配置文件到Slave节点将master上配置好的HBase文件夹内容和环境变量文件分别分发到slave1和slave2节点,分发命令,如代码6-7所示。代码6-7分发HBase配置scp-r/usr/local/src/hbaseslave1:/usr/local/src/scp-r/usr/local/src/hbaseslave2:/usr/local/src/scp/root/.bash_profileslave1:/root/scp/root/.bash_profileslave2:/root/2.生效用户环境变量文件在每个节点上运行如代码6-8所示的命令,使每个节点上配置的HBase的环境变量生效。代码6-8Slave节点生效环境变量文件source/root/.bash_profile6.1.4启动HBase集群启动HBase集群启动HBase之前,需要先启动Hadoop集群、ZooKeeper集群。请读者自行确定是否启动了Hadoop和ZooKeeper集群(参考项目2和项目5)。启动HBase之前,先用jps查看master和slave1的Java进程情况,如图6-4、图6-5所示。图6-4HBase启动前master进程图6-5HBase启动前slave1进程启动HBase集群接下来在master节点启动HBase,如代码6-9所示,并查看Java进程。代码6-9启动hbase代码start-hbase.sh启动后过程提示如图6-6所示,能看到分别在三个节点启动了HBase。图6-6HBase启动过程启动HBase集群现在用jps分别在查看master和slave1的Java进程情况,如图6-7、图6-8所示,发现master节点多了一个HMaster进程;slave1节点中多了HRegionServer进程(slave2类似)。图6-7HBase启动后master进程图6-8HBase启动后slave1进程启动HBase集群也可以浏览器中输入81:60010/,出现HBase的WebUI界面效果,如图
6-9所示。如果要关闭HBase,可以在master节点执行stop-hbase.sh命令关闭。至此,HBase的安装与配置成功完成。图6-9HBase启动后WebUI效果谢谢HBaseShell基本操作主讲:李强任务描述本任务主要完成基于Linux环境,在Hadoop集群掌握HBaseShell命令的使用的工作。通过完成本实验任务,要求学生熟练掌握HBaseShell命令的使用的方法,为后续实验的开展奠定HBase平台基础。任务分析HBase是一个面向列的分布式数据库。HBase不同于一般的关系数据库,它是一个适合于非结构化数据存储的数据库。另一个不同的是HBase基于列的而不是基于行的模式。所以HBase的Shell操作在过程上与Hive类似,但是具体的语法却有较大的区别。在本任务中,主要在HBaseShell中,体验下面向列的模式进行数据表的管理和数据的管理基本操作。6.2.1HBaseShell应用1.启动HBaseShell和退出HBaseShell在主节点master进入HBase的命令行模式。执行“hbaseshell”命令,效果如图6-10所示。图6-10HBase启动后的Shell窗口完成了HBase中相关的操作后,输入exit或者quit即可退出HBaseShell。2.常见错误启动HBaseShell时,因为版本之间兼容性问题,容易出现程序包冲突的错误,效果如图
6-11所示。图6-11常见错误图示3.解决方案进入master节点的/usr/local/src/hbase/lib/client-facing-thirdparty目录,查看到如图6-12所示中的两个程序包,可以删除,也可以改名备份。在此进行改名备份,如代码6-10所示。代码6-10Jar文件改名备份图6-12需要替换的程序包cd/usr/local/src/hbase/lib/client-facing-thirdpartymvslf4j-api-1.7.33.jarslf4j-api-1.7.33.jar.bakmvslf4j-reload4j-1.7.33.jarslf4j-reload4j-1.7.33.jar.bak进入master节点的/usr/local/src/hadoop/share/hadoop/common/lib/目录,通过“lsslf*”查看以slf开头的程序包,如图6-13所示。图6-13Hadoop版本Jar3.解决方案在此进行复制这两个以slf开头的程序包到HBase的lib文件夹,如代码6-11所示,请特别注意需要查询本地安装包的中的程序包的版本号,根据查询结果修改版本号,否则执行复制会出错。代码6-11jar复制cd/usr/local/src/hadoop/share/hadoop/common/lib/cpslf4j-log4j12-1.7.25.jar/usr/local/src/hbase/lib/client-facing-thirdparty/cpslf4j-api-1.7.25.jar/usr/local/src/hbase/lib/client-facing-thirdparty/执行以上操作后,需要重新启动HBase服务,如代码6-12所示,再次启动HBaseShell就可以了。代码6-12重启HBasestop-hbase.shstart-hbase.shhbaseshell6.2.2HBase数据表操作1.创建表对于学生基本信息表,包含三个列族:sid、sname、sage。创建student表,包含前两个列族,并查看表结构,如代码6-13所示,效果如图6-14所示。代码6-13HBase创建表案例create'student',{NAME=>'sid'},{NAME=>'sname'}describe'student'图6-14HBase创建表对象2.修改表可以通过修改表结构的方式在表中添加sage这个列族,新增列族,并查看表结构,如代码6-14所示,效果如图6-15所示。代码6-14HBase创建表案例alter'student',{NAME=>'sage'}describe'student'图6-15HBase修改表对象3.删除表如果表不需要了可以删除,但是删除之前应该先执行disable操作,再删除表对象,如代码6-15所示。代码6-15HBase创建表案例disable'student'drop'student'6.2.3HBase数据操作1.创建表对象创建student表对象如代码6-16所示,如果student表对象没有删除,可以略过本步骤。代码6-16HBase创建表案例create'student',{NAME=>'sid'},{NAME=>'sname'},{NAME=>'sage'}describe'student'图6-16表结构查询2.添加数据将项目4的4.3.3小节中测试的三条数据添加到HBase表中,HBase的数据新增命令为put,而且是一个列一个列地增加数据,新增数据如代码6-17所示。代码6-17HBase新增数据put'student','rk1','sid','1'put'student','rk1','sname','张三'put'student','rk1','sage','19'put'student','rk2','sid','2'put'student','rk2','sname','李四'put'student','rk2','sage','18'put'student','rk3','sid','3'put'student','rk3','sname','王五'put'student','rk3','sage','20'3.查询全表数据查询表中的所有数据,HBase的查询所有数据的命令为scan,查询student数据如代码6-18所示,效果如图6-17所示。代码6-18HBase查看表数据scan'student',{FORMATTER=>'toString'}图6-16表结构查询从图6-17可以看出,HBase数据表中的数据与一般的关系型数据库的数据结构不一样,每一个学生用行标识来表示,然后每一个列族具有列名、列值和时间戳(数据版本)。如果要修改其中某列数据,可以直接像新增列值一样进行操作即可,对于同一行的同一个列的值的修改实际上是新增加一个版本的数据,以put的时间戳作为版本,并显示最新的版本数据,这样达到修改的功能。4.删除数据如果要删除某列的数据,需要使用delete命令,指定对应表名,行标识以及列名。例如,删除rk3行的年龄sage列值,如代码6-19所示。代码6-19HBase删除列案例delete'student','rk3','sage'scan'student'图6-18删除列值后效果删除列值后再查询全表数据会发现没有了这项值,效果如图6-18所示。5.带条件查询查询数据除了可以使用scan查看全表外,也可以指定列或者进行条件查询,查询sid列值,如代码6-20所示,效果如图6-19所示。代码6-20HBase查看表数据scan'student',{COLUMNS=>'sid'}图6-19指定列查询谢谢手游信息数据存储设计主讲:李强任务描述客户是一个互联网手机游戏平台,需要针对广大手游用户进行手游产品的统计分析,需要存储每个手游用户即客户对每个手游产品的关注度(游戏热度),且存储时间维度上的关注度信息,从而能针对客户的喜好进行挖掘并进行类似精准营销的手游定点推送,广告营销等业务,从而扩大该平台的用户量并提升用户粘着度。根据上述客户需求,本案例将会创建HBase数据库表结构,用于记录用户关注的手游、手游被哪些用户关注、用户每天对手游产品的使用记录、用户每日使用手游次数统计这4项信息。任务分析本小节任务将首先创建用户关注手游信息表、手游被关注信息表、用户手游使用记录表、用户手游日使用次数统计表、用户手游日使用次数统计表这4张HBase数据库表结构,然后所创建的4张HBase数据库表结构,需完成如下业务逻辑。(1)当用户关注手游时,需要将信息记录到用户关注手游信息表和手游被关注信息表。(2)当用户使用手游时,需要将使用记录记录到用户手游使用记录表。(3)查看某手游被关注的情况。(4)统计用户每天使用手游的次数,将结果存储到用户手游日使用次数统计表。6.3.1设计表结构设计表结构表6-6用户关注手游信息表编号项目项目内容说明1RowKeyuser_id用户ID2列族games
3列名games_id手游ID4值文本内容手游名称编号项目项目内容说明1RowKeygames_id手游ID2列族user
3列名user_id用户ID4值user_id用户ID表6-6用户关注手游信息表表6-6用户关注手游信息表表6-6用户关注手游信息表编号项目项目内容说明1RowKeyuser_id_timestamp用户ID+使用开始时间2列族degee
3列名games_id手游ID4值1表示使用1次编号项目项目内容说明1RowKeyuser_id_ymd用户ID+使用日期2列族degee
3列名games_id手游ID4值gamecounts使用次数6.3.2创建表结构创建表结构参考项目3,打开IDEA,创建名为hbase_mobilegame的工程,在src/main/resources目录下添加Hadoop配置文件core-site.xml和hdfs-site.xml,在pom.xml文件添加所需依赖,如表6-10所示,添加完成后加载依赖。图6-11常见错误图示<dependencies><dependency><groupId>org.apache.hadoop</groupId><artifactId>hadoop-common</artifactId><version>3.1.4</version></dependency><dependency><groupId>org.apache.hadoop</groupId><artifactId>hadoop-hdfs</artifactId><version>3.1.4</version></dependency>......省略创建表结构在src/main/java目录下创建名为createtable的package,在createtable包内创建CreateTable.java,在main方法外定义一些全局变量,包括所需的4张表结构的表名、Configuration对象conf、Connection对象conn,内容如代码6-21所示。代码6-21CreateTable.javapublicclassCreateTable{privatestaticfinalbyte[]USERFOLLOWS="userfollows".getBytes();privatestaticfinalbyte[]GAMEFOLLOWS="gamefollows".getBytes();privatestaticfinalbyte[]USAGERECORDS="usagerecords".getBytes();privatestaticfinalbyte[]USAGECOUNT="usagecount".getBytes();privatestaticConfigurationconf;privatestaticConnectionconn;publicstaticvoidmain(String[]args){}}创建表结构根据如表6-6所示的表结构设计,在main方法外创建方法initUserfollows(),用于创建用户关注手游信息表,如代码6-22所示。代码6-22创建用户关注手游信息表privatestaticvoidinitUserfollows()throwsIOException{//创建AdminAdminadmin=conn.getAdmin();//创建表描述器HTableDescriptoruserfollowsHTableDescriptor=newHTableDescriptor(TableName.valueOf(USERFOLLOWS));//创建列簇描述器HColumnDescriptorgamesHColumnDescriptor=newHColumnDescriptor("games");userfollowsHTableDescriptor.addFamily(gamesHColumnDescriptor);//创建表if(admin.tableExists(TableName.valueOf(USERFOLLOWS))){......省略创建表结构根据如表6-7所示的表结构设计,在main方法外创建方法initGamefollows(),用于创建手游被关注信息表,如代码6-23所示。代码6-23创建手游被关注信息表privatestaticvoidinitGamefollows()throwsIOException{//创建AdminAdminadmin=conn.getAdmin();TableNametableName=TableName.valueOf(GAMEFOLLOWS);//创建表描述器HTableDescriptorgamefollowsHTableDescriptor=newHTableDescriptor(tableName);//创建列簇描述器HColumnDescriptorusersHColumnDescriptor=newHColumnDescriptor("users");gamefollowsHTableDescriptor.addFamily(usersHColumnDescriptor);//创建表......省略创建表结构根据如表6-8所示的表结构设计,在main方法外创建方法initUsagerecords(),用于创建用户手游使用记录表,如代码6-24所示。代码6-24创建用户手游使用记录表privatestaticvoidinitUsagerecords()throwsIOException{//创建AdminAdminadmin=conn.getAdmin();TableNametableName=TableName.valueOf(USAGERECORDS);//创建表描述器HTableDescriptorusagerecordsHTableDescriptor=newHTableDescriptor(tableName);//创建列簇描述器HColumnDescriptordegeeHColumnDescriptor=newHColumnDescriptor("degee");usagerecordsHTableDescriptor.addFamily(degeeHColumnDescriptor);//创建表......省略创建表结构根据如表6-9所示的表结构设计,在main方法外创建方法initUsagecount(),用于创建用户手游日使用次数统计表,如代码6-25所示。代码6-25创建用户手游日使用次数统计表privatestaticvoidinitUsagecount()throwsIOException{//创建AdminAdminadmin=conn.getAdmin();TableNametableName=TableName.valueOf(USAGECOUNT);//创建表描述器HTableDescriptorusagecountHTableDescriptor=newHTableDescriptor(tableName);//创建列簇描述器HColumnDescriptordegeeHColumnDescriptor=newHColumnDescriptor("degee");usagecountHTableDescriptor.addFamily(degeeHColumnDescriptor);//创建表......省略创建表结构在main方法内使用HBaseConfiguration的单例方法实例化conf,并配置参数,建立HBase连接,调用创建表的4个方法,如代码6-26所示。代码6-26main方法publicstaticvoidmain(String[]args)throwsIOException{//创建Configuration对象conf=HBaseConfiguration.create();conf.set("hbase.master","master:16010");conf.set("hbase.rootdir","hdfs://master:8020/hbase");conf.set("hbase.zookeeper.quorum","master,slave1,slave2,slave3");conf.set("perty.clientPort","2181");//建立HBase连接conn=ConnectionFactory.createConnection(conf);......省略创建表结构按顺序依次启动Hadoop集群、Zookeeper集群、HBase集群。运行CreatTable.java程序,IDEA的“Run”窗口输出“Processfinishedwithexitcode0”表示运行成功,进入HBaseShell,使用“list”命令查看HBase数据表,如图6-20所示,已成功创建gamefollows、usagecount、usagerecords、userfollows这4张表。图6-20查看HBase数据表6.3.3业务逻辑业务逻辑现模拟生成一份userfollowgame.txt,记录了用户关注手游时的用户ID、手游ID和手游内容,如表6-11所示。表6-11userfollowgame.txt数据内容用户ID手游ID手游内容weixin01g01手游Aweixin01g02手游Bqq01g02手游Bqq01g03手游Cweixin02g04手游D业务逻辑在src/main/java目录下创建名为business的package,在business包内创建UserFollowGame.java,基于如表6-11所示的数据,实现当用户关注手游时,将信息记录到用户关注手游信息表和手游被关注信息表,如代码6-27所示。代码6-27UserFollowGame.javapublicclassUserFollowGame{privatestaticfinalbyte[]USERFOLLOWS="userfollows".getBytes();privatestaticfinalbyte[]GAMEFOLLOWS="gamefollows".getBytes();privatestaticConfigurationconf;privatestaticConnectionconn;publicstaticvoidmain(String[]args)throwsIOException{//创建Configuration对象conf=HBaseConfiguration.create();conf.set("hbase.master","master:16010");conf.set("hbase.rootdir","hdfs://master:8020/hbase");conf.set("hbase.zookeeper.quorum","master,slave1,slave2,slave3");conf.set("perty.clientPort","2181");......省略业务逻辑运行UserFollowGame.java程序,运行成功后,通过HBaseShell通过scan命令遍历数据表userfollows、gamefollows,如图6-21所示,已成功将数据插入相应数据表中。图6-21遍历数据表userfollows、gamefollows业务逻辑现模拟生成一份gamerecords.txt,记录了用户使用手游时的用户ID和手游ID,如表6-12所示。表6-12gamerecords.txt数据内容用户ID手游IDweixin01g01qq01g02weixin02g04weixin01g01qq01g02qq01g03业务逻辑在business包内创建UserGameRecords.java,基于如表6-12所示的数据,实现当用户使用手游时,将使用记录记录到用户手游使用记录表,如代码6-28所示。代码6-28UserGameRecords.javapublicclassUserGameRecords{privatestaticfinalbyte[]USAGERECORDS="usagerecords".getBytes();privatestaticConfigurationconf;privatestaticConnectionconn;publicstaticvoidmain(String[]args)throwsIOException{//创建Configuration对象conf=HBaseConfiguration.create();conf.set("hbase.master","master:16010");conf.set("hbase.rootdir","hdfs://master:8020/hbase");conf.set("hbase.zookeeper.quorum","master,slave1,slave2,slave3");conf.set("perty.clientPort","2181");......省略业务逻辑运行UserGameRecords.java程序,运行成功后,通过HBaseShell通过scan命令遍历数据表usagerecords,如图6-21所示,已成功将数据插入数据表中。图6-22遍历数据表userfollows、gamefollows业务逻辑在business包内创建ScanData.java,模拟实现查看手游g02被关注的情况、用户weixin01关注手游情况、手游用户qq01使用记录情况,如代码6-29所示,运行结果如图6-23所示。代码6-29ScanData.javapublicclassScanData{privatestaticConfigurationconf;privatestaticConnectionconn;privatestaticfinalbyte[]USERFOLLOWS="userfollows".getBytes();privatestaticfinalbyte[]GAMEFOLLOWS="gamefollows".getBytes();privatestaticfinalbyte[]USAGERECORDS="usagerecords".getBytes();publicstaticvoidmain(String[]args)throwsIOException{//创建Configuration对象conf=HBaseConfiguration.create();conf.set("hbase.master","master:16010");conf.set("hbase.rootdir","hdfs://master:8020/hbase");conf.set("hbase.zookeeper.quorum","master,slave1,slave2,slave3");conf.set("perty.clientPort","2181");......省略图6-23查看数据业务逻辑在src/main/java目录下创建名为mr_putdata的package,在mr_putdata包内通过编写MapReduce程序,实现每个用户每日使用手游的次数统计,并将结果存储至用户手游日使用次数统计表。在mr_putdata包内创建UseCountMapper.java,读取用户手游使用记录表usagerecords,将表内数据转成键值对,其中将rowkey中的时间戳转化为年月日,以“user+年月日+gameID”为键,“1”为值,如代码6-30所示。代码6-30UseCountMapper.javapublicclassUseCountMapperextendsTableMapper<Text,IntWritable>{Textuser_ymd=newText();IntWritableone=newIntWritable(
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 云服务本地化协议
- 成人教育协议书模板
- 扩散器阀门购买合同
- 2024年度租赁合同(包括但不限于办公设备、厂房、土地等)
- 2024美发店股份合同协议书范本
- 医院建设化粪池施工合同
- 2024煤炭购销合同格式范本
- 涂料规范合同范例
- 2024工艺品加盟合同书
- 2024年度地铁口教育培训机构租赁合同2篇
- 【学习课件】第四篇行为科学理论的产生和发展
- 蜂巢格式生态护坡施工方案
- TSCQA 208-2021 砼肋混凝土叠合板应用技术规程
- 银行保险从业人员销售服务初级培训考试题库
- 智慧学校(智慧教育)智慧校园创建工作汇报-强管理、重应用、促提升
- 多路温度采集系统设计与实现
- 泥浆材料及处理剂大全
- 临床基因扩增检验操作规范
- PS+6000+综合自动化系统教学
- 《空气能占据空间吗》教学反思
- 标准化沟通在临床护理中的应用PPT幻灯片课件
评论
0/150
提交评论