Hadoop大數(shù)據(jù)處理技術(shù)基礎(chǔ)與實(shí)踐(微課版)(第3版) 課件 第9、10章 分布式數(shù)據(jù)倉(cāng)庫(kù)技術(shù)Hive、Hadoop與RDBMS數(shù)據(jù)遷移工具Sqoop_第1頁(yè)
Hadoop大數(shù)據(jù)處理技術(shù)基礎(chǔ)與實(shí)踐(微課版)(第3版) 課件 第9、10章 分布式數(shù)據(jù)倉(cāng)庫(kù)技術(shù)Hive、Hadoop與RDBMS數(shù)據(jù)遷移工具Sqoop_第2頁(yè)
Hadoop大數(shù)據(jù)處理技術(shù)基礎(chǔ)與實(shí)踐(微課版)(第3版) 課件 第9、10章 分布式數(shù)據(jù)倉(cāng)庫(kù)技術(shù)Hive、Hadoop與RDBMS數(shù)據(jù)遷移工具Sqoop_第3頁(yè)
Hadoop大數(shù)據(jù)處理技術(shù)基礎(chǔ)與實(shí)踐(微課版)(第3版) 課件 第9、10章 分布式數(shù)據(jù)倉(cāng)庫(kù)技術(shù)Hive、Hadoop與RDBMS數(shù)據(jù)遷移工具Sqoop_第4頁(yè)
Hadoop大數(shù)據(jù)處理技術(shù)基礎(chǔ)與實(shí)踐(微課版)(第3版) 課件 第9、10章 分布式數(shù)據(jù)倉(cāng)庫(kù)技術(shù)Hive、Hadoop與RDBMS數(shù)據(jù)遷移工具Sqoop_第5頁(yè)
已閱讀5頁(yè),還剩41頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

第九章分布式數(shù)據(jù)倉(cāng)庫(kù)技術(shù)Hive9.1Hive出現(xiàn)的原因9.1Hive出現(xiàn)的原因如何實(shí)現(xiàn)對(duì)SQL技術(shù)比較熟悉的程序設(shè)計(jì)人員在Hadoop平臺(tái)上對(duì)海量數(shù)據(jù)進(jìn)行分析?如何實(shí)現(xiàn)傳統(tǒng)的數(shù)據(jù)格式到Hadoop平臺(tái)上的遷移,如基于傳統(tǒng)關(guān)系型數(shù)據(jù)庫(kù)的數(shù)據(jù)格式和SQL處理技術(shù)?如何實(shí)現(xiàn)傳統(tǒng)數(shù)據(jù)庫(kù)設(shè)計(jì)人員在Hadoop平臺(tái)上使用其所熟悉的SQL技術(shù)施展才能?如何在分布式環(huán)境下采用數(shù)據(jù)倉(cāng)庫(kù)技術(shù)從更多的數(shù)據(jù)中快速地獲取數(shù)據(jù)的有效價(jià)值?Hive正是為了解決這類問(wèn)題應(yīng)運(yùn)而生的!9.1Hive出現(xiàn)的原因Hive的定義

Hive是一種數(shù)據(jù)倉(cāng)庫(kù)技術(shù),用于查詢和管理存儲(chǔ)在分布式環(huán)境下的大數(shù)據(jù)集,由Facebook公司研發(fā)并作為開(kāi)源項(xiàng)目貢獻(xiàn)給了Apache軟件基金會(huì),目前Hive成功升級(jí)為Apache的頂級(jí)項(xiàng)目,并獲得了全球大多數(shù)自由軟件愛(ài)好者和大型軟件公司的源碼貢獻(xiàn)和功能完善,成為一個(gè)應(yīng)用廣泛、可擴(kuò)展的數(shù)據(jù)處理平臺(tái)。9.2Hive服務(wù)組成9.2Hive服務(wù)組成9.2Hive服務(wù)組成

