大數(shù)據(jù)基礎(chǔ)PPT完整全套教學(xué)課件_第1頁
大數(shù)據(jù)基礎(chǔ)PPT完整全套教學(xué)課件_第2頁
大數(shù)據(jù)基礎(chǔ)PPT完整全套教學(xué)課件_第3頁
大數(shù)據(jù)基礎(chǔ)PPT完整全套教學(xué)課件_第4頁
大數(shù)據(jù)基礎(chǔ)PPT完整全套教學(xué)課件_第5頁
已閱讀5頁,還剩583頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

第1章大數(shù)據(jù)概述

第1章大數(shù)據(jù)技術(shù)概述第2章大數(shù)據(jù)軟件基礎(chǔ)第3章大數(shù)據(jù)存儲(chǔ)技術(shù)第4章MapReduce分布式編程第5章數(shù)據(jù)采集與預(yù)處理第6章數(shù)據(jù)倉庫與聯(lián)機(jī)分析處理第7章大數(shù)據(jù)分析與挖掘技術(shù)第8章Spark內(nèi)存計(jì)算框架第9章數(shù)據(jù)可視化技術(shù)第10章大數(shù)據(jù)技術(shù)基礎(chǔ)目錄2大數(shù)據(jù)的相關(guān)概念大數(shù)據(jù)處理的基礎(chǔ)技術(shù)大數(shù)據(jù)解決方案大數(shù)據(jù)發(fā)展現(xiàn)狀和趨勢(shì)教學(xué)資料輔助與練習(xí)作業(yè)流行大數(shù)據(jù)技術(shù)大數(shù)據(jù)相關(guān)概念3①大數(shù)據(jù)的特征大數(shù)據(jù)(BigData):無法在一定時(shí)間內(nèi)用常規(guī)軟件工具對(duì)其內(nèi)容進(jìn)行抓取、管理和處理的數(shù)據(jù)集合。大數(shù)據(jù)有4個(gè)特性,簡稱4V:Volume(規(guī)模性)Variety(多樣性)Velocity(高速性)Value(價(jià)值性)②大數(shù)據(jù)的構(gòu)成大數(shù)據(jù)分為結(jié)構(gòu)化、半結(jié)構(gòu)化和非結(jié)構(gòu)化三種一般來講,結(jié)構(gòu)化數(shù)據(jù)只占全部數(shù)據(jù)的20%以內(nèi),但是就是這20%以內(nèi)的數(shù)據(jù)濃縮了過去很久以來企業(yè)各個(gè)方面的數(shù)據(jù)需求,發(fā)展也已經(jīng)成熟。而無法完全數(shù)字化的文檔文件、圖片、圖紙資料、縮微膠片等信息就屬于非結(jié)構(gòu)化信息,非結(jié)構(gòu)化中往往存在大量的有價(jià)值的信息,特別是隨著移動(dòng)互聯(lián)網(wǎng)、物聯(lián)網(wǎng)的發(fā)展,非結(jié)構(gòu)化信息正以成倍速度快速增長。目錄5大數(shù)據(jù)的相關(guān)概念大數(shù)據(jù)處理的基礎(chǔ)技術(shù)大數(shù)據(jù)解決方案大數(shù)據(jù)發(fā)展現(xiàn)狀和趨勢(shì)教學(xué)資料輔助與練習(xí)作業(yè)流行大數(shù)據(jù)技術(shù)①大數(shù)據(jù)的處理流程大數(shù)據(jù)處理的基礎(chǔ)技術(shù)一般而言,大數(shù)據(jù)處理流程,我們可分為四步驟:數(shù)據(jù)采集、數(shù)據(jù)導(dǎo)入和清洗處理、數(shù)據(jù)統(tǒng)計(jì)分析和挖掘、結(jié)果可視化1、數(shù)據(jù)采集大數(shù)據(jù)的采集一般采用ETL(Extract-Transform-Load)工具負(fù)責(zé)將分布的、異構(gòu)數(shù)據(jù)源中的數(shù)據(jù)如關(guān)系數(shù)據(jù)、平面數(shù)據(jù)以及其他非結(jié)構(gòu)化數(shù)據(jù)等抽取到臨時(shí)文件或數(shù)據(jù)庫中。2、數(shù)據(jù)清洗和預(yù)處理采集好數(shù)據(jù),肯定不少是重復(fù)或是無用的數(shù)據(jù),此時(shí)需要對(duì)數(shù)據(jù)進(jìn)行簡單的清洗和預(yù)處理,使得不同來源的數(shù)據(jù)整合成一致的,適合數(shù)據(jù)分析算法和工具讀取的數(shù)據(jù),如數(shù)據(jù)去重、異常處理和數(shù)據(jù)歸一化等,然后將這些數(shù)據(jù)存到大型分布式數(shù)據(jù)庫或者分布式存儲(chǔ)集群中。①大數(shù)據(jù)的處理流程3、數(shù)據(jù)統(tǒng)計(jì)分析和挖掘統(tǒng)計(jì)分析需要用到工具來處理,比如SPSS工具、一些結(jié)構(gòu)算法模型,進(jìn)行分類匯總以滿足各種數(shù)據(jù)分析需求。與統(tǒng)計(jì)分析過程不同的是,數(shù)據(jù)挖掘一般沒有什么預(yù)先設(shè)定好的主題,主要是在現(xiàn)有數(shù)據(jù)上面進(jìn)行基于各種算法的計(jì)算,起到預(yù)測(cè)效果,實(shí)現(xiàn)一些高級(jí)別數(shù)據(jù)分析的需求。比較典型算法有用于聚類的Kmeans、用于統(tǒng)計(jì)學(xué)習(xí)的SVM和用于分類的NaiveBayes,主要使用的工具有Hadoop的Mahout等。4、結(jié)果可視化大數(shù)據(jù)分析的使用者有大數(shù)據(jù)分析專家,同時(shí)還有普通用戶,但是他們二者對(duì)于大數(shù)據(jù)分析最基本的要求就是可視化分析,因?yàn)榭梢暬治瞿軌蛑庇^的呈現(xiàn)大數(shù)據(jù)特點(diǎn),同時(shí)能夠非常容易被讀者所接受,就如同看圖說話一樣簡單明了。①大數(shù)據(jù)的處理流程②大數(shù)據(jù)處理的基礎(chǔ)技術(shù)分布式計(jì)算分布式計(jì)算是相對(duì)于集中式計(jì)算而言的,將需要進(jìn)行大量計(jì)算的項(xiàng)目數(shù)據(jù)分割成小塊,由分布式系統(tǒng)中多臺(tái)計(jì)算機(jī)節(jié)點(diǎn)分別計(jì)算,再合并計(jì)算結(jié)果并得出統(tǒng)一數(shù)據(jù)結(jié)論。分布式計(jì)算的目的在于分析海量的數(shù)據(jù),例如從雷達(dá)監(jiān)測(cè)的海量歷史信號(hào)中分析異常信號(hào),從淘寶“雙十一”實(shí)時(shí)計(jì)算各地區(qū)的消費(fèi)習(xí)慣等。SETI@home是比較有代表性分布式計(jì)算項(xiàng)目,是由美國加州大學(xué)伯克利分校創(chuàng)立一項(xiàng)利用全球聯(lián)網(wǎng)的計(jì)算機(jī)共同搜尋地外文明(SETI)的科學(xué)實(shí)驗(yàn)計(jì)劃,通常通過互聯(lián)網(wǎng)進(jìn)行數(shù)據(jù)傳輸,利用世界各地上千萬志愿者計(jì)算機(jī)的閑置計(jì)算能力,分析地外無線電信號(hào),搜索外星生命跡象。該項(xiàng)目數(shù)據(jù)基數(shù)很大,有著千萬位數(shù)的數(shù)據(jù)量,已有百余萬志愿者可以通過運(yùn)行一個(gè)免費(fèi)程序下載并分析從射電望遠(yuǎn)鏡傳來的數(shù)據(jù)來加入這個(gè)項(xiàng)目。分布式文件系統(tǒng)分布式文件系統(tǒng)是將數(shù)據(jù)分散存儲(chǔ)在多臺(tái)獨(dú)立的設(shè)備上,采用可擴(kuò)展的系統(tǒng)結(jié)構(gòu),多臺(tái)存儲(chǔ)服務(wù)器分擔(dān)存儲(chǔ)負(fù)荷,利用元數(shù)據(jù)定位數(shù)據(jù)在服務(wù)器中的存儲(chǔ)位置,具有較高的系統(tǒng)可靠性、可用性和存取效率,并且易于擴(kuò)展。分布式文件系統(tǒng)的關(guān)鍵技術(shù)如下:1)元數(shù)據(jù)管理2)系統(tǒng)高可擴(kuò)展技術(shù)3)存儲(chǔ)層級(jí)內(nèi)的優(yōu)化技術(shù)4)針對(duì)應(yīng)用和負(fù)載的存儲(chǔ)優(yōu)化技術(shù)分布式數(shù)據(jù)庫分布式數(shù)據(jù)庫的基本思想是將原來集中式數(shù)據(jù)庫中的數(shù)據(jù)分散存儲(chǔ)到多個(gè)通過網(wǎng)絡(luò)連接的數(shù)據(jù)存儲(chǔ)節(jié)點(diǎn)上,以獲取更大的存儲(chǔ)容量和更高的并發(fā)訪問量。分布式數(shù)據(jù)庫系統(tǒng)可以由多個(gè)異構(gòu)、位置分布、跨網(wǎng)絡(luò)的計(jì)算機(jī)節(jié)點(diǎn)組成。每臺(tái)計(jì)算機(jī)節(jié)點(diǎn)中都可以有數(shù)據(jù)庫管理系統(tǒng)的一份完整或部分拷貝副本,并具有自己局部的數(shù)據(jù)庫。多臺(tái)計(jì)算機(jī)節(jié)點(diǎn)利用高速計(jì)算機(jī)網(wǎng)絡(luò)將物理上分散的多個(gè)數(shù)據(jù)存儲(chǔ)單元相互連接起來,共同組成一個(gè)完整的、全局的,邏輯上集中、物理上分布的大型數(shù)據(jù)庫系統(tǒng)。適應(yīng)于大數(shù)據(jù)存儲(chǔ)的分布式數(shù)據(jù)庫應(yīng)具有高可擴(kuò)展、高并發(fā)、高可用三方面特征。1)高可擴(kuò)展性:分布式數(shù)據(jù)庫具有高可擴(kuò)展性,能夠動(dòng)態(tài)地增添存儲(chǔ)節(jié)點(diǎn)以實(shí)現(xiàn)存儲(chǔ)容量的線性擴(kuò)展。2)高并發(fā)性:分布式數(shù)據(jù)庫能及時(shí)響應(yīng)大規(guī)模用戶的讀/寫請(qǐng)求,能對(duì)海量數(shù)據(jù)進(jìn)行隨機(jī)讀/寫。3)高可用性:分布式數(shù)據(jù)庫提供容錯(cuò)機(jī)制,能夠?qū)崿F(xiàn)對(duì)數(shù)據(jù)的冗余備份,保證數(shù)據(jù)和服務(wù)的高度可靠性。數(shù)據(jù)庫與數(shù)據(jù)倉庫數(shù)據(jù)庫和數(shù)據(jù)倉庫在概念上有很多相似之處,但是有本質(zhì)上的差別。1)數(shù)據(jù)倉庫(DataWarehouse)是一個(gè)面向主題的(SubjectOriented)、集成的(Integrated)、相對(duì)穩(wěn)定的(Non-Volatile)、反映歷史變化(TimeVariant)的數(shù)據(jù)集合,用于支持管理決策。2)數(shù)據(jù)庫是按照一定數(shù)據(jù)結(jié)構(gòu)來組織、存儲(chǔ)和管理數(shù)據(jù)的數(shù)據(jù)集合。數(shù)據(jù)倉庫所在層面比數(shù)據(jù)庫更高,換言之,一個(gè)數(shù)據(jù)倉庫可以采用不同種類的數(shù)據(jù)庫實(shí)現(xiàn)。兩者差異主要?dú)w結(jié)于以下幾點(diǎn):(1)在結(jié)構(gòu)設(shè)計(jì)上,數(shù)據(jù)庫主要面向事務(wù)設(shè)計(jì),數(shù)據(jù)倉庫主要面向主題設(shè)計(jì)。所謂面向主題設(shè)計(jì),是指數(shù)據(jù)倉庫中的數(shù)據(jù)按照一定的主題域進(jìn)行組織;(2)在存儲(chǔ)內(nèi)容上,數(shù)據(jù)庫一般存儲(chǔ)的是在線數(shù)據(jù),對(duì)數(shù)據(jù)的變更歷史往往不存儲(chǔ),而數(shù)據(jù)倉庫一般存儲(chǔ)的是歷史數(shù)據(jù),以支持分析決策;(3)在冗余上,數(shù)據(jù)庫設(shè)計(jì)盡量避免冗余以維持高效快速的存取,數(shù)據(jù)倉庫往往有意引入冗余;(4)在使用目的上,數(shù)據(jù)庫的引入是為了捕獲和存取數(shù)據(jù),數(shù)據(jù)倉庫是為了分析數(shù)據(jù)。云計(jì)算與虛擬化技術(shù)(1)云計(jì)算云計(jì)算(CloudComputing)是基于互聯(lián)網(wǎng)的相關(guān)服務(wù)的增加、使用和交付模式,通常涉及通過互聯(lián)網(wǎng)來提供動(dòng)態(tài)、易擴(kuò)展且虛擬化的資源。云是網(wǎng)絡(luò)、互聯(lián)網(wǎng)的一種比喻說法。現(xiàn)階段廣為接受的是美國國家標(biāo)準(zhǔn)與技術(shù)研究院(NIST)給出的定義:云計(jì)算是一種按使用量付費(fèi)的模式,這種模式提供可用的、便捷的、按需的網(wǎng)絡(luò)訪問,進(jìn)入可配置的計(jì)算資源共享池(資源包括網(wǎng)絡(luò),服務(wù)器,存儲(chǔ),應(yīng)用軟件,服務(wù)),這些資源能夠被快速提供,只需投入很少的管理工作,或與服務(wù)供應(yīng)商進(jìn)行很少的交互。(2)KVM虛擬機(jī)KVM(Kernel-basedVirtualMachine)虛擬機(jī)是開源Linux原生的全虛擬化解決方案,它基于X86硬件的虛擬化擴(kuò)展(IntelVT或者AMD-V技術(shù))。KVM中,虛擬機(jī)被實(shí)現(xiàn)為常規(guī)的Linux進(jìn)程,由標(biāo)準(zhǔn)Linux調(diào)度程序進(jìn)行調(diào)度,而虛擬機(jī)的每個(gè)虛擬CPU被實(shí)現(xiàn)為一個(gè)常規(guī)的Linux進(jìn)程。這使得KMV能夠使用Linux內(nèi)核的已有功能。CPU虛擬化內(nèi)存虛擬化I/O虛擬化KVM是基于CPU輔助的全虛擬化方案,它需要CPU虛擬特性的支持。一個(gè)KVM虛擬機(jī)即一個(gè)Linuxqemu-kvm進(jìn)程,與其他Linux進(jìn)程一樣被Linux進(jìn)程調(diào)度器調(diào)度;KVM虛擬機(jī)包括虛擬內(nèi)存、虛擬CPU和虛機(jī)I/O設(shè)備,其中,內(nèi)存和CPU的虛擬化由KVM內(nèi)核模塊負(fù)責(zé)實(shí)現(xiàn),I/O設(shè)備的虛擬化由QEMU負(fù)責(zé)實(shí)現(xiàn);KVM客戶機(jī)系統(tǒng)的內(nèi)存是qumu-kvm進(jìn)程的地址空間的一部分;KVM虛擬機(jī)的vCPU作為線程運(yùn)行在qemu-kvm進(jìn)程的上下文中。云計(jì)算是個(gè)概念,而不是具體技術(shù)。虛擬化是一種具體技術(shù),指把硬件資源虛擬化,實(shí)現(xiàn)隔離性、可擴(kuò)展性、安全性、資源可充分利用等。但看似不相關(guān)的東西,背后卻依然有千絲萬縷的關(guān)系。說到虛擬化,一般是指將物理的實(shí)體,通過軟件模式,形成若干虛擬存在的系統(tǒng),其真實(shí)運(yùn)作還是在實(shí)體上,只是劃分了若干區(qū)域或者時(shí)域。而云計(jì)算的基礎(chǔ)是虛擬化,但虛擬化只是云計(jì)算的一部分。云計(jì)算是在虛擬化出若干資源池以后的應(yīng)用。(3)云計(jì)算與虛擬化的關(guān)系虛擬化廣泛應(yīng)用與IT領(lǐng)域中,針對(duì)不同的資源,有著不同的虛擬化技術(shù),如今我們可以給虛擬化大致分為四類:內(nèi)存虛擬化、網(wǎng)絡(luò)虛擬化、服務(wù)器虛擬化、存儲(chǔ)虛擬化。內(nèi)存虛擬化:是指利用虛擬化技術(shù)實(shí)現(xiàn)對(duì)計(jì)算機(jī)內(nèi)存的管理。從上層應(yīng)用來看,內(nèi)存虛擬化系統(tǒng)使得其具有連續(xù)可用的內(nèi)存,即一個(gè)連續(xù)而完整的地址空間。從物理層來看,通常被分割成多個(gè)物理內(nèi)存碎片。存儲(chǔ)虛擬化:存儲(chǔ)虛擬化是將存儲(chǔ)資源進(jìn)行邏輯視圖和物理存儲(chǔ)分離,從而為系統(tǒng)提供無縫的資源管理。網(wǎng)絡(luò)虛擬化:網(wǎng)絡(luò)虛擬化是利用軟件從物理網(wǎng)絡(luò)元素中分離網(wǎng)絡(luò)的一種方式,網(wǎng)絡(luò)虛擬化與其他形式的虛擬化有很多共同之處。服務(wù)器虛擬化:服務(wù)器虛擬化是將服務(wù)器的CPU、內(nèi)存、磁盤等硬件集中管理,通過集中式的動(dòng)態(tài)按需分配,提高資源的利用率。云計(jì)算的原理更多的是利用了計(jì)算虛擬化,當(dāng)然,其他三種可能在一些云計(jì)算中也會(huì)有應(yīng)用,但是虛擬化并不僅僅只服務(wù)云計(jì)算。VMWareVMware是全球桌面到數(shù)據(jù)中心虛擬化解決方案的領(lǐng)導(dǎo)廠商,在虛擬化和云計(jì)算基礎(chǔ)架構(gòu)領(lǐng)域處于全球領(lǐng)先地位,所提供的經(jīng)客戶驗(yàn)證的解決方案可通過降低復(fù)雜性以及更靈活、敏捷地交付服務(wù)來提高IT效率,總部設(shè)在美國加州。VirtualBoxVirtualBox由德國Innotek公司開發(fā),由SunMicrosystems公司出品的軟件,使用Qt編寫,在Sun被Oracle收購后正式更名成OracleVMVirtualBox。Innotek以GNUGeneralPublicLicense(GPL)釋放出VirtualBox,并提供二進(jìn)制版本及OSE版本的代碼。使用者可以在VirtualBox上安裝并且執(zhí)行Solaris、Windows、DOS、Linux、OS/2Warp、BSD等系統(tǒng)作為客戶端操作系統(tǒng)。OpenStackOpenStack是一個(gè)由美國國家航空航天局NASA和Rackspace合作研發(fā)并發(fā)起的項(xiàng)目,是一個(gè)開源的云計(jì)算平臺(tái),來自世界各地云計(jì)算開發(fā)人員和技術(shù)人員共同創(chuàng)建OpenStack項(xiàng)目。DockerDocker是一個(gè)開源的引擎,可以輕松地為任何應(yīng)用創(chuàng)建一個(gè)輕量級(jí)的、可移植的、自給自足的容器,通過容器可以在生產(chǎn)環(huán)境中批量地部署,包括VM(虛擬機(jī))、baremetal、OpenStack集群和其他基礎(chǔ)的應(yīng)用平臺(tái)。(4)虛擬化產(chǎn)品介紹目錄17大數(shù)據(jù)的相關(guān)概念大數(shù)據(jù)處理的基礎(chǔ)技術(shù)大數(shù)據(jù)解決方案大數(shù)據(jù)發(fā)展現(xiàn)狀和趨勢(shì)教學(xué)資料輔助與練習(xí)作業(yè)流行大數(shù)據(jù)技術(shù)流行大數(shù)據(jù)技術(shù)1.流行的大數(shù)據(jù)技術(shù)各個(gè)階段架構(gòu)、采集、存儲(chǔ)、計(jì)算處理和可視化等架構(gòu)設(shè)計(jì)技術(shù):Flume、Zookeeper和Kafka采集技術(shù):Python和Scala存儲(chǔ)技術(shù):Hbase、Hive、Sqoop計(jì)算技術(shù):Mahout、Spark和Storm可視化技術(shù):Echart和Superset2.Hadoop生態(tài)系統(tǒng)Hadoop是一個(gè)開源的大數(shù)據(jù)分析軟件,集合了大數(shù)據(jù)不同階段技術(shù)的生態(tài)系統(tǒng),其核心是Yarn、HDFS和MapReduce,集成了Spark生態(tài)圈.3.Hadoop生態(tài)系統(tǒng)4.Hadoop核心組件簡要介紹HDFS(Hadoop分布式文件系統(tǒng))

