




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
大數(shù)據(jù)基礎(chǔ)項(xiàng)目1大數(shù)據(jù)概述項(xiàng)目2Linux操作系統(tǒng)的安裝及常用命令項(xiàng)目3Hadoop集群部署項(xiàng)目4HDFS基礎(chǔ)操作項(xiàng)目5HBase數(shù)據(jù)庫的安裝與應(yīng)用項(xiàng)目6MapReduce應(yīng)用開發(fā)項(xiàng)目7Hive數(shù)據(jù)倉庫項(xiàng)目8Flume和Sqoop的安裝與使用項(xiàng)目9數(shù)據(jù)可視化技術(shù)大數(shù)據(jù)概述項(xiàng)目1知識(shí)目標(biāo)學(xué)習(xí)目標(biāo)能力目標(biāo)(1)了解大數(shù)據(jù)的基本概念(2)掌握大數(shù)據(jù)的基本特征(3)掌握大數(shù)據(jù)處理的基本流程(4)了解大數(shù)據(jù)和云計(jì)算及物聯(lián)網(wǎng)的關(guān)系(5)掌握Hadoop生態(tài)系統(tǒng)各組件的基本功能(6)了解Hadoop在各行業(yè)的應(yīng)用(1)能夠描述大數(shù)據(jù)的基本特征(2)會(huì)復(fù)述大數(shù)據(jù)處理的基本流程(3)會(huì)復(fù)述Hadoop生態(tài)系統(tǒng)各組件的基本功能(4)能夠描述Hadoop在各行業(yè)的應(yīng)用任務(wù)1初識(shí)大數(shù)據(jù)大數(shù)據(jù)已成為社會(huì)各界研究及關(guān)注的焦點(diǎn),本任務(wù)主要學(xué)習(xí)大數(shù)據(jù)的基本概念,其中包括大數(shù)據(jù)的基本特征、大數(shù)據(jù)的影響、大數(shù)據(jù)處理的基本流程以及大數(shù)據(jù)與云計(jì)算、物聯(lián)網(wǎng)的關(guān)系。大數(shù)據(jù)(BigData),指無法在一定時(shí)間范圍內(nèi)用常規(guī)軟件工具進(jìn)行捕捉、管理和處理的數(shù)據(jù)集合,是需要新處理模式才能具有更強(qiáng)的決策力、洞察發(fā)現(xiàn)力和流程優(yōu)化能力的海量、高增長率和多樣化的信息資產(chǎn),如購物網(wǎng)站的消費(fèi)記錄,這些數(shù)據(jù)只有進(jìn)行處理整合才有意義。任務(wù)1初識(shí)大數(shù)據(jù)大數(shù)據(jù)具有如下特征:(1)數(shù)據(jù)量大(2)種類和來源多樣化(3)數(shù)據(jù)價(jià)值密度低(4)處理速度快任務(wù)1初識(shí)大數(shù)據(jù)(1)大數(shù)據(jù)對(duì)科學(xué)研究的影響(2)大數(shù)據(jù)對(duì)思維方式的影響(3)大數(shù)據(jù)對(duì)社會(huì)發(fā)展的影響(4)大數(shù)據(jù)對(duì)就業(yè)市場的影響(5)大數(shù)據(jù)對(duì)人才培養(yǎng)的影響任務(wù)1初識(shí)大數(shù)據(jù)任務(wù)1初識(shí)大數(shù)據(jù)云計(jì)算、大數(shù)據(jù)和物聯(lián)網(wǎng)三者已經(jīng)彼此滲透、相互融合,在很多應(yīng)用場合都可以同時(shí)看到三者的身影,在未來,三者會(huì)繼續(xù)相互促進(jìn)、相互影響,更好地服務(wù)于社會(huì)生產(chǎn)和生活的各個(gè)領(lǐng)域。下面總結(jié)一下三者的區(qū)別與聯(lián)系:(1)大數(shù)據(jù)、云計(jì)算和物聯(lián)網(wǎng)的區(qū)別(2)大數(shù)據(jù)、云計(jì)算和物聯(lián)網(wǎng)的聯(lián)系任務(wù)2
認(rèn)識(shí)Hadoop生態(tài)系統(tǒng)Hadoop是一個(gè)開發(fā)和運(yùn)行處理大規(guī)模數(shù)據(jù)的軟件平臺(tái),是Apache的一個(gè)用Java語言實(shí)現(xiàn)的開源軟件框架,實(shí)現(xiàn)在大量計(jì)算機(jī)組成的集群中對(duì)海量數(shù)據(jù)進(jìn)行分布式計(jì)算。下面詳細(xì)介紹一下Hadoop生態(tài)系統(tǒng)。Hadoop是一個(gè)能夠?qū)Υ罅繑?shù)據(jù)進(jìn)行分布式處理的軟件框架,具有可靠、高效、可伸縮的特點(diǎn)。Hadoop的核心是HDFS和MapReduce,Hadoop2.0還包括YARN。圖1-3所示為Hadoop生態(tài)系統(tǒng)。任務(wù)2
認(rèn)識(shí)Hadoop生態(tài)系統(tǒng)任務(wù)2
認(rèn)識(shí)Hadoop生態(tài)系統(tǒng)1.在線旅游2.移動(dòng)數(shù)據(jù)3.電子商4.能源發(fā)5.能源節(jié)省6.基礎(chǔ)設(shè)施管理7.圖像處理8.欺詐檢測9.IT安全10.醫(yī)療保健感謝觀看大數(shù)據(jù)基礎(chǔ)Linux操作系統(tǒng)的安裝及常用命令項(xiàng)目2知識(shí)目標(biāo)學(xué)習(xí)目標(biāo)能力目標(biāo)(1)掌握VirtualBox的安裝和Ubuntu系統(tǒng)的安裝方法(2)掌握FTP軟件FileZilla的安裝方法(3)掌握Windows和Linux操作系統(tǒng)之間文件的傳輸方法(4)掌握Linux系統(tǒng)常用命令的使用方法(5)掌握vim編輯器的使用方法(1)能夠安裝Linux虛擬機(jī)(2)能夠安裝FTP軟件(3)會(huì)使用FTP軟件在Windows和Linux系統(tǒng)之間傳輸文件(4)會(huì)使用Linux系統(tǒng)常用命令(5)會(huì)使用vim編輯器任務(wù)1安裝及配置Linux虛擬機(jī)Ubuntu是目前流行的Linux操作系統(tǒng),是大數(shù)據(jù)平臺(tái)必備的系統(tǒng)。本任務(wù)主要完成Ubuntu64位系統(tǒng)的安裝和網(wǎng)絡(luò)配置,并使用FTP軟件FileZilla向Ubuntu傳輸文件。開機(jī)時(shí)按F2、F12、Del、Esc等鍵就可以進(jìn)入BIOS,這就需要根據(jù)計(jì)算機(jī)的品牌和采用的BIOS才能確定到底是哪一個(gè)按鍵,當(dāng)不知道你的BIOS或者主板的型號(hào)的時(shí)候,可以上百度查找。進(jìn)入BIOS后,找到Configuration選項(xiàng)或者Security選項(xiàng),然后選擇Virtualization,如圖2-1所示,或者IntelVirtualTechnology,就可以開始操作了。任務(wù)1安裝及配置Linux虛擬機(jī)任務(wù)1安裝及配置Linux虛擬機(jī)任務(wù)1安裝及配置Linux虛擬機(jī)任務(wù)1安裝及配置Linux虛擬機(jī)任務(wù)1安裝及配置Linux虛擬機(jī)任務(wù)1安裝及配置Linux虛擬機(jī)任務(wù)1安裝及配置Linux虛擬機(jī)任務(wù)1安裝及配置Linux虛擬機(jī)任務(wù)1安裝及配置Linux虛擬機(jī)任務(wù)1安裝及配置Linux虛擬機(jī)任務(wù)1安裝及配置Linux虛擬機(jī)任務(wù)1安裝及配置Linux虛擬機(jī)任務(wù)1安裝及配置Linux虛擬機(jī)任務(wù)1安裝及配置Linux虛擬機(jī)任務(wù)1安裝及配置Linux虛擬機(jī)任務(wù)1安裝及配置Linux虛擬機(jī)任務(wù)1安裝及配置Linux虛擬機(jī)任務(wù)1安裝及配置Linux虛擬機(jī)任務(wù)1安裝及配置Linux虛擬機(jī)任務(wù)1安裝及配置Linux虛擬機(jī)任務(wù)1安裝及配置Linux虛擬機(jī)任務(wù)1安裝及配置Linux虛擬機(jī)任務(wù)1安裝及配置Linux虛擬機(jī)任務(wù)1安裝及配置Linux虛擬機(jī)任務(wù)1安裝及配置Linux虛擬機(jī)任務(wù)1安裝及配置Linux虛擬機(jī)任務(wù)1安裝及配置Linux虛擬機(jī)(1)設(shè)置網(wǎng)絡(luò)連接方式任務(wù)1安裝及配置Linux虛擬機(jī)(1)設(shè)置網(wǎng)絡(luò)連接方式任務(wù)1安裝及配置Linux虛擬機(jī)(1)設(shè)置網(wǎng)絡(luò)連接方式任務(wù)1安裝及配置Linux虛擬機(jī)(1)設(shè)置網(wǎng)絡(luò)連接方式任務(wù)1安裝及配置Linux虛擬機(jī)(1)設(shè)置網(wǎng)絡(luò)連接方式任務(wù)1安裝及配置Linux虛擬機(jī)1.Ubuntu中Eclipse安裝與配置安裝Eclipse有三種方式:第一種是通過Ubuntu自帶的程序安裝功能安裝Eclipse,應(yīng)用程序→Ubuntu軟件中心,搜索Eclipse安裝即可。第二種方法是用命令:應(yīng)用程序→附件→終端,然后輸入相應(yīng)命令行。第三種是進(jìn)入官網(wǎng)下載。本教材采用第二種方式進(jìn)行安裝,按鍵盤上的“Ctrl+Alt+T”打開終端,輸入:Sudoapt-getinstalleclipsesudoapt-getinstalleclipse-pdesudoapt-getinstalleclipse-jdt任務(wù)1安裝及配置Linux虛擬機(jī)2.Ubuntu安裝MySQL在Ubuntu上安裝MySQL非常簡單,只需要幾條命令就可以完成。(1)sudoapt-getinstallmysql-server(2)apt-getinstallmysql-client(3)sudoapt-getinstalllibmysqlclient-dev任務(wù)1安裝及配置Linux虛擬機(jī)2.Ubuntu安裝MySQL任務(wù)2Linux系統(tǒng)常用命令1.使用pwd命令2.使用cd命令3.使用ls命令4.使用cat命令5.使用mkdir命令6.使用cp命令7.使用rm命令8.使用mv命令9.使用tar文件解壓縮命令任務(wù)2Linux系統(tǒng)常用命令vim編輯器是Linux系統(tǒng)上著名的文本/代碼編輯器,是vi編輯器的加強(qiáng)版,可以幫助我們完成文件的創(chuàng)建和代碼的編寫。默認(rèn)情況下,Linux系統(tǒng)中已安裝好vim編輯器。如果未安裝,可以在系統(tǒng)中打開終端,執(zhí)行下面命令完成:sudoapt-getinstallvim執(zhí)行上面命令以后,如果屏幕上出現(xiàn)信息要求進(jìn)行確認(rèn),在提示處輸入“y”即可。感謝觀看大數(shù)據(jù)基礎(chǔ)Hadoop集群部署項(xiàng)目3知識(shí)目標(biāo)學(xué)習(xí)目標(biāo)能力目標(biāo)(1)掌握Hadoop的安裝(2)掌握Hadoop的配置(3)掌握Hadoop的啟動(dòng)和Web監(jiān)控(4)掌握wordcount實(shí)例(1)能夠安裝Hadoop(2)能夠配置Hadoop偽分布模式集群(3)能夠啟動(dòng)Hadoop和使用Web監(jiān)控集群(4)能夠使用Hadoop附帶的實(shí)例wordcount任務(wù)1Hadoop安裝與配置Hadoop是大數(shù)據(jù)發(fā)展的領(lǐng)軍平臺(tái),應(yīng)該說是Hadoop把大數(shù)據(jù)推上高潮的,所以要學(xué)習(xí)大數(shù)據(jù),就應(yīng)該從Hadoop開始。本任務(wù)通過在Ubuntu系統(tǒng)上搭建Hadoop環(huán)境,對(duì)配置好的環(huán)境進(jìn)行測試。第一步:按Ctrl+Alt+T打開終端窗口,輸入如下命令創(chuàng)建新用戶:sudouseradd-mhadoop-s/bin/bash這條命令創(chuàng)建了可以登錄的hadoop用戶,并使用/bin/bash作為shell任務(wù)1Hadoop安裝與配置第二步:接著使用如下命令設(shè)置密碼,可簡單設(shè)置為hadoop,按提示輸入兩次密碼:sudopasswdhadoop可為hadoop用戶增加管理員權(quán)限,以方便部署,避免一些權(quán)限問題:sudoadduserhadoopsudo第三步:注銷當(dāng)前用戶(單擊屏幕右上角的齒輪,選擇注銷),返回登錄界面。在登錄界面中選擇剛創(chuàng)建的hadoop用戶進(jìn)行登錄。第四步:用hadoop用戶登錄后,更新一下apt,后續(xù)我們使用apt安裝軟件,如果沒更新可能有一些軟件安裝不了。按Ctrl+Alt+T打開終端窗口,執(zhí)行如下命令:sudoapt-getupdate任務(wù)1Hadoop安裝與配置集群、單節(jié)點(diǎn)模式都需要用到SSH登錄(類似于遠(yuǎn)程登錄,可以登錄某臺(tái)Linux主機(jī),并且在上面運(yùn)行命令)。下面安裝SSH,配置SSH無密碼登錄。第一步:在終端輸入如下命令,安裝SSHserver:sudoapt-getinstallopenssh-server第二步:使用如下命令登錄本機(jī):sshlocalhost此時(shí)會(huì)有提示(SSH首次登錄提示),輸入yes。然后按提示輸入密碼hadoop,這樣就登錄到本機(jī)了。任務(wù)1Hadoop安裝與配置第三步:退出剛才的SSH,回到原先的終端窗口,然后利用ssh-keygen生成密鑰,并將密鑰加入授權(quán)中:exit#退出剛才的sshlocalhostcd~/.ssh/#若沒有該目錄,請(qǐng)先執(zhí)行一次sshlocalhostssh-keygen-trsa#會(huì)有提示,都按Enter鍵就可以cat./id_rsa.pub>>./authorized_keys#加入授權(quán)用sshlocalhost命令,這時(shí)無須輸入密碼就可以直接登錄了,如圖3-1所示。任務(wù)1Hadoop安裝與配置任務(wù)1Hadoop安裝與配置第一步:輸入如下命令,安裝java-jdk:sudoapt-getinstalldefault-jredefault-jdk上述安裝過程需要訪問網(wǎng)絡(luò)下載相關(guān)文件,請(qǐng)保持聯(lián)網(wǎng)狀態(tài)。第二步:配置JAVA_HOME環(huán)境變量,在Linux終端中輸入如下命令,打開當(dāng)前登錄用戶的環(huán)境變量配置文件.bashrc:vim~/.bashrc在文件最前面添加如下單獨(dú)一行(注意,“=”前后不能有空格),然后保存退出:exportJAVA_HOME=/usr/lib/jvm/default-java任務(wù)1Hadoop安裝與配置第三步:執(zhí)行如下命令,讓環(huán)境變量立即生效:source~/.bashrc#使變量設(shè)置生效第四步:執(zhí)行如下命令,檢驗(yàn)一下是否設(shè)置正確:echo$JAVA_HOME#檢驗(yàn)變量值java-version$JAVA_HOME/bin/java-version#與直接執(zhí)行java-version一樣至此,就成功安裝了Java環(huán)境。下面就可以進(jìn)入Hadoop的安裝。任務(wù)1Hadoop安裝與配置第一步:Hadoop安裝包下載,本教材采用的是hadoop-2.6.0,下載完存放在~/下載/目錄下。第二步:Hadoop安裝包解壓,輸入如下命令,將Hadoop安裝至/usr/local/中。sudotar-zxf~/下載/hadoop-2.6.0.tar.gz-C/usr/localcd/usr/local/sudomv./hadoop-2.6.0/./hadoop#將文件夾名改為hadoopsudochown-Rhadoop./hadoop#修改文件權(quán)限第三步:輸入如下命令,將Hadoop安裝目錄添加到系統(tǒng)環(huán)境變量(~/.bashrc)中。vim~/.bashrc在文件最前面添加如下兩行,并在exportPATH=$PATH:的后面添加“/usr/任務(wù)1Hadoop安裝與配置local/hadoop/bin:/usr/local/hadoop/sbin”,然后保存退出。exportHADOOP_HOME=/usr/local/hadoopexportHADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native執(zhí)行source~/.bashrc使變量設(shè)置生效。第四步:檢查Hadoop是否可用,輸入如下命令,如果Hadoop安裝成功,則會(huì)顯示Hadoop版本信息。cd/usr/local/hadoop./bin/hadoopversion任務(wù)1Hadoop安裝與配置偽分布模式是指在一臺(tái)機(jī)器上啟動(dòng)Hadoop需要的所有進(jìn)程進(jìn)行工作。該節(jié)點(diǎn)既作為NameNode也作為DataNode,同時(shí),讀取的是HDFS中的文件。偽分布模式需要修改core-site.xml和hdfs-site.xml兩個(gè)配置文件,這兩個(gè)文件均位于/usr/local/hadoop/etc/hadoop/中。第一步:配置hadoop核心文件core-site.xml。第二步:修改HDFS文件hdfs-site.xml。第三步:將mapred-site.xml.template修改為mapred-site.xml第四步:配置YARN文件yarn.xm。任務(wù)2Hadoop的啟動(dòng)和測試本任務(wù)主要學(xué)習(xí)格式化NameNode,啟動(dòng)HDFS和YARN,測試HDFS和YARN是否啟動(dòng)成功,學(xué)習(xí)用Web界面監(jiān)控Hadoop集群。(1)格式化NameNode./bin/hdfsnamenode-format說明:格式化NameNode只有第一次才使用,如果對(duì)已有的集群做格式化操作,集群上的數(shù)據(jù)會(huì)全部丟失。(2)啟動(dòng)HDFS./sbin/start-dfs.sh啟動(dòng)完成后,可以通過命令jps來判斷是否成功,若成功啟動(dòng)則會(huì)列出如下進(jìn)程“NameNode”“DataNode”和“SecondaryNameNode”,如圖3-2所示。任務(wù)2Hadoop的啟動(dòng)和測試任務(wù)2Hadoop的啟動(dòng)和測試任務(wù)2Hadoop的啟動(dòng)和測試(3)啟動(dòng)YARN任務(wù)2Hadoop的啟動(dòng)和測試(3)啟動(dòng)YARN任務(wù)3Hadoop偽分布模式實(shí)例Hadoop附帶了豐富的例子(運(yùn)
./bin/hadoopjar./share/hadoop/mapreduce/hadoop-mapreduce-examples-2.6.0.jar可以看到所有例子),包括wordcount、terasort、join、grep等。我們選擇運(yùn)行wordcount例子,將input文件夾中的hello.txt作為輸入文件,統(tǒng)計(jì)每個(gè)單詞出現(xiàn)的次數(shù),最后輸出結(jié)果到output文件夾中。hello.txt內(nèi)容:hellowordhellohadoophellowelcomehadoop第一步:在HDFS中創(chuàng)建用戶目錄和輸入文件目錄。第二步:將/usr/local/hadoop/data/input/hello.txt作為輸入文件復(fù)制到分布式文件系統(tǒng)/user/hadoop/input/目錄中。任務(wù)3Hadoop偽分布模式實(shí)例第三步:通過如下命令查看文件列表。第四步:執(zhí)行jar程序,完成單詞統(tǒng)計(jì)。第五步:查看運(yùn)行結(jié)果,如圖3-6所示。感謝觀看大數(shù)據(jù)基礎(chǔ)HDFS基礎(chǔ)操作項(xiàng)目4知識(shí)目標(biāo)學(xué)習(xí)目標(biāo)能力目標(biāo)(1)了解HDFS的相關(guān)概念(2)掌握HDFS的工作原理(3)掌握HDFS的Shell操作(4)掌握HDFS中的API編程(1)會(huì)描述HDFS中的名稱節(jié)點(diǎn)、數(shù)據(jù)節(jié)點(diǎn)等基本概念(2)能復(fù)述HDFS的工作原理(3)能夠使用Shell命令操作HDFS文件和目錄(4)能夠編寫簡單的Java應(yīng)用程序?qū)DFS文件和目錄進(jìn)行操作任務(wù)1
認(rèn)識(shí)HDFSHDFS是HadoopDistributedFileSystem的簡稱,是Hadoop抽象文件系統(tǒng)的一種實(shí)現(xiàn)。本任務(wù)需要掌握HDFS工作原理以及常用的Shell命令。HDFS的文件分布在集群機(jī)器上,如圖4-1所示,同時(shí)提供副本進(jìn)行容錯(cuò)及可靠性保證。例如客戶端寫入、讀取文件的直接操作都是分布在集群各個(gè)機(jī)器上的,沒有單點(diǎn)性能壓力。任務(wù)1
認(rèn)識(shí)HDFS1.設(shè)計(jì)原則(1)適用場景●存儲(chǔ)非常大的文件●采用流式的數(shù)據(jù)訪問方式●運(yùn)行于商業(yè)硬件上任務(wù)1
認(rèn)識(shí)HDFS1.設(shè)計(jì)原則(2)不適用場景●低延時(shí)的數(shù)據(jù)訪問●大量小文件●多方讀寫,需要任意的文件修改任務(wù)1
認(rèn)識(shí)HDFS2.存儲(chǔ)原理分布式文件系統(tǒng)管理的文件是被切塊存儲(chǔ)在若干臺(tái)datanode服務(wù)器上的。分布式文件系統(tǒng)在物理結(jié)構(gòu)上是由計(jì)算機(jī)集群中的多個(gè)節(jié)點(diǎn)構(gòu)成的,這些節(jié)點(diǎn)分為兩類,一類叫“主節(jié)點(diǎn)”(MasterNode)或者也被稱為“名稱節(jié)點(diǎn)”(NameNode),另一類叫“從節(jié)點(diǎn)”(SlaveNode)或者也被稱為“數(shù)據(jù)節(jié)點(diǎn)”(DataNode)。HDFS提供了一個(gè)統(tǒng)一的目錄樹來定位HDFS中的文件,客戶端訪問文件時(shí)只要指定目錄樹的路徑即可,不用關(guān)心文件的具體物理位置。任務(wù)1
認(rèn)識(shí)HDFS2.存儲(chǔ)原理任務(wù)1
認(rèn)識(shí)HDFS2.存儲(chǔ)原理任務(wù)1
認(rèn)識(shí)HDFS任務(wù)1
認(rèn)識(shí)HDFS任務(wù)2
上傳文件到HDFS目錄本節(jié)的任務(wù)是把存儲(chǔ)在本地系統(tǒng)中原始數(shù)據(jù)myfile.txt上傳到Hadoop偽分布集群中的HDFS目錄user/hadoop/input中。要完成本任務(wù),必須要對(duì)HDFS文件系統(tǒng)有一定的了解,需要在HDFS中為hadoop用戶創(chuàng)建一個(gè)目錄,才能完成相應(yīng)的操作。任務(wù)2
上傳文件到HDFS目錄1.創(chuàng)建目錄user/hadoop/input任務(wù)2
上傳文件到HDFS目錄創(chuàng)建了新目錄/user/hadoop/input后,接下來要向這個(gè)目錄上傳文件,可以查看hdfsdfs的命令幫助,發(fā)現(xiàn)HDFS上傳文件的命令主要有以下幾個(gè):[-copyFromLocal[-f][-p][-l]<localsrc>...<dst>][-moveFromLocal<localsrc>...<dst>][-put<localsrc>...<dst>]主要參數(shù)<localsrc>為本地文件路徑,<dst>為上傳的目標(biāo)路徑。任務(wù)2
上傳文件到HDFS目錄任務(wù)2
上傳文件到HDFS目錄通過查看hdfsdfs的命令幫助,發(fā)現(xiàn)HDFS查看文件內(nèi)容的命令主要有cat和text命令。其命令格式如下:[-cat[-p][-ignoreCrc]<src>...][-text[-p][-ignoreCrc]<src>...]其中<src>為HDFS文件系統(tǒng)路徑。這里只演示cat命令,text命令讀者可以自己動(dòng)手操作。例如需要查看4.2.2中上傳的myfile.txt文件的內(nèi)容時(shí),可以輸入如下命令:./bin/hdfsdfs-catinput/myfile.txt任務(wù)2
上傳文件到HDFS目錄在HDFS中刪除文件或目錄所使用的命令有區(qū)別,一個(gè)是rm命令,一個(gè)是rm-r命令。刪除指定文件或空目錄使用rm命令,遞歸刪除指定目錄下的所有目錄和文件使用rm-r命令。例如:刪除input命令下的myfile.txt文件可以輸入如下命令,然后通過ls命令驗(yàn)證是否刪除。./bin/hdfsdfs-rminput/myfile.txt運(yùn)行結(jié)果如圖4-10所示。任務(wù)2
上傳文件到HDFS目錄任務(wù)3
編寫HDFS程序HDFS除了使用Shell命令的方式訪問HDFS上的數(shù)據(jù),Hadoop還為其提供了JavaAPI的方式來操作HDFS上的數(shù)據(jù)。在實(shí)際開發(fā)大數(shù)據(jù)應(yīng)用時(shí)都是以代碼的方式來提供交互的,所以通過使用JavaAPI編程的方式來操作HDFS數(shù)據(jù)也必須要掌握。本任務(wù)需要通過JavaAPI編寫向HDFS中讀寫文件以及判斷HDFS中文件是否存在,并通過編譯和安裝部署應(yīng)用程序。任務(wù)3
編寫HDFS程序1.創(chuàng)建項(xiàng)目編寫程序之前首先要?jiǎng)?chuàng)建Java項(xiàng)目,本教材使用的都是Eclipse集成環(huán)境,如果系統(tǒng)未安裝,需要在Linux系統(tǒng)中安裝Eclipse。第一次打開Eclipse,需要填寫Workspace(工作空間),用來保存程序所在的位置。任務(wù)3
編寫HDFS程序任務(wù)3
編寫HDFS程序任務(wù)3
編寫HDFS程序任務(wù)3
編寫HDFS程序2在項(xiàng)目中添加相應(yīng)的JAR包任務(wù)3
編寫HDFS程序2在項(xiàng)目中添加相應(yīng)的JAR包任務(wù)3
編寫HDFS程序2在項(xiàng)目中添加相應(yīng)的JAR包任務(wù)3
編寫HDFS程序3.編寫應(yīng)用程序任務(wù)3
編寫HDFS程序3.編寫應(yīng)用程序任務(wù)3
編寫HDFS程序3.編寫應(yīng)用程序任務(wù)3
編寫HDFS程序4.編譯運(yùn)行程序在開始編譯運(yùn)行程序之前,請(qǐng)一定確保Hadoop已經(jīng)啟動(dòng)運(yùn)行,如果還沒有啟動(dòng),則需要打開一個(gè)Linux終端,輸入以下命令啟動(dòng)Hadoop:cd/usr/local/hadoop./sbin/start-dfs.sh現(xiàn)在就可以編譯運(yùn)行上面編寫的代碼。可以直接單擊Eclipse工作界面上部的運(yùn)行程序的快捷按鈕,當(dāng)把鼠標(biāo)移動(dòng)到該按鈕上時(shí),在彈出的菜單中選擇“Run”開始運(yùn)行程序。程序運(yùn)行結(jié)束后,會(huì)在底部的“Console”面板中顯示運(yùn)行結(jié)果信息,顯示README.txt文件的內(nèi)容,如圖4-21所示。同時(shí),“Console”面板中還會(huì)顯示一些類似“l(fā)og4j:WARN...”的警告信息。任務(wù)3
編寫HDFS程序5.部署應(yīng)用程序把Java應(yīng)用程序生成JAR包,部署到Hadoop平臺(tái)上運(yùn)行,首先需要在Hadoop安裝目錄下新建一個(gè)存放的JAR包目錄HDFSJavaAPP,用來存放編寫的Hadoop應(yīng)用程序,可以在Linux的終端中執(zhí)行如下命令:cd/usr/local/hadoopmkdirHDFSJavaAPP然后,請(qǐng)?jiān)贓clipse工作界面左側(cè)的“PackageExplorer”面板中,在工程名稱“HDFSReadFile”上右擊,在彈出的菜單中選擇“Export”,在彈出的窗口中選擇“RunnableJARfile”,如圖4-22所示。然后,單擊“Next”按鈕。任務(wù)3
編寫HDFS程序任務(wù)3
編寫HDFS程序任務(wù)3
編寫HDFS程序任務(wù)3
編寫HDFS程序任務(wù)3
編寫HDFS程序publicclassHDFSWriteFile{ publicstaticvoidmain(String[]args){ try{ Configurationconf=newConfiguration(); conf.set(″fs.defaultFS″,″hdfs://localhost:9000″); conf.set(″fs.hdfs.impl″,″org.apache.hadoop.hdfs.DistributedFileSystem″); FileSystemfs=FileSystem.get(conf); byte[]buff=″Helloworld″.getBytes();//要寫入的內(nèi)容 Stringfilename=″test″;//要寫入的文件名 FSDataOutputStreamos=fs.create(newPath(filename)); os.write(buff,0,buff.length); System.out.println(″Create:″+filename);
任務(wù)3
編寫HDFS程序 os.close(); fs.close(); }catch(Exceptione){ e.printStackTrace(); } }}任務(wù)3
編寫HDFS程序按照4.3.1中的方法在Eclipse中添加項(xiàng)目FileIfExists,添加程序所需要的JAR包。在FileIfExists中新建類FileIfExists,編寫如下代碼:importorg.apache.hadoop.conf.Configuration;importorg.apache.hadoop.fs.FileSystem;importorg.apache.hadoop.fs.Path;importjava.util.Scanner;publicclassFileIfExists{publicstaticvoidmain(String[]args){ try{ System.out.println(″請(qǐng)輸入文件名件名:″); Scannerscan=newScanner(System.in); Stringfilename=scan.nextLine();
任務(wù)3
編寫HDFS程序 Configurationconf=newConfiguration(); conf.set(″fs.defaultFS″,″hdfs://localhost:9000″); conf.set(″fs.hdfs.impl″,″org.apache.hadoop.hdfs.DistributedFileSystem″); FileSystemfs=FileSystem.get(conf); if(fs.exists(newPath(filename))){ System.out.println(″文件存在″); }else{ System.out.println(″文件不存在″); } fs.close(); }catch(Exceptione){ e.printStackTrace(); } }}感謝觀看大數(shù)據(jù)基礎(chǔ)HBase數(shù)據(jù)庫的安裝與應(yīng)用項(xiàng)目5知識(shí)目標(biāo)學(xué)習(xí)目標(biāo)能力目標(biāo)(1)了解HBase數(shù)據(jù)庫的特點(diǎn)(2)熟悉HBase邏輯視圖、概念視圖和物理視圖的關(guān)系(3)掌握HBase體系架構(gòu)(4)掌握HBaseShell常用命令(5)掌握HBaseAPI編程(1)能夠安裝部署HBase分布式數(shù)據(jù)庫系統(tǒng)(2)能夠使用HBaseShell命令創(chuàng)建、修改和刪除表(3)能夠使用HBaseShell命令插入和刪除數(shù)據(jù)(4)能夠使用HBaseAPI完成對(duì)HBase的編程任務(wù)1
認(rèn)識(shí)HBaseHBase是一個(gè)分布式的、面向列的開源數(shù)據(jù)庫,是一種比較流行的NoSQL數(shù)據(jù)庫,由Google的Bigtable演變而來。HBase在Hadoop上提供了類似Bigtable的能力,主要解決非關(guān)系型數(shù)據(jù)庫存儲(chǔ)問題,本任務(wù)主要學(xué)習(xí)HBase的特點(diǎn)、邏輯視圖、概念視圖、物理視圖,深刻理解HBase的體系架構(gòu)等基本概念。任務(wù)1
認(rèn)識(shí)HBaseHBase是一種構(gòu)建在HDFS之上的分布式、面向列、多版本、非關(guān)系型的數(shù)據(jù)庫。HBase具有如下特點(diǎn):大:一個(gè)表可以有上億行,上百萬列。面向列:面向列(組)的存儲(chǔ)和權(quán)限控制,列(組)獨(dú)立檢索。稀疏:對(duì)于為空(NULL)的列,并不占用存儲(chǔ)空間,因此,表可以設(shè)計(jì)得非常稀疏。無模式:每一行都有一個(gè)可以排序的主鍵和任意多的列,列可以根據(jù)需要?jiǎng)討B(tài)增加,同一張表中不同的行可以有截然不同的列。數(shù)據(jù)多版本:每個(gè)單元中的數(shù)據(jù)可以有多個(gè)版本,默認(rèn)情況下,版本號(hào)自動(dòng)分配,版本號(hào)就是單元格插入時(shí)的時(shí)間戳。數(shù)據(jù)類型單一:HBase中的數(shù)據(jù)都是字符串,沒有類型,存儲(chǔ)在HBase上的都是字節(jié)數(shù)組。任務(wù)1
認(rèn)識(shí)HBase1.HBase邏輯視圖HBase是一個(gè)稀疏、多維度、排序的映射表,這張表的索引是行鍵、列族、列限定符和時(shí)間戳。每一個(gè)值都是一個(gè)未經(jīng)解釋的字符串,沒有任何數(shù)據(jù)類型。以表的形式存儲(chǔ)數(shù)據(jù),表由行和列組成。列劃分為若干個(gè)列族,如圖5-1所示。任務(wù)1
認(rèn)識(shí)HBase2.概念視圖任務(wù)1
認(rèn)識(shí)HBase3.物理視圖任務(wù)1
認(rèn)識(shí)HBase3.物理視圖任務(wù)1
認(rèn)識(shí)HBaseHBase是基于Hadoop的開源分布式數(shù)據(jù)庫。體系架構(gòu)為master/slave架構(gòu)。主節(jié)點(diǎn)運(yùn)行的服務(wù)稱為HMaster,從節(jié)點(diǎn)服務(wù)稱為HRegionServer,底層采用HDFS存儲(chǔ)數(shù)據(jù)。HMaster負(fù)責(zé)管理多個(gè)HRegionServer、恢復(fù)HReigionServer故障等。HRegionServer負(fù)責(zé)多個(gè)區(qū)域的管理及相應(yīng)客戶端請(qǐng)求。HRegionServer還負(fù)責(zé)區(qū)域劃分并通知HMster有了新的子區(qū)域。HBase需要ZooKeeper集群服務(wù),默認(rèn)情況下,它管理一個(gè)ZooKeeper實(shí)例,作為“權(quán)威機(jī)構(gòu)”。ZooKeeper會(huì)記錄HMaster位置、根目錄表位置等核心數(shù)據(jù),此時(shí)若有HRegionServer崩潰,就可以通過ZooKeeper來進(jìn)行分配協(xié)調(diào)。此外,當(dāng)HBaseClient連接到HBase時(shí),其必須首先訪問ZooKeeper,在獲取HMaster、HRegionServer、-ROOT-等核心數(shù)據(jù)后,方可連接到HRegionServer,如圖5-2所示。任務(wù)1
認(rèn)識(shí)HBase任務(wù)2HBase開發(fā)環(huán)境安裝與配置第一步:從官網(wǎng)上下載安裝包hbase-1.1.5-bin.tar.gz,并通過上傳軟件上傳至相應(yīng)目錄,解壓至路徑/usr/local,命令如下:sudotar-zxf~/下載/hbase-1.1.5-bin.tar.gz-C/usr/local第二步:將解壓的文件名hbase-1.1.5改為hbase,以方便使用,命令如下:sudomv/usr/local/hbase-1.1.5/usr/local/hbase第三步:配置環(huán)境變量,將hbase目錄下的bin目錄添加到PATH中,這樣,啟動(dòng)HBase就無須到usr/local/hbase目錄下,大大地方便了HBase的使用。下面的部分還是切換到了/usr/local/hbase目錄操作,有助于初學(xué)者理解運(yùn)行過程,熟練之后可以不必切換。任務(wù)2HBase開發(fā)環(huán)境安裝與配置任務(wù)2HBase開發(fā)環(huán)境安裝與配置第四步:添加HBase權(quán)限,在終端輸入如下命令:cd/usr/localsudochown-Rhadoop./hbase#將hbase目錄下的所有文件的所有者改為hadoop,hadoop是當(dāng)前用戶的用戶名第五步:查看HBase版本,確定HBase安裝成功與否,若成功則在終端輸入如下命令:./hbase/bin/hbaseversion命令執(zhí)行后,出現(xiàn)如圖5-4所示輸出消息,表示HBase已經(jīng)安裝成功。任務(wù)2HBase開發(fā)環(huán)境安裝與配置任務(wù)2HBase開發(fā)環(huán)境安裝與配置第六步:配置hbase-env.sh文件,hbase-env位于/usr/local/hbase/conf/目錄下。配置Java環(huán)境變量,并添加配置HBASE_MANAGES_ZK為true,用vim命令打開并編輯hbase-env.sh,命令如下:vi/usr/local/hbase/conf/hbase-env.sh任務(wù)2HBase開發(fā)環(huán)境安裝與配置HBase偽分布模式與單機(jī)模式一樣也是在單個(gè)主機(jī)上運(yùn)行的,分別是HMaster、HRegionServer和ZooKeeper,和單機(jī)模式不同的是,它們均在單獨(dú)的進(jìn)程中,偽分布模式下每個(gè)HBase守護(hù)進(jìn)程會(huì)作為一個(gè)獨(dú)立的進(jìn)程運(yùn)行。其具體操作如下:第一步:配置hbase-env.sh文件,配置JAVA_HOME,HBASE_CLASSPATH,HBASE_MANAGES_ZK。hbase-env.sh文件位于/usr/local/hbase/conf/目錄下。在終端輸入如下命令:vim/usr/local/hbase/conf/hbase-env.sh任務(wù)2HBase開發(fā)環(huán)境安裝與配置第二步:配置hbase-site.xml文件,該文件位于/usr/local/hbase/conf/目錄下,用vim命令打開并編輯hbase-site.xml,在終端輸入如下命令:vim/usr/local/hbase/conf/hbase-site.xml第三步:啟動(dòng)Hadoop。首先登錄SSH,再切換目錄至/usr/local/hadoop,再啟動(dòng)Hadoop。第四步:測試運(yùn)行HBase。第五步:在HDFS中檢查HBase文件。第六步:進(jìn)入HBaseShell界面。任務(wù)3
使用HBaseShell管理分布式數(shù)據(jù)庫任務(wù)3
使用HBaseShell管理分布式數(shù)據(jù)庫任務(wù)3
使用HBaseShell管理分布式數(shù)據(jù)庫任務(wù)3
使用HBaseShell管理分布式數(shù)據(jù)庫1.HBase中創(chuàng)建表創(chuàng)建表語法:create'表名','列名稱1','列名稱2',...,'列名稱N'查看表結(jié)構(gòu)語法:describe'表名'其中,表名、列名都必須要用單引號(hào)括起來并用逗號(hào)分隔,以下相同。案例1:在HBase中用create命令創(chuàng)建表student,列族為Sname、Ssex、Sage、Sdept、course并查看表的結(jié)構(gòu)。命令:create'student','Sname','Ssex','Sage','Sdept','course'任務(wù)3
使用HBaseShell管理分布式數(shù)據(jù)庫2.添加數(shù)據(jù)HBase中用put命令添加數(shù)據(jù),注意:一次只能為一個(gè)表的一行數(shù)據(jù)的一個(gè)列,也就是一個(gè)單元格添加一個(gè)數(shù)據(jù),所以直接用Shell命令插入數(shù)據(jù)效率很低,在實(shí)際應(yīng)用中,一般都是利用編程操作數(shù)據(jù)。添加數(shù)據(jù)語法:put'表名','行鍵','列鍵','值','時(shí)間戳‘命令:put'student','95001','course:math','80'任務(wù)3
使用HBaseShell管理分布式數(shù)據(jù)庫3.獲取數(shù)據(jù)get用于獲取行的所有單元或者指定某個(gè)單元。語法如下:get'表名','行鍵',{COLUMNS=>['列族名1','列族名2',...],參數(shù)名=>參數(shù)值...}get'表名','行鍵',{COLUMN=>['列族名1','列族名2',...],參數(shù)名=>參數(shù)值...}任務(wù)3
使用HBaseShell管理分布式數(shù)據(jù)庫4.掃描表scan用于進(jìn)行全表單元掃描。語法如下:scan'表名',{COLUMNS=>['列族名1','列族名2',...],參數(shù)名=>參數(shù)值...}大括號(hào)內(nèi)的內(nèi)容為掃描條件,如不指定則查詢所有數(shù)據(jù)。與get相比少了一個(gè)行鍵。scan查找的目標(biāo)是全表的某個(gè)列族、列鍵,而get查找的目標(biāo)是某個(gè)列族、列鍵。任務(wù)3
使用HBaseShell管理分布式數(shù)據(jù)庫5.刪除數(shù)據(jù)在HBase中用delete以及deleteall命令進(jìn)行刪除數(shù)據(jù)操作,它們的區(qū)別是:delete用于刪除一個(gè)數(shù)據(jù),是put的反向操作。deleteall操作用于刪除一行數(shù)據(jù)。刪除行中的某個(gè)列值語法:delete'表名','行鍵','列鍵','時(shí)間戳'刪除行語法:deleteall'表名','行鍵','時(shí)間戳'任務(wù)3
使用HBaseShell管理分布式數(shù)據(jù)庫6.刪除表HBase表分為兩種狀態(tài):Enabled和Disabled,分別表示可用和不可用。刪除表需要兩步,第一步先讓該表不可用,第二步刪除表。使表無效語法:disable'表名'刪除表語法:drop'表名'任務(wù)3
使用HBaseShell管理分布式數(shù)據(jù)庫7.查詢表歷史數(shù)據(jù)在添加數(shù)據(jù)時(shí),HBase會(huì)自動(dòng)為添加的數(shù)據(jù)添加一個(gè)時(shí)間戳,故在需要修改數(shù)據(jù)時(shí),只需直接添加數(shù)據(jù),HBase即會(huì)生成一個(gè)新的版本,從而完成“改”操作,舊的版本依舊保留,系統(tǒng)會(huì)定時(shí)回收垃圾數(shù)據(jù),只留下最新的幾個(gè)版本,保存的版本數(shù)可以在創(chuàng)建表的時(shí)候指定。查詢表的歷史版本,需要兩步。第一步:在創(chuàng)建表的時(shí)候,指定保存的版本數(shù),插入數(shù)據(jù)然后更新數(shù)據(jù),使其產(chǎn)生歷史版本數(shù)據(jù)。注意:這里插入數(shù)據(jù)和更新數(shù)據(jù)都是用put命令。第二步:查詢時(shí),指定查詢的歷史版本數(shù)。默認(rèn)會(huì)查詢出最新的數(shù)據(jù)。任務(wù)3
使用HBaseShell管理分布式數(shù)據(jù)庫8.退出HBase數(shù)據(jù)庫表操作最后退出數(shù)據(jù)庫操作,輸入exit命令即可,注意:這里退出HBase數(shù)據(jù)庫是退出對(duì)數(shù)據(jù)庫表的操作,而不是停止啟動(dòng)HBase數(shù)據(jù)庫后臺(tái)運(yùn)行。命令:exit掌握了以上命令,我們就可以對(duì)HBase數(shù)據(jù)庫表進(jìn)行基本的管理了,對(duì)數(shù)據(jù)表進(jìn)行增加、刪除、修改和查詢操作。而對(duì)于表單元的修改實(shí)質(zhì)上是增加操作,HBase保留了單元的多個(gè)版本,默認(rèn)查詢最新版本。任務(wù)4HBase編程HBase是用Java編寫的,因此它提供JavaAPI和HBase通信。JavaAPI是與HBase通信的最快方法。HBase的JavaAPI可以讓我們?cè)贗DE環(huán)境下對(duì)HBase進(jìn)行編程,首先需要完成Eclipse下的HBase編程環(huán)境配置,然后結(jié)合HBase相關(guān)JavaAPI開發(fā)HBase應(yīng)用程序。HBase編程環(huán)境依賴HBase、Hadoop、ZooKeeper及其他第三方相關(guān)jar文件。第一步:啟動(dòng)Hadoop,啟動(dòng)HBase。在終端輸入如下命令:cd/usr/local/hadoop./sbin/start-dfs.shcd/usr/local/hbase./bin/start-hbase.sh任務(wù)4HBase編程第二步:創(chuàng)建普通Java工程。打開Eclipse,新建Java工程,如圖5-25所示,然后單擊“Next”按鈕。任務(wù)4HBase編程第三步:導(dǎo)入jar包到工程,構(gòu)成路徑。任務(wù)4HBase編程第四步:編寫代碼。任務(wù)4HBase編程下面給出HBase數(shù)據(jù)庫存儲(chǔ)管理提供的主要類,涵蓋用于管理表的任務(wù)。HBaseAdmin、HBaseConfiguration、Connection、HTable、HTableDescriptor、Put、Get、Scanner。任務(wù)4HBase編程感謝觀看大數(shù)據(jù)基礎(chǔ)MapReduce應(yīng)用開發(fā)項(xiàng)目6知識(shí)目標(biāo)學(xué)習(xí)目標(biāo)能力目標(biāo)(1)了解MapReduce的概念(2)掌握MapReduce編程模型(3)掌握MapReduce工作流程(4)掌握MapReduce數(shù)據(jù)類型(5)掌握Hadoop-Eclipse-Plugin插件的安裝(6)掌握MapReduce環(huán)境的配置(7)掌握英語單詞統(tǒng)計(jì)程序的編寫(8)掌握氣象數(shù)據(jù)分析程序的編寫(1)能夠復(fù)述MapReduce數(shù)據(jù)模型和工作流程(2)能夠復(fù)述MapReduce數(shù)據(jù)類型(3)能夠安裝Hadoop-Eclipse-Plugin插件(4)能夠配置MapReduce環(huán)境(5)能夠編寫英語單詞統(tǒng)計(jì)程序(6)能夠編寫氣象數(shù)據(jù)分析程序任務(wù)1
認(rèn)識(shí)MapReduce編程模型MapReduce是Hadoop生態(tài)系統(tǒng)的核心組件,要運(yùn)用MapReduce進(jìn)行編程,就必須掌握MapReduce編程模型。本任務(wù)主要學(xué)習(xí)什么是MapReduce,MapReduce是用來做什么的,MapReduce設(shè)計(jì)理念及優(yōu)缺點(diǎn),MapReduce編程模型和數(shù)據(jù)類型。任務(wù)1
認(rèn)識(shí)MapReduce編程模型MapReduce是一個(gè)編程模型,是Google提出的,基于該模型能夠容易地編寫應(yīng)用程序,這些應(yīng)用程序能夠運(yùn)行在由上千個(gè)商用機(jī)器組成的大集群上,并以一種可靠的、具有容錯(cuò)能力的方式并行地處理上TB級(jí)別的海量數(shù)據(jù)集。主要用于搜索領(lǐng)域,解決離線海量數(shù)據(jù)的計(jì)算問題,不能實(shí)現(xiàn)對(duì)實(shí)時(shí)數(shù)據(jù)的分析和處理。1.MapReduce是什么任務(wù)1
認(rèn)識(shí)MapReduce編程模型MapReduce采用“分而治之,迭代匯總”策略,一個(gè)存儲(chǔ)在分布式文件系統(tǒng)中的大規(guī)模數(shù)據(jù)集,會(huì)被切分成許多獨(dú)立的分片(split),這些分片可以被多個(gè)Map任務(wù)并行處理。下面簡單舉一個(gè)案例幫助大家理解什么是MapReduce。如果老師收取作業(yè),可能會(huì)讓課代表收齊,而課代表把這個(gè)任務(wù)分給各個(gè)小組的組長,各小組組長收齊作業(yè)后會(huì)交給課代表,課代表收齊后再交給老師。這就是一個(gè)典型的MapReduce過程,在這個(gè)例子里面,課代表把任務(wù)分給組長稱為Map過程,各組長把作業(yè)收齊后交給班長的過程就是Reduce過程。2.MapReduce做什么任務(wù)1
認(rèn)識(shí)MapReduce編程模型MapReduce設(shè)計(jì)的一個(gè)理念就是“計(jì)算向數(shù)據(jù)靠攏”,而不是“數(shù)據(jù)向計(jì)算靠攏”,因?yàn)橐苿?dòng)數(shù)據(jù)需要大量的網(wǎng)絡(luò)傳輸開銷。在一個(gè)大的集群中,MapReduce框架會(huì)將Map程序就近地在HDFS數(shù)據(jù)節(jié)點(diǎn)所在的節(jié)點(diǎn)運(yùn)行,將計(jì)算節(jié)點(diǎn)和存儲(chǔ)節(jié)點(diǎn)放在一起運(yùn)行,從而減少了節(jié)點(diǎn)之間的數(shù)據(jù)移動(dòng)開銷。同時(shí),MapReduce適合大文件的處理,對(duì)小文件的處理效率不是很高。3.MapReduce設(shè)計(jì)理念任務(wù)1
認(rèn)識(shí)MapReduce編程模型優(yōu)點(diǎn):易于編程、良好的擴(kuò)展性、高容錯(cuò)性、適合PB級(jí)以上海量數(shù)據(jù)的離線處理。缺點(diǎn):據(jù)規(guī)模在TB/PB以下的應(yīng)用不適合;實(shí)時(shí)響應(yīng)的應(yīng)用不適合;主要數(shù)據(jù)結(jié)構(gòu)是圖或網(wǎng)絡(luò)的應(yīng)用不適合;純數(shù)學(xué)計(jì)算的應(yīng)用不適合。4.MapReduce優(yōu)缺點(diǎn)任務(wù)1
認(rèn)識(shí)MapReduce編程模型MapReduce是一種非常簡單又非常強(qiáng)大的編程模型。簡單在于其編程模型只包含Map和Reduce兩個(gè)過程,Map的主輸入一對(duì)<key,value>值,經(jīng)過Map計(jì)算后輸出一對(duì)<key,value>值;然后將相同key合并,形成;再將這個(gè)輸入Reduce,經(jīng)過計(jì)算輸出0個(gè)或多個(gè)對(duì)。1.MapReduce模型簡介任務(wù)1
認(rèn)識(shí)MapReduce編程模型下面介紹一下MapReduce的工作流程,首先是MapReduce經(jīng)過SplitInput輸入分片決定map的個(gè)數(shù),然后用Record記錄key和value。(1)Map任務(wù)處理的執(zhí)行步驟(2)Reduce任務(wù)處理的執(zhí)行步驟(3)在Map端執(zhí)行詳細(xì)過程(4)在Reduce端執(zhí)行詳細(xì)過程2.MapReduce工作流程任務(wù)1
認(rèn)識(shí)MapReduce編程模型任務(wù)2
使用Eclipse創(chuàng)建MapReduce工程第一步:因?yàn)轫?xiàng)目2已經(jīng)安裝過Eclipse,這里就不需要重新安裝了,要在Eclipse上編譯和運(yùn)行MapReduce程序,需要安裝Hadoop-Eclipse-Plugin,可以從官網(wǎng)直接下載。第二步:下載后,將release中的hadoop-eclipse-kepler-plugin-2.6.0.jar復(fù)制到Eclipse安裝目錄的plugins文件夾中,運(yùn)行eclipse-clean,重啟Eclipse即可(添加插件后只需要運(yùn)行一次該命令,以后按照正常方式啟動(dòng)就行了)。unzip-qo~/hadoop2x-eclipse-plugin-master.zip-d~/下載#解壓到~/下載中sudocp~/下載/hadoop2x-eclipse-plugin-master/release/hadoop-eclipse-plugin2.6.0.jar/usr/lib/eclipse/plugins/#復(fù)制到Eclipse安裝目錄的plugins目錄下/usr/lib/eclipse/eclipse-clean#添加插件后需要用這種方式使插件生效任務(wù)2
使用Eclipse創(chuàng)建MapReduce工程任務(wù)2
使用Eclipse創(chuàng)建MapReduce工程任務(wù)2
使用Eclipse創(chuàng)建MapReduce工程第一步:在終端開啟Hadoop,命令為:cd/usr/local/hadoop和./sbin/start-dfs.sh。選擇Eclipse界面Window菜單下的Preference。任務(wù)2
使用Eclipse創(chuàng)建MapReduce工程第二步:切換Map/Reduce開發(fā)視圖,在Window菜單下選擇“OpenPerspective”下的Other,在彈出的窗體中選擇“Map/Reduce”選項(xiàng),如圖6-4所示。任務(wù)2
使用Eclipse創(chuàng)建MapReduce工程第三步:建立與Hadoop集群的連接,單擊Eclipse軟件右上角的“Map/ReduceLocations”面板,在面板中右擊,在彈出的快捷菜單中選擇“NewHadooplocation”,如圖6-5所示。任務(wù)2
使用Eclipse創(chuàng)建MapReduce工程第四步:在彈出來的General選項(xiàng)面板中,General的設(shè)置要與Hadoop的配置一致。一般兩個(gè)Host值是一樣的,因?yàn)槭莻畏植寄J?所以填寫localhost即可,因?yàn)樵陧?xiàng)目3中設(shè)置了core-site.xml文件中的fs.defaultFS為hdfs://localhost:9000,則DFSMaster的Port要改為9000。Map/Reduce(V2)Master的Port使用默認(rèn)值,Locationname隨意填寫。最后的設(shè)置如圖6-6所示。任務(wù)2
使用Eclipse創(chuàng)建MapReduce工程任務(wù)3MapReduce實(shí)現(xiàn)英語單詞統(tǒng)計(jì)首先,檢查單詞計(jì)數(shù)是否可以使用MapReduce進(jìn)行處理。因?yàn)樵趩卧~計(jì)數(shù)程序任務(wù)中,不同單詞的出現(xiàn)次數(shù)之間不存在相關(guān)性,相互獨(dú)立,所以可以把不同的單詞分發(fā)給不同的機(jī)器進(jìn)行并行處理。因此,可以采用MapReduce來實(shí)現(xiàn)單詞計(jì)數(shù)的統(tǒng)計(jì)任務(wù)。其次,確定MapReduce程序的設(shè)計(jì)思路。把文件內(nèi)容分解成許多個(gè)單詞,然后把所有相同的單詞聚集到一起,計(jì)算出每個(gè)單詞出現(xiàn)的次數(shù)。最后,確定MapReduce程序的執(zhí)行過程。把一個(gè)大的文件切分成許多個(gè)分片,將每個(gè)分片輸入不同節(jié)點(diǎn),形成不同的Map任務(wù)。每個(gè)Map任務(wù)分別負(fù)責(zé)完成從不同的文件塊中解析出的所有的單詞。任務(wù)3MapReduce實(shí)現(xiàn)英語單詞統(tǒng)計(jì)下面對(duì)單詞計(jì)數(shù)進(jìn)行更詳細(xì)的講解。(1)將文件拆分成多個(gè)分片。(2)將分割好的<key,value>對(duì)交給用戶定義的Map方法進(jìn)行處理,生成新的<key,value>對(duì),如圖6-9所示。任務(wù)3MapReduce實(shí)現(xiàn)英語單詞統(tǒng)計(jì)(3)在實(shí)際應(yīng)用中,每個(gè)輸入分片在經(jīng)過Map函數(shù)分解以后都會(huì)生成大量類似<Hello,1>的中間結(jié)果,為了減少網(wǎng)絡(luò)傳輸開銷,框架會(huì)把Map方法輸出的<key,value>對(duì)按照key值進(jìn)行排序,并執(zhí)行Combine過程,將key值相同的value值累加,得到Map的最終輸出結(jié)果,如圖6-10所示。任務(wù)3MapReduce實(shí)現(xiàn)英語單詞統(tǒng)計(jì)(4)Reduce先對(duì)從Map端接收的數(shù)據(jù)進(jìn)行排序,再交由用戶自定義的Reduce方法進(jìn)行處理,得到新的<key,value>對(duì),并作為結(jié)果輸出,如圖6-11所示。任務(wù)3MapReduce實(shí)現(xiàn)英語單詞統(tǒng)計(jì)編寫MapReduce程序的第一個(gè)任務(wù)就是編寫Map程序。在單詞計(jì)數(shù)任務(wù)中,Map需要完成的任務(wù)就是把輸入的文本數(shù)據(jù)按單詞進(jìn)行拆分,然后以特定的鍵值對(duì)的形式進(jìn)行輸出。(1)編寫Map程序(2)編寫Reduce程序(3)編寫main函數(shù)(4)核心代碼包(5)在Eclipse中實(shí)現(xiàn)單詞統(tǒng)計(jì)任務(wù)4MapReduce實(shí)現(xiàn)氣象數(shù)據(jù)分析氣象數(shù)據(jù)分析主要是查找數(shù)據(jù)中每年最高溫度、最低溫度和平均溫度,是比較典型的MapReduce例子。本任務(wù)主要完成天氣預(yù)報(bào)數(shù)據(jù)分析,使用Eclipse工具編寫分析程序,完成年度最高溫度、最低溫度以及平均溫度。氣象數(shù)據(jù)集下載地址為:ftp://ftp.ncdc./pub/data/noaa,由于數(shù)據(jù)量比較大,本任務(wù)只提供了數(shù)據(jù)樣例,表6-8是對(duì)數(shù)據(jù)格式的解釋。任務(wù)4MapReduce實(shí)現(xiàn)氣象數(shù)據(jù)分析(1)Mapper階段任務(wù)Mapper階段主要是對(duì)文本進(jìn)行切割,提取時(shí)間和溫度形成<日期,<溫度,溫度,溫度>>的鍵值對(duì)。(2)Reducer階段任務(wù)Reducer階段任務(wù)就是從<日期,<溫度,溫度,……,溫度>>中遍歷溫度并查找最大值、最小值和平均值。(3)在Eclipse中實(shí)現(xiàn)氣象數(shù)據(jù)分析感謝觀看大數(shù)據(jù)基礎(chǔ)Hive數(shù)據(jù)倉庫項(xiàng)目7知識(shí)目標(biāo)學(xué)習(xí)目標(biāo)能力目標(biāo)(1)了解Hive概念(2)了解Hive架構(gòu)及組件(3)掌握Hive系統(tǒng)安裝與配置(4)掌握Hive數(shù)據(jù)類型(5)掌握Hive創(chuàng)建數(shù)據(jù)庫和表(6)掌握Hive數(shù)據(jù)的導(dǎo)入和導(dǎo)出(1)能夠復(fù)述Hive架構(gòu)及組件(2)能夠安裝與配置Hive(3)能夠使用HiveShell命令創(chuàng)建數(shù)據(jù)庫和表(4)能夠使用HiveShell命令導(dǎo)入導(dǎo)出數(shù)據(jù)、查詢數(shù)據(jù)(5)能夠使用HiveShell命令解決簡單的問題任務(wù)1
認(rèn)識(shí)HiveHive是一個(gè)數(shù)據(jù)倉庫基礎(chǔ)工具,在Hadoop中用來處理結(jié)構(gòu)化數(shù)據(jù)。它架構(gòu)在Hadoop之上,便于大數(shù)據(jù)查詢和分析,提供簡單的SQL查詢功能,可以將SQL語句轉(zhuǎn)換為MapReduce任務(wù)進(jìn)行運(yùn)行。最初,Hive由Facebook開發(fā),后來由Apache軟件基金會(huì)開發(fā),并進(jìn)一步將它作為一個(gè)開源項(xiàng)目。Hive沒有專門的數(shù)據(jù)格式。Hive可以很好地工作在Thrift之上,控制分隔符,也允許用戶指定數(shù)據(jù)格式。Hive不適用于在線事務(wù)處理。它最適用于傳統(tǒng)的數(shù)據(jù)倉庫任務(wù)。1.什么是Hive任務(wù)1
認(rèn)識(shí)Hive基于Hive友好的接口:操作接口采用類SQL的語法,提供快速開發(fā)的能力;更低的學(xué)習(xí)成本:避免了寫MapReduce,減少開發(fā)人員的學(xué)習(xí)成本;更好的擴(kuò)展性:可自由擴(kuò)展集群規(guī)模而無須重啟服務(wù),還支持用戶自定義函數(shù)。2.為什么使用Hive任務(wù)1
認(rèn)識(shí)HiveHive是Hoop生態(tài)圈中的一個(gè)工具,是基于Hadoop的一個(gè)數(shù)據(jù)倉庫工具。該項(xiàng)目是由Facebook于2008年開源,貢獻(xiàn)給了Apache基金會(huì)。Hive可以將結(jié)構(gòu)化的數(shù)據(jù)文件映射為一張數(shù)據(jù)庫表,并提供簡單的SQL(HQL)查詢功能,可以將HQL語句轉(zhuǎn)換為MapReduce任務(wù)進(jìn)行運(yùn)行,Hive實(shí)現(xiàn)了簡單的MapReduce統(tǒng)計(jì),解決了需要使用Java開發(fā)MapReduce的應(yīng)用,降低了開發(fā)與學(xué)習(xí)成本。3.Hive與Hadoop的關(guān)系任務(wù)1
認(rèn)識(shí)Hive從圖7-1看出Hive的內(nèi)部架構(gòu)由四部分組成:任務(wù)1
認(rèn)識(shí)HiveCLI,Shell終端命令行(CommandLineInterface),采用交互形式使用Hive命令行與Hive進(jìn)行交互,最常用的。JDBC/ODBC,是Hive的基于JDBC操作提供的客戶端,用戶(開發(fā)員、運(yùn)維人員)通過這連接至HiveServer服務(wù)。WebUI,通過瀏覽器訪問Hive。1.用戶接口:CLI,JDBC/ODBC,WebUI任務(wù)1
認(rèn)識(shí)HiveThriftServer提供了一種能力,讓用戶可以使用多種不同的語言來操作Hive。Trift是Facebook開發(fā)的一個(gè)軟件框架,可以用來進(jìn)行可擴(kuò)展且跨語言的服務(wù)的開發(fā),Hive集成了該服務(wù),能讓不同的編程語言調(diào)用Hive的接口。2.跨語言服務(wù)任務(wù)1
認(rèn)識(shí)Hive驅(qū)動(dòng)器Driver包括編譯器Compiler、優(yōu)化器Optimizer、執(zhí)行器Executer。Driver組件完成HQL查詢語句從詞法分析,語法分析,編譯,優(yōu)化,以及邏輯執(zhí)行計(jì)劃的生成。生成的邏輯執(zhí)行計(jì)劃存儲(chǔ)在HDFS中,并隨后由MapReduce調(diào)用執(zhí)行。Hive的核心是驅(qū)動(dòng)引擎,驅(qū)動(dòng)引擎由四部分組成:(1)解釋器:解釋器的作用是將HiveSQL語句轉(zhuǎn)換為抽象語法樹(AST)。(2)編譯器:編譯器是將語法樹編譯為邏輯執(zhí)行計(jì)劃。(3)優(yōu)化器:優(yōu)化器是對(duì)邏輯執(zhí)行計(jì)劃進(jìn)行優(yōu)化。(4)執(zhí)行器:執(zhí)行器是調(diào)用底層的運(yùn)行框架執(zhí)行邏輯執(zhí)行計(jì)劃。3.底層的Driver任務(wù)1
認(rèn)識(shí)Hive元數(shù)據(jù),通俗地講,就是存儲(chǔ)在Hive中的數(shù)據(jù)的描述信息。Hive中的元數(shù)據(jù)通常包括:表的名字、表的列和分區(qū)及其屬性、表的屬性(內(nèi)部表和外部表)、表的數(shù)據(jù)所在目錄。元數(shù)據(jù)默認(rèn)存儲(chǔ)在自帶的Derby數(shù)據(jù)庫中。缺點(diǎn)就是不適合多用戶操作,并且數(shù)據(jù)存儲(chǔ)目錄不固定,數(shù)據(jù)庫跟著Hive走,不方便管理。所以我們把元數(shù)據(jù)通常存在MySQL庫(本地或遠(yuǎn)程),Hive和MySQL之間通過MetaStore服務(wù)交互。HiveQL通過命令行或者客戶端提交,經(jīng)過Compiler編譯器,運(yùn)用MetaStore中的元數(shù)據(jù)進(jìn)行類型檢測和語法分析,生成一個(gè)邏輯方案(LogicalPlan),然后通過優(yōu)化處理,產(chǎn)生一個(gè)MapReduce任務(wù)。4.元數(shù)據(jù)存儲(chǔ)系統(tǒng):MySQL任務(wù)1
認(rèn)識(shí)Hive任務(wù)2Hive安裝與配置Hive需要將元數(shù)據(jù)保存到數(shù)據(jù)庫,需要配置相應(yīng)服務(wù),本任務(wù)主要完成Hive的安裝與配置、MySQL服務(wù)啟動(dòng)和用戶授權(quán)、Hive啟動(dòng)測試。Hadoop偽分布模式搭建在項(xiàng)目3已經(jīng)介紹了,現(xiàn)在在此基礎(chǔ)上安裝Hive。第一步:下載并解壓Hive源程序。第二步:配置環(huán)境變量。第三步:Metastore安裝與配置。第四步:修改Hive配置文件。第五步:啟動(dòng)MySQL。第六步:啟動(dòng)Hive。任務(wù)3HiveShell操作Hive的數(shù)據(jù)類型分為兩大類:基礎(chǔ)數(shù)據(jù)類型和復(fù)雜數(shù)據(jù)類型,Hive不僅支持關(guān)系數(shù)據(jù)庫中的大多數(shù)數(shù)據(jù)類型,同時(shí)還支持集合數(shù)據(jù)類型(STRUCT、MAP、ARRAY)。1.基本數(shù)據(jù)類型(表7-2)任務(wù)3HiveShell操作Hive的數(shù)據(jù)類型分為兩大類:基礎(chǔ)數(shù)據(jù)類型和復(fù)雜數(shù)據(jù)類型,Hive不僅支持關(guān)系數(shù)據(jù)庫中的大多數(shù)數(shù)據(jù)類型,同時(shí)還支持集合數(shù)據(jù)類型(STRUCT、MAP
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年度國有企業(yè)員工績效評(píng)估及激勵(lì)合同
- 2025年度環(huán)保項(xiàng)目評(píng)估外聘專家合作協(xié)議
- 二零二五年度日租房短租與藝術(shù)展覽合作協(xié)議
- 二零二五年度家長參與校園安全責(zé)任協(xié)議書反饋流程
- 環(huán)保能源行業(yè)項(xiàng)目投資風(fēng)險(xiǎn)免責(zé)
- 農(nóng)業(yè)行業(yè)精準(zhǔn)農(nóng)業(yè)技術(shù)支持平臺(tái)搭建方案
- 幼兒園繪本故事集征文
- 電商平臺(tái)商戶退換貨規(guī)則協(xié)議
- 高考語文大一輪總復(fù)習(xí) 文言文閱讀 文言實(shí)詞題題組訓(xùn)練試題
- 高考語文備考文言文閱讀專項(xiàng)練習(xí)之文言文斷句
- 上海的弄堂教案及教學(xué)說明 滬教版
- JTS-T-108-1-2019危險(xiǎn)貨物港口建設(shè)項(xiàng)目安全評(píng)價(jià)規(guī)范
- 如何正確運(yùn)用邏輯推理和論證方法撰寫文章
- 桃花紅杏花白混聲合唱譜
- 重慶西南大學(xué)附中2023-2024學(xué)年八年級(jí)下學(xué)期5月物理定時(shí)訓(xùn)練
- 參與感(小米口碑營銷內(nèi)部手冊(cè))
- 保安公司新項(xiàng)目進(jìn)場方案(2篇)
- 我的動(dòng)物朋友習(xí)作省公開課一等獎(jiǎng)新名師課比賽一等獎(jiǎng)?wù)n件
- 基坑工程安全風(fēng)險(xiǎn)辨識(shí)
- 法律基礎(chǔ)知識(shí)500題及參考答案(滿分必刷)
- 臨床護(hù)理技術(shù)操作常見并發(fā)癥的預(yù)防與處理規(guī)范
評(píng)論
0/150
提交評(píng)論