《通信數(shù)據(jù)分析與實戰(zhàn)》課件-第五章 HBase 分布式數(shù)據(jù)庫_第1頁
《通信數(shù)據(jù)分析與實戰(zhàn)》課件-第五章 HBase 分布式數(shù)據(jù)庫_第2頁
《通信數(shù)據(jù)分析與實戰(zhàn)》課件-第五章 HBase 分布式數(shù)據(jù)庫_第3頁
《通信數(shù)據(jù)分析與實戰(zhàn)》課件-第五章 HBase 分布式數(shù)據(jù)庫_第4頁
《通信數(shù)據(jù)分析與實戰(zhàn)》課件-第五章 HBase 分布式數(shù)據(jù)庫_第5頁
已閱讀5頁,還剩85頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

通信數(shù)據(jù)分析與實戰(zhàn)HBase分布式數(shù)據(jù)庫第五章第1節(jié)2知道HBase的作用熟悉HBase的數(shù)據(jù)模型學習目標TARGETHBase的概述Spark計算框架是如何在分布式環(huán)境下對數(shù)據(jù)處理后的結果進行隨機的、實時的存儲呢?HBase數(shù)據(jù)庫正是為了解決這種問題而應用而生。HBase數(shù)據(jù)庫不同于一般的數(shù)據(jù)庫,如MySQL數(shù)據(jù)庫和Oracle數(shù)據(jù)庫是基于行進行數(shù)據(jù)的存儲,而HBase則是基于列進行數(shù)據(jù)的存儲,這樣的話,HBase就可以隨著存儲數(shù)據(jù)的不斷增加而實時動態(tài)的增加列,從而滿足Spark計算框架可以實時的將處理好的數(shù)據(jù)存儲到HBase數(shù)據(jù)庫中的需求。HBase的概述HBase起源于2006年Google發(fā)表的BigTable論文。HBase是一個高可靠性、高性能、面向列、可伸縮的分布式數(shù)據(jù)庫,利用HBase可在廉價PC服務器上搭建起大規(guī)模結構化存儲集群。HBase的目標是存儲并處理大型的數(shù)據(jù),更具體來說是僅需使用普通的硬件配置,就能夠處理由成千上萬的行和列所組成的大型數(shù)據(jù)。HBase的特點容量大面向列多版本稀疏性擴展性高可靠性HBase數(shù)據(jù)庫和傳統(tǒng)數(shù)據(jù)庫的區(qū)別01傳統(tǒng)數(shù)據(jù)庫中是基于行存儲的;而HBase是基于列進行存儲的。存儲模式03傳統(tǒng)數(shù)據(jù)庫中的列是固定的,需要先確定列有多少才會增加數(shù)據(jù)去存儲;而HBase是根據(jù)數(shù)據(jù)存儲的大小去動態(tài)的增加列,列是不固定的。可延伸性02傳統(tǒng)數(shù)據(jù)庫中的表字段不超過30個;而HBase中表字段不作限制。表字段Hbase的數(shù)據(jù)模型HBase分布式數(shù)據(jù)庫的數(shù)據(jù)存儲在行列式的表格中,它是一個多維度的映射模型,其數(shù)據(jù)模型如下所示。Hbase的數(shù)據(jù)模型RowKey(行鍵)RowKey表示行鍵,每個HBase表中只能有一個行鍵,它在HBase中以字典序的方式存儲。由于RowKey是HBase表的唯一標識,因此RowKey的設計非常重要。HBase表的列是由列族名、限定符以及列名組成的,其中“:”為限定符。創(chuàng)建HBase表不需要指定列,因為列是可變的,非常靈活。Column(列)Hbase的數(shù)據(jù)模型ColumnFamily(列族)在HBase中,列族由很多列組成。在同一個表里,不同列族有完全不同的屬性,但是同一個列族內的所有列都會有相同的屬性,而屬性都是定義在列族上的。表示時間戳,記錄每次操作數(shù)據(jù)的時間,通常記作數(shù)據(jù)的版本號。Timestamp(時間戳)10小結知道HBase的作用熟悉HBase的數(shù)據(jù)模型通信數(shù)據(jù)分析與實戰(zhàn)HBase分布式數(shù)據(jù)庫第五章第2節(jié)12掌握HBase集群部署操作掌握HBase集群啟動學習目標TARGETHBase集群部署HBase中存儲在HDFS中的數(shù)據(jù)是通過Zookeeper協(xié)調處理的。由于HBase存在單點故障問題,因此通過Zookeeper部署一個高可用HBase集群來解決。以三臺服務器為例(hadoop01、hadoop02和hadoop03),講解HBase集群的安裝部署,HBase集群的具體規(guī)劃為hadoop01和hadoop02是主節(jié)點,hadoop02和hadoop03是從節(jié)點。HBase集群部署Hbase集群部署的流程:1安裝JDK、Hadoop以及Zookeeper,這里我們設置的JDK版本是1.8、Hadoop版本是2.7.4及Zookeeper的版本是3.4.10。2下載HBase安裝包。這里選擇下載的版本是1.2.1。3上傳并解壓HBase安裝包。將HBase安裝包上傳至Linux系統(tǒng)的指定目錄并進行解壓。4將/hadoop-2.7.4/etc/hadoop目錄的hdfs-site.xml和core-site.xml配置文件復制一份到/hbase-1.2.1/conf目錄下。HBase集群部署Hbase集群部署的流程:5在hbase-env.sh、hbase-site.xml、regionservers、backup-masters、profile配置文件中添加參數(shù)。6將HBase的安裝目錄分發(fā)至hadoop02、hadoop03服務器上。7啟動Zookeeper和HDFS服務。8執(zhí)行“start-hbase.sh”命令,啟動HBase集群。HBase集群部署Hbase集群部署的流程:9通過“jps”命令檢查HBase集群服務部署是否成功。HBase集群部署Hbase集群部署的流程:10訪問http://hadoop01:16010,查看HBase集群狀態(tài)。服務器hadoop01是HBase主節(jié)點,服務器hadoop02和hadoop03是從節(jié)點。HBase集群部署2下載HBase安裝包。這里選擇下載的版本是1.2.1。HBase集群部署#1.將HBase安裝包上傳至Linux(hadoop01)系統(tǒng)的/export/software/目錄下cd/export/software/rz