HDFS是Hadoop體系中數(shù)據(jù)存儲(chǔ)管理的基礎(chǔ),它是一個(gè)高度容錯(cuò)的系統(tǒng),能檢測(cè)和應(yīng)對(duì)硬件故障,用于在低成本的通用硬件上運(yùn)行。簡化了文件的一致性模型,通過流式數(shù)據(jù)訪問,提供高吞吐量數(shù)據(jù)訪問能力,適合帶有大型數(shù)據(jù)集的應(yīng)用程序。提供了一次寫入多次讀取的機(jī)制,數(shù)據(jù)以塊的形式,同時(shí)分布在集群的不同物理機(jī)器上。HDFS的架構(gòu)是基于一組特定的節(jié)點(diǎn)構(gòu)建的。這些節(jié)點(diǎn)包括NameNode(僅一個(gè)),在HDFS內(nèi)部提供元數(shù)據(jù)服務(wù);若干個(gè)DataNode為HDFS提供存儲(chǔ)塊。MapReduce(分布式計(jì)算框架)

MapReduce是一種分布式計(jì)算模型,用于大數(shù)據(jù)計(jì)算,它屏蔽了分布式計(jì)算框架細(xì)節(jié),將計(jì)算抽象成Map和Reduce兩部分,其中Map對(duì)數(shù)據(jù)集上的獨(dú)立元素進(jìn)行指定的操作,生成鍵-值對(duì)形式的中間結(jié)果。Reduce則對(duì)中間結(jié)果中相同“鍵”的所有“值”進(jìn)行規(guī)約,以得到最終結(jié)果。MapReduce提供了以下的主要功能:數(shù)據(jù)劃分和計(jì)算任務(wù)調(diào)度數(shù)據(jù)/代碼互定位系統(tǒng)優(yōu)化出錯(cuò)檢測(cè)和恢復(fù)HBASE(分布式列存數(shù)據(jù)庫)

