Hive大數(shù)據(jù)存儲(chǔ)與處理 課件 第1-3章 廣電大數(shù)據(jù)用戶畫像需求分析、部署開發(fā)環(huán)境、廣電用戶數(shù)據(jù)存儲(chǔ)_第1頁
Hive大數(shù)據(jù)存儲(chǔ)與處理 課件 第1-3章 廣電大數(shù)據(jù)用戶畫像需求分析、部署開發(fā)環(huán)境、廣電用戶數(shù)據(jù)存儲(chǔ)_第2頁
Hive大數(shù)據(jù)存儲(chǔ)與處理 課件 第1-3章 廣電大數(shù)據(jù)用戶畫像需求分析、部署開發(fā)環(huán)境、廣電用戶數(shù)據(jù)存儲(chǔ)_第3頁
Hive大數(shù)據(jù)存儲(chǔ)與處理 課件 第1-3章 廣電大數(shù)據(jù)用戶畫像需求分析、部署開發(fā)環(huán)境、廣電用戶數(shù)據(jù)存儲(chǔ)_第4頁
Hive大數(shù)據(jù)存儲(chǔ)與處理 課件 第1-3章 廣電大數(shù)據(jù)用戶畫像需求分析、部署開發(fā)環(huán)境、廣電用戶數(shù)據(jù)存儲(chǔ)_第5頁
已閱讀5頁,還剩190頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

廣電大數(shù)據(jù)用戶畫像