#2.解壓到/export/servers/目錄。解壓安裝包的具體命令如下:tar-zxvfhbase-1.2.1-bin.tar.gz-C/export/servers/HBase集群部署cp/export/servers/hadoop-2.7.4/etc/hadoop/{hdfs-site.xml,core-site.xml}/export/servers/hbase-1.2.1/confHBase集群部署#進入/hbase-1.2.1/conf目錄修改相關配置文件cd/export/servers/hbase-1.2.1/conf

vihbase-env.sh

#配置jdk環(huán)境變量export

JAVA_HOME=/export/servers/jdk#TellHBasewhetheritshouldmanageit'sowninstanceofZookeeperornot.#配置hbase使用外部Zookeeperexport

HBASE_MANAGES_ZK=falseHBase集群部署vihbase-site.xml

<configuration><property><name>hbase.rootdir</name><value>hdfs://hadoop01:9000/hbase</value></property><!--指定hbase是分布式的--><property><name>hbase.cluster.distributed</name><value>true</value></property><!--指定zk的地址,多個用“,”分割--><property><name>hbase.zookeeper.quorum</name><value>hadoop01:2181,hadoop02:2181,hadoop03:2181</value></property></configuration>HBase集群部署#配置HBase的從節(jié)點角色(即hadoop02和hadoop03)viregionservers

hadoop02hadoop03HBase集群部署

#修改backup-masters配置文件,為防止單點故障配置備用的主節(jié)點角色hadoop02

#修改profile配置文件,配置HBase的環(huán)境變量(服務器hadoop01、hadoop02和hadoop03都需要配置)vi/etc/profile

export

HBASE_HOME=/export/servers/hbase-1.2.1export

PATH=$PATH:$HBASE_HOME/bin:HBase集群部署scp–r/export/servers/hbase-1.2.1/hadoop02:/export/servers/scp–r/export/servers/hbase-1.2.1/hadoop03:/export/servers/