Hive的存儲(chǔ)是建立在Hadoop之上的,本身并沒(méi)有特定的數(shù)據(jù)存儲(chǔ)格式,也不會(huì)為數(shù)據(jù)建立索引,數(shù)據(jù)能以任意的形式存儲(chǔ)在HDFS上,或者以特定分類形式存儲(chǔ)在HBase中。用戶可以靈活地根據(jù)自己對(duì)數(shù)據(jù)特定部分進(jìn)行分析應(yīng)用的需求組織相應(yīng)的Hive表,在創(chuàng)建Hive表時(shí),指明數(shù)據(jù)的列分隔符和行分隔符即可解析存儲(chǔ)在HDFS或HBase上的數(shù)據(jù)。Hive本身建立在Hadoop體系之上,主要是提供了一個(gè)SQL解析過(guò)程,把外部SQL命令解析成一個(gè)MapReduce作業(yè)計(jì)劃,并把按照該計(jì)劃生成的MapReduce任務(wù)交給Hadoop集群處理9.2Hive服務(wù)組成

Hive的體系結(jié)構(gòu)9.2Hive服務(wù)組成

Hive的體系結(jié)構(gòu)介紹(1)CLI(CommandLineInterface):即命令行接口,提供在HiveShell下執(zhí)行類似SQL命令的相關(guān)HQL操作,也是Hive提供的標(biāo)準(zhǔn)接口,可以使用一條HQL命令返回存儲(chǔ)在Hadoop上的數(shù)據(jù)。(2)JDBC/ODBC:Hive提供了純Java的JDBC驅(qū)動(dòng),該類定義在org.apache.hadoop.hive.jdbc.HiveDriver中。當(dāng)在Java應(yīng)用程序配置方法中使用jdbc:hive://host:port/dbname形式的JDBCURI,Java應(yīng)用程序?qū)?huì)連接以獨(dú)立進(jìn)程形式運(yùn)行在host:port上的Hive服務(wù)端。(3)WebUI(UserInterface):通過(guò)瀏覽器訪問(wèn)和操作Hive服務(wù)端,可以查看Hive數(shù)據(jù)庫(kù)模式,執(zhí)行HQL相關(guān)操作命令。9.2Hive服務(wù)組成Hive的體系結(jié)構(gòu)介紹(4)ThriftServer:為Thrift(是Facebook開(kāi)發(fā)的一個(gè)軟件框架,用來(lái)進(jìn)行可拓展且跨語(yǔ)言的服務(wù))客戶端應(yīng)用、JDBC驅(qū)動(dòng)應(yīng)用、ODBC驅(qū)動(dòng)應(yīng)用提供Thrift服務(wù),即實(shí)現(xiàn)用其他語(yǔ)言編寫(xiě)的程序轉(zhuǎn)換為Java應(yīng)用程序(因?yàn)镠adoop是用Java語(yǔ)言編寫(xiě)的),為編寫(xiě)Python、C++、PHP、Ruby等應(yīng)用程序使用Hive操作提供了方便。(5)Driver:實(shí)現(xiàn)Hive服務(wù)操作到MapReduce分布式應(yīng)用的任務(wù)轉(zhuǎn)化。主要包含編譯器(Compiler),優(yōu)化器(Optimizer)和執(zhí)行器(Executor)。(6)MetaStore:Hive采用類SQL語(yǔ)法模式的HQL語(yǔ)言操作存儲(chǔ)在Hadoop分布式環(huán)境上的數(shù)據(jù),因此需要在Hive與Hadoop之間提供一層抽象接口,實(shí)現(xiàn)Hive與Hadoop之間不同數(shù)據(jù)格式的轉(zhuǎn)換,接口屬性包括表名、列名、表分區(qū)名以及數(shù)據(jù)在HDFS上的存儲(chǔ)位置,接口屬性內(nèi)容又稱為Hive表元數(shù)據(jù),以元數(shù)據(jù)內(nèi)容形式存儲(chǔ)在數(shù)據(jù)庫(kù)中,用來(lái)限定Hive如何進(jìn)行格式化操作從Hadoop中獲取到的任何非結(jié)構(gòu)化數(shù)據(jù)。9.2Hive服務(wù)組成Hive的體系結(jié)構(gòu)介紹(7)JobClient:執(zhí)行MapReduce分布式任務(wù)的作業(yè)調(diào)度器。(8)NameNode和DataNode:NameNode主要負(fù)責(zé)管理HDFS文件系統(tǒng),主要包括NameSpace管理(其實(shí)就是目錄結(jié)構(gòu)),Block管理。NameNode提供的始終是被動(dòng)接收服務(wù)的Server。DataNode主要是用來(lái)存儲(chǔ)數(shù)據(jù)文件并負(fù)責(zé)實(shí)際底層的文件讀寫(xiě)。9.3Hive安裝9.3Hive安裝1.基本安裝2.MySQL安裝3.Hive配置hive-site.xml文件內(nèi)容編輯hive-env.sh文件,在文件末尾添加變量指向Hadoop

