




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
云計算技術實驗指導書云計算技術實驗指導書目錄實驗一HDFS文件操作命令及API編程05實驗二Eclipse下的Mapreduce編程16實驗三Spark安裝和配置32實驗四分布式數據庫HBase安裝配置與實踐38實驗五Hive安裝及數據統(tǒng)計分析55實驗六sqoop安裝與配置72TOC\o"1-2"\h\z\u
《云計算技術》實驗教學大綱課程名稱:云計算技術英文名稱:Cloudcomputingtechnology設置形式:非獨立設課課程模塊:專業(yè)方向課實驗課性質:專業(yè)實驗課程編號:課程負責人:大綱主撰人:大綱審核人:一、學時、學分課程總學時:48實驗學時:12課程學分:3二、適用專業(yè)及年級大數據本科四年級三、課程目標與基本要求課程的目標:通過本課程的學習,學生能夠對云計算的由來、概念、原理和實現技術有個基本的認識,了解支持云計算的主要產品和工具以及掌握其技術原理和應用方法,了解云計算的主要研究熱點與應用領域,認清云計算的發(fā)展趨勢和前景;理解Hadoop、MapReduce等技術理論及編程思想,另外,通過基于Hadoop等開源工具的相關實驗,讓學生親身體驗分布式文件系統(tǒng)、分布式計算和分布式數據庫的應用及實現,從而加深所學的理論知識的理解,為今后處理實際問題打下基礎?;疽螅?.深刻理解云計算的概念、發(fā)展現狀、實現機制及云計算的特點與優(yōu)勢;2.掌握分布式文件系統(tǒng)HDFS、分布式計算編程模型MapReduce、Hbase、Spark、Hive等的環(huán)境配置及基于命令行操作的文件系統(tǒng)管理、數據庫管理、主從服務器啟動與運行;3.Hadoop平臺下編程實現分布式計算任務,實現對海量數據進行快速批量處理,對單機模式、偽分布式模式和完全分布式模式能熟練進行配置,在多任務環(huán)境下能利用Hadoop集群平臺實現簡單應用;四、主要儀器設備計算機。五、實驗項目及教學安排序號實驗項目名稱實驗基本方法和內容項目學時每組人數教學要求1HDFS文件操作命令及API編程HDFS文件操作的常用Shell命令,利用Web界面查看和管理Hadoop文件系統(tǒng),以及利用Hadoop提供的JavaAPI進行基本的文件操作21必修2Eclipse下的Mapreduce編程使用Eclipse來開發(fā)MapReduce程序21必修3Spark安裝和配置Spark安裝和配置,Spark中運行代碼,獨立應用程序編程21必修4分布式數據庫HBase安裝配置與實踐HBase安裝配置與實踐21必修5Hive安裝及數據統(tǒng)計分析Hive安裝,用數據倉庫Hive來解決一些常見的數據庫操作以及簡單的Hive編程21必修6sqoop安裝與配置sqoop安裝與配置21必修六、考核方式及成績評定考核方式:1.實驗:根據實驗考勤和實驗報告評定成績,滿分為100分。2.作業(yè)出勤:根據課堂平時出勤及作業(yè)評定成績,滿分為100分。3.考試:閉卷考試,滿分為100分。成績評定:實驗成績占本課程成績的10%。期末成績=實驗平時成績×10%+作業(yè)及出勤成績×10%+閉卷考試成績×80%。七、實驗教科書、參考書1.實驗教科書《云計算技術實驗指導書》,自編,2017實驗一HDFS文件操作命令及API編程1.1實驗目的對HDFS文件系統(tǒng)的操作實踐,Hadoop分布式文件系統(tǒng)(HadoopDistributedFileSystem,HDFS)是Hadoop核心組件之一,如果已經安裝了Hadoop,其中就已經包含了HDFS組件,不需要另外安裝。實驗內容包括HDFS文件操作的常用Shell命令,利用Web界面查看和管理Hadoop文件系統(tǒng),以及利用Hadoop提供的JavaAPI進行基本的文件操作。1.2實驗環(huán)境本教程使用CentOS64位作為系統(tǒng)環(huán)境,基于原生Hadoop2,在Hadoop2.6.0(stable)版本下驗證通過,可適合任何Hadoop2.x.y版本,例如Hadoop2.7.1,Hadoop2.4.1等。賬號:hadoop密碼:123456賬號:root密碼:1234561.3實驗步驟1.3.1啟動hadoop在學習HDFS編程實踐前,我們需要啟動Hadoop。首先修改/etc/hosts文件,使得ip與hosts里的一致,如圖然后啟動hadoop,用jps檢查一下是否啟動成功執(zhí)行如下命令cd/usr/local/hadoop./sbin/start-dfs.sh#啟動hadoop1.3.2HDFS編程利用shell命令操作Hadoop支持很多Shell命令,其中fs是HDFS最常用的命令,利用fs可以查看HDFS文件系統(tǒng)的目錄結構、上傳和下載數據、創(chuàng)建文件等。我們可以在終端輸入如下命令,查看fs總共支持了哪些命令(圖1)./bin/hadoopfs圖1在終端輸入如下命令,可以查看具體某個命令的作用(圖2)例如:我們查看put命令如何使用,可以輸入如下命令./bin/hadoopfs-helpput圖2Hadoopshell命令教材《大數據技術原理與應用》的命令是以"./bin/hadoopdfs"開頭的Shell命令方式,實際上有三種shell命令方式。
1.hadoopfs
2.hadoopdfs
3.hdfsdfshadoopfs適用于任何不同的文件系統(tǒng),比如本地文件系統(tǒng)和HDFS文件系統(tǒng)
hadoopdfs只能適用于HDFS文件系統(tǒng)
hdfsdfs跟hadoopdfs的命令作用一樣,也只能適用于HDFS文件系統(tǒng)2.利用HDFS的Web界面管理打開Linux自帶的Firefox瀏覽器,輸入網址http://localhost:50070/,即可看到HDFS的web管理界面(圖3)圖33.利用JavaAPI與HDFS進行交互Hadoop不同的文件系統(tǒng)之間通過調用JavaAPI進行交互,上面介紹的Shell命令,本質上就是JavaAPI的應用。下面提供了Hadoop官方的HadoopAPI文檔,想要深入學習Hadoop,可以訪問如下網站,查看各個API的功能。HadoopAPI文檔:/docs/stable/api/利用JavaAPI進行交互,需要利用軟件Eclipse編寫Java程序。在CentOS中安裝Eclipse(本平臺中已經安裝完成)雙擊桌面的eclipse圖標,打開Eclipse(圖4)
圖4在Eclipse創(chuàng)建項目,第一次打開Eclipse,需要填寫workspace(工作空間),用來保存程序所在的位置,這里按照默認,不需要改動,如圖5圖5點擊“OK”按鈕,進入Eclipse軟件。開始創(chuàng)建項目,選擇頂部菜單File>New>JavaProject,如圖6
圖6輸入項目名稱,本教程輸入的項目名稱是“Dblab”,其他不用改動,點擊“Finish”按鈕即可(圖7)。
圖7項目加載所需要用到的jar包如何獲取JavaAPI:API所在的jar包都在已經安裝好的hadoop文件夾里,路徑:/usr/local/hadoop/share/hadoop加載上面路徑common文件夾下:
lib所有的jar包和hadoop-common-2.7.1.jar
加載上面路徑hdfs文件夾下:
lib所有的jar包和hadoop-hdfs-2.7.1.jar
在所在項目中加載jar包,具體操作如下:在所選的Eclipse項目(Dblab)上右鍵點擊>彈出菜單中選擇Properties>JavaBuildPath>Libraries>AddExternalJARS(圖8-圖11)
圖8
圖9圖10圖111.4運行實例利用hadoop的javaapi檢測偽分布式文件系統(tǒng)HDFS上是否存在某個文件,寫入文件,讀取文件。第一步:編寫代碼1.創(chuàng)建class,包名為Ylitech,類名為Chapter3(圖12-圖13)圖12圖132.編寫代碼寫入文件(代碼)--功能:在hdfs之中創(chuàng)建一個名為test的文件,內容為“Helloworld”importorg.apache.hadoop.conf.Configuration;importorg.apache.hadoop.fs.FileSystem;importorg.apache.hadoop.fs.FSDataOutputStream;importorg.apache.hadoop.fs.Path;publicclassChapter3{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();//要寫入的內容Stringfilename="test";//要寫入的文件名FSDataOutputStreamos=fs.create(newPath(filename));os.write(buff,0,buff.length);System.out.println("Create:"+filename);os.close();fs.close();}catch(Exceptione){e.printStackTrace();}}}第二步:編譯部署
如果代碼編寫在Eclipse里面,那么直接點擊運行,即可看到運行結果(圖14-圖15),通過瀏覽hdfs可以查看到創(chuàng)建的文件內容(圖16)。桌面上有hdfs-code.txt,里面存儲了代碼,便于復制圖14圖15圖16實驗二Eclipse下的Mapreduce編程1.1實驗目的在Ubuntu/CentOS中使用Eclipse來開發(fā)MapReduce程序,在Hadoop2.6.0下驗證通過1.2實驗環(huán)境本教程在Hadoop2.6.0下驗證通過,適用于Ubuntu/CentOS系統(tǒng),理論上可用于任何原生Hadoop2版本,如Hadoop2.4.1,Hadoop2.7.1。本教程主要測試環(huán)境:CentOS6.6Hadoop2.6.0(偽分布式)Eclipsemars-1x86此次教程是在CentOS6.6下進行,已經完成eclipse安裝,可以跳過該步驟hadoop2x-eclipse-plugin-master.zip已經存放至/usr/local之中如果遇到虛擬機網絡中斷或者下載過慢的情況,可直接至進行解壓WordCount的mapreduce代碼放置在桌面hadoop密碼:123456root密碼:1234561.3實驗步驟1.3.1安裝eclipse將Eclipse安裝至/usr/local目錄中:cd/usr/localsudotar-zxvfeclipse-java-mars-1-linux-gtk-x86_64.tar.gz-C/usr/local解壓后即可使用。在CentOS中可以為程序創(chuàng)建桌面快捷方式,如圖3所示,點擊桌面右鍵,選擇創(chuàng)建啟動器,填寫名稱和程序位置(/usr/local/eclipse/eclipse):圖3安裝Eclipse1.3.2安裝Hadoop-Eclipse-Plugin要在Eclipse上編譯和運行MapReduce程序,需要安裝hadoop-eclipse-plugin,可下載Github上的hadoop2x-eclipse-plugin,地址/winghc/hadoop2x-eclipse-plugin(備用下載地址:/s/1i4ikIoP)。下載后,將release中的hadoop-eclipse-kepler-plugin-2.6.0.jar(還提供了2.2.0和2.4.1版本)復制到Eclipse安裝目錄的plugins文件夾中,運行eclipse-clean重啟Eclipse即可(添加插件后只需要運行一次該命令,以后按照正常方式啟動就行了)。若下載速度過慢,在/usr/local中已經下載了hadoop2x-eclipse-plugin-master.zip,可直接進行解壓cd/usr/local/sudounzip-qohadoop2x-eclipse-plugin-master.zipsudocphadoop2x-eclipse-plugin-master/release/hadoop-eclipse-plugin-2.6.0.jar/usr/local/eclipse/plugins/#復制到eclipse安裝目錄的plugins目錄下/usr/local/eclipse/eclipse-clean#添加插件后需要用這種方式使插件生效1.3.3配置Hadoop-Eclipse-Plugin在繼續(xù)配置前請確保已經開啟了Hadoop。若沒開啟,則啟動hadoop首先修改/etc/hosts文件,使得ip與hosts里的一致然后啟動hadoop,用jps檢查一下是否啟動成功start-dfs.sh啟動Eclipse后就可以在左側的ProjectExplorer中看到DFSLocations(,圖4,若看到的是welcome界面,點擊左上角的x關閉就可以看到了。CentOS需要切換Perspective后才能看到,即接下來配置步驟的第二步)。圖4安裝好Hadoop-Eclipse-Plugin插件后的效果插件需要進一步的配置。第一步:選擇Window菜單下的Preference(圖5)。圖5打開Preference此時會彈出一個窗體,窗體的左側會多出HadoopMap/Reduce選項,點擊此選項,選擇Hadoop的安裝目錄(圖6,如/usr/local/hadoop,Ubuntu不好選擇目錄,直接輸入就行)。圖6選擇Hadoop的安裝目錄第二步:切換Map/Reduce開發(fā)視圖,點擊OpenPerspective,彈出一個窗體,從中選擇Map/Reduce選項即可進行切換(圖7)。圖7切換Map/Reduce開發(fā)視圖第三步:建立與Hadoop集群的連接,點擊Eclipse軟件右下角的Map/ReduceLocations面板,在面板中單擊右鍵,選擇NewHadoopLocation(圖8)。圖8建立與Hadoop集群的連接在彈出來的General選項面板中,General的設置要與Hadoop的配置一致。一般兩個Host值是一樣的,如果是偽分布式,填寫localhost即可,另外我使用的Hadoop偽分布式配置,設置fs.defaultFS為hdfs://localhost:9000,則DFSMaster的Port要改為9000。Map/Reduce(V2)Master的Port用默認的即可,LocationName隨意填寫。最后的設置如圖9所示:圖9HadoopLocation的設置Advancedparameters選項面板是對Hadoop參數進行配置,實際上就是填寫Hadoop的配置項(/usr/local/hadoop/etc/hadoop中的配置文件),如我配置了hadoop.tmp.dir,就要進行相應的修改。但修改起來會比較繁瑣,我們可以通過復制配置文件的方式解決(下面會說到)??傊覀冎灰渲肎eneral就行了,點擊finish,Map/ReduceLocation就創(chuàng)建好了。1.3.4在Eclipse中操作HDFS中的文件配置好后,點擊左側ProjectExplorer中的MapReduceLocation(點擊三角形展開)就能直接查看HDFS中的文件列表了(HDFS中要有文件,如下圖是WordCount的輸出結果),雙擊可以查看內容,右鍵點擊可以上傳、下載、刪除HDFS中的文件,無需再通過繁瑣的hdfsdfs-ls等命令進行操作了。
以下output/part-r-00000文件記錄了輸出結果(圖10)。閱讀查看HDFS文件系統(tǒng)數據的三種方法可進行擴展學習。圖10使用Eclipse查看HDFS中的文件內容如果無法查看,可右鍵點擊Location嘗試Reconnect或重啟Eclipse。HDFS中的內容變動后,Eclipse不會同步刷新,需要右鍵點擊ProjectExplorer中的MapReduceLocation,選擇Refresh,才能看到變動后的文件。1.3.5在Eclipse中創(chuàng)建MapReduce項目點擊File菜單,選擇New->Project...(圖11):圖11創(chuàng)建Project選擇Map/ReduceProject,點擊Next(圖12)。圖12創(chuàng)建MapReduce項目填寫Projectname為WordCount即可,點擊Finish就創(chuàng)建好了項目(圖13)。圖13填寫項目名此時在左側的ProjectExplorer就能看到剛才建立的項目了(圖14)。圖14項目創(chuàng)建完成接著右鍵點擊剛創(chuàng)建的WordCount項目,選擇New->Class(圖15)圖15新建Class需要填寫兩個地方:在Package處填寫org.apache.hadoop.examples;在Name處填寫WordCount(圖16)。圖16填寫Class信息創(chuàng)建Class完成后,在Project的src中就能看到WordCount.java這個文件。將如下WordCount的代碼復制到該文件中(代碼如下)。packageorg.apache.hadoop.examples;importjava.io.IOException;importjava.util.Iterator;importjava.util.StringTokenizer;importorg.apache.hadoop.conf.Configuration;importorg.apache.hadoop.fs.Path;importorg.apache.hadoop.io.IntWritable;importorg.apache.hadoop.io.Text;importorg.apache.hadoop.mapreduce.Job;importorg.apache.hadoop.mapreduce.Mapper;importorg.apache.hadoop.mapreduce.Reducer;importorg.apache.hadoop.mapreduce.lib.input.FileInputFormat;importorg.apache.hadoop.mapreduce.lib.output.FileOutputFormat;importorg.apache.hadoop.util.GenericOptionsParser;publicclassWordCount{publicWordCount(){}publicstaticvoidmain(String[]args)throwsException{Configurationconf=newConfiguration();String[]otherArgs=(newGenericOptionsParser(conf,args)).getRemainingArgs();if(otherArgs.length<2){System.err.println("Usage:wordcount<in>[<in>...]<out>");System.exit(2);}Jobjob=Job.getInstance(conf,"wordcount");job.setJarByClass(WordCount.class);job.setMapperClass(WordCount.TokenizerMapper.class);job.setCombinerClass(WordCount.IntSumReducer.class);job.setReducerClass(WordCount.IntSumReducer.class);job.setOutputKeyClass(Text.class);job.setOutputValueClass(IntWritable.class);for(inti=0;i<otherArgs.length-1;++i){FileInputFormat.addInputPath(job,newPath(otherArgs[i]));}
FileOutputFormat.setOutputPath(job,newPath(otherArgs[otherArgs.length-1]));System.exit(job.waitForCompletion(true)?0:1);}
publicstaticclassIntSumReducerextendsReducer<Text,IntWritable,Text,IntWritable>{privateIntWritableresult=newIntWritable();
publicIntSumReducer(){}
publicvoidreduce(Textkey,Iterable<IntWritable>values,Reducer<Text,IntWritable,Text,IntWritable>.Contextcontext)throwsIOException,InterruptedException{intsum=0;IntWritableval;for(Iteratori$=values.iterator();i$.hasNext();sum+=val.get()){val=(IntWritable)i$.next();}
this.result.set(sum);context.write(key,this.result);}}
publicstaticclassTokenizerMapperextendsMapper<Object,Text,Text,IntWritable>{privatestaticfinalIntWritableone=newIntWritable(1);privateTextword=newText();
publicTokenizerMapper(){}
publicvoidmap(Objectkey,Textvalue,Mapper<Object,Text,Text,IntWritable>.Contextcontext)throwsIOException,InterruptedException{StringTokenizeritr=newStringTokenizer(value.toString());
while(itr.hasMoreTokens()){this.word.set(itr.nextToken());context.write(this.word,one);}
}}}1.3.6通過Eclipse運行MapReduce在運行MapReduce程序前,還需要執(zhí)行一項重要操作(也就是上面提到的通過復制配置文件解決參數設置問題):將/usr/local/hadoop/etc/hadoop中將有修改過的配置文件(如偽分布式需要core-site.xml和hdfs-site.xml),以及perties復制到WordCount項目下的src文件夾(~/workspace/WordCount/src)中:cp/usr/local/hadoop/etc/hadoop/core-site.xml~/workspace/WordCount/srccp/usr/local/hadoop/etc/hadoop/hdfs-site.xml~/workspace/WordCount/srccp/usr/local/hadoop/etc/hadoop/perties~/workspace/WordCount/src沒有復制這些文件的話程序將無法正確運行,本教程最后再解釋為什么需要復制這些文件。復制完成后,務必右鍵點擊WordCount選擇refresh進行刷新(不會自動刷新,需要手動刷新),可以看到文件結構如下所示:圖17WordCount項目文件結構修改主機名,實驗機器中etc/hosts之中的主機名與實際的主機名不一致,修改etc/hosts為當前主機名,sudovi/etc/hosts圖如下:圖18圖19修改完后保存退出。在hdfs之中的/user/hadoop之中創(chuàng)建input文件夾,并上傳hdfs-site.xmlcore-site.xml作為WordCount程序讀取的數據源,圖如下。(注:如不能創(chuàng)建則分批創(chuàng)建,即分別執(zhí)行:hadoopfs-mkdir/userhadoopfs-mkdir/user/hadoophadoopfs-mkdir/user/hadoop/input)hadoopfs-mkdir/user/hadoop/inputhadoopfs-put/usr/local/hadoop/etc/hadoop/hdfs-site.xml/user/hadoop/inputhadoopfs-put/usr/local/hadoop/etc/hadoop/core-site.xml/user/hadoop/input圖20點擊工具欄中的Run圖標,或者右鍵點擊ProjectExplorer中的WordCount.java,選擇RunAs->RunonHadoop,就可以運行MapReduce程序了。不過由于沒有指定參數,運行時會提示"Usage:wordcount",需要通過Eclipse設定一下運行參數。右鍵點擊剛創(chuàng)建的WordCount.java,選擇RunAs->RunConfigurations,在此處可以設置運行時的相關參數(如果JavaApplication下面沒有WordCount,那么需要先雙擊JavaApplication)。切換到"Arguments"欄,在Programarguments處填寫"inputoutput"就可以了。圖21或者也可以直接在代碼中設置好輸入參數??蓪⒋amain()函數的String[]otherArgs=newGenericOptionsParser(conf,args).getRemainingArgs();改為:String[]otherArgs=newString[]{"input","output"};/*直接設置輸入參數*/設定參數后,再次運行程序,可以看到運行成功的提示,刷新DFSLocation后也能看到輸出的output文件夾。圖22至此,你就可以使用Eclipse方便的進行MapReduce程序的開發(fā)了。實驗三Spark安裝和配置1.安裝Sparksudotar-zxvf/usr/local/spark-2.1.0-bin-without-hadoop.tgz-C/usr/local/安裝后,還需要修改Spark的配置文件spark-env.sh編輯spark-env.sh文件(vim./conf/spark-env.sh),在第一行添加以下配置信息:通過運行Spark自帶的示例,驗證Spark是否安裝成功。執(zhí)行時會輸出非常多的運行信息,輸出結果不容易找到,可以通過grep命令進行過濾:過濾后的運行結果如下圖示,可以得到π的5位小數近似值:在SparkShell中運行代碼cd/usr/local/spark通過下面命令啟動spark-shell環(huán)境:啟動spark-shell后,就會進入“scala>”命令提示符狀態(tài),如下圖所示:現在,你就可以在里面輸入scala代碼進行調試了。比如,下面在命令提示符后面輸入一個表達式“8*2+5”,然后回車,就會立即得到結果:最后,可以使用命令“:quit”退出SparkShell,如下所示:或者,也可以直接使用“Ctrl+D”組合鍵,退出SparkShell。3.Spark獨立應用程序編程編寫Scala獨立應用程序1.安裝sbt(跳過)我們選擇安裝在/usr/local/sbt中:下載sbt-launch.jar包,打開瀏覽器,輸入如下地址:/Code/Jar/s/sbt-launch.htm顯示界面如下:選擇任一軟件點擊,然后按下圖箭頭所示點擊選擇savefile保存至Downloads目錄下下載后,執(zhí)行如下命令拷貝至/usr/local/sbt中:接著在/usr/local/sbt中創(chuàng)建sbt腳本(vim./sbt),添加如下內容:保存后,為./sbt腳本增加可執(zhí)行權限:最后運行如下命令,檢驗sbt是否可用(請確保電腦處于聯(lián)網狀態(tài),首次運行會處于“Gettingorg.scala-sbtsbt0.13.11...”的下載狀態(tài),請耐心等待。由于引用國外的源,可能會達到數小時):2.編寫Scala應用程序
在終端中執(zhí)行如下命令創(chuàng)建一個文件夾sparkapp作為應用程序根目錄:在./sparkapp/src/main/scala下建立一個名為SimpleApp.scala的文件(vim./sparkapp/src/main/scala/SimpleApp.scala),添加代碼如下:該程序計算/usr/local/spark/README文件中包含"a"的行數和包含"b"的行數。3.使用sbt打包Scala程序該程序依賴SparkAPI,因此我們需要通過sbt進行編譯打包。請在./sparkapp中新建文件simple.sbt(vim./sparkapp/simple.sbt),添加內容如下:接著,我們就可以通過如下代碼將整個應用程序打包成JAR(首次運行同樣需要下載依賴包):對于剛安裝好的Spark和sbt而言,第一次運行上面的打包命令時,會需要數小時的運行時間,因為系統(tǒng)會自動從國外的源上下載各種文件(該虛擬機已經提前下載過了)。
打包成功的話,會輸出如下內容:生成的jar包的位置為~/sparkapp/target/scala-2.11/simple-project_2.11-1.0.jar。4.通過spark-submit運行程序最后,我們就可以將生成的jar包通過spark-submit提交到Spark中運行了,命令如下:最終得到的結果如下:實驗四分布式數據庫HBase安裝配置與實踐1.1實驗目的HBase安裝配置與實踐1.2實驗環(huán)境本教程運行環(huán)境是CentOS64位系統(tǒng)下,HBase版本為hbase--bin.tar.gz,這是目前已經發(fā)行的已經編譯好的穩(wěn)定的版本,帶有src的文件是未編譯的版本。下載地址/dyn/closer.cgi/hbase/賬號:root密碼:123456賬號:hadoop密碼:1234561.3實驗步驟1.3.1安裝并配置HBase1.HBase安裝1.1解壓安裝包hbase--bin.tar.gz至路徑/usr/local,命令如下:cd/usr/localsudotar-zxvfhbase--bin.tar.gz1.2將解壓的文件名hbase-改為hbase,以方便使用,命令如下:sudomvhbase-hbase1.3配置環(huán)境變量
將hbase下的bin目錄添加到path中,這樣,啟動hbase就無需到/usr/local/hbase目錄下,大大的方便了hbase的使用。教程下面的部分還是切換到了/usr/local/hbase目錄操作,有助于初學者理解運行過程,熟練之后可以不必切換。
編輯~/.bashrc文件vi~/.bashrc如果沒有引入過PATH請在~/.bashrc文件尾行添加如下內容:exportPATH=$PATH:/usr/local/hbase/bin如圖1:
圖1
編輯完成后,再執(zhí)行source命令使上述配置在當前終端立即生效,命令如下:source~/.bashrc擴展閱讀:設置Linux環(huán)境變量的方法和區(qū)別(下附)
1.4添加HBase權限sudochown-Rhadoop:hadoop./hbase#將hbase下的所有文件的所有者改為hadoop,hadoop是當前用戶的用戶名。1.5查看HBase版本,確定hbase安裝成功,命令如下:hbaseversion命令執(zhí)行后,輸出信息截圖如圖2:
圖2看到以上輸出消息表示HBase已經安裝成功,接下來將分別進行HBase單機模式和偽分布式模式的配置。2.HBase配置HBase有三種運行模式,單機模式、偽分布式模式、分布式模式。作為學習,我們重點討論單機模式和偽分布式模式。
以下先決條件很重要,比如沒有配置JAVA_HOME環(huán)境變量,就會報錯。
-jdk
-Hadoop(單機模式不需要,偽分布式模式和分布式模式需要)
-SSH以上三者如果沒有安裝,請回到第二章的實驗指導參考如何安裝。2.1單機模式配置1.配置/usr/local/hbase/conf/hbase-env.sh。配置JAVA環(huán)境變量,并添加配置HBASE_MANAGES_ZK為true,用vi命令打開并編輯hbase-env.sh,命令如下:vi/usr/local/hbase/conf/hbase-env.sh配置JAVA環(huán)境變量,jdk的安裝目錄默認是/usr/lib/jvm/java-1.7.0-openjdk,則JAVA_HOME=/usr/lib/jvm/java-1.7.0-openjdk,其中java-1.7.0-openjdk是你的jdk版本;配置HBASE_MANAGES_ZK為true,表示由hbase自己管理zookeeper,不需要單獨的zookeeper。hbase-env.sh中本來就存在這些變量的配置,大家只需要刪除前面的#并修改配置內容即可(圖3,#代表注釋):exportJAVA_HOME=/usr/local/jdk1.7.0_91exportHBASE_MANAGES_ZK=true圖3配置hbase-env.sh添加完成后保存退出即可。2.配置/usr/local/hbase/conf/hbase-site.xml
打開并編輯hbase-site.xml,命令如下:vi/usr/local/hbase/conf/hbase-site.xml在啟動HBase前需要設置屬性hbase.rootdir,用于指定HBase數據的存儲位置,因為如果不設置的話,hbase.rootdir默認為/tmp/hbase-${},這意味著每次重啟系統(tǒng)都會丟失數據。此處設置為HBase安裝目錄下的hbase-tmp文件夾即(/usr/local/hbase/hbase-tmp),添加配置如下:<configuration><property><name>hbase.rootdir</name><value>file:///usr/local/hbase/hbase-tmp</value></property></configuration>3.接下來測試運行。首先切換目錄至HBase安裝目錄/usr/local/hbase;再啟動HBase。命令如下:cd/usr/local/hbasebin/start-hbase.shbin/hbaseshell上述三條命令中,sudobin/start-hbase.sh用于啟動HBase,bin/hbaseshell用于打開shell命令行模式,用戶可以通過輸入shell命令操作HBase數據庫。
成功啟動HBase,截圖如圖4:
圖4輸入quit退出停止HBase運行,命令如下:bin/stop-hbase.sh注意:如果在操作HBase的過程中發(fā)生錯誤,可以通過{HBASE_HOME}目錄(/usr/local/hbase)下的logs子目錄中的日志文件查看錯誤原因。1.3.2編程實踐1.利用Shell命令1.1HBase中創(chuàng)建表HBase中用create命令創(chuàng)建表,具體如下:create'student','Sname','Ssex','Sage','Sdept','course'命令執(zhí)行截圖如圖10:
圖10此時,即創(chuàng)建了一個“student”表,屬性有:Sname,Ssex,Sage,Sdept,course。因為HBase的表中會有一個系統(tǒng)默認的屬性作為行鍵,無需自行創(chuàng)建,默認為put命令操作中表名后第一個數據。創(chuàng)建完“student”表后,可通過describe命令查看“student”表的基本信息。命令執(zhí)行截圖如圖11:
圖111.2HBase數據庫基本操作本小節(jié)主要介紹HBase的增、刪、改、查操作。在添加數據時,HBase會自動為添加的數據添加一個時間戳,故在需要修改數據時,只需直接添加數據,HBase即會生成一個新的版本,從而完成“改”操作,舊的版本依舊保留,系統(tǒng)會定時回收垃圾數據,只留下最新的幾個版本,保存的版本數可以在創(chuàng)建表的時候指定。添加數據
HBase中用put命令添加數據,注意:一次只能為一個表的一行數據的一個列,也就是一個單元格添加一個數據,所以直接用shell命令插入數據效率很低,在實際應用中,一般都是利用編程操作數據。
當運行命令:put‘student’,’95001’,’Sname’,’LiYing’時,即為student表添加了學號為95001,名字為LiYing的一行數據,其行鍵為95001。put'student','95001','Sname','LiYing'命令執(zhí)行截圖如圖12,即為student表添加了學號為95001,名字為LiYing的一行數據,其行鍵為95001。
圖12put'student','95001','course:math','80'命令執(zhí)行截圖如圖13,即為95001行下的course列族的math列添加了一個數據。
圖13刪除數據在HBase中用delete以及deleteall命令進行刪除數據操作,它們的區(qū)別是:1.delete用于刪除一個數據,是put的反向操作;2.deleteall操作用于刪除一行數據。1.delete命令delete'student','95001','Ssex'命令執(zhí)行截圖如圖14,即刪除了student表中95001行下的Ssex列的所有數據。
圖142.deleteall命令deleteall'student','95001'命令執(zhí)行截圖如圖15,即刪除了student表中的95001行的全部數據。
圖15查看數據
HBase中有兩個用于查看數據的命令:1.get命令,用于查看表的某一個單元格數據;2.scan命令用于查看某個表的全部數據1.get命令get'student','95001'命令執(zhí)行截圖如圖16,返回的是‘student’表‘95001’行的數據。
圖162.scan命令scan'student'命令執(zhí)行截圖如圖17,返回的是‘student’表的全部數據。
圖17刪除表
刪除表有兩步,第一步先讓該表不可用,第二步刪除表。disable'student'drop'student'命令執(zhí)行截圖如圖18:
圖181.3查詢表歷史數據查詢表的歷史版本,需要兩步。
1、在創(chuàng)建表的時候,指定保存的版本數(假設指定為5)create'teacher',{NAME=>'username',VERSIONS=>5}2、插入數據然后更新數據,使其產生歷史版本數據,注意:這里插入數據和更新數據都是用put命令put'teacher','91001','username','Mary'put'teacher','91001','username','Mary1'put'teacher','91001','username','Mary2'put'teacher','91001','username','Mary3'put'teacher','91001','username','Mary4'put'teacher','91001','username','Mary5'3、查詢時,指定查詢的歷史版本數。默認會查詢出最新的數據。(有效取值為1到5)get'teacher','91001',{COLUMN=>'username',VERSIONS=>5}查詢結果截圖如圖19:
圖191.4退出HBase數據庫表操作最后退出數據庫操作,輸入exit命令即可退出,注意:這里退出HBase數據庫是退出對數據庫表的操作,而不是停止啟動HBase數據庫后臺運行。exit圖26實驗五Hive安裝及數據統(tǒng)計分析1.2實驗環(huán)境1.操作系統(tǒng):CentOS6.62.已經安裝好Linux操作系統(tǒng),并安裝配置了Hadoop環(huán)境,已經安裝好了Hadoop分布式文件系統(tǒng)3.登錄用戶名:hadoop,密碼:123456賬戶:root密碼:123456桌面的hive-site.txt存放配置文件的內容hive-command.txt存放常用的hive命令1.3實驗原理1.通過實驗掌握基本的Hive安裝方法;2.掌握用數據倉庫Hive來解決一些常見的數據庫操作以及簡單的Hive編程。1.3.1Hive安裝因為Hive是構建在Hadoop之上的,所以在安裝Hive前,我們需要安裝Hadoop環(huán)境,這里已經安裝好了Hadoop環(huán)境。下面開始安裝Hive。安裝Hive的過程和安裝Hadoop很類似,首先,我們先下載一個Hive軟件壓縮包,下載的版本可能會有所不同,但并不會影響實驗結果。(下載地址:/apache/hive/)1.下載并解壓hive源程序,點擊apache-hive-1.2.2-bin.tar.gz下載sudotar-zxvf~/Downloads/apache-hive-1.2.2-bin.tar.gz-C/usr/local#解壓到/usr/local中cd/usr/local/sudomvapache-hive-1.2.2-binhive#將文件夾名改為hivesudochown-Rhadoop:hadoophive#修改文件權限\o"復制代碼"\o"查看純文本代碼"2.配置環(huán)境變量
為了方便使用,我們把hive命令加入到環(huán)境變量中去,編輯~/.bashrc文件vim~/.bashrc,在最前面一行添加:保存退出后,運行source~/.bashrc使配置立即生效。3.修改/usr/local/hive/conf下的hive-site.xml
將hive-default.xml.template重命名為hive-default.xml;新建一個文件sudotouchhive-site.xml,并在hive-site.xml中粘貼如下配置信息:<?xmlversion="1.0"encoding="UTF-8"standalone="no"?><?xml-stylesheettype="text/xsl"href="configuration.xsl"?><configuration><property><name>javax.jdo.option.ConnectionURL</name><value>jdbc:mysql://localhost:3306/hive?createDatabaseIfNotExist=true</value><description>JDBCconnectstringforaJDBCmetastore</description></property><property><name>javax.jdo.option.ConnectionDriverName</name><value>com.mysql.jdbc.Driver</value><description>DriverclassnameforaJDBCmetastore</description></property><property><name>javax.jdo.option.ConnectionUserName</name><value>root</value><description>usernametouseagainstmetastoredatabase</description></property><property><name>javax.jdo.option.ConnectionPassword</name><value>123456</value><description>passwordtouseagainstmetastoredatabase</description></property></configuration>1.3.2安裝并配置mysql這里我們采用MySQL數據庫保存Hive的元數據,而不是采用Hive自帶的derby來存儲元數據。1.CentOS下安裝mysql使用以下命令即可進行mysql安裝上述命令會安裝以下包:apparmormysql-client-5.7mysql-commonmysql-servermysql-server-5.7mysql-server-core-5.7因此無需再安裝mysql-client等。設置完成后等待自動安裝即可,默認安裝完成就啟動了mysql。然后重啟mysql服務:確認是否啟動成功,mysql節(jié)點處于LISTEN狀態(tài)表示啟動成功:使用sudomysql-uroot-p進入mysqlshell界面:注意我這里的密碼是空的,安裝時沒有設置。2.下載mysqljdbc包,下載地址:/downloads/connector/j/解壓:將mysql-connector-java-5.1.42-bin.jar拷貝到/usr/local/hive/lib目錄下:3.啟動并登陸mysqlshell啟動mysql服務:登陸shell界面:4.新建hive數據庫。這個hive數據庫與hive-site.xml中l(wèi)ocalhost:3306/hive的hive對應,用來保存hive元數據。5.配置mysql允許hive接入:將所有數據庫的所有表的所有權限賦給hive用戶,后面的hive是配置hive-site.xml中配置的連接密碼。刷新mysql系統(tǒng)權限關系表:6.啟動hive啟動hive之前,請先啟動hadoop集群。注意,如果沒有配置PATH,請加上路徑才能運行命令,比如,本實驗Hadoop安裝目錄是“/usr/local/hadoop”,Hive的安裝目錄是“/usr/local/hive”,因此,啟動hadoop和hive,也可以使用下面帶路徑的方式:啟動hadoop:首先修改/etc/hosts文件,使得ip與hosts里的一致,如圖然后啟動hadoop,用jps檢
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 產后修復中心合同范本
- 勞務代管合同范本
- 加盟托管經營合同范本
- 出租吊車服務合同范本
- 單位代建房合同范例
- 2013版建設合同范本
- 單位監(jiān)控安裝合同范本
- 個人雇傭出海作業(yè)合同范本
- 加工貨款合同貨款合同范本
- 個人山林承包合同范本
- 2025春季開學前學校安全隱患排查工作實施方案:5大安全排查一個都不能少
- 預防校園欺凌主題班會課件(共36張課件)
- 威圖電柜空調SK3304500使用說書
- 人教版小學三年級道德與法治下冊全冊教案(精品)
- 義務教育《勞動》課程標準(2022年版)
- 從業(yè)務骨干到管理者(課堂PPT)
- 2018年黑龍江統(tǒng)招專升本公共英語真題
- (完整版)小學生必背古詩300首帶拼音版本
- 英文版驗資報告
- 老撾10大經濟特區(qū)
- 膜性腎病與KDIGO指南
評論
0/150
提交評論