#在服務器hadoop01、hadoop02和hadoop03上分別執(zhí)行“source/etc/profile”命令,使系統(tǒng)環(huán)境配置文件生效。source/etc/profileHBase集群部署#啟動Zookeeper和HDFS

#啟動zookeeperzkServer.shstart#啟動hdfsstart-dfs.sh

#啟動HBase集群start-hbase.sh

#這里需要注意的是,在啟動HBase集群之前,必須要保證集群中各個節(jié)點的時間是同步的,#若不同步會拋出ClockOutOfSyncException異常,導致從節(jié)點無法啟動。#因此需要在集群各個節(jié)點中執(zhí)行如下命令來保證時間同步。

ntpdate-uHBase集群部署9通過“jps”命令檢查HBase集群服務部署是否成功。HBase集群部署10訪問http://hadoop01:16010,查看HBase集群狀態(tài)。服務器hadoop01是HBase主節(jié)點,服務器hadoop02和hadoop03是從節(jié)點。29小結掌握HBase集群部署操作掌握Hbase集群啟動通信數(shù)據(jù)分析與實戰(zhàn)HBase分布式數(shù)據(jù)庫第五章第3節(jié)31掌握HBaseShell操作掌握HBase

JavaAPI操作學習目標TARGETHBase的基本操作HBaseShell提供大量操作HBase的命令,通過Shell命令很方便地操作HBase數(shù)據(jù)庫,如創(chuàng)建、刪除及修改表、向表中添加數(shù)據(jù)、列出表中的相關信息等操作。當使用Shell命令行操作HBase時,需要進入HBaseShell交互界面,執(zhí)行“bin/hbaseshell”命令進入到目錄/hbase-1.2.1的界面。HBase的基本操作在HBaseShell交互界面中,可通過一系列Shell命令操作HBase,下面通過一張表列舉操作HBase表常見的Shell命令。HBase的基本操作1.創(chuàng)建表

通過create創(chuàng)建表,具體語法如下:

create'tablename','columnfamily'

在上述語法中,“tablename”為表名,創(chuàng)建表必須指定;“columnfamily”為列族名,創(chuàng)建表也必須指定。

例如,創(chuàng)建一個名稱為hero、列族名為info的HBase表,命令如下:

create‘hero’,’info’

執(zhí)行“l(fā)ist”命令,查看數(shù)據(jù)庫中的數(shù)據(jù)表,命令如下:

HBase的基本操作2.插入操作

通過使用put插入或者更新表中的數(shù)據(jù),具體語法如下:

put'tablename','row1','columnfamily:columnname','value'

在上述語法中,“row1”為行鍵(即RowKey);“columnfamily:columnname”為列族名和列名;“value”為插入列的值。

例如,向hero表中插入數(shù)據(jù),命令如下:

hbase(main):003:0>put‘hero’,‘1001’,‘info:descinfo‘,’時代楷模'

HBase的基本操作3.掃描操作

通過scan掃描表中的數(shù)據(jù),具體語法如下:

scan'tablename'

例如,掃描hero表所有的數(shù)據(jù),命令如下:

hbase(main):008:0>scan‘hero'

HBase的基本操作4.查看表結構

通過describe查看表結構,具體語法如下:

describe'tablename'

查看hero表的表結構,命令如下:

hbase(main):009:0>describe'hero'

HBase的基本操作5.更新操作

通過使用put更新hero表指定字段的數(shù)據(jù),具體語法如下:

put'tablename','row','columnfamily:columnname','newvalue’

在hero中,將行鍵為1001、列名name且值為18這一條數(shù)據(jù)中的值更新成100,命令如下:hbase(main):010:0>put‘hero','1001','info:age','100’

HBase的基本操作6.獲取指定字段的操作

通過使用get獲取指定行或指定列族:列的數(shù)據(jù),具體語法如下:

//查看指定行的數(shù)據(jù)get'tablename','row1'獲取hero

表中行鍵為1001的數(shù)據(jù),命令如下:

hbase(main):012:0>get'hero

','1001'

HBase的基本操作7.

統(tǒng)計操作

通過使用count統(tǒng)計表中數(shù)據(jù)的行數(shù),具體語法如下:count'tablename’