HBase是一個(gè)建立在HDFS之上,面向列的針對(duì)結(jié)構(gòu)化數(shù)據(jù)的可伸縮、高可靠、高性能、分布式數(shù)據(jù)庫。采用了BigTable的數(shù)據(jù)模型:增強(qiáng)的稀疏排序映射表(Key/Value),其中,鍵由行關(guān)鍵字、列關(guān)鍵字和時(shí)間戳構(gòu)成。提供了對(duì)大規(guī)模數(shù)據(jù)的隨機(jī)、實(shí)時(shí)讀寫訪問,同時(shí),HBase中保存的數(shù)據(jù)可以使用MapReduce來處理,它將數(shù)據(jù)存儲(chǔ)和并行計(jì)算完美地結(jié)合在一起。HBase利用HadoopHDFS作為其文件存儲(chǔ)系統(tǒng),并利用HadoopMapReduce來處理HBase中的海量數(shù)據(jù),利用Zookeeper提供協(xié)同服務(wù)。Zookeeper(分布式協(xié)同服務(wù))

Zookeeper是一個(gè)為分布式應(yīng)用提供協(xié)同服務(wù)的軟件,提供包括配置維護(hù)、域名服務(wù)、分布式同步、組服務(wù)等功能,用于解決分布式環(huán)境下的數(shù)據(jù)管理問題。Hadoop的許多組件依賴于Zookeeper,用于管理Hadoop操作。ZooKeeper的目標(biāo)就是封裝好復(fù)雜易出錯(cuò)的關(guān)鍵服務(wù),將簡單易用的接口和性能高效、功能穩(wěn)定的系統(tǒng)提供給用戶。HIVE(數(shù)據(jù)倉庫)

Hive是基于Hadoop的一個(gè)數(shù)據(jù)倉庫工具,最初用于解決海量結(jié)構(gòu)化日志數(shù)據(jù)的統(tǒng)計(jì)問題。Hive使用類SQL的HiveQL語言實(shí)現(xiàn)數(shù)據(jù)查詢,并將HQL轉(zhuǎn)化為在Hadoop上執(zhí)行的MapReduce任務(wù)。Hive用于離線數(shù)據(jù)分析,可讓不熟悉MapReduce的開發(fā)人員,使用HQL實(shí)現(xiàn)數(shù)據(jù)查詢分析,降低了大數(shù)據(jù)處理應(yīng)用門檻。Hive本質(zhì)上是基于HDFS上的應(yīng)用程序,其數(shù)據(jù)都存儲(chǔ)在Hadoop兼容的文件系統(tǒng)(例如,AmazonS3、HDFS)中。目錄23大數(shù)據(jù)的相關(guān)概念大數(shù)據(jù)處理的基礎(chǔ)技術(shù)大數(shù)據(jù)解決方案大數(shù)據(jù)發(fā)展現(xiàn)狀和趨勢(shì)教學(xué)資料輔助與練習(xí)作業(yè)流行大數(shù)據(jù)技術(shù)大數(shù)據(jù)解決方案

目前很多企業(yè)都提供了大數(shù)據(jù)解決方案,典型有Cloudera、Hortonworks、MapR和FusionInsight等。Cloudera

在Hadoop生態(tài)系統(tǒng)中,規(guī)模最大、知名度最高的是Cloudera,它既是公司的名字也代表Hadoop的一種解決方案。Cloudera可以為開源Hadoop提供支持,同時(shí)將數(shù)據(jù)處理框架延伸到一個(gè)全面的“企業(yè)數(shù)據(jù)中心”范疇,這個(gè)數(shù)據(jù)中心可以作為管理企業(yè)所有數(shù)據(jù)的中心點(diǎn),它可以作為目標(biāo)數(shù)據(jù)倉庫,高效的數(shù)據(jù)平臺(tái),或現(xiàn)有數(shù)據(jù)倉庫的ETL來源。Hortonworks

Hortonworks數(shù)據(jù)管理解決方案使組織可以實(shí)施下一代現(xiàn)代化數(shù)據(jù)架構(gòu)。Hortonworks基于ApacheHadoop開發(fā),可以從云的邊緣以及內(nèi)部來對(duì)數(shù)據(jù)資產(chǎn)進(jìn)行管理。HortonworksDPS用戶可以輕松訪問防火墻、公有云(或兩者的組合)背后的可信數(shù)據(jù)。HortonworksDataFlow(HDF)

能夠收集、組織、整理和傳送來自于全聯(lián)網(wǎng)(設(shè)備、傳感器、點(diǎn)擊流、日志文件等)的實(shí)時(shí)數(shù)據(jù)。HortonworksDataPlatform(HDP)能夠用于創(chuàng)建安全的企業(yè)數(shù)據(jù)池,為企業(yè)提供信息分析,實(shí)現(xiàn)快速創(chuàng)新和實(shí)時(shí)深入了解業(yè)務(wù)動(dòng)態(tài)。MapR

MapR是一個(gè)比現(xiàn)有Hadoop分布式文件系統(tǒng)還要快三倍的產(chǎn)品,并且也是開源的。MapR配備了快照,并號(hào)稱不會(huì)出現(xiàn)單節(jié)點(diǎn)故障,且與現(xiàn)有HDFS的API兼容,因此非常容易替換原有的系統(tǒng)。MapR使Hadoop變?yōu)橐粋€(gè)速度更快、可靠性更高、更易于管理、使用更加方便的分布式計(jì)算服務(wù)和存儲(chǔ)平臺(tái),并擴(kuò)大了Hadoop的使用范圍和方式。MapR包含了開源社區(qū)的許多流行工具和功能,例如Hbase、Hive以及和ApacheHadoop兼容的API。

FusionInsightFusionInsight解決方案由4個(gè)子產(chǎn)品FusionInsightHD、FusionInsightMPPDB、FusionInsightMiner、FusionInsightFarmer和1個(gè)操作運(yùn)維系統(tǒng)FusionInsightManager構(gòu)成。FusionInsight

FusionInsightHD:企業(yè)級(jí)的大數(shù)據(jù)處理環(huán)境,是一個(gè)分布式數(shù)據(jù)處理系統(tǒng),對(duì)外提供大容量的數(shù)據(jù)存儲(chǔ)、分析查詢和實(shí)時(shí)流式數(shù)據(jù)處理分析能力。FusionInsightMPPDB:企業(yè)級(jí)的大規(guī)模并行處理關(guān)系型數(shù)據(jù)庫。FusionInsightMPPDB采用MPP(MassiveParallelProcessing)架構(gòu),支持行存儲(chǔ)和列存儲(chǔ),提供PB(Petabyte,2的50次方字節(jié))級(jí)別數(shù)據(jù)量的處理能力。FusionInsightMiner:企業(yè)級(jí)的數(shù)據(jù)分析平臺(tái),基于華為FusionInsightHD的分布式存儲(chǔ)和并行計(jì)算技術(shù),提供從海量數(shù)據(jù)中挖掘出價(jià)值信息的平臺(tái)。FusionInsightFarmer:企業(yè)級(jí)的大數(shù)據(jù)應(yīng)用容器,為企業(yè)業(yè)務(wù)提供統(tǒng)一開發(fā)、運(yùn)行和管理的平臺(tái)。FusionInsightManager:企業(yè)級(jí)大數(shù)據(jù)的操作運(yùn)維系統(tǒng),提供高可靠、安全、容錯(cuò)、易用的集群管理能力,支持大規(guī)模集群的安裝部署、監(jiān)控、告警、用戶管理、權(quán)限管理、審計(jì)、服務(wù)管理、健康檢查、問題定位、升級(jí)和補(bǔ)丁等功能。目錄28大數(shù)據(jù)的相關(guān)概念大數(shù)據(jù)處理的基礎(chǔ)技術(shù)大數(shù)據(jù)解決方案大數(shù)據(jù)發(fā)展現(xiàn)狀和趨勢(shì)教學(xué)資料輔助與練習(xí)作業(yè)流行大數(shù)據(jù)技術(shù)大數(shù)據(jù)發(fā)展現(xiàn)狀及趨勢(shì)29

大數(shù)據(jù)應(yīng)用以企業(yè)為主;

應(yīng)用的涵蓋面廣闊;

電子商務(wù)、電信領(lǐng)域應(yīng)用成熟度較高;政府公共服務(wù)、金融等領(lǐng)域市場(chǎng)吸引力最大;

互聯(lián)網(wǎng)+的推廣使數(shù)據(jù)源增多;2020年產(chǎn)生約為40萬億GB的數(shù)據(jù)量①大數(shù)據(jù)發(fā)展現(xiàn)狀總結(jié)起來就是:

應(yīng)用廣泛、發(fā)展?jié)摿κ愦髷?shù)據(jù)發(fā)展現(xiàn)狀及趨勢(shì)30

