




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
【第4章回顧】1.了解ZooKeeper功能、起源和應(yīng)用場(chǎng)景。2.理解ZooKeeper體系架構(gòu)和工作原理。(重點(diǎn),難點(diǎn))3.理解ZooKeeper數(shù)據(jù)模型。(重點(diǎn))4.掌握ZooKeeper部署要點(diǎn),包括運(yùn)行環(huán)境、運(yùn)行模式和配置文件zoo.cfg、myid等。(重點(diǎn))5.掌握ZooKeeperShell命令(重點(diǎn)),了解ZooKeeper四字命令和ZooKeeperJavaAPI。6.熟練掌握在Linux環(huán)境下部署ZooKeeper集群、使用ZooKeeperShell服務(wù)端命令、客戶端命令。(重點(diǎn))【課程內(nèi)容】開學(xué)第一課(理論1學(xué)時(shí))第1章部署全分布模式Hadoop集群(理論3學(xué)時(shí)+實(shí)驗(yàn)2學(xué)時(shí))第2章HDFS實(shí)戰(zhàn)(理論4學(xué)時(shí)+實(shí)驗(yàn)2學(xué)時(shí))第3章MapReduce編程(理論4學(xué)時(shí)+實(shí)驗(yàn)2學(xué)時(shí))第4章部署ZooKeeper集群和ZooKeeper實(shí)戰(zhàn)(理論4學(xué)時(shí)+實(shí)驗(yàn)2學(xué)時(shí))第5章部署本地模式Hive和Hive實(shí)戰(zhàn)(理論4學(xué)時(shí)+實(shí)驗(yàn)2學(xué)時(shí))第6章Flume實(shí)戰(zhàn)(理論4學(xué)時(shí)+實(shí)驗(yàn)2學(xué)時(shí))第7章Kafka實(shí)戰(zhàn)(理論4學(xué)時(shí)+實(shí)驗(yàn)2學(xué)時(shí))第8章Spark集群部署和基本編程(理論4學(xué)時(shí)+實(shí)驗(yàn)2學(xué)時(shí))第9章Flink集群部署和基本編程(選修)第5章部署本地的模式Hive和Hive實(shí)戰(zhàn)5.1初識(shí)Hive5.2Hive體系架構(gòu)(重點(diǎn))5.3Hive數(shù)據(jù)類型5.4Hive數(shù)據(jù)模型(重點(diǎn))5.5Hive函數(shù)(重點(diǎn),難點(diǎn))5.6Hive部署要點(diǎn)(重點(diǎn))5.7Hive接口(重點(diǎn),難點(diǎn))5.8綜合實(shí)戰(zhàn):部署本地模式Hive和Hive實(shí)戰(zhàn)(實(shí)驗(yàn))5.1初識(shí)HiveHive是一個(gè)基于Hadoop的數(shù)據(jù)倉庫工具,它可以將結(jié)構(gòu)化的數(shù)據(jù)文件映射為一張表,并提供了類SQL查詢語言HiveQL(HiveQueryLanguage)。Hive由Facebook公司開源,主要用于解決海量結(jié)構(gòu)化日志數(shù)據(jù)的離線分析。Hive的本質(zhì)是將HiveQL語句轉(zhuǎn)化成MapReduce程序,并提交到Hadoop集群上運(yùn)行。Hive讓不熟悉MapReduce編程的開發(fā)人員直接編寫SQL語句來實(shí)現(xiàn)對(duì)大規(guī)模數(shù)據(jù)的統(tǒng)計(jì)分析操作,大大降低了學(xué)習(xí)門檻,同時(shí)也提升了開發(fā)效率。Hive處理的數(shù)據(jù)存儲(chǔ)在HDFS上,Hive分析數(shù)據(jù)底層的實(shí)現(xiàn)是MapReduce,執(zhí)行程序運(yùn)行在YARN上。Hive基本工作流程Hadoop集群Hiveselectcity,count(1)pvfromad_tablewheredata='20191001'groupbycityMapReduceYARNHDFSuser/hive/warehouse/ad_table/data='20191001'/log-20191001生成MR調(diào)度MR運(yùn)行MR讀取數(shù)據(jù)5.1初識(shí)Hive優(yōu)點(diǎn):(1)操作接口采用類SQL語法,簡(jiǎn)單易學(xué),提供快速開發(fā)的能力。(2)避免編寫MapReduce應(yīng)用程序,減少開發(fā)人員的學(xué)習(xí)成本。(3)Hive支持用戶自定義函數(shù),用戶可以根據(jù)需求來實(shí)現(xiàn)自己的函數(shù)。缺點(diǎn):(1)Hive執(zhí)行延遲比較高,常用于對(duì)實(shí)時(shí)性要求不高的海量數(shù)據(jù)分析場(chǎng)合中。(2)Hive的HiveQL表達(dá)能力有限,例如迭代式算法無法表達(dá),不擅長數(shù)據(jù)挖掘等。(3)Hive效率比較低,例如Hive自動(dòng)生成的MapReduce作業(yè),通常情況下不夠智能化,另外Hive粒度較粗,調(diào)優(yōu)比較困難。5.2Hive體系架構(gòu)1.客戶端組件1)CLI(CommmandLineInterface)2)JDBC/ODBC3)HWI(HiveWebInterface)2.服務(wù)端組件1)ThriftServer2)元數(shù)據(jù)(Metastore)3)驅(qū)動(dòng)器(Driver)HiveHadoop集群MapReduceYARNHDFS驅(qū)動(dòng)器(Driver)元數(shù)據(jù)(Metastore)CLIThriftServerHWIJDBCODBC解析器(SQLParser)編譯器(PhysicalPlan)優(yōu)化器(QueryOptimizer)執(zhí)行器(Execution)5.2Hive體系架構(gòu)元數(shù)據(jù)(Metastore)Metastore組件用于存儲(chǔ)Hive的元數(shù)據(jù),表名、表所屬的數(shù)據(jù)庫(默認(rèn)是default)、表的擁有者、列/分區(qū)字段、表的類型(是否是外部表)、表的數(shù)據(jù)所在目錄等。Hive元數(shù)據(jù)默認(rèn)存儲(chǔ)在自帶的Derby數(shù)據(jù)庫中,推薦使用MySQL存儲(chǔ)Metastore。元數(shù)據(jù)對(duì)于Hive十分重要,因此Hive支持把Metastore服務(wù)獨(dú)立出來,安裝到遠(yuǎn)程的服務(wù)器集群里,從而解耦Hive服務(wù)和Metastore服務(wù),保證Hive運(yùn)行的健壯性。Hive元數(shù)據(jù)通常有三種存儲(chǔ)位置形式:嵌入式元數(shù)據(jù)、本地元數(shù)據(jù)和遠(yuǎn)程元數(shù)據(jù),根據(jù)元數(shù)據(jù)存儲(chǔ)位置的不同,Hive部署模式也不同。5.3Hive數(shù)據(jù)類型1.基本數(shù)據(jù)類型2.集合數(shù)據(jù)類型1.基本數(shù)據(jù)類型數(shù)據(jù)類型長度說明數(shù)字類TINYINT1字節(jié)有符號(hào)整型,-128~127SMALLINT2字節(jié)有符號(hào)整型,-32768~32767INT4字節(jié)有符號(hào)整型,-2,147,483,648~2,147,483,647BIGINT8字節(jié)有符號(hào)整型,-9,223,372,036,854,775,808~9,223,372,036,854,775,807FLOAT4字節(jié)有符號(hào)單精度浮點(diǎn)數(shù)DOUBLE8字節(jié)有符號(hào)雙精度浮點(diǎn)數(shù)DOUBLEPRECISION8字節(jié)同DOUBLE,Hive2.2.0開始可用DECIMAL--可帶小數(shù)的精確數(shù)字字符串NUMERIC--同DECIMAL,Hive3.0.0開始可用日期時(shí)間類TIMESTAMP--時(shí)間戳,內(nèi)容格式:yyyy-mm-ddhh:mm:ss[.f...]DATE--日期,內(nèi)容格式:YYYY-MM-DDINTERVAL--存儲(chǔ)兩個(gè)時(shí)間戳之間的時(shí)間間隔字符串類STRING--字符串VARCHAR字符數(shù)范圍1-65535長度不定字符串CHAR最大的字符數(shù):255長度固定字符串Misc類BOOLEAN--布爾類型TRUE/FALSEBINARY--字節(jié)序列2.集合數(shù)據(jù)類型數(shù)據(jù)類型長度說明ARRAY--數(shù)組,存儲(chǔ)相同類型的數(shù)據(jù),索引從0開始,可以通過下標(biāo)獲取數(shù)據(jù)MAP--字典,存儲(chǔ)鍵值對(duì)數(shù)據(jù),鍵或者值的數(shù)據(jù)類型必須相同,通過鍵獲取數(shù)據(jù),MAP<primitive_type,data_type>STRUCT--結(jié)構(gòu)體,存儲(chǔ)多種不同類型的數(shù)據(jù),一旦結(jié)構(gòu)體被聲明,其各字段的位置不能改變,STRUCT<col_name:data_type[COMMENTcol_comment],...>UNIONTYPE--聯(lián)合體,UNIONTYPE<data_type,data_type,...>5.4Hive數(shù)據(jù)模型Hive沒有專門的數(shù)據(jù)存儲(chǔ)格式,也沒有為數(shù)據(jù)建立索引,用戶可以非常自由的組織Hive中的表,只需創(chuàng)建表時(shí)告訴Hive數(shù)據(jù)中的列分隔符和行分隔符,Hive就可以解析數(shù)據(jù)。Hive中所有的數(shù)據(jù)都存儲(chǔ)在HDFS中,根據(jù)對(duì)數(shù)據(jù)的劃分粒度,Hive包含以下數(shù)據(jù)模型:表(Table)、分區(qū)(Partition)和桶(Bucket)。表→分區(qū)→桶,對(duì)數(shù)據(jù)的劃分粒度越來越小。數(shù)據(jù)庫表表桶桶分區(qū)分區(qū)桶桶傾斜數(shù)據(jù)正常數(shù)據(jù)1.表(Table)Hive的表和關(guān)系數(shù)據(jù)庫中的表相同,具有各種關(guān)系代數(shù)操作。1)內(nèi)部表(Table)Hive默認(rèn)創(chuàng)建的表都是內(nèi)部表,因?yàn)檫@種表,Hive會(huì)(或多或少地)控制著數(shù)據(jù)的生命周期。默認(rèn)情況下Hive會(huì)將這些表的數(shù)據(jù)存儲(chǔ)在由配置項(xiàng)hive.metastore.warehouse.dir(例如/user/hive/warehouse)所定義的HDFS目錄的子目錄下,每一個(gè)Table在該數(shù)據(jù)倉庫目錄下都擁有一個(gè)對(duì)應(yīng)的目錄存儲(chǔ)數(shù)據(jù)。當(dāng)刪除一個(gè)內(nèi)部表時(shí),Hive會(huì)同時(shí)刪除這個(gè)數(shù)據(jù)目錄。內(nèi)部表不適合和其它工具共享數(shù)據(jù)。2)外部表(ExternalTable)Hive創(chuàng)建外部表時(shí)需要指定數(shù)據(jù)讀取的目錄,外部表僅記錄數(shù)據(jù)所在的路徑,不對(duì)數(shù)據(jù)的位置做任何改變,而內(nèi)部表創(chuàng)建時(shí)就把數(shù)據(jù)存放到默認(rèn)路徑下,當(dāng)刪除表時(shí),內(nèi)部表會(huì)將數(shù)據(jù)和元數(shù)據(jù)全部刪除,而外部表只刪除元數(shù)據(jù),數(shù)據(jù)文件不會(huì)刪除。外部表和內(nèi)部表在元數(shù)據(jù)的組織上是相同的,外部表加載數(shù)據(jù)和創(chuàng)建表同時(shí)完成,并不會(huì)移動(dòng)數(shù)據(jù)到數(shù)據(jù)倉庫目錄中。2.分區(qū)(Partition)分區(qū)表通常分為靜態(tài)分區(qū)表和動(dòng)態(tài)分區(qū)表,前者導(dǎo)入數(shù)據(jù)時(shí)需要靜態(tài)指定分區(qū),后者可以直接根據(jù)導(dǎo)入數(shù)據(jù)進(jìn)行分區(qū)。分區(qū)表實(shí)際上就是一個(gè)對(duì)應(yīng)HDFS文件系統(tǒng)上的獨(dú)立的文件夾,該文件夾下是該分區(qū)所有的數(shù)據(jù)文件。Hive中的分區(qū)就是分目錄,把一個(gè)大的數(shù)據(jù)集根據(jù)業(yè)務(wù)需要分割成小的數(shù)據(jù)集。分區(qū)的好處是可以讓數(shù)據(jù)按照區(qū)域進(jìn)行分類,避免了查詢時(shí)的全表掃描。3.桶(Bucket)分桶就是將同一個(gè)目錄下的一個(gè)文件拆分成多個(gè)文件,每個(gè)文件包含一部分?jǐn)?shù)據(jù),方便獲取值,提高檢索效率。分區(qū)針對(duì)的是數(shù)據(jù)的存儲(chǔ)路徑,分桶針對(duì)的是數(shù)據(jù)文件。分區(qū)提供一個(gè)隔離數(shù)據(jù)和優(yōu)化查詢的便利方式,但并非所有的數(shù)據(jù)集都可形成合理的分區(qū);分桶是將數(shù)據(jù)集分解成更容易管理的若干部分的另一種技術(shù)。用戶可以將分區(qū)或者未分區(qū)的表數(shù)據(jù)按某列的HASH函數(shù)值分配到桶中。事實(shí)上,每個(gè)桶通常是一個(gè)分區(qū)或者表目錄下的一個(gè)文件。例如,將分區(qū)劃分為n個(gè)桶,則將在分區(qū)目錄下產(chǎn)生n個(gè)文件。Hive通過某列的HASH值取模來決定桶的分配。使用桶分配數(shù)據(jù)的原因有兩個(gè)方面:第一,方便JOIN連接操作,連接時(shí)要求屬于同一個(gè)連接鍵的數(shù)據(jù)在一個(gè)分區(qū)中,假設(shè)分區(qū)Key和連接Key不同,則可以使用連接的鍵將表數(shù)據(jù)分桶,然后在桶內(nèi)進(jìn)行連接。第二,分桶使采樣過程更高效,從而降低Hive的查詢時(shí)間?!景咐罕鞸tudent在Hive中的分區(qū)、分桶存儲(chǔ)】5.5Hive函數(shù)內(nèi)置運(yùn)算符內(nèi)置函數(shù)自定義函數(shù)1.內(nèi)置運(yùn)算符類型運(yùn)算符說明算術(shù)運(yùn)算符+、-、*、/加、減、乘、除%求余&、|、^、~按位與、或、異或、非關(guān)系運(yùn)算符=、!=(或<>)、<、<=、>、>=等于、不等于、小于、小于等于、大于、大于等于ISNULL、ISNOTNULL判斷值是否為“NULL”LIKE、RLIKE、REGEXPLIKE進(jìn)行SQL匹配,RLIKE進(jìn)行Java匹配,REGEXP與RLIKE相同邏輯運(yùn)算符AND、&&邏輯與OR、|邏輯或NOT、!邏輯非復(fù)雜運(yùn)算符A[n]A是一個(gè)數(shù)組,n為int型。返回?cái)?shù)組A的第n個(gè)元素,第一個(gè)元素的索引為0M[key]M是Map,關(guān)鍵值是key,返回關(guān)鍵值對(duì)應(yīng)的值S.xS為struct,返回x字符串在結(jié)構(gòu)S中的存儲(chǔ)位置2.內(nèi)置函數(shù)(字符串函數(shù))函數(shù)說明length(stringA)返回字符串的長度reverse(stringA)返回倒序字符串concat(stringA,stringB…)連接多個(gè)字符串,合并為一個(gè)字符串,可以接受任意數(shù)量的輸入字符串concat_ws(stringSEP,stringA,stringB…)鏈接多個(gè)字符串,字符串之間以指定的分隔符分開substr(stringA,intstart)substring(stringA,intstart)從文本字符串中指定的起始位置后的字符substr(stringA,intstart,intlen)substring(stringA,intstart,intlen)從文本字符串中指定的位置指定長度的字符upper(stringA)ucase(stringA)將文本字符串轉(zhuǎn)換成字母全部大寫形式lower(stringA)lcase(stringA)將文本字符串轉(zhuǎn)換成字母全部小寫形式trim(stringA)刪除字符串兩端的空格,字符之間的空格保留ltrim(stringA)刪除字符串左邊的空格,其他的空格保留rtrim(stringA)刪除字符串右邊的空格,其他的空格保留regexp_replace(stringA,stringB,stringC)字符串A中的B字符被C字符替換regexp_extract(stringsubject,stringpattern,intindex)通過下標(biāo)返回正則表達(dá)式指定的部分parse_url(stringurlString,stringpartToExtract[,stringkeyToExtract])返回URL指定的部分2.內(nèi)置函數(shù)(字符串函數(shù))函數(shù)說明get_json_object(stringjson_string,stringpath)selecta.timestamp,get_json_object(a.appevents,‘$.eventid’),get_json_object(a.appenvets,‘$.eventname’)fromloga;space(intn)返回指定數(shù)量的空格repeat(stringstr,intn)重復(fù)N次字符串a(chǎn)scii(stringstr)返回字符串中首字符的數(shù)字值lpad(stringstr,intlen,stringpad)返回指定長度的字符串,給定字符串長度小于指定長度時(shí),由指定字符從左側(cè)填補(bǔ)rpad(stringstr,intlen,stringpad)返回指定長度的字符串,給定字符串長度小于指定長度時(shí),由指定字符從右側(cè)填補(bǔ)split(stringstr,stringpat)將字符串轉(zhuǎn)換為數(shù)組find_in_set(stringstr,stringstrList)返回字符串str第一次在strlist出現(xiàn)的位置。如果任一參數(shù)為NULL,返回NULL;如果第一個(gè)參數(shù)包含逗號(hào),返回0sentences(stringstr,stringlang,stringlocale)將字符串中內(nèi)容按語句分組,每個(gè)單詞間以逗號(hào)分隔,最后返回?cái)?shù)組ngrams(array>,intN,intK,intpf)SELECTngrams(sentences(lower(tweet)),2,100[,1000])FROMtwitter;context_ngrams(array>,array,intK,intpf)SELECTcontext_ngrams(sentences(lower(tweet)),array(null,null),100,[,1000])FROMtwitter;2.內(nèi)置函數(shù)(日期函數(shù))函數(shù)說明from_unixtime(bigintunixtime[,stringformat])UNIX_TIMESTAMP參數(shù)表示返回一個(gè)值YYYY-MM-DDHH:MM:SS或YYYYMMDDHHMMSS.uuuuuu格式,這取決于是否是在一個(gè)字符串或數(shù)字語境中使用的功能。該值表示在當(dāng)前的時(shí)區(qū)unix_timestamp()如果不帶參數(shù)的調(diào)用,返回一個(gè)Unix時(shí)間戳(從“1970-01-0100:00:00”到現(xiàn)在的UTC秒數(shù))為無符號(hào)整數(shù)unix_timestamp(stringdate)指定日期參數(shù)調(diào)用UNIX_TIMESTAMP(),它返回參數(shù)值“1970-01-0100:00:00”到指定日期的秒數(shù)。unix_timestamp(stringdate,stringpattern)指定時(shí)間輸入格式,返回到1970年秒數(shù)to_date(stringtimestamp)返回時(shí)間中的年月日to_dates(stringdate)給定一個(gè)日期date,返回一個(gè)天數(shù)(0年以來的天數(shù))year(stringdate)返回指定時(shí)間的年份,范圍在1000到9999,或?yàn)椤傲恪比掌诘?month(stringdate)返回指定時(shí)間的月份,范圍為1至12月,或?yàn)椤傲恪痹路莸?day(stringdate)dayofmonth(date)返回指定時(shí)間的日期hour(stringdate)返回指定時(shí)間的小時(shí),范圍為0到23minute(stringdate)返回指定時(shí)間的分鐘,范圍為0到59second(stringdate)返回指定時(shí)間的秒,范圍為0到59weekofyear(stringdate)返回指定日期所在一年中的星期號(hào),范圍為0到53datediff(stringenddate,stringstartdate)兩個(gè)時(shí)間參數(shù)的日期之差date_add(stringstartdate,intdays)給定時(shí)間,在此基礎(chǔ)上加上指定的時(shí)間段date_sub(stringstartdate,intdays)給定時(shí)間,在此基礎(chǔ)上減去指定的時(shí)間段【案例:使用命令describefunction查看函數(shù)幫助】8.6.3自定義函數(shù)普通自定義函數(shù)(UDF)表生成自定義函數(shù)(UDTF)聚集自定義函數(shù)(UDAF)5.6Hive部署要點(diǎn)5.6.1Hive運(yùn)行環(huán)境5.6.2Hive部署模式5.6.3Hive配置文件5.6.1Hive運(yùn)行環(huán)境1)操作系統(tǒng)Hive支持不同平臺(tái),在當(dāng)前絕大多數(shù)主流的操作系統(tǒng)上都能夠運(yùn)行,例如Unix/Linux、Windows等。2)Java環(huán)境Hive使用Java語言編寫,因此它的運(yùn)行環(huán)境需要Java環(huán)境的支持。3)HadoopHive需要Hadoop的支持,它使用HDFS進(jìn)行存儲(chǔ),使用MapReduce進(jìn)行計(jì)算。5.6.2Hive部署模式1)內(nèi)嵌模式(EmbeddedMetastore)2)本地模式(LocalMetastore)3)遠(yuǎn)程模式(RemoteMetastore)5.6.2Hive部署模式1)內(nèi)嵌模式(EmbeddedMetastore)內(nèi)嵌模式是HiveMetastore最簡(jiǎn)單的部署方式,使用Hive內(nèi)嵌的Derby數(shù)據(jù)庫來存儲(chǔ)元數(shù)據(jù)。但是Derby只能接受一個(gè)Hive會(huì)話的訪問,試圖啟動(dòng)第二個(gè)Hive會(huì)話就會(huì)導(dǎo)致Metastore連接失敗。Hive官方并不推薦使用內(nèi)嵌模式,此模式通常用于開發(fā)者調(diào)試環(huán)境中,真正生產(chǎn)環(huán)境中很少使用。5.6.2Hive部署模式2)本地模式(LocalMetastore)本地模式是Metastore的默認(rèn)模式。該模式下,單Hive會(huì)話(一個(gè)Hive服務(wù)JVM)以組件方式調(diào)用Metastore和Driver,允許同時(shí)存在多個(gè)Hive會(huì)話,即多個(gè)用戶可以同時(shí)連接到元數(shù)據(jù)庫中。常見JDBC兼容的數(shù)據(jù)庫如MySQL都可以使用,數(shù)據(jù)庫運(yùn)行在一個(gè)獨(dú)立的Java虛擬機(jī)上。5.6.2Hive部署模式3)遠(yuǎn)程模式(RemoteMetastore)遠(yuǎn)程模式將Metastore分離出來,成為一個(gè)獨(dú)立的Hive服務(wù),而不是和Hive服務(wù)運(yùn)行在同一個(gè)虛擬機(jī)上。這種模式使得多個(gè)用戶之間不需要共享JDBC登錄帳戶信息就可以存取元數(shù)據(jù),避免了認(rèn)證信息的泄漏,同時(shí),可以部署多個(gè)Metastore服務(wù),以提高數(shù)據(jù)倉庫可用性。5.6.3Hive配置文件Hive所有配置文件位于$HIVE_HOME/conf下文件名稱描述hive-env.shBash腳本,設(shè)置Linux/Unix環(huán)境下運(yùn)行Hive要用的環(huán)境變量,主要包括Hadoop安裝路徑HADOOP_HOME、Hive配置文件存放路徑HIVE_CONF_DIR、Hive運(yùn)行資源庫路徑HIVE_AUX_JARS_PATH等hive-default.xmlXML文件,Hive核心配置文件,包括Hive數(shù)據(jù)存放位置、Metastore的連接URL、JDO連接驅(qū)動(dòng)類、JDO連接用戶名、JDO連接密碼等配置項(xiàng),hive-site.xmlXML文件,其配置項(xiàng)會(huì)覆蓋默認(rèn)配置hive-default.xml配置文件hive-site.xml涉及的主要參數(shù)配置參數(shù)功能hive.exec.scratchdirHDFS路徑,用于存儲(chǔ)不同map/reduce階段的執(zhí)行計(jì)劃和這些階段的中間輸出結(jié)果,默認(rèn)值為/tmp/hive,對(duì)于每個(gè)連接用戶,都會(huì)創(chuàng)建目錄“${hive.exec.scratchdir}/<username>”,該目錄的權(quán)限為733hive.metastore.warehouse.dirHive默認(rèn)數(shù)據(jù)文件存儲(chǔ)路徑,通常為HDFS可寫路徑,默認(rèn)值為/user/hive/warehousehive.metastore.uris遠(yuǎn)程模式下Metastore的URI列表javax.jdo.option.ConnectionURLMetastore的連接URLjavax.jdo.option.ConnectionDriverNameJDO連接驅(qū)動(dòng)類javax.jdo.option.ConnectionUserNameJDO連接用戶名javax.jdo.option.ConnectionPasswordJDO連接密碼hive.hwi.war.fileHWI的war文件所在的路徑5.7Hive接口5.7.1HiveShell5.7.2HiveWebInterface(HWI)5.7.3HiveAPI5.7.1HiveShellHiveShell命令是通過$HIVE_HOME/bin/hive文件進(jìn)行控制的,通過該文件可以進(jìn)行Hive當(dāng)前會(huì)話的環(huán)境管理,Hive表管理等操作。Hive命令需要使用“;”進(jìn)行結(jié)束標(biāo)示。在Linux終端下通過命令“hive-H”或“hive--servicecli--help”可以查看幫助信息。usage:hive-d,--define<key=value> VariablesubstitutiontoapplytoHivecommands.e.g.-dA=Bor--defineA=B--database<databasename> Specifythedatabasetouse-e<quoted-query-string> SQLfromcommandline-f<filename> SQLfromfiles-H,--help Printhelpinformation--hiveconf<property=value>Usevalueforgivenproperty--hivevar<key=value> VariablesubstitutiontoapplytoHivecommands.e.g.--hivevarA=B-i<filename> InitializationSQLfile-S,--silent Silentmodeininteractiveshell-v,--verbose Verbosemode(echoexecutedSQLtotheconsole)“hive”命令支持的主要參數(shù)選項(xiàng)參數(shù)說明-d,--define<key=value>給當(dāng)前Hive會(huì)話定義新的變量--database<databasename>指定當(dāng)前Hive會(huì)話使用的數(shù)據(jù)庫名稱-e<quoted-query-string>執(zhí)行查詢語句-f<filename>從文件執(zhí)行Hive查詢-H,--help顯示幫助信息--hiveconf<property=value>設(shè)置當(dāng)前Hive會(huì)話的配置屬性--hivevar<key=value>和-d參數(shù)相同-i<filename>從文件中初始化Hive會(huì)話-S,--silent設(shè)置安靜模式,不提示日志信息-v,--verbose打印當(dāng)前執(zhí)行的HiveQL指令1.HiveShell基本命令HiveShell常用的基本命令主要包含退出客戶端、添加文件、修改/查看環(huán)境變量、執(zhí)行l(wèi)inux命令、執(zhí)行dfs命令等。當(dāng)不使用-e或-f參數(shù)時(shí),默認(rèn)進(jìn)入交互模式,所有的命令都以分號(hào)結(jié)束。交互模式下,Hive支持以下命令。(1)quit/exit:離開Hive命令行。(2)setkey=value:設(shè)置配置參數(shù)信息,單獨(dú)使用set命令可以顯示所有配置參數(shù)列表。(3)set-v:顯示所有配置參數(shù)值。(4)reset:重置所有配置參數(shù)值為默認(rèn)值。(5)addFILE[S]<file>*,addJAR[S]<file>*,addARCHIVE[S]<file>*:添加文件到Hive緩存中。(6)listFILE[S]<file>*,listJAR[S]<file>*,listARCHIVE[S]<file>*:檢查是否add命令添加過指定文件。(7)deleteFILE[S]<file>*,deleteJAR[S]<file>*,deleteARCHIVE[S]<file>*:刪除add命令添加的文件。(8)dfs<dfscommand>:執(zhí)行HDFS命令。(9)<query>:執(zhí)行查詢命令,并輸出結(jié)果。(10)sourceFILE<file>:執(zhí)行給定文件中的HiveShell命令。2.HiveQL除了HiveShell的基本命令外,其他的命令主要是DDL、DML、select等HiveQL語句,HiveQL簡(jiǎn)稱HQL,是一種類SQL的查詢語言,絕大多數(shù)語法和SQL類似。1)HiveQLDDLHiveQLDDL主要有數(shù)據(jù)庫、表等模式的創(chuàng)建(CREATE)、修改(ALTER)、刪除(DROP)、顯示(SHOW)、描述(DESCRIBE)等命令,詳細(xì)參考官方文檔/confluence/display/Hive/LanguageManual+DDL。DDLOverview、CREATEDATABASECREATETABLECREATETABLECREATETABLE:創(chuàng)建一個(gè)指定名字的表。如果相同名字的表已經(jīng)存在,則拋出異常;用戶可以用IFNOTEXISTS選項(xiàng)來忽略這個(gè)異常。EXTERNAL:讓用戶創(chuàng)建一個(gè)外部表,在建表的同時(shí)指定一個(gè)指向?qū)嶋H數(shù)據(jù)的路徑(LOCATION)。COMMENT:為表和列添加注釋。PARTITIONEDBY:創(chuàng)建分區(qū)表。CLUSTEREDBY:創(chuàng)建分桶表。ROWFORMAT:指定數(shù)據(jù)切分格式。DELIMITED[FIELDSTERMINATEDBYchar[ESCAPEDBYchar]][COLLECTIONITEMSTERMINATEDBYchar][MAPKEYSTERMINATEDBYchar][LINESTERMINATEDBYchar][NULLDEFINEDASchar]|SERDEserde_name[WITHSERDEPROPERTIES(property_name=property_value,property_name=property_value,...)]用戶在建表的時(shí)候可以自定義SerDe或者使用自帶的SerDe。如果沒有指定ROWFORMAT或者ROWFORMATDELIMITED,將會(huì)使用自帶的SerDe。在建表的時(shí)候,用戶還需要為表指定列,用戶在指定表的列的同時(shí)也會(huì)指定自定義的SerDe,Hive通過SerDe確定表的具體列的數(shù)據(jù)。STOREDAS:指定存儲(chǔ)文件類型。常用的存儲(chǔ)文件類型:SEQUENCEFILE(二進(jìn)制序列文件)、TEXTFILE(文本)、RCFILE(列式存儲(chǔ)格式文件)。LOCATION:指定表在HDFS上的存儲(chǔ)位置。2.HiveQL2)HiveQLDMLHiveQLDML主要有數(shù)據(jù)導(dǎo)入(LOAD)、數(shù)據(jù)插入(INSERT)、數(shù)據(jù)更新(UPDATE)、數(shù)據(jù)刪除(DELETE)等命令,詳細(xì)參考官方文檔(網(wǎng)站是最新版本Hive的參考文檔)/confluence/display/Hive/LanguageManual+DML
。數(shù)據(jù)導(dǎo)入(LOAD)語句LOADDATA[LOCAL]INPATH'filepath'[OVERWRITE]INTOTABLEtablename[PARTITION(partcol1=val1,partcol2=val2...)]LOADDATA[LOCAL]INPATH'filepath'[OVERWRITE]INTOTABLEtablename[PARTITION(partcol1=val1,partcol2=val2...)][INPUTFORMAT'inputformat'SERDE'serde'](3.0orlater)2.HiveQL3)HiveQLSECLETHiveQLSECLET用于數(shù)據(jù)查詢,詳細(xì)參考官方文檔/confluence/display/Hive/LanguageManual+Select。5.7.2HiveWebInterface(HWI)HiveWebInterface(HWI)是Hive自帶的一個(gè)Web-GUI,功能不多,可用于效果展示。由于Hive的bin目錄中沒有包含HWI的頁面,因此需要首先下載源碼從中提取jsp文件并打包成war文件到Hive安裝目錄下lib目錄中;然后編輯配置文件hive-site.xml,添加屬性參數(shù)“hive.hwi.war.file”的配置;這時(shí)在瀏覽器中輸入<IP>:9999/hwi會(huì)出現(xiàn)錯(cuò)誤“JSPsupportnotconfigured”以及后續(xù)的“Unabletofindajavaccompiler”,究其原因,需要以下4個(gè)jar包:commons-el.jar、jasper-compiler-X.X.XX.jar、jasper-runtime-X.X.XX.jar、jdk下的tools.jar,將這些jar包拷貝到Hive的lib目錄下;最后使用命令“hive--servicehwi”啟動(dòng)HWI,在瀏覽器中輸入<IP>:9999/hwi即可看到HiveWeb頁面。5.7.3HiveAPIHive支持Java、Python等語言編寫的JDBC/ODBC應(yīng)用程序訪問Hive,HiveAPI詳細(xì)參考官方文檔/javadocs/,其中有各種版本的HiveJavaAPI。Java想要訪問Hive,需要通過beeline的方式連接Hive,HiveServer2提供了一個(gè)新的命令行工具beeline,HiveServer2對(duì)之前的HiveServer做了升級(jí),功能更加強(qiáng)大,它增加了權(quán)限控制,要使用beeline需要先啟動(dòng)HiveServer2,再使用beeline連接。5.8綜合實(shí)戰(zhàn):部署本地模式Hive和Hive實(shí)戰(zhàn)規(guī)劃Hive部署本地模式Hive驗(yàn)證Hive使用HiveQL5.8.1規(guī)劃Hive主機(jī)名IP地址運(yùn)行服務(wù)軟硬件配置master30NameNodeSecondaryNameNodeResourceManagerJobHistoryServerMySQLHive內(nèi)存:4GCPU:1個(gè)2核硬盤:40G操作系統(tǒng):CentOS7.6.1810Java:OracleJDK8u191Hadoop:Hadoop2.9.2MySQL:MySQL5.7.27Hive:Hive2.3.4Eclipse:EclipseIDE2018-09forJavaDevelopersslave131DataNodeNodeManager內(nèi)存:1GCPU:1個(gè)1核硬盤:20G操作系統(tǒng):CentOS7.6.1810Java:OracleJDK8u191Hadoop:Hadoop2.9.2slave232DataNodeNodeManager內(nèi)存:1GCPU:1個(gè)1核硬盤:20G操作系統(tǒng):CentOS7.6.1810Java:OracleJDK8u191Hadoop:Hadoop2.9.25.8.1規(guī)劃Hive軟件名稱軟件版本發(fā)布日期下載地址VMwareWorkstationProVMwareWorkstation14.5.7ProforWindows2017年6月22日/products/workstation-pro.htmlCentOSCentOS7.6.18102018年11月26日/download/JavaOracleJDK8u1912018年10月16日/technetwork/java/javase/downloads/index.htmlHadoopHadoop2.9.22018年11月19日/releases.htmlMySQLConnector/JMySQLConnector/J5.1.482019年7月29日/downloads/connector/j/MySQLCommunityServerMySQLCommunity5.7.272019年7月22日/get/mysql57-community-release-el7-11.noarch.rpmHiveHive2.3.42018年11月7日/downloads.html5.8.2部署本地模式Hive1.初始軟硬件環(huán)境準(zhǔn)備(1)準(zhǔn)備三臺(tái)機(jī)器,安裝操作系統(tǒng),編者使用CentOSLinux7。(2)對(duì)集群內(nèi)每一臺(tái)機(jī)器,配置靜態(tài)IP、修改機(jī)器名、添加集群級(jí)別域名映射、關(guān)閉防火墻。(3)對(duì)集群內(nèi)每一臺(tái)機(jī)器,安裝和配置Java,要求Java1.7或更高版本,編者使用OracleJDK8u191。(4)安裝和配置Linux集群中主節(jié)點(diǎn)到從節(jié)點(diǎn)的SSH免密登錄。(5)在Linux集群上部署全分布模式Hadoop集群,編者采用Hadoop2.9.2。5.8.2部署本地模式Hive1.初始軟硬件環(huán)境準(zhǔn)備(1)準(zhǔn)備三臺(tái)機(jī)器,安裝操作系統(tǒng),編者使用CentOSLinux7。(2)對(duì)集群內(nèi)每一臺(tái)機(jī)器,配置靜態(tài)IP、修改機(jī)器名、添加集群級(jí)別域名映射、關(guān)閉防火墻。(3)對(duì)集群內(nèi)每一臺(tái)機(jī)器,安裝和配置Java,要求Java1.7或更高版本,編者使用OracleJDK8u191。(4)安裝和配置Linux集群中主節(jié)點(diǎn)到從節(jié)點(diǎn)的SSH免密登錄。(5)在Linux集群上部署全分布模式Hadoop集群,編者采用Hadoop2.9.2。5.8.2部署本地模式Hive1.初始軟硬件環(huán)境準(zhǔn)備(1)準(zhǔn)備三臺(tái)機(jī)器,安裝操作系統(tǒng),編者使用CentOSLinux7。(2)對(duì)集群內(nèi)每一臺(tái)機(jī)器,配置靜態(tài)IP、修改機(jī)器名、添加集群級(jí)別域名映射、關(guān)閉防火墻。(3)對(duì)集群內(nèi)每一臺(tái)機(jī)器,安裝和配置Java,要求Java1.7或更高版本,編者使用OracleJDK8u191。(4)安裝和配置Linux集群中主節(jié)點(diǎn)到從節(jié)點(diǎn)的SSH免密登錄。(5)在Linux集群上部署全分布模式Hadoop集群,編者采用Hadoop2.9.2。5.8.2部署本地模式Hive2.安裝和配置MySQLMySQL在Linux下提供多種安裝方式,例如二進(jìn)制方式、源碼編譯方式、YUM方式等,其中YUM方式比較簡(jiǎn)便,但需要網(wǎng)速的支持。1)下載MySQL官方的YumRepositoryCentOS7不支持MySQL,其Yum源中默認(rèn)沒有MySQL,為了解決這個(gè)問題,需要先下載MySQL的YumRepository。讀者可以直接使用瀏覽器到下載鏈接/get/mysql57-community-release-el7-11.noarch.rpm下進(jìn)行下載,或者使用命令wget完成,假設(shè)當(dāng)前目錄是“/home/xuluhui/Downloads”,下載到該目錄下。[root@masterDownloads]#wget/get/mysql57-community-release-el7-11.noarch.rpm5.8.2部署本地模式Hive2.安裝和配置MySQL2)安裝MySQL官方的YumRepository使用以下命令安裝MySQL官方的YumRepository。rpm-ivhmysql57-community-release-el7-11.noarch.rpm安裝完這個(gè)包后,會(huì)獲得兩個(gè)MySQL的yumrepo源:/etc/yum.repos.d/mysql-community.repo和/etc/yum.repos.d/mysql-community-source.repo。3)查看提供的MySQL版本yumrepolistall|grepmysql使用yumrepolist查看有哪些版本MySQL5.8.2部署本地模式Hive2.安裝和配置MySQL4)安裝MySQL例如采用默認(rèn)的MySQLX.X進(jìn)行安裝,使用以下命令安裝mysql-community-server,其他相關(guān)的依賴庫mysql-community-client、mysql-community-common和mysql-community-libs均會(huì)自動(dòng)安裝。yuminstall-ymysql-community-server當(dāng)看到“Complete!”提示后,MySQL就安裝完成了,接下來啟動(dòng)MySQL并進(jìn)行登錄數(shù)據(jù)庫的測(cè)試。5.8.2部署本地模式Hive2.安裝和配置MySQL5)啟動(dòng)MySQLsystemctlstartmysqld還可以使用命令“systemctlstatusmysqld”查看狀態(tài)。5.8.2部署本地模式Hive2.安裝和配置MySQL6)測(cè)試MySQL(1)使用root和空密碼登錄測(cè)試使用root用戶和空密碼登錄數(shù)據(jù)庫服務(wù)器。mysql-uroot–p系統(tǒng)報(bào)錯(cuò),這是因?yàn)镸ySQL5.7調(diào)整了策略,新安裝數(shù)據(jù)庫之后,默認(rèn)root密碼不是空的了。在啟動(dòng)時(shí)隨機(jī)生成了一個(gè)密碼,可以/var/log/mysqld.log中找到臨時(shí)密碼,使用命令“grep‘temporarypassword’/var/log/mysqld.log”查找臨時(shí)密碼。5.8.2部署本地模式Hive2.安裝和配置MySQL6)測(cè)試MySQL(2)使用root和初始化臨時(shí)密碼登錄測(cè)試使用root和其臨時(shí)密碼再次登錄數(shù)據(jù)庫,此時(shí)可以成功登錄,但是不能做任何事情,這是因?yàn)镸ySQL5.7默認(rèn)必須修改密碼之后才能操作數(shù)據(jù)庫。5.8.2部署本地模式Hive2.安裝和配置MySQL6)測(cè)試MySQL(3)修改root的初始化臨時(shí)密碼ALTERUSER'root'@'localhost'IDENTIFIEDBY'xijing’;出錯(cuò),這是由于MySQL5.7默認(rèn)安裝了密碼安全檢查插件(validate_password),默認(rèn)密碼檢查策略要求密碼必須包含:大小寫字母、數(shù)字和特殊符號(hào),并且長度不能少于8位。MySQL5.7默認(rèn)密碼檢查策略MySQL密碼策略中相關(guān)參數(shù)說明(部分)參數(shù)說明validate_password_dictionary_file指定密碼驗(yàn)證的密碼字典文件路徑validate_password_length固定密碼的總長度,默認(rèn)為8,至少為4validate_password_mixed_case_count整個(gè)密碼中至少要包含大/小寫字母的個(gè)數(shù),默認(rèn)為1validate_password_number_count整個(gè)密碼中至少要包含阿拉伯?dāng)?shù)字的個(gè)數(shù),默認(rèn)為1validate_password_special_char_count整個(gè)密碼中至少要包含特殊字符的個(gè)數(shù),默認(rèn)為1validate_password_policy指定密碼的強(qiáng)度驗(yàn)證等級(jí),默認(rèn)為MEDIUM。validate_password_policy的取值有3種:0/LOW:只驗(yàn)證長度1/MEDIUM:驗(yàn)證長度、數(shù)字、大小寫、特殊字符2/STRONG:驗(yàn)證長度、數(shù)字、大小寫、特殊字符、字典文件5.8.2部署本地模式Hive2.安裝和配置MySQL6)測(cè)試MySQL(3)修改root的初始化臨時(shí)密碼可以通過修改密碼策略使密碼“xijing”有效,步驟如下:①設(shè)置密碼的驗(yàn)證強(qiáng)度等級(jí)“validate_password_policy”為“LOW”,注意選擇“STRONG”時(shí)需要提供密碼字典文件。方法是:修改配置文件/etc/f,在最后添加“validate_password_policy”配置,指定密碼策略,為了使密碼“xijing”有效,編者選擇“LOW”,具體內(nèi)容如下所示。validate_password_policy=LOW②設(shè)置密碼長度“validate_password_length”為“6”,注意密碼長度最少為4。方法是:繼續(xù)修改配置文件/etc/f,在最后添加“validate_password_length”配置,具體內(nèi)容如下所示。validate_password_length=6③保存配置/etc/f并退出,重新啟動(dòng)MySQL服務(wù)使配置生效,使用的命令如下所示。systemctlrestartmysqld5.8.2部署本地模式Hive2.安裝和配置MySQL6)測(cè)試MySQL(4)再次修改root的初始化臨時(shí)密碼使用root和初始化臨時(shí)密碼登錄MySQL,再次修改root密碼,如新密碼為“xijing”,密碼“xijing”符合當(dāng)前的密碼策略。使用命令“flushprivileges;”刷新MySQL的系統(tǒng)權(quán)限相關(guān)表。5.8.2部署本地模式Hive2.安裝和配置MySQL6)測(cè)試MySQL(5)使用root和新密碼登錄測(cè)試5.8.2部署本地模式Hive3.在MySQL中創(chuàng)建Hive所需用戶和數(shù)據(jù)庫并授權(quán)(1)在MySQL中創(chuàng)建用戶hive,密碼為xijing,使用的命令如下所示。createuser'hive'identifiedby'xijing';(2)創(chuàng)建數(shù)據(jù)庫hive,使用的命令如下所示。createdatabasehive;(3)將數(shù)據(jù)庫hive的所有權(quán)限授權(quán)于用戶hive,使用的命令如下所示。grantallprivilegesonhive.*to'hive'@'localhost'identifiedby'xijing';(4)刷新權(quán)限,使其立即生效,使用的命令如下所示。flushprivileges;5.8.2部署本地模式Hive3.在MySQL中創(chuàng)建Hive所需用戶和數(shù)據(jù)庫并授權(quán)(5)使用hive用戶登錄,并查看是否能看到數(shù)據(jù)庫hive。5.8.2部署本地模式Hive4.獲取HiveHive官方下載地址為/downloads.html,建議讀者下載stable目錄下的當(dāng)前穩(wěn)定版本。編者采用的Hive穩(wěn)定版本是2018年11月7日發(fā)布的Hive2.3.4,其安裝包文件apache-hive-2.3.4-bin.tar.gz例如存放在master機(jī)器的/home/xuluhui/Downloads中。5.8.2部署本地模式Hive5.安裝Hive并設(shè)置屬主(1)在master機(jī)器上,切換到root,解壓apache-hive-2.3.4-bin.tar.gz到安裝目錄如/usr/local下,依次使用的命令如下所示。surootcd/usr/localtar-zxvf/home/xuluhui/Downloads/apache-hive-2.3.4-bin.tar.gz(2)由于Hive的安裝目錄名字過長,可以使用mv命令將安裝目錄重命名為hive-2.3.4,使用以下命令完成。此步驟可以省略,但下文配置時(shí)Hive的安裝目錄就是“apache-hive-2.3.4-bin”。mvapache-hive-2.3.4-binhive-2.3.4(3)為了在普通用戶下使用Hive,將Hive安裝目錄的屬主設(shè)置為Linux普通用戶例如xuluhui,使用以下命令完成。chown-Rxuluhui/usr/local/hive-2.3.45.8.2部署本地模式Hive6.將MySQL的JDBC驅(qū)動(dòng)包復(fù)制到Hive安裝目錄/lib(1)獲取MySQL的JDBC驅(qū)動(dòng)包,并保存至/home/xlh/Downloads下,下載地址為/downloads/connector/j/。編者使用的版本是2019年7月29日發(fā)布的MySQLConnector/J5.1.48,文件名是mysql-connector-java-5.1.48.tar.gz(2)將mysql-connector-java-5.1.48.tar.gz解壓至如/home/xlh/Downloads下,使用的命令如下所示。cd/home/xlh/Downloadstar-zxvf/home/xuluhui/Downloads/mysql-connector-java-5.1.48.tar.gz(3)將解壓文件下的MySQLJDBC驅(qū)動(dòng)包mysql-connector-java-5.1.48-bin.jar移動(dòng)至Hive安裝目錄/usr/local/hive-2.3.4/lib下,并刪除目錄mysql-connector-java-5.1.41,依次使用的命令如下所示。mvmysql-connector-java-5.1.48/mysql-connector-java-5.1.48-bin.jar/usr/local/hive-2.3.4/librm-rfmysql-connector-java-5.1.485.8.2部署本地模式Hive7.配置Hive1)配置文件hive-env.sh環(huán)境配置文件hive-env.sh用于指定Hive運(yùn)行時(shí)的各種參數(shù),主要包括Hadoop安裝路徑HADOOP_HOME、Hive配置文件存放路徑HIVE_CONF_DIR、Hive運(yùn)行資源庫路徑HIVE_AUX_JARS_PATH等。(1)使用命令“cphive-env.sh.templatehive-env.sh”復(fù)制模板配置文件hive-env.sh.template并命名為“hive-env.sh”。(2)使用命令“vimhive-env.sh”編輯配置文件hive-env.sh。①配置HADOOP_HOME。將第48行HADOOP_HOME注釋去掉,并指定為個(gè)人機(jī)器上的Hadoop安裝路徑,例如,修改后的內(nèi)容如下所示。HADOOP_HOME=/usr/local/hadoop-2.9.2②配置HIVE_CONF_DIR。將第51行HIVE_CONF_DIR注釋去掉,并指定為個(gè)人機(jī)器上的Hive配置文件存放路徑,例如,修改后的內(nèi)容如下所示。exportHIVE_CONF_DIR=/usr/local/hive-2.3.4/conf②配置HIVE_AUX_JARS_PATH。將第51行HIVE_AUX_JARS_PATH注釋去掉,并指定為個(gè)人機(jī)器上的Hive運(yùn)行資源庫路徑,例如,修改后的內(nèi)容如下所示。exportHIVE_AUX_JARS_PATH=/usr/local/hive-2.3.4/lib5.8.2部署本地模式Hive7.配置Hive2)配置文件hive-default.xml使用命令“cphive-default.xml.templatehive-default.xml”復(fù)制模板配置文件為hive-default.xml,這是Hive默認(rèn)加載的文件。5.8.2部署本地模式Hive7.配置Hive3)配置文件hive-site.xml新建hive-site.xml,寫入MySQL的配置信息。讀者請(qǐng)注意,此處不必復(fù)制配置文件模板“hive-default.xml.template”為“hive-site.xml”,模板中參數(shù)過多,不宜讀。<?xmlversion="1.0"encoding="UTF-8"standalone="no"?><?xml-stylesheettype="text/xsl"href="configuration.xsl"?><configuration><property><name>javax.jdo.option.ConnectionURL</name><value>jdbc:mysql://localhost:3306/hive?createDatabaseIfNotExist=true&useSSL=false</value></property><property><name>javax.jdo.option.ConnectionDriverName</name><value>com.mysql.jdbc.Driver</value></property><property><name>javax.jdo.option.ConnectionUserName</name><value>hive</value></property><property><name>javax.jdo.option.ConnectionPassword</name><value>xijing</value></property></configuration>5.8.2部署本地模式Hive8.初始化HiveMetastore此時(shí),啟動(dòng)HiveCLI,若輸入HiveShell命令例如“showdatabases;”,會(huì)出現(xiàn)錯(cuò)誤,告知不能初始化HiveMetastore。5.8.2部署本地模式Hive8.初始化HiveMetastore使用命令“schematool-initSchema-dbTypemysql”初始化元數(shù)據(jù),將元數(shù)據(jù)寫入MySQL中,若出現(xiàn)信息“schemaToolcompleted”,即表示初始化成功。5.8.2部署本地模式Hive9.在系統(tǒng)配置文件目錄/etc/profile.d下新建hive.sh另外,為了方便使用Hive各種命令,可以在Hive所安裝的機(jī)器上使用“vim/etc/profile.d/hive.sh”命令在/etc/profile.d文件夾下新建文件hive.sh,并添加如下內(nèi)容。exportHIVE_HOME=/usr/local/hive-2.3.4exportPATH=$HIVE_HOME/bin:$PATH重啟機(jī)器,使之生效。此步驟可省略。5.8.3驗(yàn)證Hive1.啟動(dòng)Hadoop集群Hive的運(yùn)行需要Hadoop集群,因此需要首先啟動(dòng)全分布模式Hadoop集群的守護(hù)進(jìn)程,只需在主節(jié)點(diǎn)master上依次執(zhí)行以下3條命令即可。start-dfs.shstart-yarn.shmr-jobhistory-daemon.shstarthistoryserver5.8.3驗(yàn)證Hive2.啟動(dòng)HiveCLI啟動(dòng)HiveCLI測(cè)試Hive是否部署成功,使用HiveShell的統(tǒng)一入口命令“hive”進(jìn)入,并使用“showdatabases”等命令測(cè)試。5.8.3驗(yàn)證Hive當(dāng)HiveCLI啟動(dòng)時(shí),在master節(jié)點(diǎn)上會(huì)看到多一個(gè)進(jìn)程“RunJar”,若啟動(dòng)兩個(gè)HiveCLI,會(huì)多出2個(gè)進(jìn)程“RunJar”。5.8.3驗(yàn)證Hive讀者也可以查看HDFS文件,可以看到在目錄/tmp下生成了目錄hive,且該目錄權(quán)限為733。5.8.4使用HiveQL【案例5-1】已知一個(gè)關(guān)于電影評(píng)分的本地文件/usr/local/hive-2.3.4/testData/movie.csv,該文件內(nèi)容以下所示:tt13462900,長津湖,陳凱歌/徐克/林超賢,吳京/易烊千璽/段奕宏,劇情/歷史/戰(zhàn)
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 特殊學(xué)生安全協(xié)議書模板
- 二零二五年度物流企業(yè)員工聘用與供應(yīng)鏈管理服務(wù)合同
- 二零二五年度鏈家手房房屋買賣市場(chǎng)調(diào)研與分析合同
- 二零二五年度兼職研究員勞動(dòng)合同模板
- 二零二五年度房屋租賃合同收款人變更及租賃押金調(diào)整協(xié)議
- 二零二五年度商鋪?zhàn)赓U合同(含租賃合同解除條件)
- 騰訊游戲2025年度游戲角色定制與形象授權(quán)合同
- 二零二五年度臨時(shí)工勞動(dòng)合同與績效獎(jiǎng)金分配細(xì)則
- 二零二五年度婚前財(cái)產(chǎn)明確界定與婚后財(cái)產(chǎn)共有及管理合同
- 二零二五年度團(tuán)購白酒行業(yè)論壇協(xié)辦協(xié)議
- 人教版PEP五年級(jí)下冊(cè)英語unit1單元復(fù)習(xí)課件
- 心肌炎病人的護(hù)理
- 四川麻將業(yè)余一級(jí)考級(jí)題庫
- 【人教版】三年級(jí)下冊(cè)數(shù)學(xué)課件《口算乘法》兩位數(shù)乘兩位數(shù)優(yōu)秀(第1課時(shí))
- 《小小理財(cái)家》課件PPT
- 《相交線與平行線》復(fù)習(xí)課一等獎(jiǎng)?wù)n件
- 部編版四年級(jí)語文下冊(cè)第3單元大單元整體教學(xué)設(shè)計(jì)課件(教案配套)
- q gw2sjss.65金風(fēng)風(fēng)力發(fā)電機(jī)組防腐技術(shù)rna部分歸檔版
- 廉政建設(shè)監(jiān)理實(shí)施細(xì)則
- 健康證體檢表
- LY/T 3263-2021澳洲堅(jiān)果栽培技術(shù)規(guī)程
評(píng)論
0/150
提交評(píng)論