統(tǒng)計hero

表中數(shù)據(jù)的行數(shù),命令如下:hbase(main):013:0>count'hero

'

HBase的基本操作8.

刪除操作

通過使用delete刪除表中“指定字段”的數(shù)據(jù),具體語法如下:

delete'tablename','row','columnname','timestamp'

如果要刪除表中一行所有的數(shù)據(jù),可以使用deleteall命令,具體語法如下:

deleteall'tablename','row'

HBase的基本操作通過使用truncate清空表中的所有數(shù)據(jù),具體語法如下:truncate'tablename'

清空hero

表中的所有數(shù)據(jù),命令如下:hbase(main):0018:0>truncate'hero

'

通過使用drop刪除表,具體語法如下:drop'tablename'

例如,刪除表hero

,命令如下:hbase(main):020:0>disable'hero'hbase(main):020:0>drop'hero'

上述的代碼中,首先使用“disable”讓hero

表變?yōu)榻脿顟B(tài),然后進行刪除操作。若表不是禁用狀態(tài),則無法刪除。HBase的JavaAPI操作HBase是由Java語言開發(fā)的,它對外提供了JavaAPI的接口。下面,通過一個表來列舉HBase常見的JavaAPI。HBase的JavaAPI操作接下來,通過JavaAPI來操作Hbase分布式數(shù)據(jù)庫,包括增加,刪除,修改以及查詢的數(shù)據(jù)操作,具體如下:1.創(chuàng)建工程并導入依賴創(chuàng)建名稱為”spark_chapter05”的Maven項目HBase的JavaAPI操作2.配置項目依賴pom.xml<!--單元測試依賴-->

<dependencies>

<dependency>

<groupId>junit</groupId>

<artifactId>junit</artifactId>

<version>4.12</version>

</dependency>

<!--hbase客戶端依賴-->

<dependency>

<groupId>org.apache.hbase</groupId>

<artifactId>hbase-client</artifactId>

<version>1.2.1</version>

</dependency>

<!--hbase核心依賴-->

<dependency>

<groupId>org.apache.hbase</groupId>

<artifactId>hbase-common</artifactId>

<version>1.2.1</version>

</dependency>

</dependencies>HBase的JavaAPI操作3.在java目錄下創(chuàng)建包創(chuàng)建cn.it.hbase的包—創(chuàng)建HBaseTest類HBase的JavaAPI操作4.初始化Configration對象HBase的JavaAPI操作5.建表HBase的JavaAPI操作6.增加數(shù)據(jù)HBase的JavaAPI操作7.查詢數(shù)據(jù)HBase的JavaAPI操作8.查詢Scan數(shù)據(jù)HBase的JavaAPI操作8.查詢Scan數(shù)據(jù)HBase的JavaAPI操作9.刪除數(shù)據(jù)HBase的JavaAPI操作10.刪除表55小結掌握HBaseShell操作掌握HBase

JavaAPI操作通信數(shù)據(jù)分析與實戰(zhàn)HBase分布式數(shù)據(jù)庫第五章第4節(jié)57熟悉HBase的架構

