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

下載本文檔

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

文檔簡介

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

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

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

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

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

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

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

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

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

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

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

FusionInsightFusionInsight解決方案由4個子產品FusionInsightHD、FusionInsightMPPDB、FusionInsightMiner、FusionInsightFarmer和1個操作運維系統(tǒng)FusionInsightManager構成。FusionInsight

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

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

應用的涵蓋面廣闊;

電子商務、電信領域應用成熟度較高;政府公共服務、金融等領域市場吸引力最大;

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

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

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

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

政府部門信息不對稱、制度法律不具體、缺乏公共平臺、共享渠道等

政府數(shù)據存在“不愿開、不敢開、不能開、不會開”的問題

已開放的數(shù)據也因格式標準缺失無法進行關聯(lián)融合

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

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

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

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

需要盡快出臺關于信息采集與信息保護的基本法

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

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

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

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

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

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

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

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

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

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

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

目錄37Linux基礎Java基礎SQL語言基礎在VirtualBox上安裝Linux集群習題2.1.1

Linux簡介38

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

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

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

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

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

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

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

2.1.2

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

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

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

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

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

Linux基本操作

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

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

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

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

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

網絡配置管理2.關閉防火墻查看防火墻命令如下:$firewall-cmd--list-all關閉防火墻/禁止開機啟動$systemctlstopfirewalld$systemctldisablefirewalld2.1.3

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

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

2.1.4

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

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

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

1.類繼承在面向對象語言中,類繼承是面向對象程序設計不可缺少的一部分。類繼承實現(xiàn)了代碼復用,使得代碼結構更清晰。當一個類繼承另一個類,不僅可以獲取該類的一些方法,還可以在此基礎上定義自身的方法,從而能夠在已存在的類的基礎上構建一個新類。2.2.1面向對象與泛型

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

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

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

反射

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

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

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

溫馨提示

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

評論

0/150

提交評論