大數(shù)據(jù)上升至我國的國家戰(zhàn)略,國內(nèi)市場(chǎng)龐大①大數(shù)據(jù)發(fā)展現(xiàn)狀

國內(nèi)大數(shù)據(jù)發(fā)展面臨的問題我國大數(shù)據(jù)市場(chǎng)規(guī)模1)數(shù)據(jù)孤島問題突出

政府部門信息不對(duì)稱、制度法律不具體、缺乏公共平臺(tái)、共享渠道等

政府?dāng)?shù)據(jù)存在“不愿開、不敢開、不能開、不會(huì)開”的問題

已開放的數(shù)據(jù)也因格式標(biāo)準(zhǔn)缺失無法進(jìn)行關(guān)聯(lián)融合

“開放的孤島”大數(shù)據(jù)發(fā)展現(xiàn)狀及趨勢(shì)31

國內(nèi)大數(shù)據(jù)發(fā)展面臨的問題①大數(shù)據(jù)發(fā)展現(xiàn)狀2)大數(shù)據(jù)安全和隱私問題令人擔(dān)憂

相關(guān)配套法律以及監(jiān)管機(jī)制不健全、多數(shù)企業(yè)對(duì)數(shù)據(jù)管理能力不足

數(shù)據(jù)與個(gè)人隱私幾乎沒有保護(hù)

需要盡快出臺(tái)關(guān)于信息采集與信息保護(hù)的基本法

“數(shù)據(jù)的裸奔”大數(shù)據(jù)發(fā)展現(xiàn)狀及趨勢(shì)32

國內(nèi)大數(shù)據(jù)發(fā)展面臨的問題①大數(shù)據(jù)發(fā)展現(xiàn)狀3)人才缺乏,大數(shù)據(jù)技術(shù)創(chuàng)新能力不足

未來3-5年,中國需要180萬數(shù)據(jù)人才

截止2017年5月中國大數(shù)據(jù)從業(yè)人員只有約30萬人

大數(shù)據(jù)高端人才稀缺

“人才的缺乏”現(xiàn)階段以IT行業(yè)背景的人才較多未來以綜合型人才發(fā)展未來對(duì)數(shù)學(xué)、統(tǒng)計(jì)學(xué)要求高,算法與模型工作需求大國內(nèi)逐步開展培養(yǎng),需要時(shí)間,短期內(nèi)高端人才仍舊不足大數(shù)據(jù)發(fā)展現(xiàn)狀及趨勢(shì)33②大數(shù)據(jù)發(fā)展趨勢(shì)1)數(shù)據(jù)分析成為大數(shù)據(jù)技術(shù)的核心

數(shù)據(jù)分析在數(shù)據(jù)處理過程中占據(jù)十分重要的位置,隨著時(shí)代的發(fā)展,數(shù)據(jù)分析會(huì)逐漸成為大數(shù)據(jù)技術(shù)的核心。2)廣泛采用實(shí)時(shí)性的數(shù)據(jù)處理方式

大數(shù)據(jù)強(qiáng)調(diào)數(shù)據(jù)的實(shí)時(shí)性,因而對(duì)數(shù)據(jù)處理也要體現(xiàn)出實(shí)時(shí)性。將來實(shí)時(shí)性的數(shù)據(jù)處理方式將會(huì)成為主流,不斷推動(dòng)大數(shù)據(jù)技術(shù)的發(fā)展和進(jìn)步。3)基于云的數(shù)據(jù)分析平臺(tái)將更加完善

云計(jì)算技術(shù)的發(fā)展越來越快,與此相應(yīng)的應(yīng)用范圍也越來越廣,云計(jì)算的發(fā)展為大數(shù)據(jù)技術(shù)的發(fā)展提供了一定的數(shù)據(jù)處理平臺(tái)和技術(shù)支持。云計(jì)算為大數(shù)據(jù)提供了分布式的計(jì)算方法以及可以彈性擴(kuò)展、相對(duì)便宜的存儲(chǔ)空間和計(jì)算資源。4)開源將會(huì)成為推動(dòng)大數(shù)據(jù)發(fā)展的新動(dòng)力

開源軟件在大數(shù)據(jù)技術(shù)發(fā)展的過程中不斷研發(fā)出來并自身在發(fā)展的同時(shí),為大數(shù)據(jù)技術(shù)的發(fā)展貢獻(xiàn)力量。大數(shù)據(jù)發(fā)展現(xiàn)狀及趨勢(shì)34

產(chǎn)業(yè)發(fā)展趨勢(shì)②大數(shù)據(jù)發(fā)展趨勢(shì)1)以時(shí)效性更高的方式向用戶提供大數(shù)據(jù)。2)通過開展數(shù)據(jù)分析和實(shí)驗(yàn)尋找變化因素并改善產(chǎn)品性能。3)區(qū)分用戶群,提供個(gè)性化服務(wù)。4)利用自動(dòng)化算法支持或替代人工決策。5)商業(yè)模式、產(chǎn)品與服務(wù)創(chuàng)新。35習(xí)題1.大數(shù)據(jù)最顯著4V特征是什么?2.Cloudera、Hortonworks與MapR有什么區(qū)別與聯(lián)系。3.除了教材中提及的應(yīng)用領(lǐng)域,你預(yù)計(jì)未來有哪個(gè)領(lǐng)域需要大數(shù)據(jù)技術(shù)?4.分布式計(jì)算在大數(shù)據(jù)分析處理中有哪些作用?5.查閱有關(guān)資料比較VMware、VirutalBox、Openstack和docker等虛擬化產(chǎn)品的異同。6.通過互聯(lián)網(wǎng)查閱Hadoop生態(tài)圈相關(guān)技術(shù),并瀏覽Google相關(guān)論文。第2章大數(shù)據(jù)軟件基礎(chǔ)大數(shù)據(jù)項(xiàng)目組

目錄37Linux基礎(chǔ)Java基礎(chǔ)SQL語言基礎(chǔ)在VirtualBox上安裝Linux集群習(xí)題2.1.1

Linux簡介38

Linux簡潔,僅提供數(shù)百個(gè)有明確設(shè)計(jì)目的系統(tǒng)調(diào)用;

Linux中所有的設(shè)備都被當(dāng)做文件對(duì)待,可通過一套相同的系統(tǒng)調(diào)用接口對(duì)數(shù)據(jù)和設(shè)備的操作;

Linux的內(nèi)核和相關(guān)的系統(tǒng)工具軟件都是用C語音編寫的,Linux在各種硬件體系架構(gòu)面前具備非常好的移植能力;

Linux將所有的進(jìn)程都當(dāng)做線程,而創(chuàng)建線程速度快、開銷少;

Linux提供了一套非常簡單但又非常穩(wěn)定的進(jìn)程間通信元語,快速簡潔的進(jìn)程創(chuàng)建過程使得Linux程序高質(zhì)量地完成任務(wù),而簡單穩(wěn)定的進(jìn)程間通信機(jī)制可以保證一組單一目的的程序方便地組合在一起,去解決更為復(fù)雜的任務(wù)。Linux系統(tǒng)核心最初是由芬蘭赫爾辛基大學(xué)學(xué)生LinusTorvalds在1990年設(shè)計(jì)。后來,Linux周邊程序越來越多,在不到三年的時(shí)間里,linux成為了一個(gè)功能完善,穩(wěn)定可靠的操作系統(tǒng)。Linux存在著許多不同的Linux版本,例如RedHat、CentOS、Ubuntu、debian等。Linux系統(tǒng)具有以下幾個(gè)重要的特點(diǎn):Linux發(fā)行版本2.1.2

Linux基本操作1.修改主機(jī)名和hosts文件查看主機(jī)名可以使用hostname查看當(dāng)前主機(jī)名稱,命令如下:$hostname2.1.2

Linux基本操作永久修改主機(jī)名可以使用hostnamectl永久設(shè)置主機(jī)名,修改后的主機(jī)名存儲(chǔ)在/etc/hostname文件中。命令如下:$hostnamectlset-hostnamecontroller #設(shè)置主機(jī)名為controller$cat/etc/hostname #用cat命令在控制臺(tái)顯示文件內(nèi)容為controller也可以通過直接修改/etc/hosts文件中的主機(jī)名來修改主機(jī)名稱。還可以使用Vim等編輯工具編輯該文件,修改對(duì)應(yīng)IP地址后的主機(jī)名稱。$vim/etc/hosts #注意:在打開文件,并修改主機(jī)名稱后,保存$cat/etc/hosts

2.1.2

Linux基本操作2.文件與目錄操作切換目錄切換工作文件目錄用cd命令查看目錄中的文件信息查看目錄中的文件信息用ls命令文件復(fù)制文件復(fù)制可以用cp命令進(jìn)行文件復(fù)制2.1.2

Linux基本操作目錄的創(chuàng)建和刪除創(chuàng)建、修改、刪除文件目錄涉及mkdir、mv和rm三個(gè)命令查看文件內(nèi)容可以使用cat、more和tac查看文件內(nèi)容。cat按照文本文件的行順序以此顯示文件內(nèi)容;tac是cat反向拼寫,表達(dá)從最后一行開始倒敘依次顯示文本文件的內(nèi)容;more命令可以分頁顯示文本文件內(nèi)容2.1.2

Linux基本操作文本內(nèi)容處理在Linux下經(jīng)常需要從文本文件中查找相關(guān)字符串,或比較文件的差異。常用命令為grep和diff命令查詢操作可以通過find命令查找相關(guān)的文件或文件目錄2.1.2

Linux基本操作Vim文件操作Vim是Linux系統(tǒng)常用的文本編輯器。Vim有命令模式(CommandMode)、插入模式(InsertMode)和底行模式(LastLineMode)三種工作模式。命令模式:在此模式下只能控制屏幕光標(biāo)的移動(dòng),進(jìn)行文本的刪除、復(fù)制等文字編輯工作,以及進(jìn)入插入模式,或者回到底行模式。插入模式:只有在插入模式下,才可以輸入文字。按[Esc]鍵可回到命令模式。打開Vim編輯器時(shí)Vim處于命令模式,需要按i鍵進(jìn)入插入模式。底行模式:在此模式下可以保存文件或退出Vim,同時(shí)也可以設(shè)置編輯環(huán)境和進(jìn)行一些編譯工作,如列出行號(hào)、搜索字符串、執(zhí)行外部命令等。2.1.2

Linux基本操作壓縮、解壓可以利用tar命令對(duì)文件進(jìn)行壓縮、解壓。tar可以解壓縮*.tar,*.tar.gz,*tar.bz2文件,其參數(shù)z和j分別代表*.tar.gz和*.bz2文件2.1.2

Linux基本操作