知道HBase物理存儲知道HBase尋址掌握HBase讀寫數(shù)據(jù)原理學習目標TARGETHBase的架構HBase構建在HadoopHDFS之上,HadoopHDFS為HBase提供了高可靠的底層存儲支持,HadoopMapReduce為HBase提供高性能的計算能力,Zookeeper為HBase提供穩(wěn)定服務和容錯機制。HBase的整體架構如下所示。HBase的架構Client即客戶端,它通過RPC協(xié)議與HBase通信。即分布式協(xié)調服務,在HBase集群中的主要作用是監(jiān)控HRegionServer的狀態(tài)。ZooKeeperHBase的架構HMaster即HBase的主節(jié)點,用于協(xié)調多個HRegionServer,主要用于監(jiān)控HRegionServer的狀態(tài)以及平衡HRegionServer之間的負載。即HBase的從節(jié)點,它包括了多個HRegion,主要用于響應用戶的I/O請求,向HDFS文件系統(tǒng)讀寫數(shù)據(jù)。HregionServerHBase的架構HRegion即HBase表的分片,每個Region中保存的是HBase表中某段連續(xù)的數(shù)據(jù)。每一個HRegion包含一或多個Store。每個Store用于管理一個Region上的一個列族。StoreHBase的架構MemStore即內存級緩存,MemStore存放在store中的,用于保存修改的數(shù)據(jù)(即KeyValues形式)。MemStore中的數(shù)據(jù)寫到文件后就是StoreFile,StoreFile底層是以HFile文件的格式保存在HDFS上。StoreFileHBase的架構HFile即HBase中鍵值對類型的數(shù)據(jù)均以HFile文件格式進行存儲。即預寫日志文件,負責記錄HBase修改。當HBase讀寫數(shù)據(jù)時,數(shù)據(jù)不是直接寫進磁盤,而是會在內存中保留一段時間。HLog物理存儲1HBase表的數(shù)據(jù)按照行鍵RowKey的字典序進行排列,并且切分多個HRegion存儲,存儲方式如下所示。Region在行方向上的存儲方式物理存儲02每個Region存儲的數(shù)據(jù)是有限的,如果當Region增大到一個閥值(128)時,會被等分切成兩個新的Region,切分方式如下所示。HRegion的切分方式2物理存儲03一個HRegionServer上可以存儲多個Region,但是每個Region只能被分布到一個HRegionServer上,分布方式如下。HRegion的分布方式物理存儲04MemStore中存儲的是用戶寫入的數(shù)據(jù),一旦MemStore存儲達到閾值時,里面存儲的數(shù)據(jù)就會被刷新到新生成的StoreFile中(底層是HFile),該文件是以HFile的格式存儲到HDFS上,具體存儲方式如下所示。HBase表的存儲方式尋址機制當HBase表查詢數(shù)據(jù)遵循的是尋址機制,接下來,通過一張圖來學習一下HBase的尋址機制,具體如下所示。Zookeeper中存儲的是ROOT表的數(shù)據(jù),而ROOT表中存儲的是META表的Region信息,也就是所有RegionServer的地址。尋址機制041Client訪問ZooKeeper請求行鍵rk001數(shù)據(jù)所在RegionServer地址。2Zookeeper從--ROOT-表中查詢所有表的.MATA.信息。3.META.表將具體存儲行鍵rk001數(shù)據(jù)的RegionServer的地址返回給Client。尋址機制4Client獲取到地址后,向該RegionServer發(fā)送查詢行鍵為rk001這條數(shù)據(jù)請求,RegionServer收到請求,就查詢行鍵rk001的Region。5RegionServer將行鍵為rk001這條數(shù)據(jù)的所有信息返回給Client。HBase讀寫數(shù)據(jù)04HBase讀取數(shù)據(jù)041Client通過ZooKeeper、“-ROOT-”表及“.META.”表來找到目標數(shù)據(jù)所在的RegionServer地址。2Client通過請求RegionServer地址來查詢目標數(shù)據(jù)。3RegionServer定位到目標數(shù)據(jù)所在的Region,然后發(fā)出查詢目標數(shù)據(jù)的請求;4Region先在MemStore中查找目標數(shù)據(jù),若查找到則返回;若查找不到,則繼續(xù)在StoreFile中查找。041Client根據(jù)行鍵RowKey找到對應的Region所在的RegionServer。2Client向RegionServer發(fā)送提交寫入數(shù)據(jù)的請求。3RegionServer找到目標Region。4Region檢查數(shù)據(jù)是否與Schema一致。HBase寫入數(shù)據(jù)HBase寫入數(shù)據(jù)045若Client沒有指定版本,則獲取當前系統(tǒng)的時間作為數(shù)據(jù)版本。6將更新的記錄寫入預寫日志HLog和MemStore中。7判斷MemStore是否已滿,若滿則進行flush操作,將數(shù)據(jù)寫入StoreFile文件,反之,則直接將數(shù)據(jù)存入MemStore。75小結熟悉HBase的架構