的安裝路徑創(chuàng)建數(shù)據(jù)倉(cāng)庫(kù)操作過(guò)程中臨時(shí)數(shù)據(jù)在HDFS上的轉(zhuǎn)存目錄創(chuàng)建數(shù)據(jù)倉(cāng)庫(kù)操作過(guò)程中數(shù)據(jù)文件在HDFS上的存儲(chǔ)目錄分別對(duì)剛創(chuàng)建的目錄添加組可寫(xiě)權(quán)限,允許同組用戶進(jìn)行數(shù)據(jù)分析操作9.3Hive安裝1.HiveSET命令2.進(jìn)入Hive會(huì)話帶-hiveconf

選項(xiàng)3.讀hive-site.xml文件4.讀hive-default.xml文件5.讀hadoop-site.xml文件及其相關(guān)文件(如core-site.xml、hdfs-site.xml、mapred-site.xml)6.讀hadoop-default.xml文件及其相關(guān)文件(如core-default.xml、hdfs-default.xml、mapred-default.xml)9.4HiveShell介紹9.4HiveShell介紹HiveShell運(yùn)行在Hadoop集群環(huán)境上,是Hive提供的命令行接口(CLI),在Hive提示符輸入HiveQL命令,HiveShell把HiveQL查詢轉(zhuǎn)換為一系列MapReduce作業(yè)對(duì)任務(wù)進(jìn)行并行處理,然后返回處理結(jié)果。Hive采用RDBMS表(table)形式組織數(shù)據(jù),并為存儲(chǔ)在Hadoop上的數(shù)據(jù)提供附屬的對(duì)數(shù)據(jù)進(jìn)行展示的結(jié)構(gòu)描述信息,該描述信息稱為元數(shù)據(jù)(metadata)或表模式,以metastore形式存儲(chǔ)在RDBMS數(shù)據(jù)庫(kù)中。HiveShell下的大多數(shù)操作與MySQL命令一致,熟悉MySQL的使用者會(huì)察覺(jué)兩者的語(yǔ)法操作基本一樣。9.5HQL詳解9.5HQL詳解9.5HQL詳解Hive管理數(shù)據(jù)方式1.內(nèi)部表2.外部表3.內(nèi)部表與外部表之間的抉擇4.分區(qū)5.桶9.5HQL詳解Hive表DDL操作1.Create/Drop/Alter數(shù)據(jù)庫(kù)2.Create/Drop/Truncate表3.Alter表/分區(qū)/列4.Create/Drop/Alter視圖5.Create/Drop/Alter索引6.Create/Drop函數(shù)7.Create/Drop/Grant/Revoke角色和權(quán)限9.5HQL詳解Hive表DML操作1.將文件中的數(shù)據(jù)導(dǎo)入(Load)到Hive表中2.Select操作3.將select查詢結(jié)果插入hive表中4.將select查詢結(jié)果寫(xiě)入文件5.Hive表ACID事務(wù)特性本章完第十章Hadoop與RDBMS數(shù)據(jù)遷移工具Sqoop10.1Sqoop簡(jiǎn)介及基本安裝10.1Sqoop簡(jiǎn)介及基本安裝