修改文件或目錄權(quán)限Linux文件被創(chuàng)建時(shí),文件所有者自動(dòng)擁有對(duì)該文件的讀、寫和可執(zhí)行權(quán)限,以便于對(duì)文件的閱讀和修改。Linux系統(tǒng)因?qū)ξ募踩脑O(shè)置將用戶分成三種不同的類型:文件所有者、同組用戶、其他用戶。文件所有者一般是文件的創(chuàng)建者。所有者能允許同組用戶有權(quán)訪問文件,還能將文件的訪問權(quán)限賦予系統(tǒng)中的其他用戶。每一文件或目錄的訪問權(quán)限都有三組,每組用三位數(shù)據(jù)表示,分別為文件所有者的讀、寫和執(zhí)行權(quán)限,和所有者同組的用戶的讀、寫和執(zhí)行權(quán)限,系統(tǒng)中其他用戶的讀、寫和執(zhí)行權(quán)限。2.1.2

Linux基本操作3.新建與刪除用戶和用戶組新建用戶為Linux系統(tǒng)創(chuàng)建用戶的基本命令為useradd和passwd,分別創(chuàng)建用戶和設(shè)置用戶密碼。新建用戶組Linux文件系統(tǒng)的安全管理權(quán)限有組管理權(quán)限,可以通過groupadd命令創(chuàng)建用戶組,方便用戶管理。2.1.2

Linux基本操作新建用戶的同時(shí)增加用戶組在創(chuàng)建用戶時(shí)為用戶xathan增加用戶組。給已有的用戶增加用戶組若用戶已經(jīng)存在,可以使用usermod命令把指定用戶增加到相應(yīng)的用戶組中。永久刪除用戶賬號(hào)和用戶組可以使用userdel和groupdel刪除用戶帳號(hào)和用戶組。2.1.2

Linux基本操作4.硬盤分區(qū)、查看與掛載Linux用戶可以使用df、fdisk、mnt等命令查看、分區(qū)及掛載硬盤。查看硬盤的使用狀況使用df命令查看當(dāng)前硬盤的使用狀況。硬盤分區(qū)使用fdisk命令可以對(duì)硬盤進(jìn)行分區(qū)。使用mount命令掛載硬盤2.1.3

網(wǎng)絡(luò)配置管理1.基本網(wǎng)絡(luò)配置管理CentOS中的nmcli網(wǎng)絡(luò)管理命令行工具(NetworkManagerCommandTools),比傳統(tǒng)網(wǎng)絡(luò)管理命令ifconfig的功能要更加強(qiáng)大。其命令語法如下:nmcli[OPTIONS]OBJECT{COMMAND|help}其中,OBJECT指的是device和connection。device指的是網(wǎng)絡(luò)接口,是物理設(shè)備;而connection是連接,偏重于邏輯設(shè)置。多個(gè)connection可以應(yīng)用到同一個(gè)device,但同一時(shí)間只能啟用其中一個(gè)connection。其優(yōu)點(diǎn)是針對(duì)一個(gè)物理的網(wǎng)絡(luò)接口,可以設(shè)置多個(gè)網(wǎng)絡(luò)連接,比如靜態(tài)IP和動(dòng)態(tài)IP,再根據(jù)需要啟用相應(yīng)connection。COMMAND指的是具體命令。2.1.3

網(wǎng)絡(luò)配置管理2.關(guān)閉防火墻查看防火墻命令如下:$firewall-cmd--list-all關(guān)閉防火墻/禁止開機(jī)啟動(dòng)$systemctlstopfirewalld$systemctldisablefirewalld2.1.3

網(wǎng)絡(luò)配置管理3.關(guān)閉SELinuxSELinux(Security-EnhancedLinux)是美國國家安全局(NSA)對(duì)于強(qiáng)制訪問控制的實(shí)現(xiàn),是Linux歷史上最杰出的新安全子系統(tǒng)。SELinux默認(rèn)安裝在CentOS、Fedora和RedHatEnterpriseLinux上。然而,Selinux會(huì)阻礙Hadoop組件的安裝與配置,因而需要掌握關(guān)閉和啟動(dòng)SElinux的相關(guān)方法。2.1.4

其他常用網(wǎng)絡(luò)命令1.系統(tǒng)服務(wù)管理指令systemctlLinuxSystemctl是一個(gè)系統(tǒng)管理守護(hù)進(jìn)程、工具和庫的集合,主要負(fù)責(zé)控制Systemd系統(tǒng)和服務(wù)管理器。通過systemctl–help可以看到該命令主要分為:查詢或發(fā)送控制命令給Systemd服務(wù),管理單元服務(wù)的命令,服務(wù)文件的相關(guān)命令,任務(wù)、環(huán)境、快照相關(guān)命令,Systemd服務(wù)的配置重載,系統(tǒng)開機(jī)關(guān)機(jī)相關(guān)的命令。

2.1.4

其他常用網(wǎng)絡(luò)命令2.jps查看jps(JavaVirtualMachineProcessStatusTool)是JDK1.5提供的一個(gè)顯示當(dāng)前所有Java進(jìn)程pid的命令,非常適合在Linux/UNIX平臺(tái)上簡單察看當(dāng)前Java進(jìn)程的一些簡單情況??梢酝ㄟ^它來查看系統(tǒng)啟動(dòng)的Java進(jìn)程,默認(rèn)列出JVM的ID號(hào)和簡單的class或jar名稱,如圖所示。其他示例命令如下:$jps–p #僅僅顯示VM標(biāo)示,不顯示jar、class、main參數(shù)等信息$jps–l #輸出應(yīng)用程序主類完整package名稱或jar完整名稱$jps–v #列出jvm參數(shù)2.1.4

其他常用網(wǎng)絡(luò)命令3.rpcinfo查看RPC(RemoteProcedureCall,遠(yuǎn)程過程調(diào)用)是一種通過網(wǎng)絡(luò)從遠(yuǎn)程計(jì)算機(jī)程序上請(qǐng)求的服務(wù),用戶不需要了解底層網(wǎng)絡(luò)技術(shù)的協(xié)議。rpcinfo命令可查看有關(guān)系統(tǒng)上正在運(yùn)行的RPC服務(wù)的信息。$rpcinfo-p[IP|hostname]$rpcinfo-t|-uIP|hostname程序名稱選項(xiàng)與參數(shù):-p:針對(duì)某IP(未寫則預(yù)設(shè)為本機(jī))顯示出所有的port與porgram的信息。-t:針對(duì)某主機(jī)的某支程序檢查其TCP封包所在的軟件版本。-u:針對(duì)某主機(jī)的某支程序檢查其UDP封包所在的軟件版本。2.1.4

其他常用網(wǎng)絡(luò)命令4.查看端口并殺死占用端口的進(jìn)程使用netstat命令查看正在使用的端口及關(guān)聯(lián)的進(jìn)程/應(yīng)用普通用戶也能夠使用netstat命令,不過只有為root用戶時(shí)才會(huì)顯示端口對(duì)應(yīng)的進(jìn)程名稱。使用lsof命令直接列出具體端口號(hào)的使用進(jìn)程/應(yīng)用lsof命令可以列出當(dāng)前網(wǎng)絡(luò)端口的占用情況,也可查看指定端口的占用情況,命令的執(zhí)行需要root權(quán)限。使用ps命令通過PID進(jìn)程號(hào)查看進(jìn)程的詳細(xì)信息使用ps命令查看Java進(jìn)程的狀態(tài)使用ps命令查看Java進(jìn)程的狀態(tài),-aux顯示所有狀態(tài)使用kill-9命令強(qiáng)制殺死進(jìn)程目錄57Linux基礎(chǔ)Java基礎(chǔ)SQL語言基礎(chǔ)在VirtualBox上安裝Linux集群Java基礎(chǔ)SQL語言基礎(chǔ)2.2.1面向?qū)ο笈c泛型

1.類繼承在面向?qū)ο笳Z言中,類繼承是面向?qū)ο蟪绦蛟O(shè)計(jì)不可缺少的一部分。類繼承實(shí)現(xiàn)了代碼復(fù)用,使得代碼結(jié)構(gòu)更清晰。當(dāng)一個(gè)類繼承另一個(gè)類,不僅可以獲取該類的一些方法,還可以在此基礎(chǔ)上定義自身的方法,從而能夠在已存在的類的基礎(chǔ)上構(gòu)建一個(gè)新類。2.2.1面向?qū)ο笈c泛型

2.接口接口以interface聲明。在Java語言中,接口是一個(gè)抽象類型,是抽象方法的組合。與Java中的類不同,接口主要用來描述類具有的功能,并不涉及每個(gè)功能的具體實(shí)現(xiàn)。當(dāng)類實(shí)現(xiàn)接口時(shí),必須實(shí)現(xiàn)接口中的所有方法。若只想實(shí)現(xiàn)接口中的部分方法,可使用抽象類。從程序員的角度,可以把接口理解為抽象類(雖然它們?cè)谡Z法上有諸多不同)。接口中的方法必須全部在具體的類中實(shí)現(xiàn)。接口的實(shí)現(xiàn)一般分為兩步:(1)使用implements關(guān)鍵字將類聲明為實(shí)現(xiàn)指定的接口;(2)在類中實(shí)現(xiàn)接口已定義好的所有方法。接口也可以通過extends關(guān)鍵字繼承父接口,并支持多繼承。2.2.1面向?qū)ο笈c泛型3.泛型泛型是JavaSE5中引入的一種重用機(jī)制。泛型實(shí)現(xiàn)了參數(shù)類型的概念,使代碼可以應(yīng)用于多種類型。與Java中指定變量的參數(shù)類型不同,泛型將所操作的數(shù)據(jù)類型指定為一個(gè)參數(shù),即類型參數(shù),使算法可以同時(shí)操作多種數(shù)據(jù)類型,同時(shí)能夠在編譯時(shí)檢測(cè)到非法類型。使用類型參數(shù)允許暫時(shí)不指定參數(shù)的具體類型,而是稍后再?zèng)Q定具體類型。Java語言中應(yīng)用了泛型技術(shù)的方法,稱為泛型方法,擁有泛型方法的類可以不是泛型類。2.2.2集合類