知道HBase物理存儲知道HBase尋址掌握HBase讀寫數(shù)據(jù)原理通信數(shù)據(jù)分析與實戰(zhàn)HBase分布式數(shù)據(jù)庫第五章第5節(jié)77熟悉HBase和Hive的環(huán)境搭建熟悉HBase和Hive的交互學習目標TARGETHBase和Hive的整合在實際業(yè)務中,由于HBase不支持使用SQL語法,因此我們操作和計算HBase分布式數(shù)據(jù)庫中的數(shù)據(jù)是非常不方便的,并且效率也低。由于Hive支持標準的SQL語句,因此,我們可以將HBase和Hive進行整合,通過使用Hive數(shù)據(jù)倉庫操作HBase分布式數(shù)據(jù)庫中的數(shù)據(jù),以此來滿足實際業(yè)務的需求。HBase和Hive的整合通過一個整合Hive和HBase的例子,實現(xiàn)Hive表中插入的數(shù)據(jù)可以從HBase表中獲取的需求,具體步驟如下:1環(huán)境搭建。在服務器hadoop01上執(zhí)行命令“vi/etc/profile”,配置Hive和HBase的環(huán)境變量。2導入依賴。將目錄/hbase-1.2.1/lib下的相關依賴復制一份到目錄/apache-hive-1.2.1-bin/lib下。3在hive-site.xml配置文件中,添加Zookeeper集群地址和指定其端口號,執(zhí)行“source/etc/profile”命令使環(huán)境變量配置文件生效。4啟動相關的服務。啟動Zookeeper、Hadoop、MySQL、Hive以及HBase服務。HBase和Hive的整合5新建Hive表。在Hive數(shù)據(jù)庫創(chuàng)建hive_hbase_emp_table表,實現(xiàn)Hive與HBase整合。6創(chuàng)建Hive臨時中間表。由于不能將數(shù)據(jù)直接插入與HBase關聯(lián)的Hive表hive_hbase_emp_table中,所以需要創(chuàng)建中間表emp。7插入數(shù)據(jù)。向臨時中間表emp插入數(shù)據(jù),再通過insert命令將臨時中間表emp中的數(shù)據(jù)導入到hive_hbase_emp_table表中。8查看hive_hbase_emp_table表和hbase_emp_table表的數(shù)據(jù)是否一致,則來判斷HBase和Hive是否整合成功。HBase和Hive的整合#配置HBase的環(huán)境變量export

HBASE_HOME=/export/servers/hbase-1.2.1export

PATH=$PATH:$HBASE_HOME/bin:#配置Hive的環(huán)境變量export

HIVE_HOME=/export/servers/apache-hive-1.2.1-binexport

PATH=$PATH:$HIVE_HOME/bin:HBase和Hive的整合

#進入habase的lib目錄下cd

/export/servers/hbase-1.2.1/lib/

#將以下的jar包復制到hive安裝包的lib下cphbase-common-1.2.1.jar/export/servers/apache-hive-1.2.1-bin/libcphbase-server-1.2.1.jar/export/servers/apache-hive-1.2.1-bin/libcphbase-client-1.2.1.jar/export/servers/apache-hive-1.2.1-bin/libcphbase-protocol-1.2.1.jar/export/servers/apache-hive-1.2.1-bin/libcphbase-it-1.2.1.jar/export/servers/apache-hive-1.2.1-bin/libcphtrace-core-3.1.0-incubating.jar/export/servers/apache-hive-1.2.1-bin/libcphbase-hadoop2-compat-1.2.1.jar/export/servers/apache-hive-1.2.1-bin/libcphbase-hadoop-compat-1.2.1.jar/export/servers/apache-hive-1.2.1-bin/libHBase和Hive的整合cd/export/servers/apache-hive-1.2.1-bin/conf

vihive-site.xml

<!--指定Zookeeper集群地址--><property>

<name>hive.zookeeper.quorum</name>

<value>hadoop01,hadoop02,hadoop03</value></property>

<!--指定Zookeeper客戶端的端口號--><property>

<name>hive.zookeeper.client.port</name>

<value>2181</value></property>

#生效環(huán)境變量source/etc/profileHBase和Hive的整合#啟動Hadoopstart-all.sh

#啟動zookeeperzkServer.shstart

#啟動Mysqlservicemysqldstart

#啟動hivecd/export/servers/apache-hive-1.2.1-binbin/hi

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論