需求分析背景介紹新一代信息技術(shù)和互聯(lián)網(wǎng)的迅猛發(fā)展,為廣電行業(yè)帶來了前所未有的巨大挑戰(zhàn)和重大機(jī)遇。新媒體的飛速發(fā)展,對(duì)傳統(tǒng)媒體造成了巨大沖擊,廣電公司依靠稀缺資源形成的優(yōu)勢(shì)已經(jīng)逐漸失去。廣電公司具備了獲取用戶身份數(shù)據(jù)、實(shí)時(shí)收視數(shù)據(jù)的能力,可通過網(wǎng)絡(luò)終端設(shè)備和后臺(tái)系統(tǒng)采集用戶基本數(shù)據(jù)、用戶收視數(shù)據(jù)、用戶訂單數(shù)據(jù)、用戶賬單數(shù)據(jù)等。通過大數(shù)據(jù)分析,把握廣電用戶群體的特征和收視行為,了解用戶的實(shí)際特征和實(shí)際需求,并提供個(gè)性化、精準(zhǔn)化和智能化的推薦服務(wù),以此挽留用戶、減少用戶的流失。需求分析與架構(gòu)認(rèn)識(shí)Hive需求分析與架構(gòu)基于雙向廣電有線網(wǎng)絡(luò),可深入應(yīng)用大數(shù)據(jù)技術(shù),對(duì)用戶數(shù)據(jù)進(jìn)行采集、存儲(chǔ)以此為基礎(chǔ),進(jìn)行有效分析與處理實(shí)現(xiàn)廣電有線網(wǎng)絡(luò)用戶從看電視到用電視的轉(zhuǎn)變,推動(dòng)廣電行業(yè)進(jìn)一步發(fā)展,也可為社會(huì)信息化、政府信息化等提供全面支撐。對(duì)廣電公司的需求進(jìn)行分析,并結(jié)合大數(shù)據(jù)技術(shù)為廣電公司用戶數(shù)據(jù)的存儲(chǔ)與分析提供解決方案,同時(shí)對(duì)大數(shù)據(jù)技術(shù)進(jìn)行簡要介紹。業(yè)務(wù)需求分析需求分析與架構(gòu)主要處理流程大數(shù)據(jù)的處理過程可分為數(shù)據(jù)采集、數(shù)據(jù)預(yù)處理、數(shù)據(jù)存儲(chǔ)、數(shù)據(jù)分析、數(shù)據(jù)應(yīng)用大數(shù)據(jù)存儲(chǔ)技術(shù)架構(gòu)大數(shù)據(jù)存儲(chǔ)技術(shù)商用存儲(chǔ)GBase系列數(shù)據(jù)庫產(chǎn)品、AmazonS3和EMC系列產(chǎn)品開源OceanBase、Swift、Alluxio、HDFS、HBase和Hive常見的存儲(chǔ)產(chǎn)品的簡介及優(yōu)缺點(diǎn)對(duì)比存儲(chǔ)產(chǎn)品簡介優(yōu)點(diǎn)缺點(diǎn)GBase系列數(shù)據(jù)庫產(chǎn)品該系列數(shù)據(jù)庫產(chǎn)品包含分布式邏輯數(shù)據(jù)倉庫(GBase8a)、基于共享存儲(chǔ)的數(shù)據(jù)庫集群(GBase8s)、多模多態(tài)分布式數(shù)據(jù)庫(GBase8c)、云原生數(shù)據(jù)倉庫(GBaseGCDW)等具有高可用性和高可靠性??蓴U(kuò)展性好:支持Master-Slave模式擴(kuò)展以及支持使用OnlineAdd節(jié)點(diǎn)等方式來增強(qiáng)性能。安全性強(qiáng):可提供完善的數(shù)據(jù)庫安全方案,包括密文存儲(chǔ)、訪問權(quán)限控制、數(shù)據(jù)審計(jì)等。體積小,并且Ubuntu平臺(tái)可免費(fèi)使用??梢灾苯釉贕Base上運(yùn)行SQL語句而無須進(jìn)行太多額外配置生態(tài)環(huán)境還較為不成熟,在某些場景下會(huì)受到功能缺失的限制OceanBaseOceanBase是阿里巴巴集團(tuán)自主研發(fā)的一款分布式關(guān)系數(shù)據(jù)庫管理系統(tǒng),旨在滿足大規(guī)模應(yīng)用與服務(wù)的高性能等要求,支持從單臺(tái)機(jī)器到百臺(tái)機(jī)器甚至更多機(jī)器的水平擴(kuò)展,具有海量數(shù)據(jù)存儲(chǔ)和快速查詢的能力高性能:支持自動(dòng)故障轉(zhuǎn)移、水平和垂直擴(kuò)展等特性,可以確保24/7無故障運(yùn)行;采用多核架構(gòu)實(shí)現(xiàn)并行查詢,能夠快速讀取和處理海量數(shù)據(jù)。全球部署:支持本地化存儲(chǔ)和異地多活,可以滿足多終端、全網(wǎng)覆蓋等要求。開源社區(qū)活躍:擁有大量用戶社區(qū),支持對(duì)產(chǎn)品進(jìn)行二次開發(fā)和個(gè)性化定制運(yùn)維復(fù)雜:需要一定的技術(shù)支撐,涉及配置管理、監(jiān)控和調(diào)優(yōu)等方面,不太適合小規(guī)模企業(yè)使用。需要專門的技術(shù)人員:由于其復(fù)雜性較高,需要專業(yè)技術(shù)人員進(jìn)行維護(hù)和開發(fā)。系統(tǒng)學(xué)習(xí)成本高:相較于傳統(tǒng)關(guān)系數(shù)據(jù)庫,OceanBase具有更多的新特性和命令,需要用戶進(jìn)行學(xué)習(xí)和了解常見的存儲(chǔ)產(chǎn)品的簡介及優(yōu)缺點(diǎn)對(duì)比續(xù)上表存儲(chǔ)產(chǎn)品簡介優(yōu)點(diǎn)缺點(diǎn)AmazonS3簡稱S3,是Amazon公司于2006年針對(duì)開發(fā)者推出的云存儲(chǔ)服務(wù),可減輕開發(fā)人員壓力,使其專注于上層業(yè)務(wù);存儲(chǔ)可靠;按用量收費(fèi);使用方便是AmazonAWS云服務(wù)體系的一部分,兼容Amazon生態(tài)圈的其他服務(wù);重新定義了對(duì)象存儲(chǔ);可靠性高,性能優(yōu)良,易于擴(kuò)展,方便遷移非開源、收費(fèi)較高;不支持隨機(jī)位置讀、寫操作,只能讀取、寫入或覆蓋整個(gè)文件EMC系列產(chǎn)品EMC公司于2008年推出了PB級(jí)對(duì)象存儲(chǔ)平臺(tái)Atmos;于2010年收購了Isilon,定位PB級(jí)文件存儲(chǔ);于2014年推出了ECS,布局ZB級(jí)存儲(chǔ)。EMC系列產(chǎn)品均可橫向擴(kuò)展。EMC公司市場拓荒早,產(chǎn)品種類全,高端用戶多高端產(chǎn)品與解決方案;可提供較好的數(shù)據(jù)保護(hù);支持PB~ZB級(jí)各類數(shù)據(jù)存儲(chǔ)。兼容EMCVMware、Pivotal、RSA等多款產(chǎn)品;支持Hadoop;支持與S3數(shù)據(jù)的雙向遷移非開源,需購買價(jià)格昂貴的專用硬件常見的存儲(chǔ)產(chǎn)品的簡介及優(yōu)缺點(diǎn)對(duì)比續(xù)上表存儲(chǔ)產(chǎn)品簡介優(yōu)點(diǎn)缺點(diǎn)Swift于2010年加入OpenStack社區(qū),可為虛擬機(jī)及計(jì)算服務(wù)Nova提供鏡像存儲(chǔ),是S3的開源實(shí)現(xiàn)屬于OpenStack生態(tài)圈組件,可兼容CloudStack,支持多租戶模式。技術(shù)成熟,成功案例多,被設(shè)計(jì)成一種比較通用的存儲(chǔ)產(chǎn)品,能夠可靠地存儲(chǔ)數(shù)量非常多的大小不一的文件未針對(duì)大型文件做優(yōu)化處理Alluxio是以內(nèi)存為中心的虛擬分布式存儲(chǔ)系統(tǒng),其核心思想是將存儲(chǔ)與計(jì)算分離通過數(shù)據(jù)緩存,提高存儲(chǔ)、計(jì)算的效率;將存儲(chǔ)與計(jì)算解耦,架構(gòu)清晰、簡潔該產(chǎn)品較新,部分功能有待完善;該產(chǎn)品對(duì)用戶技術(shù)積累和研發(fā)能力要求較高常見的存儲(chǔ)產(chǎn)品的簡介及優(yōu)缺點(diǎn)對(duì)比存儲(chǔ)產(chǎn)品簡介優(yōu)點(diǎn)缺點(diǎn)HDFS設(shè)計(jì)參考GoogleGFS,于2006年加入Apache社區(qū)下的Hadoop項(xiàng)目,是其核心組件之一擁有強(qiáng)大的數(shù)據(jù)生態(tài)圈,適合大型文件一次寫入、長期存儲(chǔ)、順序讀取、批處理的場景;成功案例多,優(yōu)化方案豐富;用戶規(guī)模龐大,是大數(shù)據(jù)文件系統(tǒng)事實(shí)標(biāo)準(zhǔn),支持上萬個(gè)節(jié)點(diǎn)的ZB級(jí)海量數(shù)據(jù)存儲(chǔ);具有高容錯(cuò)性;支持多種數(shù)據(jù)編碼不支持并發(fā)寫入、文件隨機(jī)修改;不適合毫秒級(jí)低延遲數(shù)據(jù)訪問;不適合小型文件存儲(chǔ)HBase構(gòu)建在HDFS之上高性能的大數(shù)據(jù)列式存儲(chǔ)數(shù)據(jù)庫適合存儲(chǔ)海量稀疏數(shù)據(jù),可以通過版本檢索到歷史數(shù)據(jù),解決HDFS不支持?jǐn)?shù)據(jù)隨機(jī)查找、不適合增量數(shù)據(jù)處理、不支持?jǐn)?shù)據(jù)更新等問題。常用于存儲(chǔ)超大規(guī)模的實(shí)時(shí)隨機(jī)讀寫數(shù)據(jù),如互聯(lián)網(wǎng)搜索引擎數(shù)據(jù)僅能通過主鍵或主鍵范圍檢索數(shù)據(jù),不適合檢索條件較多的復(fù)雜查詢場景HiveHive是基于Hadoop生態(tài)圈的數(shù)據(jù)倉庫,用于進(jìn)行數(shù)據(jù)提取、轉(zhuǎn)化和加載,是一種可以存儲(chǔ)、查詢和分析存儲(chǔ)在Hadoop中的大規(guī)模數(shù)據(jù)的開源產(chǎn)品封裝了調(diào)用接口,并提供了類SQL的查詢語言,減少了開發(fā)人員的學(xué)習(xí)成本;支持用戶自定義函數(shù)。適合處理大數(shù)據(jù);可擴(kuò)展性強(qiáng);容錯(cuò)性強(qiáng)不支持記錄級(jí)別的增、刪、改操作,延遲較高,不適合實(shí)時(shí)分析;不支持事務(wù),不適合做聯(lián)機(jī)事務(wù)處理;自動(dòng)生成的MapReduce作業(yè)通常情況下不夠智能大數(shù)據(jù)存儲(chǔ)技術(shù)架構(gòu)常見的開發(fā)語言R語言免費(fèi)、開源、各種各樣的模塊十分齊全Python數(shù)據(jù)分析和交互、探索性計(jì)算以及數(shù)據(jù)可視化等方面都比較方便SQL入門較容易Java具有可移植性強(qiáng)的特點(diǎn),可以跨平臺(tái)運(yùn)行需求分析與架構(gòu)認(rèn)識(shí)Hive認(rèn)識(shí)HiveHive是基于Hadoop的數(shù)據(jù)倉庫優(yōu)點(diǎn)是學(xué)習(xí)成本低,可以通過類SQL語句實(shí)現(xiàn)快速M(fèi)apReduce統(tǒng)計(jì)MapReduce的使用變得更加簡單。Hive十分適合用于對(duì)數(shù)據(jù)倉庫中的數(shù)據(jù)進(jìn)行統(tǒng)計(jì)分析Hive簡介2007年,F(xiàn)acebook公司(現(xiàn)Meta公司)為了對(duì)每天產(chǎn)生的海量網(wǎng)絡(luò)平臺(tái)數(shù)據(jù)進(jìn)行分析而開發(fā)了HiveHive就成為傳統(tǒng)數(shù)據(jù)架構(gòu)和HadoopMapReduce之間的“橋梁”。Hive的架構(gòu)Hadoop生態(tài)圈Sqoop:用于在HDFS和關(guān)系數(shù)據(jù)庫之間導(dǎo)入和導(dǎo)出數(shù)據(jù)。Pig:用于開發(fā)MapReduce作業(yè)的程序語言的工具,通過將PigLatin腳本編譯成MapReduce任務(wù)來實(shí)現(xiàn)數(shù)據(jù)處理和計(jì)算。Hive:用于開發(fā)SQL類型腳本進(jìn)行MapReduce作業(yè)的工具,通過將HQL轉(zhuǎn)換為MapReduce任務(wù)來實(shí)現(xiàn)數(shù)據(jù)處理。認(rèn)識(shí)HiveHive的架構(gòu)認(rèn)識(shí)HiveHive主要組件訪問接口命令行接口(CommandLineInterface,CLI),HiveWeb接口(HiveWebInterface,HWI)。ThriftServer。元數(shù)據(jù)存儲(chǔ)服務(wù)Hive的元數(shù)據(jù)存儲(chǔ)在關(guān)系數(shù)據(jù)庫里,Hive支持的關(guān)系數(shù)據(jù)庫有Derby、MySQL等認(rèn)識(shí)HiveHive主要組件DriverDriver的主要功能是將用戶編寫的HQL語句進(jìn)行解析、編譯、優(yōu)化,生成邏輯執(zhí)行計(jì)劃,并提交給Hadoop集群進(jìn)行處理組件說明解析器(Parser)將HQL轉(zhuǎn)換為抽象語法樹編譯器(Compiler)將語法樹編譯為邏輯執(zhí)行計(jì)劃優(yōu)化器(Optimizer)對(duì)邏輯執(zhí)行計(jì)劃進(jìn)行優(yōu)化,形成更優(yōu)的邏輯執(zhí)行計(jì)劃執(zhí)行器(Executor)將邏輯執(zhí)行計(jì)劃切分成對(duì)應(yīng)引擎的可執(zhí)行物理計(jì)劃,調(diào)用底層執(zhí)行框架執(zhí)行認(rèn)識(shí)HiveHive設(shè)計(jì)特性Hive的特點(diǎn)HQL與SQL有著相似的語法,大大提高了開發(fā)人員的開發(fā)效率。Hive支持運(yùn)行在不同的框架上,包括YARN、Tez、Spark、Flink等。Hive支持HDFS與HBase上的即席查詢(Ad-Hoc)。Hive支持用戶自定義的函數(shù)、腳本等。認(rèn)識(shí)HiveHive設(shè)計(jì)特性Hive優(yōu)點(diǎn)可擴(kuò)展。Hive可以自由擴(kuò)展集群的規(guī)模,一般情況下無須重啟服務(wù)??裳诱?。Hive支持用戶自定義函數(shù),用戶可根據(jù)自己的需求來編寫自定義函數(shù)??扇蒎e(cuò)。Hive良好的容錯(cuò)性使得當(dāng)節(jié)點(diǎn)出現(xiàn)問題時(shí)HQL語句仍可完成執(zhí)行。Hive的適用場景Hive的最佳適用場景是大數(shù)據(jù)集的批處理作業(yè)認(rèn)識(shí)HiveHive與傳統(tǒng)數(shù)據(jù)庫的區(qū)別項(xiàng)目Hive關(guān)系數(shù)據(jù)庫查詢語言HQLSQL數(shù)據(jù)存儲(chǔ)HDFS塊設(shè)備、本地文件系統(tǒng)執(zhí)行MapReduce執(zhí)行器執(zhí)行延遲高低處理數(shù)據(jù)規(guī)模大小事務(wù)0.14版本后加入支持索引0.8版本后加入索引復(fù)雜小結(jié)本章首先闡述了廣電大數(shù)據(jù)用戶畫像需求分析的背景,由此對(duì)當(dāng)前市場上常見的幾種大數(shù)據(jù)存儲(chǔ)產(chǎn)品進(jìn)行了介紹,接著從Hive的發(fā)展歷史、Hive的架構(gòu)、Hive的主要特點(diǎn)、Hive與傳統(tǒng)數(shù)據(jù)庫的區(qū)別等方面對(duì)Hive進(jìn)行了深入講解。部署開發(fā)環(huán)境任務(wù)背景為實(shí)現(xiàn)國家現(xiàn)代化,在新時(shí)代、新階段企業(yè)必須堅(jiān)持高質(zhì)量發(fā)展。隨著大數(shù)據(jù)技術(shù)的不斷演進(jìn),目前Hive已成為企業(yè)廣泛使用的數(shù)據(jù)倉庫,其底層實(shí)現(xiàn)是調(diào)用MapReduce程序,Hive調(diào)度資源時(shí),使用的是Hadoop的YARN框架。Hive將結(jié)構(gòu)化的數(shù)據(jù)文件映射成一張?zhí)摫恚⑻峁╊怱QL(HQL)查詢功能。有了Hive后,程序員不用再編寫復(fù)雜的MapReduce程序,通過Hive即可使用類SQL語句實(shí)現(xiàn)數(shù)據(jù)的快速統(tǒng)計(jì),進(jìn)而提高大數(shù)據(jù)處理和分析效率。本章將介紹如何安裝部署Hadoop集群、如何安裝部署Hive、HiveCLI的使用方法,為后續(xù)實(shí)現(xiàn)廣電大數(shù)據(jù)存儲(chǔ)和處理搭建環(huán)境。安裝部署Hadoop集群安裝部署Hive使用HiveCLI任務(wù)描述通過Hadoop分布式框架可以輕松地通過將數(shù)千臺(tái)服務(wù)器聯(lián)合在一起對(duì)大數(shù)據(jù)進(jìn)行存儲(chǔ)和計(jì)算,而且每一臺(tái)服務(wù)器都具有存儲(chǔ)和計(jì)算的能力。用戶可以在不了解Hadoop底層細(xì)節(jié)的情況下開發(fā)分布式程序,能夠十分方便地利用集群的強(qiáng)大能力進(jìn)行程序運(yùn)算,而且能夠解決高可用(分布式系統(tǒng)架構(gòu)設(shè)計(jì)中的一個(gè)常見指標(biāo),意指通過設(shè)計(jì)減少系統(tǒng)不能提供服務(wù)的時(shí)間,從而保持其服務(wù)的高度可用性)問題。本任務(wù)的內(nèi)容包括虛擬機(jī)VMwareWorkstation(簡稱VMware)、Hadoop集群的部署過程,以及遠(yuǎn)程終端Xshell軟件的安裝和使用,為Hive的安裝部署提供一個(gè)基礎(chǔ)的集群環(huán)境。VMware虛擬機(jī)安裝和網(wǎng)絡(luò)設(shè)置Hadoop集群環(huán)境是由若干臺(tái)Linux主機(jī)組成的(為了更好地體現(xiàn)集群的特點(diǎn)和優(yōu)勢(shì),建議部署至少3臺(tái)主機(jī),主機(jī)的系統(tǒng)可采用Ubuntu或CentOS)。本書將在Windows環(huán)境下安裝虛擬機(jī)軟件VMwareWorkstation15.5Pro(Windows7環(huán)境下VMwareWorkstation最高支持15.x版本,如需升級(jí)16版本或更高版本,則需要在Windows8或以上版本的環(huán)境下),以便虛擬機(jī)的創(chuàng)建與配置。VMwareWorkstation是由VMware公司出品的一款桌面虛擬機(jī)軟件,可幫助用戶在單一的桌面上同時(shí)運(yùn)行不同的操作系統(tǒng),具有應(yīng)用開發(fā)、測(cè)試、部署等諸多功能。VMware虛擬機(jī)安裝和網(wǎng)絡(luò)設(shè)置1.安裝VMware虛擬機(jī)讀者可從VMware官網(wǎng)自行下載VMwareWorkstation15.5Pro。VMwareWorkstation15.5Pro的安裝過程較為簡單,安裝時(shí)請(qǐng)依照向?qū)?,選擇安裝目錄,并單擊“下一步”按鈕即可順利完成安裝,過程不贅述,請(qǐng)讀者自行完成。VMware虛擬機(jī)安裝和網(wǎng)絡(luò)設(shè)置VMwareWorkstation15.5Pro的主界面如下圖。VMware虛擬機(jī)安裝和網(wǎng)絡(luò)設(shè)置2.設(shè)置VMware虛擬網(wǎng)絡(luò)安裝好VMware后,還需要進(jìn)行VMware的虛擬網(wǎng)絡(luò)設(shè)置,以滿足4臺(tái)集群主機(jī)與宿主機(jī)、外網(wǎng)之間通信的要求(集群主機(jī)需要通過宿主機(jī)和外網(wǎng)保持連通以便下載最新的安裝包)。VMware虛擬機(jī)的聯(lián)網(wǎng)模式有3種:橋接(Bridged)模式、網(wǎng)絡(luò)地址轉(zhuǎn)換(NetworkAddressTranslation,NAT)模式、僅主機(jī)(Host-only)模式。通過NAT模式,宿主機(jī)可以為集群主機(jī)提供私有IP地址,并且只有宿主機(jī)可以訪問外網(wǎng),從而可以對(duì)虛擬機(jī)進(jìn)行一定程度的隔離和保護(hù),減少受到網(wǎng)絡(luò)攻擊的風(fēng)險(xiǎn)。VMware虛擬機(jī)安裝和網(wǎng)絡(luò)設(shè)置同時(shí)集群主機(jī)與宿主機(jī)共享同一IP地址,可以有效地節(jié)約可用IP地址,并且可以避免因?yàn)镮P地址緊缺而產(chǎn)生的浪費(fèi),故本書采用NAT模式聯(lián)網(wǎng)。安裝好VMware后,系統(tǒng)會(huì)自動(dòng)生成3塊虛擬網(wǎng)卡。VMnet0:用于虛擬網(wǎng)絡(luò)橋接模式下的虛擬交換機(jī)。VMnet1:用于虛擬網(wǎng)絡(luò)僅主機(jī)模式下的虛擬交換機(jī)。VMnet8:用于虛擬網(wǎng)絡(luò)NAT模式下的虛擬交換機(jī)。VMware虛擬機(jī)安裝和網(wǎng)絡(luò)設(shè)置使用NAT模式,就是讓虛擬系統(tǒng)借助網(wǎng)絡(luò)地址轉(zhuǎn)換功能,通過主機(jī)所在的網(wǎng)絡(luò)來訪問互聯(lián)網(wǎng)。也就是說,使用NAT模式可以實(shí)現(xiàn)在虛擬系統(tǒng)里訪問互聯(lián)網(wǎng),但前提是主機(jī)可以訪問互聯(lián)網(wǎng)。NAT模式下的虛擬系統(tǒng)的傳輸控制協(xié)議(TransmissionControlProtocol,TCP)或互聯(lián)網(wǎng)協(xié)議(InternetProtocol,IP)配置信息是由VMnet8(NAT)的動(dòng)態(tài)主機(jī)配置協(xié)議(DynamicHostConfigurationProtocol,DHCP)服務(wù)器提供的,無法進(jìn)行手動(dòng)修改,因此虛擬系統(tǒng)無法和本局域網(wǎng)中的其他真實(shí)主機(jī)進(jìn)行通信。VMware虛擬機(jī)安裝和網(wǎng)絡(luò)設(shè)置如果網(wǎng)絡(luò)IP地址資源緊缺,但是又希望虛擬機(jī)能夠聯(lián)網(wǎng),這時(shí)NAT模式是最好的選擇。NAT模式借助虛擬NAT設(shè)備和虛擬DHCP服務(wù)器,使得虛擬機(jī)可以聯(lián)網(wǎng)。虛擬網(wǎng)絡(luò)NAT模式的原理如下圖。VMware虛擬機(jī)安裝和網(wǎng)絡(luò)設(shè)置在NAT模式中,主機(jī)網(wǎng)卡直接與虛擬NAT設(shè)備相連,然后虛擬NAT設(shè)備與虛擬DHCP服務(wù)器一起連接在虛擬交換機(jī)(VMnet8)上,這樣即可實(shí)現(xiàn)虛擬機(jī)聯(lián)網(wǎng)。VMwareNetworkAdapterVMnet8是為了實(shí)現(xiàn)主機(jī)與虛擬機(jī)之間通信的虛擬網(wǎng)卡。VMware虛擬機(jī)安裝和網(wǎng)絡(luò)設(shè)置NAT模式的具體配置過程如下。打開虛擬網(wǎng)絡(luò)編輯器。在VMware主界面中,單擊“編輯”菜單,選擇“虛擬網(wǎng)絡(luò)編輯器”選項(xiàng),如下圖。VMware虛擬機(jī)安裝和網(wǎng)絡(luò)設(shè)置編輯虛擬網(wǎng)絡(luò)編輯器。在彈出的“虛擬網(wǎng)絡(luò)編輯器”對(duì)話框中(部分功能的設(shè)置可能需要管理員權(quán)限,具體情況以個(gè)人Windows設(shè)置為準(zhǔn)),先單擊選中“VMnet8”網(wǎng)絡(luò),在“VMnet信息”部分選擇“NAT模式(與虛擬機(jī)共享主機(jī)的IP地址)”單選項(xiàng)。勾選“將主機(jī)虛擬適配器連接到此網(wǎng)絡(luò)”和“使用本地DHCP服務(wù)將IP地址分配給虛擬機(jī)”復(fù)選框,并將“子網(wǎng)IP”設(shè)置為“”(后續(xù)虛擬機(jī)IP地址需要設(shè)置到此網(wǎng)段上,如master的IP地址可設(shè)置為30),將“子網(wǎng)掩碼”設(shè)置為“”,如右圖。VMware虛擬機(jī)安裝和網(wǎng)絡(luò)設(shè)置配置NAT網(wǎng)絡(luò)。在“虛擬網(wǎng)絡(luò)編輯器”對(duì)話框中單擊“NAT設(shè)置”按鈕,彈出“NAT設(shè)置”對(duì)話框,將“網(wǎng)關(guān)IP”設(shè)置為“”,如右圖。設(shè)置完成后單擊“確定”按鈕,退出當(dāng)前對(duì)話框并返回“虛擬網(wǎng)絡(luò)編輯器”對(duì)話框。VMware虛擬機(jī)安裝和網(wǎng)絡(luò)設(shè)置設(shè)置DHCP。在“虛擬網(wǎng)絡(luò)編輯器”對(duì)話框中單擊“DHCP設(shè)置”按鈕,彈出“DHCP設(shè)置”對(duì)話框,將“起始IP地址”設(shè)置為“”,將“結(jié)束IP地址”設(shè)置為“54”,如右圖。設(shè)置完成后單擊“確定”按鈕,退出當(dāng)前對(duì)話框,返回“虛擬網(wǎng)絡(luò)編輯器”對(duì)話框。在“虛擬網(wǎng)絡(luò)編輯器”對(duì)話框中單擊“確定”按鈕后,網(wǎng)絡(luò)的設(shè)置開始生效。部署CentOS由于Hadoop的主體是使用Java語言編寫而成的,運(yùn)行在安裝了Java虛擬機(jī)(JavaVirtualMachine,JVM)的平臺(tái),且部分代碼需要在UNIX或Linux環(huán)境下運(yùn)行,所以不適合在非UNIX或Linux環(huán)境下運(yùn)行,故本書部署的操作系統(tǒng)選用開源版的Linux系統(tǒng)——CentOS6.x系列。在部署前要下載好CentOS的安裝版本,CentOS目前主流的版本有6、7和8,三者的安裝方式和步驟大體相同,只是個(gè)別步驟有差異。現(xiàn)以CentOS6.8為例,介紹主要的安裝部署方法。部署CentOS新建虛擬機(jī)。打開VMware,進(jìn)入VMware主界面,選擇“創(chuàng)建新的虛擬機(jī)”選項(xiàng),彈出“新建虛擬機(jī)向?qū)А睂?duì)話框,選擇“自定義”(高級(jí))選項(xiàng),如下圖,單擊“下一步”按鈕。部署CentOS設(shè)置虛擬機(jī)硬件兼容性。在“硬件兼容性”下拉列表框中選擇“Workstation15.x”選項(xiàng),如下圖,單擊“下一步”按鈕。部署CentOS選擇安裝客戶機(jī)操作系統(tǒng)的方法。選擇“稍后安裝操作系統(tǒng)(S)?!眴芜x項(xiàng),如下圖,單擊“下一步”按鈕。部署CentOS選擇部署操作系統(tǒng)的類型和版本。選擇將要部署的操作系統(tǒng)為“Linux(L)”,版本為“CentOS664位”,如下圖,單擊“下一步”按鈕。部署CentOS設(shè)置虛擬機(jī)名稱和存儲(chǔ)位置。設(shè)置虛擬機(jī)名稱為“master”,存儲(chǔ)位置為“D:\Hive\VM\master”(位置可根據(jù)讀者個(gè)人計(jì)算機(jī)硬盤設(shè)置做相應(yīng)調(diào)整),如下圖,單擊“下一步”按鈕。部署CentOS設(shè)置虛擬機(jī)的處理器數(shù)量和內(nèi)核數(shù)量。設(shè)置虛擬機(jī)的“處理器數(shù)量”為“1”,設(shè)置“每個(gè)處理器的內(nèi)核數(shù)量”為“1”(數(shù)量可根據(jù)讀者個(gè)人計(jì)算機(jī)CPU配置做相應(yīng)調(diào)整,性能較好的計(jì)算機(jī)可設(shè)置內(nèi)核的數(shù)量為“2”),如下圖,單擊“下一步”按鈕。部署CentOS設(shè)置虛擬機(jī)的內(nèi)存。設(shè)置虛擬機(jī)的內(nèi)存為“2048MB”(大小可根據(jù)讀者個(gè)人計(jì)算機(jī)內(nèi)存配置做相應(yīng)調(diào)整,建議為1024MB或2048MB),如下圖,單擊“下一步”按鈕。部署CentOS設(shè)置虛擬機(jī)的網(wǎng)絡(luò)類型。設(shè)置虛擬機(jī)網(wǎng)絡(luò)連接為“使用網(wǎng)絡(luò)地址轉(zhuǎn)換(NAT)”,如下圖,單擊“下一步”按鈕。部署CentOS設(shè)置虛擬機(jī)的I/O控制器類型。設(shè)置虛擬機(jī)的I/O控制器類型為“LSILogic(L)”,如下圖,單擊“下一步”按鈕。部署CentOS設(shè)置虛擬機(jī)的磁盤類型。設(shè)置虛擬機(jī)的磁盤類型為“SCSI”,如下圖,單擊“下一步”按鈕。部署CentOS創(chuàng)建新虛擬磁盤。為虛擬機(jī)創(chuàng)建新虛擬磁盤,選擇“創(chuàng)建新虛擬磁盤”單選項(xiàng),如下圖,單擊“下一步”按鈕。部署CentOS設(shè)置虛擬機(jī)的磁盤容量。設(shè)置虛擬機(jī)的磁盤容量(單位:GB)為“20.0”,并選擇“將虛擬磁盤存儲(chǔ)為單個(gè)文件”單選項(xiàng),如下圖,單擊“下一步”按鈕。部署CentOS設(shè)置虛擬機(jī)的磁盤文件名。設(shè)置虛擬機(jī)的磁盤文件名為“master.vmdk”(系統(tǒng)默認(rèn)將磁盤文件名設(shè)置為虛擬機(jī)名稱),如下圖,單擊“下一步”按鈕。部署CentOS核實(shí)虛擬機(jī)設(shè)置清單。完成虛擬機(jī)設(shè)置后,將彈出虛擬機(jī)設(shè)置清單以供核實(shí),如下圖,核實(shí)無誤后單擊“完成”按鈕,完成虛擬機(jī)的創(chuàng)建。部署CentOS設(shè)置虛擬機(jī)的光驅(qū)。設(shè)置虛擬機(jī)的光驅(qū),單擊超鏈接“CD/DVD(IDE)”,如右圖。部署CentOS設(shè)置虛擬機(jī)的ISO映像文件。勾選“啟動(dòng)時(shí)連接”復(fù)選框,單擊“瀏覽”按鈕選擇對(duì)應(yīng)的CentOS鏡像文件CentOS-6.8-x86_64-bin-DVD1.iso,再單擊“打開”按鈕,完成CentOS鏡像文件的選擇,如右圖。然后單擊“確定”按鈕。其中,CentOS-6.8-x86_64-bin-DVD1.iso是6.8版本的CentOS的標(biāo)準(zhǔn)安裝包,內(nèi)含CentOS6.8和部分必需的軟件包。部署CentOS啟動(dòng)虛擬機(jī)。在VMware主界面左側(cè)導(dǎo)航欄選擇虛擬機(jī)“master”,在右側(cè)面板單擊“開啟此虛擬機(jī)”超鏈接,如下圖。部署CentOS開始安裝CentOS6。啟動(dòng)虛擬機(jī)后,出現(xiàn)CentOS6.8安裝引導(dǎo)界面,如下圖,選擇“Installorupgradeanexistingsystem”。部署CentOS跳過測(cè)試安裝介質(zhì)。出現(xiàn)是否要測(cè)試安裝介質(zhì)的提示,如左圖,單擊“Skip”按鈕跳過此步驟;隨后會(huì)彈出安裝歡迎界面,如右圖,單擊“Next”按鈕,進(jìn)入下一步安裝。部署CentOS選擇安裝提示語言與鍵盤布局語言。系統(tǒng)會(huì)詢問安裝時(shí)的提示語言類型,選擇系統(tǒng)語言“Chinese(Simplified)”,單擊“Next”按鈕,隨后進(jìn)入選擇鍵盤語言提示界面,選擇“美國英語式”選項(xiàng),單擊“下一步”按鈕,進(jìn)入下一步驟。選擇基本存儲(chǔ)設(shè)備與清除數(shù)據(jù)。系統(tǒng)會(huì)詢問安裝的存儲(chǔ)設(shè)備類型,可選擇默認(rèn)類型“基本存儲(chǔ)設(shè)備”,如下圖。部署CentOS單擊“下一步”按鈕,隨后進(jìn)入是否清除數(shù)據(jù)提示界面,如下圖,單擊“是,忽略所有數(shù)據(jù)”按鈕,單擊“下一步”按鈕,進(jìn)入下一步驟。部署CentOS設(shè)置主機(jī)名稱與選擇時(shí)區(qū)。設(shè)置主機(jī)名稱為“master”,如下圖。部署CentOS完成后單擊“下一步”按鈕,隨后進(jìn)入選擇時(shí)區(qū)界面,選擇“亞洲/上?!边x項(xiàng),如下圖,單擊“下一步”按鈕,進(jìn)入下一步驟。部署CentOS設(shè)置根用戶密碼與選擇安裝類型。設(shè)置根密碼(root用戶密碼)為“123456”,并重復(fù)設(shè)置以進(jìn)行確認(rèn),如左圖,完成后單擊“下一步”按鈕。在彈出的右圖的界面中單擊“無論如何都使用”按鈕。部署CentOS隨后系統(tǒng)會(huì)詢問采用何種磁盤分區(qū)類型,選擇“使用所有空間”單選項(xiàng),如下圖,單擊“下一步”按鈕,進(jìn)入下一步驟。部署CentOS將存儲(chǔ)配置寫入磁盤與選擇系統(tǒng)安裝方案。在系統(tǒng)確認(rèn)是否將存儲(chǔ)配置寫入磁盤(如左圖)時(shí),單擊“將修改寫入磁盤”按鈕;隨后系統(tǒng)會(huì)詢問采用何種安裝方案,選擇“Minimal”選項(xiàng),如右圖,單擊“下一步”按鈕,進(jìn)入下一步驟。部署CentOS查看系統(tǒng)安裝進(jìn)度與完成安裝提示界面。開始安裝系統(tǒng),界面將顯示安裝進(jìn)度,如左下圖。當(dāng)安裝進(jìn)度加載完成時(shí),會(huì)提示已經(jīng)完成安裝,如右下圖,單擊“重新引導(dǎo)”按鈕,使用安裝的系統(tǒng)。部署CentOS登錄CentOS。進(jìn)入登錄終端界面,輸入用戶名“root”與密碼“123456”按Enter鍵。系統(tǒng)顯示“[root@master~]#”表示登錄成功,如下圖。本書均采用以根用戶(root)的身份登錄CentOS,讀者若想以普通用戶的身份登錄CentOS,需先以超級(jí)根的身份登錄,然后使用“useradd”命令創(chuàng)建新的普通用戶,使用“passwd”命令為普通用戶設(shè)置密碼,最后使用“su”命令切換普通用戶,或下次采用已創(chuàng)建好的普通用戶和對(duì)應(yīng)的密碼登錄CentOS。Hadoop集群部署前準(zhǔn)備集群是一組相互獨(dú)立的、通過高速網(wǎng)絡(luò)互聯(lián)的計(jì)算機(jī)。集群中每臺(tái)計(jì)算機(jī)經(jīng)過組合形成一個(gè)組,并以單一系統(tǒng)的模式加以管理。當(dāng)用戶與集群相互作用時(shí),集群像獨(dú)立的服務(wù)器。集群配置的優(yōu)點(diǎn)在于能提高性能、降低成本、提高可擴(kuò)展性和增強(qiáng)可靠性。Hadoop集群部署前準(zhǔn)備1.集群系統(tǒng)規(guī)劃上小節(jié)初步完成了虛擬機(jī)master的CentOS的部署,實(shí)際上,在部署Hadoop集群中,需要配置多臺(tái)主機(jī),以形成集群系統(tǒng)。在本書中,將以4臺(tái)服務(wù)器、1臺(tái)Windows7客戶機(jī)為例,完成Hadoop集群的部署。Hadoop集群系統(tǒng)規(guī)劃如下表。主機(jī)名稱IP地址網(wǎng)關(guān)設(shè)置角色操作系統(tǒng)master30MasterCentOS6.8slave131SlaveCentOS6.8slave232SlaveCentOS6.8slave333SlaveCentOS6.8desktopDesktopWindows7Hadoop集群部署前準(zhǔn)備2.集群網(wǎng)絡(luò)配置master網(wǎng)絡(luò)和IP地址配置的步驟如下。重啟網(wǎng)絡(luò)服務(wù)。執(zhí)行“servicenetworkrestart”命令重啟網(wǎng)絡(luò)服務(wù),如下圖,結(jié)果顯示重啟成功。Hadoop集群部署前準(zhǔn)備修改ifcfg-eth0配置文件中的IP地址設(shè)置。執(zhí)行“vi/etc/sysconfig/network-scripts/ifcfg-eth0”命令進(jìn)入ifcfg-eth0文件,按鍵盤的“I”鍵進(jìn)入編輯狀態(tài)以修改文件。再次重啟網(wǎng)絡(luò)服務(wù)。執(zhí)行“servicenetworkrestart”命令重啟網(wǎng)絡(luò)服務(wù),使網(wǎng)絡(luò)新配置生效。DEVICE=eth0TYPE=EthernetONBOOT=yesNM_CONTROLLED=yesBOOTPROTO=staticIPADDR=30NETMASK=GATEWAY=DNS1=Hadoop集群部署前準(zhǔn)備3.安裝配置Xshell和XftpXshell是由NetSarang公司開發(fā)的功能強(qiáng)大的安全終端模擬軟件,支持SSH1、SSH2和Telnet協(xié)議。使用Xshell可通過互聯(lián)網(wǎng)安全連接到遠(yuǎn)程主機(jī),Xshell提供了很多功能,使得遠(yuǎn)程操作Linux系統(tǒng)更為便捷。Xftp是由NetSarang公司開發(fā)的功能強(qiáng)大的具有SSH文件傳輸協(xié)議(SSHFileTransferProtocol,SFTP)、文件傳輸協(xié)議(FileTransferProtocol,F(xiàn)TP)的文件傳輸軟件。通過Xftp,MicrosoftWindows用戶能安全地在UNIX或Linux環(huán)境和Windows環(huán)境之間傳輸文件。為了方便后續(xù)的配置工作,建議讀者提前下載并安裝Xshell和Xftp。Hadoop集群部署前準(zhǔn)備Xshell和Xftp安裝與連接虛擬機(jī)的操作過程如下。Xshell和Xftp的下載安裝。非商用版本的Xshell和Xftp的安裝文件可在NetSarang公司中文網(wǎng)站下載,如下圖。下載時(shí),選擇“學(xué)校/家庭免費(fèi)”,并填寫個(gè)人姓名和郵箱,通過郵箱獲得免費(fèi)版下載鏈接。由于安裝過程有中文安裝向?qū)е敢逸^為簡單,在此不贅述,請(qǐng)讀者自行完成。Hadoop集群部署前準(zhǔn)備Xshell和Xftp連接虛擬機(jī)。由于Xftp連接虛擬機(jī)的方式和Xshell的連接方式類似,故下面以Xshell為例說明。在連接虛擬機(jī)前,需將虛擬機(jī)的服務(wù)打開,并完成虛擬機(jī)的網(wǎng)絡(luò)配置,否則無法進(jìn)行遠(yuǎn)程連接。Xshell連接虛擬機(jī)的主要步驟如下。在Xshell主界面,單擊“文件”菜單,如下圖,然后選擇“新建”選項(xiàng)。Hadoop集群部署前準(zhǔn)備進(jìn)入“新建會(huì)話屬性”對(duì)話框,輸入名稱“master”,協(xié)議默認(rèn)為安全外殼(SecureShell,SSH)協(xié)議,輸入主機(jī)地址“30”,如右圖。Hadoop集群部署前準(zhǔn)備單擊對(duì)話框中左側(cè)“用戶身份驗(yàn)證”進(jìn)入“身份驗(yàn)證”界面,輸入用戶名“root”,密碼“123456”,勾選“Password”復(fù)選框,如右圖,然后單擊“確定”按鈕保存,也可單擊“連接”按鈕,直接連接主機(jī)。Hadoop集群部署前準(zhǔn)備當(dāng)?shù)谝淮芜B接到主機(jī)時(shí),會(huì)彈出“SSH安全警告”對(duì)話框,如右圖。Hadoop集群部署前準(zhǔn)備單擊“接受并保存”按鈕,連接成功后的Xshell遠(yuǎn)程登錄界面如下圖。至此,已經(jīng)完成Xshell與虛擬機(jī)的遠(yuǎn)程連接,Xftp可參照Xshell連接虛擬機(jī)的過程進(jìn)行配置。Hadoop集群部署在完成單臺(tái)主機(jī)的CentOS的安裝后,還需要為CentOS設(shè)置鏡像文件路徑和設(shè)置YUM安裝軟件源,以便后續(xù)在安裝新程序時(shí),能夠較為快速地找到安裝文件并安裝。另外為了節(jié)省時(shí)間,本書采用克隆虛擬機(jī)的方式完成3臺(tái)Slave節(jié)點(diǎn)機(jī)器的配置。1.CentOS鏡像設(shè)置Hadoop集群部署為CentOS設(shè)置鏡像文件路徑的步驟如下。確認(rèn)鏡像文件已添加。CentOS的鏡像文件指的就是安裝CentOS的ISO映像文件,可在虛擬機(jī)設(shè)置里查看該文件。單擊上圖界面中的“編輯虛擬機(jī)設(shè)置”超鏈接,在彈出的“虛擬機(jī)設(shè)置”對(duì)話框中單擊“CD/DVD(IDE)”超鏈接,如右圖。需要勾選“已連接”和“啟動(dòng)時(shí)連接”復(fù)選框,并確認(rèn)已經(jīng)指定相應(yīng)的ISO映像文件路徑。此后在安裝新程序時(shí),會(huì)從ISO映像文件中優(yōu)先加載。Hadoop集群部署修改repo配置文件。將/etc/yum.repos.d/目錄下原有的repo配置文件(CentOS-Media.repo除外)的擴(kuò)展名改為.bak,部分執(zhí)行結(jié)果如下圖。Hadoop集群部署配置CentOS-Media.repo文件。執(zhí)行命令“viCentOS-Media.repo”修改配置文件CentOS-Media.repo。掛載鏡像文件至目錄/media。執(zhí)行命令“mount/dev/dvd/media/”將鏡像文件掛載到/media,如下圖。Hadoop集群部署2.通過yum命令安裝常用軟件在CentOS中可使用yum命令安裝新軟件,虛擬機(jī)會(huì)先在鏡像文件中尋找安裝包,當(dāng)找不到時(shí),則在YUM安裝軟件源定義的線上資源下載。為了方便后續(xù)的克隆操作,需要為虛擬機(jī)安裝一些軟件。執(zhí)行命令“yum-yinstallntpopenssh-clientsopenssh-servervim”安裝常用軟件,如下圖。Hadoop集群部署3.安裝JDK開發(fā)包Hadoop集群需要使用JDK,本書采用JDK1.8(安裝包為jdk-8u221-linux-x64.rpm),讀者可自行到其官網(wǎng)下載。安裝JDK的過程如下。上傳并安裝。上傳JDK安裝包到虛擬機(jī)/opt目錄,進(jìn)入/opt目錄,執(zhí)行命令“rpm-ivhjdk-8u221-linux-x64.rpm”安裝JDK。添加環(huán)境變量。為了讓系統(tǒng)可直接訪問JDK的安裝目錄,在/etc/profile文件中添加環(huán)境變量。添加完成并保存、退出后需執(zhí)行命令“source/etc/profile”,使配置馬上生效。Hadoop集群部署驗(yàn)證。驗(yàn)證JDK是否配置成功,執(zhí)行命令“java-version”,配置成功則會(huì)顯示所安裝的JDK版本,如下圖。Hadoop集群部署4.通過VMware克隆Slave節(jié)點(diǎn)可通過對(duì)配置好的虛擬機(jī)進(jìn)行克隆操作生成Hadoop集群中的Slave節(jié)點(diǎn)。下面以克隆slave1虛擬機(jī)為例進(jìn)行介紹,克隆虛擬機(jī)的具體步驟如下。在VMware主界面,選擇虛擬機(jī)“master”,單擊右鍵,選擇“管理”命令,再選擇“克隆”命令,如下圖(注:克隆虛擬機(jī)前需要關(guān)閉被克隆的主機(jī))。Hadoop集群部署選擇克隆源為“虛擬機(jī)中的當(dāng)前狀態(tài)”,如下圖,單擊“下一步”按鈕。Hadoop集群部署選擇克隆類型為“創(chuàng)建完整克隆”,如下圖,單擊“下一步”按鈕。Hadoop集群部署設(shè)置新虛擬機(jī)的名稱為“slave1”,將存儲(chǔ)位置設(shè)為“D:\Hive\VM\hadoop2”(讀者可自行設(shè)置),如下圖。然后單擊“完成”按鈕,完成slave1虛擬機(jī)的克隆,slave2、slave3虛擬機(jī)的克隆步驟可參考slave1的克隆。Hadoop集群部署5.修改Slave主機(jī)IP地址配置完成克隆虛擬機(jī)后,需要對(duì)Slave主機(jī)的IP地址配置進(jìn)行修改。其中,slave1虛擬機(jī)的IP地址配置步驟如下。打開新虛擬機(jī),執(zhí)行命令“ifconfig-a”,將查看到的eth1和HWaddr后面的內(nèi)容記錄下來,如下圖。Hadoop集群部署修改“/etc/sysconfig/network-scripts/ifcfg-eth0”,將其中的DEVICE、HWADDR中的值改成第(1)步查看到的內(nèi)容,并根據(jù)上表修改IPADDR后面的IP地址,如下圖。Hadoop集群部署修改“/etc/sysconfig/network”,修改主機(jī)名為“slave1”。執(zhí)行命令“servicenetworkrestart”使網(wǎng)絡(luò)配置立即生效。執(zhí)行“ipaddr”命令查看IP地址是否被修改,如下圖。Hadoop集群部署執(zhí)行命令“reboot”重啟虛擬機(jī)。使用Xshell工具連接新的虛擬機(jī),操作過程請(qǐng)參考上小節(jié)中的內(nèi)容。后續(xù)操作默認(rèn)在Xshell界面進(jìn)行。至此slave1主機(jī)的IP地址配置已完成,slave2、slave3主機(jī)IP地址配置的步驟參考前述步驟。Hadoop集群部署6.設(shè)置IP映射在master和3臺(tái)slave機(jī)器中執(zhí)行“vi/etc/hosts”命令,編輯hosts文件配置IP地址映射,目的是讓系統(tǒng)在沒有域名系統(tǒng)(DomainNameSystem,DNS)服務(wù)的情況下,可通過主機(jī)名訪問對(duì)應(yīng)的機(jī)器節(jié)點(diǎn)。Hadoop集群部署7.配置SSH無密碼登錄Hadoop集群中,Hadoop要對(duì)Linux系統(tǒng)進(jìn)行腳本控制,需要使用SSH無密碼登錄。SSH無密碼登錄的配置步驟如下。執(zhí)行“ssh-keygen”命令生成公鑰與私鑰對(duì)。輸入命令“ssh-keygen-trsa”,接著按3次Enter鍵,將生成私鑰id_rsa和公鑰id_rsa.pub兩個(gè)文件,參數(shù)“-t”用于指定創(chuàng)建的SSH密鑰采用RSA加密方式。將公鑰復(fù)制到各主機(jī)。執(zhí)行“ssh-copy-id-i/root/.ssh/id_rsa.pub主機(jī)名”命令將master生成的公鑰復(fù)制到各主機(jī)(包括master)中,復(fù)制公鑰到各主機(jī)的命令。Hadoop集群部署驗(yàn)證是否成功設(shè)置SSH無密碼登錄。在master中,依次執(zhí)行“sshslave1”“sshslave2”“sshslave3”命令,可驗(yàn)證是否能遠(yuǎn)程進(jìn)行SSH無密碼連接。當(dāng)?shù)卿浧渌鳈C(jī)時(shí)不提示輸入密碼,則說明SSH無密碼登錄已設(shè)置成功,可用“exit”命令退出遠(yuǎn)程登錄,如下圖。Hadoop集群部署8.配置時(shí)間同步服務(wù)Hadoop集群對(duì)時(shí)間要求很高,主節(jié)點(diǎn)與各個(gè)從節(jié)點(diǎn)的時(shí)間都必須同步,故為了實(shí)現(xiàn)集群間的時(shí)間同步,需要在每臺(tái)主機(jī)配置時(shí)間同步服務(wù),即網(wǎng)絡(luò)時(shí)間協(xié)議(NetworkTimeProtocol,NTP)服務(wù)。NTP服務(wù)的配置步驟如下。安裝NTP服務(wù)。直接使用YUM安裝NTP服務(wù),在各節(jié)點(diǎn)使用“yuminstall-yntp”命令即可。若出現(xiàn)了“Complete”信息,則說明安裝NTP服務(wù)成功。若安裝出現(xiàn)問題,則需要使用“mount/dev/sr0/media”命令重新掛載本地YUM源操作。對(duì)主機(jī)master修改時(shí)間同步設(shè)置??稍O(shè)置master節(jié)點(diǎn)為NTP服務(wù)主節(jié)點(diǎn)。執(zhí)行“vim/etc/ntp.conf”命令打開/etc/ntp.conf文件,注釋掉以server開頭的行。Hadoop集群部署在主機(jī)slaveX中配置NTP服務(wù)。分別在slave1、slave2、slave3中配置NTP服務(wù),同樣修改/etc/ntp.conf文件,注釋掉server開頭的行。關(guān)閉防火墻。由于防火墻的限制會(huì)影響NTP服務(wù)的運(yùn)行,可執(zhí)行“serviceiptablesstop”“chkconfigiptablesoff”命令永久關(guān)閉防火墻,注意主節(jié)點(diǎn)和從節(jié)點(diǎn)同時(shí)關(guān)閉。(CentOS7.X關(guān)閉防火墻的命令為“systemctlstopfirewalld.service”“systemctldisablefirewalld.service”)Hadoop集群部署啟動(dòng)NTP服務(wù)。啟動(dòng)NTP服務(wù)的步驟如下。在master上執(zhí)行“servicentpdstart”“chkconfigntpdon”命令。在slaveX上執(zhí)行“ntpdatemaster”即可同步時(shí)間。在slaveX上分別執(zhí)行“servicentpdstart”“chkconfigntpdon”命令即可啟動(dòng)并永久啟動(dòng)NTP服務(wù)。Hadoop集群部署9.Hadoop安裝及配置Hadoop的版本較多,本書以Hadoop3.1.4為例,講解其主要的安裝及配置步驟,其他版本可參照進(jìn)行。另外為節(jié)省安裝、配置時(shí)間,本書將先配置master主機(jī),再通過遠(yuǎn)程復(fù)制文件的scp命令配置其他Slave主機(jī)。上傳文件。通過遠(yuǎn)程文件傳輸工具Xftp連接到master主機(jī),上傳hadoop-3.1.4.tar.gz文件至/opt目錄下。(解壓hadoop-3.1.4.tar.gz文件。執(zhí)行“tar-zxfhadoop-3.1.4.tar.gz-C/usr/local/”命令,將hadoop-3.1.4.tar.gz文件解壓至/usr/local/目錄下。Hadoop集群部署配置Hadoop文件。Hadoop配置文件的修改、添加步驟如下。執(zhí)行“cd/usr/local/hadoop-3.1.4/etc/hadoop/”命令切換目錄。依次修改配置文件core-site.xml、hadoop-env.sh、hdfs-site.xml、mapred-site.xml、yarn-site.xml、yarn-env.sh和workers。復(fù)制Hadoop安裝文件至集群Slave節(jié)點(diǎn)。通過scp命令將Hadoop安裝文件遠(yuǎn)程分發(fā)至另外3臺(tái)Slave主機(jī),配置Hadoop環(huán)境變量。執(zhí)行“vi/etc/profile”命令修改profile文件的配置。修改完成并保存退出后執(zhí)行“source/etc/profile”命令使環(huán)境變量生效。Hadoop集群部署格式化NameNode。進(jìn)入Hadoop命令目錄“cd/usr/local/hadoop-3.1.4/bin”,再執(zhí)行格式化“./hdfsnamenode-format”命令,當(dāng)出現(xiàn)“Storagedirectory/data/hadoop/hdfs/namehasbeensuccessfullyformatted”提示時(shí),表示完成NameNode格式化工作,如下圖。Hadoop集群部署啟動(dòng)Hadoop集群。在主節(jié)點(diǎn)和從節(jié)點(diǎn)中執(zhí)行“cd/usr/local/hadoop-3.1.4/sbin”命令,進(jìn)入腳本目錄。啟動(dòng)Hadoop集群。查看Java進(jìn)程。Hadoop集群啟動(dòng)后,在4個(gè)節(jié)點(diǎn)中執(zhí)行“jps”命令,可以查看到下表的主從節(jié)點(diǎn)進(jìn)程列表。主機(jī)名稱Java進(jìn)程masterNameNodeSecondaryNameNodeJobHistoryServerJpsResourceManagerslave1JpsDataNodeNodeManagerslave2slave3Hadoop集群部署在本地計(jì)算機(jī)添加IP地址和域名映射。為方便在本地(desktop)訪問Hadoop集群中的主機(jī),需要在本地計(jì)算機(jī)的“C:\Windows\System32\drivers\etc\hosts”文件中添加IP地址和域名映射。使用瀏覽器查看服務(wù)情況。在desktop客戶端瀏覽器查看服務(wù)的地址如下。HDFS服務(wù)地址:http://master:9870。YARN資源服務(wù)地址:http://master:8088。Hadoop集群部署處理異常問題。當(dāng)集群格式化或啟動(dòng)出現(xiàn)問題時(shí),可以按如下方法進(jìn)行處理。若啟動(dòng)后主節(jié)點(diǎn)Jps正常,子節(jié)點(diǎn)Jps中DataNode沒有啟動(dòng),則復(fù)制主節(jié)點(diǎn)的data/hadoop/hdfs/name/current/VERSION中的Cluster_ID,以替換其他子節(jié)點(diǎn)的data/hadoop/hdfs/data/current/VERSION中的Cluster_ID。若出現(xiàn)其他問題,則檢查相關(guān)配置文件??赏ㄟ^查看格式化NameNode的報(bào)錯(cuò)信息、集群啟動(dòng)日志文件等具體信息進(jìn)行排查,其中集群啟動(dòng)日志文件的路徑參見執(zhí)行啟動(dòng)命令后的輸出信息提示。安裝部署Hadoop集群安裝部署Hive使用HiveCLI任務(wù)描述Hive可以將結(jié)構(gòu)化的數(shù)據(jù)文件映射為數(shù)據(jù)庫表,并可提供簡單的HQL查詢功能。Hive可將HQL語句轉(zhuǎn)換為MapReduce任務(wù)執(zhí)行。Hive需要將元數(shù)據(jù)保存到數(shù)據(jù)庫Derby或MySQL中,并配置相應(yīng)服務(wù),因此本任務(wù)主要介紹Hive元數(shù)據(jù)存儲(chǔ),同時(shí)完成MySQL的安裝和配置、Hive的安裝和配置。安裝配置MySQL為實(shí)現(xiàn)多用戶連接,Hive需要將元數(shù)據(jù)存儲(chǔ)在關(guān)系數(shù)據(jù)庫中,故需要安裝和配置MySQL。MySQL安裝和配置的簡要步驟如下。查找系統(tǒng)適用的MySQL版本。執(zhí)行“yumsearchmysql”命令,搜索找到當(dāng)前系統(tǒng)適用的版本為mysql-server.x86_64。安裝MySQL。執(zhí)行“mount/dev/dvd/media”命令綁定鏡像文件到目錄,再執(zhí)行“yuminstallmysql-server.x86_64-y”命令安裝MySQL。設(shè)置開機(jī)自動(dòng)啟動(dòng)MySQL服務(wù)。執(zhí)行“servicemysqldstart”“chkconfigmysqldon”命令,設(shè)置開機(jī)自動(dòng)啟動(dòng)MySQL服務(wù)。設(shè)置MySQL管理員賬號(hào)及密碼。首先啟動(dòng)MySQL遠(yuǎn)程終端,直接在終端輸入“mysql”即可,然后設(shè)置MySQL管理員賬號(hào)及密碼并刷新配置。安裝配置HiveHive的安裝和配置主要集中在master主機(jī),如無特別說明,操作默認(rèn)在master主機(jī)進(jìn)行。安裝和配置Hive的過程如下。上傳安裝包并解壓。將安裝包apache-hive-3.1.2-bin.tar.gz通過Xftp上傳到master主機(jī)的/opt/目錄下,執(zhí)行“tar-zxf/opt/apache-hive-3.1.2-bin.tar.gz-C/usr/local”命令,解壓安裝包至/usr/local目錄下。重命名文件。執(zhí)行“mv/usr/local/apache-hive-3.1.2-bin/usr/local/hive-3.1.2”命令,將文件apache-hive-3.1.2-bin重命名為hive-3.1.2。在MySQL中新建hive數(shù)據(jù)庫。在MySQL中新建hive數(shù)據(jù)庫,然后退出MySQL。安裝配置Hive修改配置文件hive-site.xml。執(zhí)行“vi/usr/local/hive-3.1.2/conf/hive-site.xml”命令創(chuàng)建hive-site.xml文件。加載MySQL驅(qū)動(dòng)包至Hive目錄。加載MySQL驅(qū)動(dòng)包mysql-connector-java-5.1.30.jar到/usr/local/hive-3.1.2/lib目錄。解決JAR包版本沖突問題。刪除較低版本的guavaJAR包,并復(fù)制Hadoop目錄下較高版本的JAR包到Hive安裝目錄的lib目錄下。安裝配置Hive添加系統(tǒng)環(huán)境變量。執(zhí)行“vi/etc/profile”命令,添加Hive安裝目錄到環(huán)境變量。修改完成并保存退出后執(zhí)行“source/etc/profile”命令使系統(tǒng)環(huán)境變量生效。初始化元數(shù)據(jù)庫。進(jìn)入Hive安裝目錄的bin子目錄,執(zhí)行“./schematool-dbTypemysql-initSchema”命令,執(zhí)行結(jié)果如下圖,表示元數(shù)據(jù)庫初始化成功。安裝配置Hive啟動(dòng)HiveMetastore服務(wù)。在Hadoop集群已啟動(dòng)的情況下,由于在hive-site.xml配置文件中指定了hive.metastore.uris的端口,故執(zhí)行“hive--servicemetastore&”命令即可啟動(dòng)HiveMetastore服務(wù)。啟動(dòng)HiveMetastore服務(wù)后,即可支持多個(gè)客戶端同時(shí)訪問元數(shù)據(jù),且多個(gè)客戶端不需要知道MySQL數(shù)據(jù)庫的用戶名和密碼。啟動(dòng)HiveServer2服務(wù)??蓤?zhí)行“nohuphive--servicehiveserver2&”命令啟動(dòng)HiveServer2服務(wù)。HiveServer2是一種能使客戶端執(zhí)行Hive查詢的服務(wù)。HiveServer2是HiveServer的改進(jìn)版,HiveServer已經(jīng)被廢棄。HiveServer2可以支持多客戶端并發(fā)和身份認(rèn)證,旨在為開放API客戶端(如JDBC和ODBC)提供更好的支持,后續(xù)章節(jié)可能會(huì)用到此服務(wù)。安裝部署Hadoop集群安裝部署Hive使用HiveCLI任務(wù)描述HiveCLI是客戶端與Hive進(jìn)行交互的3種主要方式之一。在使用Hive的過程中,用戶可以不退出Hive,在HiveCLI里執(zhí)行LinuxShell命令和Hadoopdfs命令,以方便在實(shí)踐中簡單查詢。在LinuxShell界面里也可以執(zhí)行Hive的腳本文件完成建表、查詢等任務(wù)。本任務(wù)的內(nèi)容是學(xué)習(xí)如何啟動(dòng)HiveCLI,如何在Hive中執(zhí)行BashShell命令、Hadoopdfs命令,以及如何在Shell中執(zhí)行Hive查詢。啟動(dòng)HiveCLIHive可提供命令行界面,即CLI,執(zhí)行“hive--help”命令可列出Hive命令行選項(xiàng)的說明,如下圖。啟動(dòng)HiveCLI啟動(dòng)Hive和使用HiveCLI的說明如下。啟動(dòng)Hive。要執(zhí)行Hive命令首先要啟動(dòng)HiveMetastore服務(wù),而啟動(dòng)HiveMetastore服務(wù)前須先啟動(dòng)Hadoop集群,進(jìn)入HiveCLI,如下圖。啟動(dòng)HiveCLI查看后臺(tái)服務(wù)情況。執(zhí)行命令“jps”可查看后臺(tái)服務(wù)情況,master主機(jī)進(jìn)程列表如左圖,slave1主機(jī)進(jìn)程列表如右圖。在Hive中執(zhí)行BashShell和Hadoopdfs命令在HiveCLI中,用戶無須退出即可執(zhí)行BashShell命令和Hadoopdfs命令。在HiveCLI中執(zhí)行BaseShell的命令。在BashShell命令前加上感嘆號(hào)并且以分號(hào)結(jié)尾,例如,在HiveCLI中執(zhí)行的“pwd”和“l(fā)s/”命令分別為“!pwd;”和“!ls/;”,如下圖。注意“!”和“;”必須使用半角格式。在Hive中執(zhí)行BashShell和Hadoopdfs命令在HiveCLI中執(zhí)行Hadoopdfs命令。將Hadoop命令中的關(guān)鍵字“hadoop”去掉,然后以分號(hào)結(jié)尾,例如,查看HDFS根目錄文件情況,如下圖。在Shell中執(zhí)行Hive查詢?cè)贚inux的Shell中也可以執(zhí)行Hive查詢,主要通過“hive-e”“hive-f”命令實(shí)現(xiàn)。在Shell下執(zhí)行“hive-e”命令。Hive允許在不啟動(dòng)HiveCLI的情況下,直接執(zhí)行HQL查詢命令。例如,查詢數(shù)據(jù)庫zjsm中media_index表的前3行數(shù)據(jù),執(zhí)行結(jié)果如下圖。在Shell中執(zhí)行Hive查詢通過-S選項(xiàng)開啟靜默模式,省略“OK”“Timetaken”等提示,直接將結(jié)果保存至指定文件中。修改代碼,添加參數(shù)“-S”,查詢數(shù)據(jù)庫zjsm中media_index表的前3行數(shù)據(jù)并將結(jié)果保存至/tmp/testquery,,執(zhí)行結(jié)果如下圖。在Shell中執(zhí)行Hive查詢?cè)谖募袌?zhí)行Hive查詢。在Hive中可以使用“-f文件名”方式執(zhí)行指定文件中的一個(gè)或多個(gè)查詢語句,一般將Hive查詢文件保存為具有.q或.hq1擴(kuò)展名的文件。例如,將代碼中的查詢語句保存至/opt/testQuery.hql,并執(zhí)行該文件,執(zhí)行結(jié)果如下圖。小結(jié)本章首先闡述了將Hive作為廣電大數(shù)據(jù)項(xiàng)目的數(shù)據(jù)倉庫,由此對(duì)當(dāng)前市場上常用虛擬機(jī)平臺(tái)工具VMwareWorkstation進(jìn)行了介紹。接著對(duì)如何一步一步部署大數(shù)據(jù)基礎(chǔ)平臺(tái)進(jìn)行了介紹,并從Hadoop集群的部署、MySQL數(shù)據(jù)庫的安裝和配置、Hive的安裝和配置及啟動(dòng)、HiveCLI的使用方法等方面進(jìn)行了詳細(xì)講解。廣電用戶數(shù)據(jù)存儲(chǔ)任務(wù)背景新媒體的飛速發(fā)展,對(duì)傳統(tǒng)媒體造成了巨大沖擊。日益復(fù)雜、激烈的競爭,使得廣電公司的用戶流失問題變得異常突出。廣電公司需要通過大數(shù)據(jù)分析技術(shù),把握用戶群體的特征和收視行為,了解用戶的實(shí)際特征和實(shí)際需求。在進(jìn)行數(shù)據(jù)分析之前,需要對(duì)廣電業(yè)務(wù)數(shù)據(jù)進(jìn)行存儲(chǔ)操作,以奠定基礎(chǔ)。本章將介紹如何將數(shù)據(jù)存儲(chǔ)在Hive中,并結(jié)合廣電業(yè)務(wù)實(shí)現(xiàn)創(chuàng)建廣電數(shù)據(jù)庫和業(yè)務(wù)數(shù)據(jù)表、將業(yè)務(wù)數(shù)據(jù)從CSV文件中導(dǎo)入Hive表。創(chuàng)建業(yè)務(wù)數(shù)據(jù)表將數(shù)據(jù)導(dǎo)入Hive表中任務(wù)描述只有在Hive中創(chuàng)建了相關(guān)的業(yè)務(wù)數(shù)據(jù)表,才能進(jìn)行業(yè)務(wù)數(shù)據(jù)的導(dǎo)入和后續(xù)的分析工作。本任務(wù)主要介紹Hive數(shù)據(jù)庫的創(chuàng)建與管理、Hive的數(shù)據(jù)類型、Hive表的創(chuàng)建與管理,以及結(jié)合廣電業(yè)務(wù)數(shù)據(jù)類型,設(shè)計(jì)表的結(jié)構(gòu),并在Hive中創(chuàng)建相應(yīng)的業(yè)務(wù)數(shù)據(jù)表。操作Hive數(shù)據(jù)庫在Hive中數(shù)據(jù)庫本質(zhì)上是表的目錄或命名空間,可通過數(shù)據(jù)庫將表組織成邏輯組。這對(duì)于具有很多組和用戶的大集群來說,可以有效避免表命名沖突。HQL是Hive查詢語言,和普遍使用的SQL一樣,它不完全遵守任何一種ANSISQL標(biāo)準(zhǔn)的修訂版。Hive不支持行級(jí)插入操作、更新操作和刪除操作,也不支持事務(wù)?;贖adoop,Hive可以提供更高性能的擴(kuò)展,以及一些個(gè)性化的擴(kuò)展,甚至還增加了一些外部程序。Hive數(shù)據(jù)定義語言(DataDefinitionLanguage,DDL)可用于創(chuàng)建、修改和刪除數(shù)據(jù)庫、表、視圖、函數(shù)和索引。對(duì)數(shù)據(jù)庫的操作主要包括數(shù)據(jù)庫的創(chuàng)建與管理,管理操作包括切換、修改、刪除等。操作Hive數(shù)據(jù)庫1.創(chuàng)建數(shù)據(jù)庫用戶可使用CREATE語句創(chuàng)建數(shù)據(jù)庫。CREATE(DATABASE|SCHEMA)[IFNOTEXISTS][database_name][COMMENTdatabase_comment][LOCATIONhdfs_path][WITHDBPROPERTIES(property_name=property_value,...)];操作Hive數(shù)據(jù)庫CREATE語句的部分關(guān)鍵字介紹如下表。關(guān)鍵字說明CREATE(DATABASE|SCHEMA)該關(guān)鍵字表示創(chuàng)建一個(gè)新數(shù)據(jù)庫,其中DATABASE和SCHEMA關(guān)鍵字的功能相同,按個(gè)人習(xí)慣選擇其中一個(gè)即可,本書統(tǒng)一使用DATABASEIFNOTEXISTS該關(guān)鍵字是可選的,使用該關(guān)鍵字可以避免因數(shù)據(jù)庫已存在而拋出異常的情況COMMENT該關(guān)鍵字是可選的,表示可以給數(shù)據(jù)庫加上描述,類似于注釋LOCATION該關(guān)鍵字是可選的,表示在創(chuàng)建數(shù)據(jù)庫時(shí)指定該數(shù)據(jù)庫映射到HDFS的文件路徑,數(shù)據(jù)庫所在的目錄位置為hive-site.xml文件屬性hive.metastore.warehouse.dir所指定的頂層目錄的下一級(jí),默認(rèn)是映射到/user/hive/warehouse目錄下WITHDBPROPERTIES該關(guān)鍵字是可選的,可用于設(shè)置數(shù)據(jù)庫的屬性,如添加創(chuàng)建人、創(chuàng)建時(shí)間等操作Hive數(shù)據(jù)庫例如,創(chuàng)建數(shù)據(jù)庫TestDB,同時(shí)使用IFNOTEXISTS關(guān)鍵字避免因數(shù)據(jù)庫已存在而拋出異常,在創(chuàng)建完成后使用“SHOWDATABASES;”命令查看Hive中所有數(shù)據(jù)庫,運(yùn)行結(jié)果如下圖。其中,DEFAULT數(shù)據(jù)庫是默認(rèn)的數(shù)據(jù)庫,且需要注意的是,在Hive環(huán)境中,HQL對(duì)大小寫不敏感,但為了美觀和方便閱讀,在本書中,HQL語句的關(guān)鍵字采用大寫的形式。操作Hive數(shù)據(jù)庫Hive會(huì)為每個(gè)數(shù)據(jù)庫創(chuàng)建一個(gè)目錄。數(shù)據(jù)庫中的表將會(huì)以該數(shù)據(jù)庫目錄的子目錄形式存儲(chǔ)。有一個(gè)例外就是DEFAULT數(shù)據(jù)庫中的表,DEFAULT數(shù)據(jù)庫沒有存儲(chǔ)目錄,因此DEFAULT數(shù)據(jù)庫中的表將存儲(chǔ)在/user/hive/warehouse目錄下。當(dāng)創(chuàng)建數(shù)據(jù)庫TestDB時(shí),Hive將會(huì)對(duì)應(yīng)地創(chuàng)建一個(gè)HDFS目錄/use/hive/warehouse/TestDB.db(數(shù)據(jù)庫文件的擴(kuò)展名是.db)。在瀏覽器登錄“http://master:9870”,單擊“Utilities”,選擇“Browsethefilesystem”,查看“/use/hive/warehouse”,數(shù)據(jù)庫列表如下圖。操作Hive數(shù)據(jù)庫2.管理數(shù)據(jù)庫USE語句用于將某個(gè)數(shù)據(jù)庫設(shè)置為用戶當(dāng)前的工作數(shù)據(jù)庫,與在文件系統(tǒng)中切換工作目錄類似,其語法介紹如下。USEdatabase_name;USEDEFAULT;操作Hive數(shù)據(jù)庫如果用戶沒有顯式指定數(shù)據(jù)庫,那么將會(huì)使用默認(rèn)數(shù)據(jù)庫DEFAULT。在Hive中并沒有設(shè)置可以讓用戶查看當(dāng)前所在的數(shù)據(jù)庫的語句,在不確認(rèn)當(dāng)前數(shù)據(jù)庫的情況下,可重復(fù)使用USE語句。同時(shí)可以通過設(shè)置hive.cli.print.current.db屬性值為true(Hive0.8.0以上版本支持設(shè)置),在提示符顯示當(dāng)前所在的數(shù)據(jù)庫,如下圖。操作Hive數(shù)據(jù)庫用戶可以使用ALTER語句對(duì)數(shù)據(jù)庫的DBPROPERTIES設(shè)置鍵值對(duì)(Key-Value)等屬性值。ALTER(DATABASE|SCHEMA)database_nameSETDBPROPERTIES(property_name=property_value,...);--(Note:SCHEMAaddedinHive0.14.0)ALTER(DATABASE|SCHEMA)database_nameSETOWNER[USER|ROLE]user_or_role;--(Note:Hive0.13.0andlater;SCHEMAaddedinHive0.14.0)ALTER(DATABASE|SCHEMA)database_nameSETLOCATIONhdfs_path;--(Note:Hive2.2.1,2.4.0andlater)ALTER(DATABASE|SCHEMA)database_nameSETMANAGEDLOCATIONhdfs_path;--(Note:Hive4.0.0andlater)操作Hive數(shù)據(jù)庫需要注意的是其他元數(shù)據(jù)庫信息不可修改,如數(shù)據(jù)庫名和數(shù)據(jù)庫所在目錄。使用“ALTERDATABASE...SETLOCATION”不會(huì)將舊目錄的內(nèi)容移動(dòng)到新的指定目錄下,僅會(huì)在增加新表時(shí)將新表存儲(chǔ)在新的指定目錄下。操作Hive數(shù)據(jù)庫用戶可使用DROP語句刪除數(shù)據(jù)庫。DROP(DATABASE|SCHEMA)[IFEXISTS]database_name[RESTRICT|CASCADE];DROP語句語法的部分關(guān)鍵字介紹如下表。關(guān)鍵字說明DROP(DATABASE|SCHEMA)表示刪除數(shù)據(jù)庫,DATABASE和SCHEMA的功能相同,本書統(tǒng)一使用DATABASEIFEXISTS可選,用于判斷數(shù)據(jù)庫是否存在RESTRICT|CASCADE可選,表示當(dāng)數(shù)據(jù)庫中存在表時(shí)是否可以刪除數(shù)據(jù)庫,默認(rèn)為RESTRICT,表示存在表時(shí),不執(zhí)行刪除操作;CASCADE表示存在表時(shí),仍執(zhí)行刪除操作了解Hive數(shù)據(jù)類型Hive數(shù)據(jù)類型主要分為基礎(chǔ)數(shù)據(jù)類型和復(fù)合數(shù)據(jù)類型?;A(chǔ)數(shù)據(jù)類型有數(shù)值類型(整型、浮點(diǎn)型)、時(shí)間類型、字符串類型、其他類型(布爾類型、二進(jìn)制)等;復(fù)合數(shù)據(jù)類型有數(shù)組類型、映射類型、結(jié)構(gòu)體類型和聯(lián)合體類型等。Hive數(shù)據(jù)類型說明如下表。分類類型大類類型小類說明舉例基礎(chǔ)數(shù)據(jù)類型整型TINYINT1字節(jié)有符號(hào)整數(shù)20SMALLINT2字節(jié)有符號(hào)整數(shù)20INT4字節(jié)有符號(hào)整數(shù)20BIGINT8字節(jié)有符號(hào)整數(shù)20布爾類型BOOLEAN布爾值true了解Hive數(shù)據(jù)類型分類類型大類類型小類說明舉例基礎(chǔ)數(shù)據(jù)類型浮點(diǎn)型FLOAT單精度浮點(diǎn)數(shù)3.14159DOUBLE雙精度浮點(diǎn)數(shù)3.14159DECIMAL高精度浮點(diǎn)數(shù),精度為38位DECIMAL(12,2)NUMERIC同DECIMAL,從Hive3.0開始提供NUMERIC(20,2)字符串類型STRING、CHAR、VARCHAR字符串'helloworld'二進(jìn)制BINARY字節(jié)數(shù)組01時(shí)間類型TIMESTAMP時(shí)間戳1327882394INTERVAL表示時(shí)間間隔INTERVAL'1'DAYDATE以年/月/日形式描述的日期,格式為YYYY-MM-DD2023-10-26了解Hive數(shù)據(jù)類型續(xù)上表分類類型大類類型小類說明舉例復(fù)合數(shù)據(jù)類型數(shù)組類型ARRAY一組有序字段,字段的數(shù)據(jù)的類型必須相同user[1]映射類型MAP一組無序的鍵值對(duì),鍵的類型必須是基礎(chǔ)數(shù)據(jù)類型,值可以是任何類型的。同一個(gè)映射的鍵的類型必須相同,值的類型也必須相同user['name']STRUCT一組命名的字段,字段類型可以不同user.age結(jié)構(gòu)體類型聯(lián)合體類型UNIONTYPE在有限取值范圍內(nèi)的一個(gè)值{1:{"col1":2,"col2":"b"}}了解Hive數(shù)據(jù)類型1.基礎(chǔ)數(shù)據(jù)類型Hive的基礎(chǔ)數(shù)據(jù)類型也稱為原始數(shù)據(jù)類型,Hive的基礎(chǔ)數(shù)據(jù)類型都是參照J(rèn)ava接口進(jìn)行定義的,具體使用細(xì)節(jié)和Java中相應(yīng)類型基本一致,如STRING類型實(shí)現(xiàn)的是Java中的字符串(string),F(xiàn)LOAT類型實(shí)現(xiàn)的是Java定義的浮點(diǎn)數(shù)(float)。另外,值得注意的是,Hive中所有類型數(shù)據(jù)的定義名稱均為系統(tǒng)保留字,不可作為變量使用。了解Hive數(shù)據(jù)類型2.復(fù)合數(shù)據(jù)類型在關(guān)系數(shù)據(jù)庫中,字段的設(shè)計(jì)原則是通常不能再分解,且一般要滿足第一范式(一個(gè)關(guān)系模式中的所有屬性都是不可分的基礎(chǔ)數(shù)據(jù)項(xiàng))要求,而Hive則有所不同,Hive的表字段不僅可以是基礎(chǔ)數(shù)據(jù)類型,還可以是復(fù)雜數(shù)據(jù)類型。Hive有4種常用的復(fù)雜數(shù)據(jù)類型,分別是數(shù)組(ARRAY)、映射(MAP)、結(jié)構(gòu)體(STRUCT)和聯(lián)合體(UNIONTYPE),相關(guān)說明如下。了解Hive數(shù)據(jù)類型2.復(fù)合數(shù)據(jù)類型ARRAYARRAY是具有相同類型變量的集合,集合內(nèi)的變量稱為數(shù)組元素,每個(gè)數(shù)組元素都有一個(gè)索引,索引從0開始。定義示例:ARRAY<STRING>。數(shù)據(jù)格式:'Monday','Tuesday','Wednesday','Thursday','Friday','Saturday','Sunday'。使用示例:a[0]='Monday',a[2]='Wednesday。其中,a表示表字段名,該字段的類型為數(shù)組,允許存儲(chǔ)的數(shù)據(jù)數(shù)據(jù)為STRING,起始索引為0。了解Hive數(shù)據(jù)類型MAPMAP是鍵值對(duì)的集合,其中鍵只能是基礎(chǔ)數(shù)據(jù)類型,值可以是任意類型。定義示例:MAP<STRING,STRING>。數(shù)據(jù)格式:{'B':'Banana','W':Watermelon}。使用示例:b['B']='Banana'。其中,b表示表字段名,該字段的類型為映射,允許存儲(chǔ)一個(gè)<STRING,STRING>類型的鍵值對(duì),直接按鍵名訪問即可。了解Hive數(shù)據(jù)類型STRUCTSTRUCT封裝了一組有名字的字段(NamedField),其類型可以是任意的基礎(chǔ)數(shù)據(jù)類型,結(jié)構(gòu)體內(nèi)的元素使用“.”來訪問。定義示例:STRUCT<fruit:STRING,weight:INT>。數(shù)據(jù)格式:{'Banana',10}。使用示例:c.weight=10。其中,c表示表字段名,該字段的類型為STRUCT,包含兩個(gè)元素“fruit”和“weight”,元素的訪問方式與在Java中訪問對(duì)象屬性的方式一致。了解Hive數(shù)據(jù)類型UNIONTYPE在給定的任意時(shí)刻,UNIONTYPE可以用于保存指定數(shù)據(jù)類型中的任意一種,類似于Java中的泛型,在任意時(shí)刻只有其中的一個(gè)類型生效。定義示例:UNIONTYPE<data_type,data_type,...>。UNIONTYPE數(shù)據(jù)類型是在Hive0.7.0中引入的,但Hive對(duì)此類型的完全支持仍然不完整。在JOIN、WHERE和GROUPBY子句中引用UNIONTYPE字段的查詢將失敗,并且Hive沒有定義語法用于提取UNIONTYPE的標(biāo)記或值字段,這意味著UNIONTYPE實(shí)際上僅用于傳遞。創(chuàng)建與管理Hive表根據(jù)存儲(chǔ)位置,Hive表可分為內(nèi)部表(也稱為管理表)和外部表;根據(jù)表的分類方式,Hive表可分為分區(qū)表和分桶表;根據(jù)表的存活時(shí)間,Hive表可分為臨時(shí)表和永久表(如內(nèi)部表)。與Hive數(shù)據(jù)庫的操作類似,可通過DDL實(shí)現(xiàn)Hive表的創(chuàng)建、修改、刪除等操作。創(chuàng)建與管理Hive表1.創(chuàng)建表用戶可使用CREATE語句創(chuàng)建表。CREATE[TEMPORARY][EXTERNAL]TABLE[IFNOTEXISTS][db_name.]table_name[(col_namedata_type[column_constraint_specification][COMMENTcol_comment],...[constraint_specification])][COMMENTtable_comment][PARTITIONEDBY(col_namedata_type[COMMENTcol_comment],...)][CLUSTEREDBY(col_name,col_name,...)[SORTEDBY(col_name[ASC|DESC],...)]INTOnum_bucketsBUCKETS][ROWFORMATrow_format][STOREDASfile_format][LOCATIONhdfs_path]創(chuàng)建與管理Hive表CREATE語句的主要關(guān)鍵字說明如下表。關(guān)鍵字說明CREATETABLE用于創(chuàng)建指定名字的表。如果相同名字的表已經(jīng)存在,那么拋出異常,用戶可以用IFNOTEXISTS選項(xiàng)忽略該異常TEMPORARY用于創(chuàng)建臨時(shí)表。臨時(shí)表是Hive表的一種特殊形式,臨時(shí)表只對(duì)當(dāng)前會(huì)話可見,被存儲(chǔ)在用戶的臨時(shí)目錄,并在會(huì)話結(jié)束時(shí)被刪除EXTERNAL用于創(chuàng)建外部表,在創(chuàng)建表的同時(shí)指定一個(gè)指向?qū)嶋H數(shù)據(jù)的路徑(LOCATION)。Hive在創(chuàng)建內(nèi)部表時(shí),會(huì)將數(shù)據(jù)移動(dòng)到Hive指向的路徑;若創(chuàng)建外部表,則僅記錄數(shù)據(jù)所在的路徑,不對(duì)數(shù)據(jù)的位置做任何改變PARTITIONEDBY用于創(chuàng)建分區(qū)表,使用該關(guān)鍵字時(shí)需要加上分區(qū)字段的名稱。一個(gè)表可以擁有一個(gè)或多個(gè)分區(qū),并根據(jù)分區(qū)字段中的每個(gè)值創(chuàng)建一個(gè)單獨(dú)的數(shù)據(jù)目錄。分區(qū)以字段的形式存在于表中,通過DESCRIBE語句可以查看字段,但是該字段不存放實(shí)際的數(shù)據(jù)內(nèi)容,僅僅是分區(qū)的表示創(chuàng)建與管理Hive表關(guān)鍵字說明CLUSTEREDBY用于創(chuàng)建桶表,使用該關(guān)鍵字時(shí)需要加上字段的名稱。對(duì)于每一個(gè)內(nèi)部表、外部表或分區(qū)表,Hive均可以進(jìn)一步將其組織成桶,即桶是更細(xì)粒度的數(shù)據(jù)范圍劃分ROWFORMAT用于設(shè)置創(chuàng)建的表在加載數(shù)據(jù)時(shí)支持的列分隔符。Hive默認(rèn)的分隔符是\001,屬于不可見字符STOREDAS如果文件數(shù)據(jù)是純文本,那么用戶可以使用STOREDASTEXTFILE語句。如果數(shù)據(jù)需要壓縮,那么用戶可以使用STOREDASSEQUENCEFILE語句LOCATION用于指定加載數(shù)據(jù)路徑(指定在HDFS上的位置)。針對(duì)外部表,創(chuàng)建時(shí)需要指定存儲(chǔ)路徑,不指定則使用默認(rèn)路徑。對(duì)內(nèi)部表不用指定存儲(chǔ)路徑,默認(rèn)存儲(chǔ)路徑為/user/hive/warehouse創(chuàng)建與管理Hive表Hive的5種數(shù)據(jù)表,即內(nèi)部表、外部表、分區(qū)表、桶表和臨時(shí)表的創(chuàng)建說明如下。(1)創(chuàng)建內(nèi)部表內(nèi)部表是Hive的默認(rèn)表,表中的數(shù)據(jù)默

溫馨提示

  • 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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論