Java集合框架的集合類,有時(shí)候稱之為容器。容器的種類有很多種,比如ArrayList、LinkedList、HashSet等。每種容器都有自己的特點(diǎn),比如,ArrayList底層維護(hù)的是一個(gè)數(shù)組;LinkedList是鏈表結(jié)構(gòu);HashSet依賴的是哈希表,每種容器都有自己特有的數(shù)據(jù)結(jié)構(gòu)。在Map/Reduce編程中,在計(jì)算節(jié)點(diǎn)傳輸鍵值數(shù)據(jù)的傳輸是一種集合,理解Java語言中Set、Map和List有助于對(duì)Map/Redcue數(shù)據(jù)傳遞程序的理解。2.2.2集合類1.SetSet是一種簡單的集合,繼承Java中的Collection接口。Set中的元素不能重復(fù),后放入的元素會(huì)將之前重復(fù)的元素覆蓋,但Set中的元素沒有特定順序。2.2.2集合類2.MapMap也被稱為關(guān)聯(lián)數(shù)組,用于存儲(chǔ)鍵值對(duì)結(jié)構(gòu)的數(shù)據(jù),這種數(shù)據(jù)結(jié)構(gòu)就像字典一樣,在某些對(duì)象與另外一些對(duì)象之間建立聯(lián)系,即在“鍵”與“值”之間建立聯(lián)系,在代碼中能夠根據(jù)鍵值對(duì)中的鍵來查找對(duì)應(yīng)的值。鍵值對(duì)在MapRedcue編程和Spark編程中會(huì)多次使用。Map接口主要有如下兩個(gè)實(shí)現(xiàn)類。(1)HashMap:HashMap類存取數(shù)據(jù)集合中元素的方式是根據(jù)哈希碼的算法計(jì)算得來的,能夠快速查找一個(gè)鍵,具有存取速度快的特點(diǎn)。(2)TreeMap:TreeMap類Map接口中的元素按序排放,要求放入集合中的元素是可排序的。2.2.2集合類3.ListList又稱列表,對(duì)Java中的Collection接口進(jìn)行了擴(kuò)充,其中的元素以線性方式存儲(chǔ),在List中的元素根據(jù)放入的順序不同存放在不同的位置,并且元素可以重復(fù)。除了關(guān)心不同集合類型的數(shù)據(jù)結(jié)構(gòu)不同之外,我們還要關(guān)心數(shù)據(jù)集合本身是否支持自動(dòng)排序和是否允許重復(fù)序列兩個(gè)問題。為了使對(duì)容器內(nèi)元素的操作更為簡單,Java引入了迭代器模式。把訪問邏輯從不同類型的集合類中抽取出來,從而避免向外部暴露集合的內(nèi)部結(jié)構(gòu)。2.2.3內(nèi)部類與匿名類

在Java中,內(nèi)部類定義在另一個(gè)類的內(nèi)部,屬于這個(gè)類的一部分,外面的類稱為外部類或外圍類。由于內(nèi)部類在外部類的內(nèi)部,當(dāng)實(shí)例化內(nèi)部類時(shí),該內(nèi)部類會(huì)獲取外部類對(duì)象的引用,該引用使得實(shí)例化的內(nèi)部類對(duì)象可以訪問外部類的成員。所以內(nèi)部類可以自由訪問外部類的數(shù)據(jù),包括私有數(shù)據(jù)。由于內(nèi)部類屬于外部類的一部分,其他類無法直接訪問該內(nèi)部類。在編譯時(shí),內(nèi)部類和外部類屬于兩個(gè)完全不同的類,會(huì)產(chǎn)生兩個(gè)不同的.class文件。內(nèi)部類一般分為四種,成員內(nèi)部類、局部內(nèi)部類、匿名內(nèi)部類和靜態(tài)內(nèi)部類。2.2.3內(nèi)部類與匿名類1.成員內(nèi)部類成員內(nèi)部類是一種最基礎(chǔ)的內(nèi)部類,是外部類所有成員中的一個(gè)。成員內(nèi)部類可以訪問外部類的所有成員屬性和成員方法。但是如果外部類要想訪問成員內(nèi)部類,必須先創(chuàng)建一個(gè)成員內(nèi)部類的對(duì)象,再通過成員內(nèi)部類的對(duì)象來訪問。成員內(nèi)部類可以像外部類中的變量和方法一樣擁有各種訪問權(quán)限,包括private訪問權(quán)限、protected訪問權(quán)限、public訪問權(quán)限及包訪問權(quán)限。2.局部內(nèi)部類局部內(nèi)部類有兩種情況,一種是定義在外部類的一個(gè)方法的內(nèi)部,另一種情況是定義在外部類一個(gè)作用域的內(nèi)部,只能在該方法內(nèi)部或者該作用域內(nèi)部被訪問,并且局部內(nèi)部類不能有private、protected、public或者static修飾符。2.2.3內(nèi)部類與匿名類3.匿名內(nèi)部類匿名內(nèi)部類比較常見,它直接使用new關(guān)鍵字來隱式地生成一個(gè)類或者接口的對(duì)象,并同時(shí)實(shí)現(xiàn)該類或者接口中的方法。匿名內(nèi)部類的使用方式有兩種:實(shí)現(xiàn)一個(gè)接口,并實(shí)現(xiàn)該接口定義的方法,或者繼承一個(gè)父類,重寫其方法。4.靜態(tài)內(nèi)部類靜態(tài)內(nèi)部類是定義在類的內(nèi)部,并且使用static關(guān)鍵字修飾的內(nèi)部類,靜態(tài)內(nèi)部類又稱為嵌套內(nèi)部類。與一般內(nèi)部類不同,靜態(tài)內(nèi)部類沒有對(duì)外圍內(nèi)部類的引用,所以它無法使用外部類的非static類型的成員變量或方法。靜態(tài)內(nèi)部類不需要通過外部類來創(chuàng)建,可以直接創(chuàng)建靜態(tài)內(nèi)部類的對(duì)象。2.2.4

反射

Java的反射機(jī)制允許Java在程序運(yùn)行過程中獲取程序的某些信息,通過反射機(jī)制,可以在程序運(yùn)行時(shí)獲取程序內(nèi)部的接口、變量等信息,還可以在運(yùn)行過程中實(shí)例化對(duì)象,這些操作在編譯期無法得知,不需要程序預(yù)先編譯,都是在程序運(yùn)行時(shí)進(jìn)行的。Java反射機(jī)制廣泛運(yùn)用于開發(fā)各種通用框架中,它允許程序在運(yùn)行過程中根據(jù)不同需求調(diào)用不同方法,加載不同的對(duì)象和類,使得程序具有更高的靈活性,降低了類之間的耦合性。在Java中,實(shí)現(xiàn)反射的類一般在java.lang.reflect包里,反射所能實(shí)現(xiàn)的功能包括獲取Class對(duì)象、捕獲異常、利用反射分析類的能力,在運(yùn)行過程中利用反射分析對(duì)象等。目錄69Linux基礎(chǔ)Java基礎(chǔ)SQL語言基礎(chǔ)在VirtualBox上安裝Linux集群702.3