Sqoop是實(shí)現(xiàn)Hadoop與關(guān)系型數(shù)據(jù)庫(kù)(RDBMS)之間進(jìn)行數(shù)據(jù)遷移的工具,通過(guò)Sqoop可以簡(jiǎn)單、快速地從諸如MySQL、Oracle等傳統(tǒng)關(guān)系型數(shù)據(jù)庫(kù)中把數(shù)據(jù)導(dǎo)入(import)到諸如HDFS、HBase、Hive等。Hadoop分布式存儲(chǔ)環(huán)境下,使用HadoopMapReduce等分布式處理工具對(duì)數(shù)據(jù)進(jìn)行加工處理,然后可以將最終處理結(jié)果導(dǎo)出(export)到RDBMS中。10.1Sqoop簡(jiǎn)介及基本安裝Sqoop的安裝非常簡(jiǎn)單,在類UNIX系統(tǒng)上需要預(yù)先安裝好Java6及其后期版本,并已部署Hadoop穩(wěn)定版本的集群環(huán)境。從網(wǎng)站/下載最新的Sqoop穩(wěn)定版本。Sqoop的Apache發(fā)行包分為源碼包和已經(jīng)編譯好的二進(jìn)制包,下面只介紹Sqoop的二進(jìn)制包安裝方法。下載Sqoop二進(jìn)制包,并解壓到相應(yīng)安裝目錄,解壓后會(huì)生成子目錄sqoop-x.y.z.bin(x.y.z為版本號(hào)): $tar-xzfsqoop-x.y.z.bin.tar.gz把sqoop-x.y.z.bin目錄移動(dòng)到sqoop-x.y.z目錄: $mvsqoop-x.y.z.bin/sqoop-x.y.z/設(shè)置環(huán)境變量,編輯文件~/.bashrc或~/.bash_profile把Sqoop的安裝路徑添加到PATH變量中,方便Sqoop的使用和管理: $exportSQOOP_HOME=/home/trucy/sqoop-x.y.z $exportPATH=$PATH:$SQOOP_HOME/bin10.2Sqoop的配置10.2Sqoop的配置

Sqoop是實(shí)現(xiàn)Hadoop與關(guān)系型數(shù)據(jù)庫(kù)(RDBMS)之間進(jìn)行數(shù)據(jù)遷移的工具,通過(guò)Sqoop可以簡(jiǎn)單、快速地從諸如MySQL、Oracle等傳統(tǒng)關(guān)系型數(shù)據(jù)庫(kù)中把數(shù)據(jù)導(dǎo)入(import)到諸如HDFS、HBase、Hive等。Hadoop分布式存儲(chǔ)環(huán)境下,使用HadoopMapReduce等分布式處理工具對(duì)數(shù)據(jù)進(jìn)行加工處理,然后可以將最終處理結(jié)果導(dǎo)出(export)到RDBMS中。10.2Sqoop的配置修改文件~/.bashrc或~/.bash_profile配置環(huán)境變量使用export命令將上述工具的根目錄添加到文件末尾;