SQL語言基礎(chǔ)定義:結(jié)構(gòu)化查詢語言(StructuredQueryLanguage,SQL)是一種數(shù)據(jù)庫查詢和程序設(shè)計(jì)語言,用于存取數(shù)據(jù)以及查詢、更新和管理關(guān)系數(shù)據(jù)庫系統(tǒng)。基本操作:創(chuàng)建數(shù)據(jù)表、在數(shù)據(jù)小添加信息、在數(shù)據(jù)表查詢信息、在數(shù)據(jù)表修改信息、在數(shù)據(jù)表刪除信息、修改表的結(jié)構(gòu)71創(chuàng)建數(shù)據(jù)表語法格式:CREATEtable表名(數(shù)據(jù)名稱數(shù)據(jù)類型,數(shù)據(jù)名稱數(shù)據(jù)類型,…);例:創(chuàng)建一個(gè)學(xué)生信息表,學(xué)生屬性有學(xué)號(hào)、姓名、性別、年齡:CREATEtablestudent(sidint,snamevarchar(20),ssexvarchar(2),sageint);72在數(shù)據(jù)表添加信息語法格式:INSERTINTO表名(數(shù)據(jù)名稱1,數(shù)據(jù)名稱2,…)VALUES(字段值1,字段值2,…);例:1.插入所有字段,一次性加入一條完整的信息,插入的字段值的個(gè)數(shù)和數(shù)據(jù)表的屬性個(gè)數(shù)相同。如INSERTINTOstudent(sid,sname,ssex,sage)VALUES(2017001,'小明','男',22);732.向數(shù)據(jù)表student插入sid為2017001,sname為小明,ssex為男,sage為22的一條記錄。此時(shí)可以省student后面的屬性,等同于INSERTINTOstudentVALUES(2017001,'小明','男',22);3.插入部分字段,在表名后面添加需要插入的屬性名,在VALUES后面添加對(duì)應(yīng)的值:INSERTINTOstudent(sid,sname)VALUES(2017002,'小明');在數(shù)據(jù)表添加信息74在數(shù)據(jù)表查詢信息語法格式:SELECT*FROMstudent;簡單的信息查詢:例:1.查詢學(xué)生表中的所有學(xué)號(hào)(可以添加多個(gè)屬性,用逗號(hào)隔開),語法格式為:SELECTsidFROMstudent;752.在查詢的同時(shí),也可以用AS為數(shù)據(jù)名稱制定別名,例如:SELECTsidASsnumberFROMstudent;3.查詢數(shù)據(jù)表student中學(xué)號(hào)為2017001的學(xué)生信息,語法格式為:SELECT*FROMstudentWHEREsid=2017001;在數(shù)據(jù)表查詢信息76常用的聚合函數(shù)有:max()、min()、sum()、avg()、count()。常用的比較條件有:<、>、>=、<=、==、<>!=例:SELECT*FROMstudentWHEREsage>20;數(shù)據(jù)庫表的聚合查詢和條件查詢?cè)跀?shù)據(jù)表查詢信息77常用的邏輯條件有:and、or例:SELECT*FROMstudentWHEREsid=2017001ORsname='小王';常用的判空條件(null空字符串):isnull、isnotnull例:SELECT*FROMstudentWHEREsageISNULL;在數(shù)據(jù)表查詢信息78常用的模糊條件(like)例:SELECT*FROMstudentWHEREsnameLIKE'小_';(_表示一個(gè)字或字符)SELECT*FROMstudentWHEREsnameLIKE'小%';(%表示不限制字符個(gè)數(shù))在數(shù)據(jù)表查詢信息79在數(shù)據(jù)表修改信息語法格式:UPDATE表名SET數(shù)據(jù)名稱=數(shù)據(jù)值;修改所有數(shù)據(jù),一般這種情況比較少用例:UPDATEstudentSETsage=12;帶條件的修改UPDATEstudentSETsage=12WHEREid=1;在SET后面也可以進(jìn)行多個(gè)數(shù)據(jù)名稱的修改例:UPDATEstudentSETsage=12,ssex=’女’WHEREid=1;80在數(shù)據(jù)表刪除信息語法格式:DELETEFROM表名WHERE數(shù)據(jù)名稱=數(shù)據(jù)值刪除特定條件的某條數(shù)據(jù)(不加WHERE進(jìn)行限制就是刪除所有數(shù)據(jù))例:DELETEFROMstudentWHEREid=2017001;81修改表的結(jié)構(gòu)添加一個(gè)字段,在表中增加一列屬性例:ALTERTABLEstudentADDcolumnsclassvarchar(20);刪除一個(gè)字段,在表中刪除一列屬性例:ALTERTABLEstudentDROPcolumnsclass;修改表中某一個(gè)字段的類型例:ALTERTABLEstudentMODIFY(column)snamevarchar(50);82修改表中某一個(gè)字段的名稱例:ALTERTABLEstudentCHANGE(column)snamenamevarchar(20);修改數(shù)據(jù)表的名稱例:ALTERTABLEstudentRENAME(to)people;修改表的結(jié)構(gòu)目錄83Linux基礎(chǔ)Java基礎(chǔ)SQL語言基礎(chǔ)在VirtualBox上安裝Linux集群842.4.1master節(jié)點(diǎn)的安裝VirtualBox是一個(gè)很受歡迎的開源虛擬機(jī)軟件,可以在其官方網(wǎng)站下載最新版本,如圖2.3所示。本書實(shí)驗(yàn)的宿主機(jī)為Windows系統(tǒng),選擇Windowshosts選項(xiàng)進(jìn)行下載VirtualBox-5.2.4-119785-Win.exe,并從centos官網(wǎng)下載鏡像文件CentOS-7-x86_64-DVD-1511.iso。85雙擊VirtualBox安裝文件后完成安裝,并啟動(dòng)VirtualBox,軟件界面如下圖所示。2.4.1master節(jié)點(diǎn)的安裝86點(diǎn)擊左上角的新建按鈕創(chuàng)建虛擬機(jī)。如下圖所示,在彈出的對(duì)話框中填寫名稱,并選擇類型和版本。名稱填寫為master,類型選擇Linux選項(xiàng),版本選擇RedHat(64-bit),點(diǎn)擊“下一步”按鈕。注意,如果版本中沒有64bit選項(xiàng),首先確定當(dāng)前主機(jī)是否支持64位,如果不支持,則只能安裝32位系統(tǒng)。此外,請(qǐng)確認(rèn)已開啟BIOS中的Virtualization選項(xiàng)。2.4.1master節(jié)點(diǎn)的安裝872.4.1master節(jié)點(diǎn)的安裝88設(shè)置磁盤,如下圖所示,選擇“現(xiàn)在創(chuàng)建虛擬硬盤”選項(xiàng),點(diǎn)擊“創(chuàng)建”按鈕。2.4.1master節(jié)點(diǎn)的安裝89虛擬硬盤文件類型選擇VDI。VDI是VirtualBox的基本格式,目前僅VirtualBox軟件支持這種文件類型。VHD是MicrosoftVirtualPC的基本格式,此種文件類型在微軟產(chǎn)品中比較受歡迎。VMDK由VMWare軟件團(tuán)隊(duì)開發(fā),其他虛擬機(jī)如SunxVM、QEMU、VirtualBox、SUSEStudio、.NETDiscUtils也支持這種文件類型。VMDK具有將存儲(chǔ)的文件分割為小于2GB文件的附加功能,如果文件系統(tǒng)的文件大小存在限制,可考慮選擇VMDK文件類型。如下圖所示,點(diǎn)擊“下一步”按鈕。2.4.1master節(jié)點(diǎn)的安裝902.4.1master節(jié)點(diǎn)的安裝91虛擬硬盤文件類型選擇VDI。VDI是VirtualBox的基本格式,目前僅VirtualBox軟件支持這種文件類型。VHD是MicrosoftVirtualPC的基本格式,此種文件類型在微軟產(chǎn)品中比較受歡迎。VMDK由VMWare軟件團(tuán)隊(duì)開發(fā),其他虛擬機(jī)如SunxVM、QEMU、VirtualBox、SUSEStudio、.NETDiscUtils也支持這種文件類型。VMDK具有將存儲(chǔ)的文件分割為小于2GB文件的附加功能,如果文件系統(tǒng)的文件大小存在限制,可考慮選擇VMDK文件類型。如下圖所示,點(diǎn)擊“下一步”按鈕。2.4.1master節(jié)點(diǎn)的安裝92設(shè)置虛擬硬盤文件的存放方式,如下圖所示。如果磁盤空間較大,就選擇固定大小,這樣可以獲得較好的性能;如果你硬盤空間比較緊張,就選擇動(dòng)態(tài)分配。點(diǎn)擊“下一步”按鈕。2.4.1master節(jié)點(diǎn)的安裝93設(shè)置虛擬硬盤文件的位置,如下圖所示。點(diǎn)擊“瀏覽”選擇一個(gè)容量充足的磁盤來存放它,因?yàn)樗ǔ6急容^大,點(diǎn)擊“創(chuàng)建”按鈕。2.4.1master節(jié)點(diǎn)的安裝94這樣一個(gè)空殼虛擬機(jī)就創(chuàng)建好了,如下圖所示。接下來開始安裝CentOS7。點(diǎn)擊左上角的啟動(dòng)按鈕來啟動(dòng)虛擬機(jī)。2.4.1master節(jié)點(diǎn)的安裝95如下圖所示,在選擇啟動(dòng)盤對(duì)話框中瀏覽選擇系統(tǒng)安裝盤。點(diǎn)擊“啟動(dòng)”按鈕。2.4.1master節(jié)點(diǎn)的安裝96如下圖所示,用鍵盤上的上下箭頭鍵來選擇InstallCentOS7,然后按回車鍵。注意:這里只能用鍵盤操作,如果想“找回”鼠標(biāo)切換回Windows,請(qǐng)按右CTRL鍵。2.4.1master節(jié)點(diǎn)的安裝97選擇安裝過程中使用的語言,如圖2.13所示,選擇中文->簡體中文(中國)。點(diǎn)擊“繼續(xù)”按鈕。2.4.1master節(jié)點(diǎn)的安裝98如下圖所示,配置相關(guān)信息,點(diǎn)擊“開始安裝”按鈕。此處選擇CentOS最小化安裝,只安裝系統(tǒng)基本的安裝包,不包含XWindows和桌面管理器。后續(xù)需要使用到相關(guān)的安裝包,都可以通過yum、rpm等工具進(jìn)行安裝。2.4.1master節(jié)點(diǎn)的安裝992.4.1master節(jié)點(diǎn)的安裝100如下圖所示,安裝時(shí)可以一邊安裝一邊設(shè)置Root密碼,并創(chuàng)建用戶。弱密碼需要點(diǎn)擊兩次完成,界面下方有提示信息。2.4.1master節(jié)點(diǎn)的安裝1012.4.1master節(jié)點(diǎn)的安裝102安裝完成后,重啟進(jìn)入系統(tǒng),如下所示,輸入Root密碼登錄,并且系統(tǒng)可以訪問外網(wǎng)。2.4.1master節(jié)點(diǎn)的安裝1032.4.2配置Virtualbox網(wǎng)絡(luò)及虛擬機(jī)網(wǎng)卡VirtualBox提供了4種網(wǎng)絡(luò)連接方式,分別為:NAT網(wǎng)絡(luò)地址轉(zhuǎn)換模式(NAT模式)、BridgedAdapter橋接模式(橋接模式)、Internal內(nèi)部網(wǎng)絡(luò)模式(內(nèi)網(wǎng)模式)、Host-onlyAdapter主機(jī)模式(主機(jī)模式)。104NAT網(wǎng)絡(luò)地址轉(zhuǎn)換模式(NAT模式)NAT模式是實(shí)現(xiàn)虛擬機(jī)上網(wǎng)最簡單的方式,也是VirtualBox提供的默認(rèn)方式。虛擬機(jī)訪問網(wǎng)絡(luò)的所有數(shù)據(jù)都是由主機(jī)提供的,虛擬機(jī)并不真實(shí)存在于網(wǎng)絡(luò)中,主機(jī)與網(wǎng)絡(luò)中的任何機(jī)器都不能查看和訪問到虛擬機(jī)。虛擬機(jī)與主機(jī)之間只能單向訪問,虛擬機(jī)可以通過網(wǎng)絡(luò)訪問到主機(jī),主機(jī)無法通過網(wǎng)絡(luò)訪問到虛擬機(jī),虛擬機(jī)與虛擬機(jī)之間不能互相訪問。105橋接模式在BridgedAdapter橋接模式下,虛擬機(jī)通過主機(jī)網(wǎng)卡,架設(shè)一座網(wǎng)橋,直接連入到網(wǎng)絡(luò)中。虛擬機(jī)能被分配到一個(gè)網(wǎng)絡(luò)中獨(dú)立的IP,網(wǎng)絡(luò)功能完全和在網(wǎng)絡(luò)中的真實(shí)機(jī)器一樣。虛擬機(jī)與主機(jī)之間可以相互訪問,因?yàn)樘摂M機(jī)在真實(shí)網(wǎng)絡(luò)段中有獨(dú)立IP,主機(jī)與虛擬機(jī)處于同一網(wǎng)絡(luò)段中,彼此可以通過各自IP相互訪問,虛擬機(jī)與虛擬機(jī)之間可以相互訪問。106對(duì)于配置大數(shù)據(jù)學(xué)習(xí)環(huán)境而言,選擇網(wǎng)橋模式后,不同物理主機(jī)上的虛擬機(jī)間可以組成一個(gè)Linux集群,不同用戶可以一起搭建由多個(gè)虛擬機(jī)構(gòu)建的Linux集群。而不需要在一臺(tái)物理主機(jī)上創(chuàng)建所有的虛擬主機(jī)。這種模式的缺點(diǎn)是,當(dāng)外網(wǎng)網(wǎng)絡(luò)環(huán)境變化,需要重新配置所有虛擬主機(jī)的IP地址。橋接模式107內(nèi)網(wǎng)模式Internal內(nèi)部網(wǎng)絡(luò)模式將虛擬機(jī)與外網(wǎng)完全斷開,只實(shí)現(xiàn)不同虛擬機(jī)之間的內(nèi)部網(wǎng)絡(luò)模式。虛擬機(jī)與主機(jī)不屬于同一個(gè)網(wǎng)絡(luò),彼此之間不能互相訪問。虛擬機(jī)與虛擬機(jī)之間可以互相訪問。108主機(jī)模式主機(jī)模式是一種比較復(fù)雜的模式,可以將真實(shí)環(huán)境和虛擬環(huán)境隔離開,所有的虛擬系統(tǒng)是可以相互通信的,但虛擬系統(tǒng)和真實(shí)的網(wǎng)絡(luò)是被隔離開的。虛擬機(jī)與主機(jī)之間默認(rèn)不能相互訪問,雙方不屬于同一IP段,但是可以通過網(wǎng)卡共享、網(wǎng)卡橋接等,實(shí)現(xiàn)虛擬機(jī)與主機(jī)的相互訪問。虛擬機(jī)與虛擬機(jī)之間默認(rèn)可以相互訪問,因?yàn)槎际峭幱谝粋€(gè)網(wǎng)段。109若用戶網(wǎng)絡(luò)環(huán)境經(jīng)常變化,可以考慮使用主機(jī)模式。一種建議方案是為虛擬主機(jī)設(shè)置雙網(wǎng)卡,第一塊網(wǎng)卡為NAT模式,負(fù)責(zé)與外網(wǎng)通信;第二塊網(wǎng)卡為主機(jī)模式,負(fù)責(zé)內(nèi)網(wǎng)通信。主機(jī)模式110這里選擇單網(wǎng)卡橋接模式,首先對(duì)虛擬機(jī)網(wǎng)絡(luò)配置如下。(1)選擇虛擬機(jī)的設(shè)置,進(jìn)入設(shè)置界面,選擇網(wǎng)絡(luò)選項(xiàng)卡,勾選“啟用網(wǎng)絡(luò)連接”,連接方式選擇“橋接網(wǎng)卡”,界面名稱選擇對(duì)應(yīng)的網(wǎng)卡名稱,混雜模式選擇“拒絕”,點(diǎn)擊“OK”完成配置,如下圖所示。主機(jī)模式111主機(jī)模式112(2)啟動(dòng)master主機(jī),配置靜態(tài)IP,并保證靜態(tài)IP地址與宿主機(jī)在同一網(wǎng)段,如下圖所示。主機(jī)模式1132.4.3slave節(jié)點(diǎn)的安裝與配置slave節(jié)點(diǎn)的安裝與配置與master的方法類似,只是要修改IP和host名稱,或者也可以從master復(fù)制過來修改。修改slave的IP地址slave配置靜態(tài)IP方式與上一節(jié)master配置靜態(tài)IP相同,按表2.1所示IP地址配置2臺(tái)slave主機(jī)——slave1和slave2。114修改host[root@localhost~]#vim/etc/hosts#進(jìn)入配置文件配置如下圖所示。注意:應(yīng)保證master、slave1、slave2的hosts文件配置一致。2.4.3slave節(jié)點(diǎn)的安裝與配置1152.4.4Java環(huán)境的安裝因?yàn)镠adoop的環(huán)境依賴于JavaJDK,所以需要確保虛擬機(jī)中已經(jīng)正確安裝了JDK,并配置了環(huán)境變量,本小節(jié)以master節(jié)點(diǎn)為例,查看Java版本的命令如下:[root@master~]#java–version#查看Java是否安裝執(zhí)行結(jié)果如下圖所示。116出現(xiàn)以上情況,顯示已經(jīng)安裝完畢,若沒有安裝,請(qǐng)先安裝JDK,并配置Java環(huán)境變量。以master節(jié)點(diǎn)為例,JDK的安裝步驟如下。2.4.4Java環(huán)境的安裝117(1)查詢系統(tǒng)自帶的JDK,命令如下:[root@master~]#rpm-qa|grepjava執(zhí)行結(jié)果如下圖所示。移除自帶的openjdk,命令如下:[root@master~]#yumremovejava-1.*2.4.4Java環(huán)境的安裝118(2)在Oracle官網(wǎng)下載JDK選擇JDK的最新版本下載。[root@master~]#mkdir/usr/java#新建JDK安裝位置[root@master~]#mvjdk-8u161-linux-x64.tar.gz/usr/java[root@master~]#cd/usr/java [root@master~]#tar–zxvfjdk-8u161-linux-x64.tar.gz#解壓縮[root@master~]#vim~/etc/profile #配置環(huán)境變量2.4.4Java環(huán)境的安裝119exportJAVA_HOME=/usr/java/jdk1.8.0_161exportCLASSPATH=.:$JAVA_HOME/jre/lib/rt.jar:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jarexportPATH=$PATH:$JAVA_HOME/bin(3)配置Java環(huán)境變量,添加以下內(nèi)容/etc/profile文件中:2.4.4Java環(huán)境的安裝120[root@master~]#source/etc/profile#使改動(dòng)立即生效[root@master~]#java–version#查看java安裝版本(3)使環(huán)境變量生效,命令如下:2.4.4Java環(huán)境的安裝1212.4.5MySQL服務(wù)安裝MySQL首先在MySQL官網(wǎng)中下載所需版本的YUM源,本次安裝的版本為MySQL5.7.21社區(qū)版,且選擇安裝在master節(jié)點(diǎn)上。122下載MySQL及安裝命令如下:[root@master~]#wget/get/mysql57-community-release-el7-8.noarch.rpm[root@master~]#yumlocalinstallmysql57-community-release-el7-8.noarch.rpm#安裝mysql源[root@master~]#yumrepolistenabled|grep"mysql.*-community.*"[root@master~]#yuminstallmysql-community-server #安裝MySQL[root@master~]#systemctlstartmysqld #啟動(dòng)MySQL[root@master~]#systemctlenablemysqld #設(shè)置開機(jī)啟動(dòng)2.4.5MySQL服務(wù)123MySQL安裝完成之后,在/var/log/mysqld.log文件中給root生成了一個(gè)默認(rèn)密碼。通過下面的方式找到root默認(rèn)密碼,然后登錄MySQL進(jìn)行修改。[root@master~]#grep'temporarypassword'/var/log/mysqld.log[root@master~]#mysql–uroot–p #登陸MySQL數(shù)據(jù)庫[root@master~]#SETPASSWORD=PASSWORD('Hadoop@123');#設(shè)置新密碼2.4.5MySQL服務(wù)124創(chuàng)建Hadoop用戶并設(shè)置權(quán)限在MySQL中創(chuàng)建Hadoop用戶并設(shè)置所有權(quán)限,具體步驟如下:(1)創(chuàng)建用戶語法格式為:CREATEUSER'username'@'host'IDENTIFIEDBY'password';username:用戶名;host:指定在哪個(gè)主機(jī)上可以登錄,本機(jī)可用localhost,%通配所有遠(yuǎn)程主機(jī);password:用戶登錄密碼。2.4.5MySQL服務(wù)125(2)授權(quán)語法格式為:GRANTALLPRIVILEGESON

*.*TO'username'@'%'IDENTIFIEDBY'password';格式說明:grant權(quán)限on數(shù)據(jù)庫名.表名to用戶@登錄主機(jī)identifiedby"用戶密碼";*.*代表所有權(quán);其中,@后面是訪問MySQL的客戶端IP地址(或是主機(jī)名);%代表任意的客戶端,如果填寫localhost為本地訪問,那此用戶就不能遠(yuǎn)程訪問該MySQL數(shù)據(jù)庫。2.4.5MySQL服務(wù)126mysql>grantallon*.*tohadoop@'%'identifiedby'Hadoop@123';mysql>grantallon*.*tohadoop@'localhost'identifiedby'Hadoop@123';mysql>grantallon*.*tohadoop@'master'identifiedby'Hadoop@123';2.4.5MySQL服務(wù)127(3)刷新權(quán)限語法格式為:FLUSHPRIVILEGES;例:mysql>flushprivileges;完成如上MySQL的安裝與配置后,用戶就可以對(duì)2.3節(jié)中SQL的內(nèi)容進(jìn)行上機(jī)操作。2.4.5MySQL服務(wù)1282.4.6SSH免密鑰登錄SSH密鑰的方式是一個(gè)可靠和安全的客戶驗(yàn)證方法。SSH密鑰對(duì)是兩個(gè)加密的安全密碼,由公鑰和私鑰組成,可用于給SSH服務(wù)器驗(yàn)證客戶端。私鑰由客戶端保留,公鑰被上傳到希望能夠使用SSH登錄的遠(yuǎn)程服務(wù)器并被放置在用戶帳戶目錄~/.ssh/authorized_keys文件中。當(dāng)客戶端嘗試使用SSH密鑰進(jìn)行身份驗(yàn)證時(shí),服務(wù)器可以通過客戶端提供的私鑰驗(yàn)證生成一個(gè)終端會(huì)話或執(zhí)行請(qǐng)求的命令。129在Linux集群間配置免密鑰登陸,是hadoop集群運(yùn)維的基礎(chǔ)。以下操作在master節(jié)點(diǎn)進(jìn)行,實(shí)現(xiàn)從master免密碼登陸slave1、slave2節(jié)點(diǎn)。生成ssh密鑰對(duì)的命令如下:[hadoop@master~]$ssh-keygen#master節(jié)點(diǎn)生成密鑰將生成的公鑰上傳到slave1節(jié)點(diǎn)的命令如下:[hadoop@master~]$ssh-copy-idroot@slave1 #將公鑰傳送給slave1節(jié)點(diǎn)首次通過master終端將公鑰傳送給slave終端,需要輸入slave節(jié)點(diǎn)的登陸密碼,傳送完畢可實(shí)現(xiàn)免密碼登陸。2.4.6SSH免密鑰登錄130登陸slave1節(jié)點(diǎn)命令如下:[hadoop@master~]$sshroot@slave1#測(cè)試免密碼登陸成功登陸slave1節(jié)點(diǎn)的提示如下圖所示。注:其他slave1、slave2實(shí)現(xiàn)免密碼登陸,操作方式與上述一致。2.4.6SSH免密鑰登錄1312.4.7配置時(shí)鐘同步Linux集群中節(jié)點(diǎn)間時(shí)鐘同步,對(duì)分布式組間協(xié)同工作意義重大。例如,在HBase分布式部署中,一定要求節(jié)點(diǎn)間時(shí)鐘同步。以下介紹時(shí)鐘同步工具NTP的安裝與配置。NTP是NetworkTimeProtocol的縮寫,目的是保證master(Server)端與slave(Client)端的時(shí)間同步。132master端配置命令如下:[hadoop@master~]$yuminstallntp #安裝NTP軟件[hadoop@master~]$chkconfigntpdon #啟動(dòng)NTP[hadoop@master~]$vim/etc/ntp.conf 配置服務(wù)器由于NTP服務(wù)器的設(shè)置需要有上游服務(wù)器的支持,我們注釋掉原先的Server設(shè)置,添加如下Server設(shè)置,如下圖中方框標(biāo)記所示。2.4.7配置時(shí)鐘同步1332.4.7配置時(shí)鐘同步134重啟NTP服務(wù),并查看是否啟動(dòng),如下圖所示。[hadoop@master~]$servicentpdrestart #重啟NTP服務(wù)[hadoop@master~]$systemctlstatusntpd.service #查看NTP服務(wù)2.4.7配置時(shí)鐘同步135slave端配置分別修改各個(gè)主機(jī)的/etc/chrony.conf文件,指向始終服務(wù)器master,命令如下:[root@slave1]#vim/etc/chrony.conf編輯后保存結(jié)果如下:#Usepublicserversfromtheproject.#Pleaseconsiderjoiningthepool(/join.html).servermasteriburst2.4.7配置時(shí)鐘同步136重啟并驗(yàn)證命令如下:[root@slave1]#chronycsources返回結(jié)果如下:210Numberofsources=1MS

溫馨提示

  • 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)論