同時(shí)Sqoop連接RDBMS需要使用相應(yīng)的數(shù)據(jù)庫(kù)驅(qū)動(dòng)工具,如通過(guò)JDBC連接MySQL需要用到mysql-connector-java-x.y.z-bin.jar驅(qū)動(dòng)程序?qū)ySQL的JDBC驅(qū)動(dòng)程序mysql-connector-java-x.y.z-bin.jar復(fù)制到${SQOOP_HOME}/lib目錄下10.2Sqoop的配置使用sqoop的list-databases命令測(cè)試Sqoop連接MySQL是否成功:$sqooplist-databases--connectjdbc:mysql://mysql.server.ip:3306/--usernameroot-PEnterpassword:(輸入MySQL中root用戶密碼)information_schemaemployeeshiveDBmysqltesttrucyDB10.2Sqoop的配置若配置好Hadoop相應(yīng)環(huán)境變量后使用Sqoop仍無(wú)法連接MySQL,可以執(zhí)行下述操作。(1)進(jìn)入${SQOOP_HOME}/conf目錄(注意第一個(gè)$為L(zhǎng)inux命令提示符,第二個(gè)$為系統(tǒng)變量取值符): $cd${SQOOP_HOME}/conf(2)復(fù)制Sqoop讀取環(huán)境變量的模板文件到自定義文件: $cpsqoop-env-template.shsqoop-env.sh(3)編輯文件sqoop-env.sh,修改相應(yīng)屬性值指向相關(guān)軟件安裝目錄,如: #Setpathtowherebin/hadoopisavailable exportHADOOP_COMMON_HOME=/usr/local/hadoop #Setpathtowherehadoop-*-core.jarisavailable exportHADOOP_MAPRED_HOME=/usr/local/hadoop #setthepathtowherebin/hbaseisavailable exportHBASE_HOME=/usr/local/hbase #Setthepathtowherebin/hiveisavailable exportHIVE_HOME=/usr/local/hive #Setthepathforwherezookeperconfigdiris exportZOOCFGDIR=/usr/local/zk10.3Sqoop相關(guān)功能10.3Sqoop相關(guān)功能Sqoop提供了一系列工具命令(toolscommand),包括導(dǎo)入操作(import)、導(dǎo)出操作(export)、導(dǎo)入所有表(import-all-tables)、列出所有數(shù)據(jù)庫(kù)實(shí)例(list-databases)和列出特定數(shù)據(jù)庫(kù)實(shí)例中的所有表(list-tables)等,在Linux命令提示符下輸入sqoophelp會(huì)輸出Sqoop所支持的所有工具命令下面分別詳細(xì)介紹Sqoop所支持的工具命令。10.3Sqoop相關(guān)功能(1)使用root用戶登錄MySQL數(shù)據(jù)庫(kù):$mysql-uroot–p(2)輸入root用戶密碼,創(chuàng)建MySQL數(shù)據(jù)庫(kù)SqoopDB:mysql>createdatabasesqoopDB;(3)使用root用戶登錄MySQL數(shù)據(jù)庫(kù),創(chuàng)建用戶bear,密碼為123456:

$mysql-uroot-pmysql>createuser'bear'identifiedby'123456';(4)授權(quán)用戶bear擁有數(shù)據(jù)庫(kù)sqoopDB的所有權(quán)限:mysql>grantallprivilegesonsqoopDB.*to'bear'@'%'identifiedby'123456';(5)刷新系統(tǒng)權(quán)限表:mysql>flushprivileges;新建一個(gè)MySQL數(shù)據(jù)庫(kù)SqoopDB和用戶bear,并授予用戶bear擁有操作數(shù)據(jù)庫(kù)SqoopDB的所有權(quán)限。10.3Sqoop相關(guān)功能下面使用bear用戶登錄MySQL數(shù)據(jù)庫(kù),在數(shù)據(jù)庫(kù)實(shí)例sqoopDB下創(chuàng)建一張employees表,后面所有的Sqoop相關(guān)操作都在SqoopDBemployees表上進(jìn)行:(1)使用bear用戶登錄MySQL數(shù)據(jù)庫(kù):$mysql-ubear–p(2)輸入密碼,進(jìn)入MySQL數(shù)據(jù)庫(kù)SqoopDB:mysql>usesqoopDB;(3)創(chuàng)建employees表:

mysql>CREATETABLEemployees(->idint(11)NOTNULLAUTO_INCREMENT,->namevarchar(100)NOTNULL,->ageint(8)NOTNULLDEFAULT0,->placevarchar(400)NOTNULL,->entry_timetimestampNOTNULLDEFAULTCURRENT_TIMESTAMP,->positionvarchar(500),->PRIMARYKEY(id)->)ENGINE=InnoDBDEFAULTCHARSET=utf8;QueryOK,0rowsaffected(0.18sec)10.3Sqoop相關(guān)功能(4)向employees表中插入3條數(shù)據(jù):mysql>INSERTINTOemployees(name,age,place,position)VALUES('James',27,'NewYork','Manager');mysql>INSERTINTOemployees(name,age,place,position)VALUES('Allen',30,'NewYork','CEO');mysql>INSERTINTOemployees(name,age,place,position)VALUES('Sharen',33,'NewYork','CTO');10.3Sqoop相關(guān)功能importsqoopimport工具導(dǎo)入RDBMS中的單個(gè)表到HDFS上,RDBMS表中的每一行以單獨(dú)記錄形式存儲(chǔ)在HDFS中,記錄默認(rèn)以文本文件格式(每個(gè)記錄一行)進(jìn)行存儲(chǔ),還可以二進(jìn)制形式進(jìn)行存儲(chǔ),如Avro文件格式或序列文件格式(SequenceFiles)。sqoop-import語(yǔ)法格式為(兩種操作功能一樣):$sqoopimport(generic-args)(import-args)$sqoop-import(generic-args)(import-args)sqoop-import操作分為連接數(shù)據(jù)庫(kù)服務(wù)器和導(dǎo)入數(shù)據(jù)等步驟。10.3Sqoop相關(guān)功能import-all-tablessqoopimport-all-tables工具的語(yǔ)法與sqoop-import語(yǔ)法大致相同,唯一的區(qū)別是sqoopimport-all-tables操作導(dǎo)入多個(gè)RDBMS表到HDFS上,每個(gè)RDBMS表數(shù)據(jù)分別位于HDFS上的一個(gè)單獨(dú)目錄下。執(zhí)行sqoopimport-all-tables操作必須滿足以下條件。(1)每個(gè)RDBMS表中只有一個(gè)單獨(dú)列作為主鍵,即不能是多個(gè)列的組合鍵作為主鍵。(2)執(zhí)行導(dǎo)入操作時(shí),每個(gè)RDBMS表的所有列都將被導(dǎo)入到HDFS上。(3)不能在RDBMS表上附加任何諸如WHERE條件的子句。10.3Sqoop相關(guān)功能查詢表items_info顯示結(jié)果查看數(shù)據(jù)庫(kù)實(shí)例SqoopDB中的所有表Sqoop-import語(yǔ)法格式為(兩種操作功能一樣):$sqoopimport-all-tables(generic-args)(import-args)$sqoop-import-all-tables(generic-args)(import-args)10.3Sqoop相關(guān)功能查看表users_info的內(nèi)容exportsqoop-export操作與sqoop-import的操作是相反的,即把HDFS、Hive、HBase中的文件或數(shù)據(jù)導(dǎo)出到RDBMS數(shù)據(jù)庫(kù)中,RDBMS表必須存在,否則sqoop-export操作執(zhí)行出錯(cuò)。sqoop-export語(yǔ)法格式為(兩種操作功能一樣):$sqoopexport(generic-args)(export-args)$sqoop-export(generic-args)(export-args)10.3Sqoop相關(guān)功能list-databasessqoop-list-databases用于列舉出指定數(shù)據(jù)庫(kù)服務(wù)器中的數(shù)據(jù)庫(kù)模式。$sqooplist-databases--connectjdbc:mysql://databas

溫馨提示

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

評(píng)論

0/150

提交評(píng)論