先電大數(shù)據(jù)平臺操作手冊-XianDian-BigData-v2_第1頁
先電大數(shù)據(jù)平臺操作手冊-XianDian-BigData-v2_第2頁
先電大數(shù)據(jù)平臺操作手冊-XianDian-BigData-v2_第3頁
先電大數(shù)據(jù)平臺操作手冊-XianDian-BigData-v2_第4頁
先電大數(shù)據(jù)平臺操作手冊-XianDian-BigData-v2_第5頁
已閱讀5頁,還剩52頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

./WORD完美格式先電大數(shù)據(jù)平臺先電大數(shù)據(jù)平臺用戶手冊用戶手冊用戶手冊版本:先電Cloud-BigData-v2.1發(fā)布日期:2017年02月21日XX第五十五所技術(shù)開發(fā)有限公司.WORD完美格式版本修訂說明修訂版本修訂時間修訂說明XD-BigData-v1.32015年10月28日先電大數(shù)據(jù)平臺用戶冊XD-BigData-v1.3.12016年1月19日增加GRE、VLAN網(wǎng)絡(luò)的部署方法XD-BigData-v1.42016年4月12日為防止與JavaWeb中MapReduce開發(fā)混淆。刪除hadoop案例開發(fā)XD-BigData-v2.02016年11月1日更新基于二次開發(fā)的hadoop平臺XD-BigData-v2.0.12016年12月30日更新鏡像中與perl版本不兼容問題的解決辦法;XD-BigData-v2.0.22017年01月10日升級系統(tǒng)版本為centos7,升級HDP版本至2.4。XD-BigData-v2.0.32017年02月13日更新軟件包logoXD-BigData-v2.0.52017年02月21日更新軟件包logo,修改文檔"8.2.2基于項目的協(xié)同過濾"表格參數(shù)XD-BigData-v2.12017年04月21日更新用戶手冊目錄TOC\o"1-2"\h\z\u1概述51.1大數(shù)據(jù)簡介51.2先電大數(shù)據(jù)平臺簡介52基本環(huán)境配置62.1配置主機名72.2修改hosts文件72.3修改yum源72.4配置ntp82.5配置SSH92.6禁用TransparentHugePages92.7安裝配置JDK103配置ambari-server113.1安裝MariaDB數(shù)據(jù)庫113.2安裝配置ambari-server124配置ambari-agent145部署管理Hadoop集群145.1部署Hadoop集群145.2HDFS運維管理215.3MapReduce316部署Hive數(shù)據(jù)倉庫336.1部署Hive336.1Hive用戶指南357部署Hbase分布式列數(shù)據(jù)庫457.1部署HBase457.2測試驗證477.3HBase用戶指南478部署Mahout數(shù)據(jù)挖據(jù)工具538.1部署Mahout538.2測試驗證549部署Pig數(shù)據(jù)分析平臺559.1部署Pig559.2Pig簡介559.3運行案例56.概述大數(shù)據(jù)簡介"大數(shù)據(jù)"是一個體量特別大,數(shù)據(jù)類別特別龐雜的數(shù)據(jù)集合,并且這樣的數(shù)據(jù)集無法用傳統(tǒng)數(shù)據(jù)庫工具或常規(guī)軟件工具抓取、管理和處理其內(nèi)容。大數(shù)據(jù)技術(shù)是指從各種各樣類型的龐雜數(shù)據(jù)中,快速的獲取有價值的信息的能力。適用于大數(shù)據(jù)的技術(shù)包括大規(guī)模并行處理數(shù)據(jù)庫,數(shù)據(jù)挖掘電網(wǎng),分布式文件系統(tǒng),分布式數(shù)據(jù)庫,云計算平臺和可擴展的存儲系統(tǒng)。Apache的Hadoop項目是可靠的、可擴展的、開源的、分布式計算軟件。Apache的Hadoop軟件庫是允許通過相對簡單的程序模型構(gòu)建計算集群為龐大的數(shù)據(jù)集進行分布式計算的框架。Hadoop的設(shè)計思想可以將計算模式從單節(jié)點服務(wù)器擴展為數(shù)以千計的計算集群,每一個單獨的服務(wù)器都提供自主的本地計算及存儲能力。對于高可用指標而言,Hadoop軟件庫自身可以通過檢測和故障調(diào)試從應(yīng)用層來實現(xiàn)高可用而不需要關(guān)心硬件底層的高可用性。所以提供一個計算集群上層的高可用服務(wù)對于集群故障修復而言就顯得至關(guān)重要。先電大數(shù)據(jù)平臺簡介先電大數(shù)據(jù)平臺是基于Ambari進行二次開發(fā)的Hadoop分布式集群配置管理工具,該平臺通過安裝向?qū)磉M行集群的搭建,簡化了集群供應(yīng)。同時,他還有一個監(jiān)控組件,叫做Ambari-Metrics,可以提前配置好關(guān)鍵的運維指標〔metrics,然后收集集群的中服務(wù)、主機等運行狀態(tài)等信息,通過WEB的方式顯示出來。我們可以直接查看HadoopCore〔HDFS和MapReduce及相關(guān)項目〔如HBase、Hive和HCatalog是否健康。它的用戶界面非常直觀,用戶可以輕松有效地查看信息并控制集群。先電大數(shù)據(jù)平臺支持作業(yè)與任務(wù)執(zhí)行的可視化與分析,能夠更好地查看依賴和性能。通過一個完整的RESTfulAPI把監(jiān)控信息暴露出來,集成了現(xiàn)有的運維工具。平臺使用Ganglia收集度量指標,用Nagios支持系統(tǒng)報警。圖1.1Ambari結(jié)構(gòu)圖其中Ambari是一個分布式架構(gòu)的軟件,主要由兩部分組成:AmbariServer和AmbariAgent,如圖1-1所示。AmbariServer會讀取Stack和Service的配置文件。當用Ambari創(chuàng)建集群的時候,AmbariServer傳送Stack和Service的配置文件以及Service生命周期的控制腳本到AmbariAgent。Agent拿到配置文件后,會下載安裝公共源里軟件包〔Redhat,就是使用yum服務(wù)。安裝完成后,AmbariServer會通知Agent去啟動Service。之后AmbariServer會定期發(fā)送命令到Agent檢查Service的狀態(tài),Agent上報給Server,并呈現(xiàn)在Ambari的GUI上,方便用戶了解到集群的各種狀態(tài),并進行相應(yīng)的維護。圖1-1Ambari架構(gòu)圖基本環(huán)境配置以兩臺節(jié)點為例來組件Hadoop分布式集群,這里采用的系統(tǒng)版本為Centos7,如下表所示:主機名內(nèi)存硬盤IP地址角色master8192MB100GAmbari-Serverslaver14096MB100GAmbari-Agent配置主機名#master#hostnamectlset-hostnamemaster#hostnamemaster#slaver1#hostnamectlset-hostnameslaver1#hostnameslaver1修改hosts文件#master&slaver1#vi/etc/hosts31master33slaver1修改yum源#master將掛在到/mnt目錄下,將其中的ambari解壓到/opt目錄下,并在master節(jié)點配置ftp服務(wù)。注意:因為安裝大數(shù)據(jù)相關(guān)軟件包時,可能會用到相關(guān)依賴軟件包,所以需要配置Centos7Yum源,這里可以采用IAAS中的Centos7Yum源。#master&slaver1#rm-vf*配置Yum源#viambari.repo[centos7]/centos7/〔注:具體的yum源根據(jù)真實環(huán)境配置,本次為實驗室測試環(huán)境>gpgcheck=0enabled=1name=centos[ambari]name=ambari〔注:具體的yum源根據(jù)真實環(huán)境配置,本次為實驗室測試環(huán)境>enabled=1gpgcheck=0#master#yum-yinstallhttpd將/mnt/文件夾中HDP-2.4-BASE和兩個文件夾拷貝到/var/www/html/目錄下。啟動httpd服務(wù)。#systemctlenablehttpd.service#systemctlstatushttpd.service配置ntp#master#yum-yinstallntp#vi/etc/ntp.conf注釋或者刪除以下四行server0.iburstserver1.iburstserver2.iburstserver3.iburst添加以下兩行serverfudgestratum10#systemctlenablentpd#systemctlstartntpd#slaver1#yum-yinstallntpdate#ntpdatemaster#systemctlenablentpdate配置SSH#master&slaver1檢查2個節(jié)點是否可以通過無密鑰相互訪問,如果未配置,則進行SSH無密碼公鑰認證配置。如下:#yuminstallopenssh-clients#ssh-keygen#ssh-copy-idmaster.hadoop#ssh-copy-idslaver1.hadoopssh登錄遠程主機查看是否成功#sshmaster.hadoop#exit#sshslaver1.hadoop#exit禁用TransparentHugePages操作系統(tǒng)后臺有一個叫做khugepaged的進程,它會一直掃描所有進程占用的內(nèi)存,在可能的情況下會把4kpage交換為HugePages,在這個過程中,對于操作的內(nèi)存的各種分配活動都需要各種內(nèi)存鎖,直接影響程序的內(nèi)存訪問性能,并且,這個過程對于應(yīng)用是透明的,在應(yīng)用層面不可控制,對于專門為4kpage優(yōu)化的程序來說,可能會造成隨機的性能下降現(xiàn)象。#master&slaver1#cat/sys/kernel/mm/transparent_hugepage/enabled[always]madvisenever#echonever>/sys/kernel/mm/transparent_hugepage/enabled#echonever>/sys/kernel/mm/transparent_hugepage/defrag#cat/sys/kernel/mm/transparent_hugepage/enabledalwaysmadvise[never]重啟后失效,需要再次執(zhí)行安裝配置JDK#master#mkdir/usr/jdk64/#mount-oloop/mnt/#cd/mnt/#tar-zxvfjdk-8u77-linux-x64.tar.gz-C/usr/jdk64/#vi/etc/profileexportPATH=$JAVA_HOME/bin:$PATH#source/etc/profile#java–versionjavaversion"1.8.0_77"Java<TM>SERuntimeEnvironment<build1.8.0_77-b03>JavaHotSpot<TM>64-BitServerVM<build25.77-b03,mixedmode>#slaver1#mkdir/usr/jdk64/#scp06://mnt/jdk-8u77-linux-x64.tar.gz.#tar-zxvfjdk-8u77-linux-x64.tar.gz-C/usr/jdk64/#vi/etc/profileexportPATH=$JAVA_HOME/bin:$PATH#source/etc/profile#java–versionjavaversion"1.8.0_77"Java<TM>SERuntimeEnvironment<build1.8.0_77-b03>JavaHotSpot<TM>64-BitServerVM<build25.77-b03,mixedmode>配置ambari-server#master#yum-yinstallambari-server安裝MariaDB數(shù)據(jù)庫#master#yuminstallmariadbmariadb-servermysql-connector-java啟動服務(wù)#systemctlenablemariadb#systemctlstartmariadb配置MySQL#mysql_secure_installation按enter確認后設(shè)置數(shù)據(jù)庫root密碼,我們這里設(shè)置為"bigdata"Removeanonymoususers?[Y/n]yDisallowrootloginremotely?[Y/n]nRemovetestdatabaseandaccesstoit?[Y/n]yReloadprivilegetablesnow?[Y/n]y創(chuàng)建ambari數(shù)據(jù)庫#mysql-uroot-pbigdataMariaDB[<none>]>createdatabaseambari;MariaDB[<none>]>grantallprivilegesonambari.*to'ambari'@'localhost'identifiedby'bigdata';MariaDB[<none>]>grantallprivilegesonambari.*to'ambari'@'%'identifiedby'bigdata';MariaDB[<none>]>useambari;MariaDB[ambari]>source/var/lib/ambari-server/resources/Ambari-DDL-MySQL-CREATE.sqlMariaDB[ambari]>Bye安裝配置ambari-server#master#ambari-serversetupWARNING:SELinuxissetto'permissive'modeandtemporarilydisabled.OKtocontinue[y/n]<y>?Customizeuseraccountforambari-serverdaemon[y/n]<n>?nCheckingJDK...[1]OracleJDK1.8+JavaCryptographyExtension<JCE>PolicyFiles8[2]OracleJDK1.7+JavaCryptographyExtension<JCE>PolicyFiles7[3]CustomJDK==============================================================================Enterchoice<1>:3ValidatingJDKonAmbariServer...done.Completingsetup...Configuringdatabase...Enteradvanceddatabaseconfiguration[y/n]<n>?yConfiguringdatabase...====================================================================Chooseoneofthefollowingoptions:[1]-PostgreSQL<Embedded>[2]-Oracle[3]-MySQL[4]-PostgreSQL[5]-MicrosoftSQLServer<TechPreview>[6]-SQLAnywhere====================================================================Enterchoice<1>:3Hostname<localhost>:Port<3306>:Databasename<ambari>:Username<ambari>:EnterDatabasePassword<bigdata>:Proceedwithconfiguringremotedatabaseconnectionproperties[y/n]<y>?AmbariServer'setup'completedsuccessfully.啟動ambari-server服務(wù)#ambari-serverstart登陸界面31:8080/登錄用戶名密碼為admin:admin配置ambari-agent#master&slaver1#yum-yinstallambari-agent#vi/etc/ambari-agent/conf/ambari-agent.ini[server]hostname=master#ambari-agentrestart#tail-f/var/log/ambari-agent/ambari-agent.logINFO2017-01-1209:44:20,919Controller.py:265-Heartbeatresponsereceived<id=1340>部署管理Hadoop集群部署Hadoop集群登陸界面http://{IPAddress}:8080/,用戶名密碼為admin:admin。接下來就可以啟動安裝向?qū)?創(chuàng)建集群,安裝服務(wù)。關(guān)于XianDian-BigData的軟件包進行了分開打包。XianDian-BigData-v2.0.2-BASE.iso軟件包包含HDFS、MapReduce2、YARN、Tez、Hive、HBase、Pig、Sqoop、Zookeeper、Storm、Flume、AmbariMetrics、Kerberos、Mahou、Spark等服務(wù)組件。XianDian-BigData-v2.0.2-EXT.iso軟件包包含了accumulo、atlas、falcon、kafka、knox、oozie、ranger、slider等服務(wù)組件。這里如果需要這些服務(wù)組件,則需要添加一個yum配置文件,如下:#viHDP-EXTEND.repo[HDP-2.4-EXTEND]name=HDP-2.4-EXTENDbaseurl=http://master/HDP-2.4-EXTENDenabled=1gpgcheck=0這里要設(shè)置GrafanaAdmin的密碼。部署成功后,便可成功進入界面。在主界面中,可以查看集群狀態(tài)監(jiān)控信息。在HadoopMaster的終端執(zhí)行jps命令,在打印結(jié)果中會看到master上運行的進程,這些進程表示主節(jié)點進程啟動成功。在HadoopSlave的終端執(zhí)行jps命令,也會看到相應(yīng)的進程:Slaver1:HDFS運維管理HDFS命令手冊概述切換到hdfs用戶,可以通過"hadoopfs-"命令來查看HDFS文件系統(tǒng)的幫助命令,通過提示的命令來對文件系統(tǒng)進行管理。命令如下:$hadoopfs-執(zhí)行結(jié)果如下:所有的hadoop命令均由bin/hadoop腳本引發(fā)。不指定參數(shù)運行hadoop腳本會打印所有命令的描述。用法:hadoop[--configconfdir][COMMAND][GENERIC_OPTIONS][COMMAND_OPTIONS]Hadoop有一個選項解析框架用于解析一般的選項和運行類。命令選項描述--configconfdir覆蓋缺省配置目錄。缺省是${HADOOP_HOME}/confGENERIC_OPTIONS多個命令都支持的通用選項COMMAND命令選項S各種各樣的命令和它們的選項會在下面提到。這些命令被分為用戶命令管理命令兩組。權(quán)限管理在Hadoop集群中,只有hdfs用戶才有對HDFS文件系統(tǒng)的管理權(quán)限,當其它用戶對文件系統(tǒng)進行操作,需要給其賦予相應(yīng)的權(quán)限,這里為了方便操作,將所有用戶的讀寫執(zhí)行權(quán)限全部放開,命令如下:#suhdfs$hadoopfs-chmod-R777/常規(guī)選項下面的選項被dfsadmin,fs,fsck和job支持。應(yīng)用程序要實現(xiàn)Tool來支持常規(guī)選項。GENERIC_OPTION描述-conf

<configuration

file>指定應(yīng)用程序的配置文件。-D

<property=value>為指定property指定值value。-fs

<local|namenode:port>指定namenode。-jt

<local|jobtracker:port>指定job

tracker。只適用于job。-files

<逗號分隔的文件列表>指定要拷貝到map

reduce集群的文件的逗號分隔的列表。

只適用于job。-libjars

<逗號分隔的jar列表>指定要包含到classpath中的jar文件的逗號分隔的列表。

只適用于job。-archives

<逗號分隔的archive列表>指定要被解壓到計算節(jié)點上的檔案文件的逗號分割的列表。

只適用于job。用戶命令hadoop集群用戶的常用命令。archive創(chuàng)建一個hadoop檔案文件。參考HadoopArchives.用法:hadooparchive-archiveNameNAME-p<parentpath><src>*<dest>命令選項描述-archiveName

NAME要創(chuàng)建的檔案的名字。-p<parentpath>父路徑,格式與正則表達式一致。src父路徑下面需要創(chuàng)建檔案的文件名〔可多個dest保存檔案文件的目標目錄。distcp遞歸地拷貝文件或目錄。參考DistCp指南以獲取等多信息。用法:hadoopdistcp<srcurl><desturl>命令選項描述srcurl源Urldesturl目的Urlfs用法:hadoopfs[GENERIC_OPTIONS][COMMAND_OPTIONS]運行一個常規(guī)的文件系統(tǒng)客戶端。fsck運行HDFS文件系統(tǒng)檢查工具。參考Fsck了解更多。用法:hadoopfsck[GENERIC_OPTIONS]<path>[-move|-delete|-openforwrite][-files[-blocks[-locations|-racks]]]命令選項描述<path>檢查的起始目錄。-move移動受損文件到/lost+found-delete刪除受損文件。-openforwrite打印出寫打開的文件。-files打印出正被檢查的文件。-blocks打印出塊信息報告。-locations打印出每個塊的位置信息。-racks打印出data-node的網(wǎng)絡(luò)拓撲結(jié)構(gòu)。jar運行jar文件。用戶可以把他們的MapReduce代碼捆綁到j(luò)ar文件中,使用這個命令執(zhí)行。用法:hadoopjar<jar>[mainClass]args...job用于和MapReduce作業(yè)交互和命令。用法:hadoopjob[GENERIC_OPTIONS][-submit<job-file>]|[-status<job-id>]|[-counter<job-id><group-name><counter-name>]|[-kill<job-id>]|[-events<job-id><from-event-#><#-of-events>]|[-history[all]<jobOutputDir>]|[-list[all]]|[-kill-task<task-id>]|[-fail-task<task-id>]命令選項描述-submit

<job-file>提交作業(yè)-status

<job-id>打印map和reduce完成百分比和所有計數(shù)器。-counter

<job-id>

<group-name>

<counter-name>打印計數(shù)器的值。-kill

<job-id>殺死指定作業(yè)。-events

<job-id>

<from-event-#>

<#-of-events>打印給定范圍內(nèi)jobtracker接收到的事件細節(jié)。-history

[all]

<jobOutputDir>-history

<jobOutputDir>

打印作業(yè)的細節(jié)、失敗及被殺死原因的細節(jié)。更多的關(guān)于一個作業(yè)的細節(jié)比如成功的任務(wù),做過的任務(wù)嘗試等信息可以通過指定[all]選項查看。-list

[all]-list

all顯示所有作業(yè)。-list只顯示將要完成的作業(yè)。-kill-task

<task-id>殺死任務(wù)。被殺死的任務(wù)不會不利于失敗嘗試。-fail-task

<task-id>使任務(wù)失敗。被失敗的任務(wù)會對失敗嘗試不利。pipes運行pipes作業(yè)。用法:hadooppipes[-conf<path>][-jobconf<key=value>,<key=value>,...][-input<path>][-output<path>][-jar<jarfile>][-inputformat<class>][-map<class>][-partitioner<class>][-reduce<class>][-writer<class>][-program<executable>][-reduces<num>]命令選項描述-conf

<path>作業(yè)的配置-jobconf

<key=value>,

<key=value>,

...增加/覆蓋作業(yè)的配置項-input

<path>輸入目錄-output

<path>輸出目錄-jar

<jar

file>Jar文件名-inputformat

<class>InputFormat類-map

<class>Java

Map類-partitioner

<class>Java

Partitioner-reduce

<class>Java

Reduce類-writer

<class>Java

RecordWriter-program

<executable>可執(zhí)行程序的URI-reduces

<num>reduce個數(shù)version打印版本信息。用法:hadoopversionCLASSNAMEhadoop腳本可用于調(diào)調(diào)用任何類。用法:hadoopCLASSNAME運行名字為CLASSNAME的類。管理命令hadoop集群管理員常用的命令。balancer運行集群平衡工具。管理員可以簡單的按Ctrl-C來停止平衡過程。參考Rebalancer了解更多。用法:hadoopbalancer[-threshold<threshold>]命令選項描述-threshold<threshold> 磁盤容量的百分比。這會覆蓋缺省的閥值。daemonlog獲取或設(shè)置每個守護進程的日志級別。用法:hadoopdaemonlog-getlevel<host:port><classname>用法:hadoopdaemonlog-setlevel<host:port><classname><level>命令選項描述-getlevel

<host:port>

<classname>打印運行在<host:port>的守護進程的日志級別。這個命令內(nèi)部會連接http://<host:port>/logLevel?log=<name>-setlevel

<host:port>

<classname>

<level>設(shè)置運行在<host:port>的守護進程的日志級別。這個命令內(nèi)部會連接http://<host:port>/logLevel?log=<name>datanode運行一個HDFS的datanode。用法:hadoopdatanode[-rollback]命令選項描述-report報告文件系統(tǒng)的基本信息和統(tǒng)計信息。-safemodeenter|leave|get|wait安全模式維護命令。安全模式是Namenode的一個狀態(tài),這種狀態(tài)下,Namenode1.不接受對名字空間的更改<只讀>2.不復制或刪除塊Namenode會在啟動時自動進入安全模式,當配置的塊最小百分比數(shù)滿足最小的副本數(shù)條件時,會自動離開安全模式。安全模式可以手動進入,但是這樣的話也必須手動關(guān)閉安全模式。-refreshNodes重新讀取hosts和exclude文件,更新允許連到Namenode的或那些需要退出或入編的Datanode的集合。-finalizeUpgrade終結(jié)HDFS的升級操作。Datanode刪除前一個版本的工作目錄,之后Namenode也這樣做。這個操作完結(jié)整個升級過程。-upgradeProgressstatus|details|force請求當前系統(tǒng)的升級狀態(tài),狀態(tài)的細節(jié),或者強制升級操作進行。-metasavefilename保存Namenode的主要數(shù)據(jù)結(jié)構(gòu)到hadoop.log.dir屬性指定的目錄下的<filename>文件。對于下面的每一項,<filename>中都會一行內(nèi)容與之對應(yīng)1.Namenode收到的Datanode的心跳信號2.等待被復制的塊3.正在被復制的塊4.等待被刪除的塊-setQuota<quota><dirname>...<dirname>為每個目錄<dirname>設(shè)定配額<quota>。目錄配額是一個長整型整數(shù),強制限定了目錄樹下的名字個數(shù)。命令會在這個目錄上工作良好,以下情況會報錯:1.N不是一個正整數(shù),或者2.用戶不是管理員,或者3.這個目錄不存在或是文件,或者4.目錄會馬上超出新設(shè)定的配額。-clrQuota<dirname>...<dirname>為每一個目錄<dirname>清除配額設(shè)定。命令會在這個目錄上工作良好,以下情況會報錯:1.這個目錄不存在或是文件,或者2.用戶不是管理員。如果目錄原來沒有配額不會報錯。-help[cmd]顯示給定命令的幫助信息,如果沒有給定命令,則顯示所有命令的幫助信息。secondarynamenode運行HDFS的secondarynamenode。用法:hadoopsecondarynamenode[-checkpoint[force]]|[-geteditsize]命令選項描述-checkpoint[force] 如果EditLog的大小>=fs.checkpoint.size,啟動Secondarynamenode的檢查點過程。如果使用了-force,將不考慮EditLog的大小。-geteditsize打印EditLog大小。進程管理查看當前系統(tǒng)中啟動的進程命令如下:#jps執(zhí)行結(jié)果如下:重啟NameNode和DateNode進程hadoop-daemon.sh腳本是啟動和停止hadoop后臺程序,"—config"參數(shù)指定啟動程序時用到的配置文件目錄。命令如下:#/usr/hdp/current/hadoop-client/sbin/hadoop-daemon.sh--config/usr/hdp/current/hadoop-client/confstop{namenode/datenode}#/usr/hdp/current/hadoop-client/sbin/hadoop-daemon.sh--config/usr/hdp/current/hadoop-client/confstart{namenode/datenode}可靠性管理Hadoop集群中的主機在某些情況下會出現(xiàn)宕機或者系統(tǒng)損壞的問題,一旦遇到這些問題,HDFS文件系統(tǒng)中的數(shù)據(jù)文件難免會產(chǎn)生損壞或者丟失,為了保證HDFS文件系統(tǒng)的可靠性,可以采取以下策略:冗余副本策略更改集群冗余副本的復制因子為5,從而避免某臺節(jié)點主機損壞導致數(shù)據(jù)丟失的情況,這里我們有兩種方式來設(shè)置復制因子。第一種是通過WEB界面,進入到HDFS配置中修改Blockreplication的參數(shù)值。第二種方式是在Shell命令行模式下,修改hdfs-site.xml配置文件,將"dfs.replication"的值設(shè)置為5,然后重啟NameNode和DataNode進程。<property><name>dfs.replication</name><value>5</value></property>安全模式當在進行系統(tǒng)維護或者集群維護時,不希望用戶進行再去操作HDFS文件系統(tǒng)中文件,這時候需要手動將NameNode設(shè)置成安全模式的狀態(tài)。該操作需要HDFS管理用戶來進行實現(xiàn),即hdfs用戶。命令如下:$hadoopdfsadmin-safemodeenter$hadoopdfsadmin-safemodeget執(zhí)行結(jié)果如下:SafemodeisON回收站設(shè)置HDFS文件系統(tǒng)回收站中的文件徹底刪除的時間間隔為7天。進入到HDFS配置中修改""的值為10080〔分鐘。注:當該值為0時,表示禁用回收站的功能??煺展芾頌镠DFS文件系統(tǒng)中"/1daoyun"目錄創(chuàng)建快照,首先需要設(shè)置該目錄可進行快照功能,然后再進行創(chuàng)建快照。創(chuàng)建完成后,創(chuàng)建一個恢復文件夾,通過cp命令可以恢復快照,如下:MapReduce運行案例進入目錄中,存在一個的案例JAR包,其所自帶的案例如下:這里,我們以運行一個圓周率的計算為例:##hadoopjarhadoop-mapreduce-examples-.4.3.0-227.jarpi55部署Hive數(shù)據(jù)倉庫部署Hive進入先電大數(shù)據(jù)平臺主界面,點擊左側(cè)的動作按鈕,添加Hive服務(wù)。Hive用戶指南測試驗證啟動hive客戶端#suhive$hive$logout退出hive用戶hive命令參數(shù)usage:hive-d,--define<key=value>Variablesubsitutiontoapplytohivecommands.e.g.-dA=Bor--defineA=B--database<databasename>Specifythedatabasetouse-e<quoted-query-string>SQLfromcommandline-f<filename>SQLfromfiles-H,--helpPrinthelpinformation--hiveconf<property=value>Usevalueforgivenproperty--hivevar<key=value>Variablesubsitutiontoapplytohivecommands.e.g.--hivevarA=B-i<filename>InitializationSQLfile-S,--silentSilentmodeininteractiveshell-v,--verboseVerbosemode<echoexecutedSQLtotheconsole>hive交互模式hive>showtables;#查看所有表名hive>showtables'ad*'#查看以'ad'開頭的表名hive>set命令#設(shè)置變量與查看變量;hive>set-v#查看所有的變量hive>sethive.stats.atomic#查看hive.stats.atomic變量hive>sethive.stats.atomic=false#設(shè)置hive.stats.atomic變量hive>dfs-ls#查看hadoop所有文件路徑hive>dfs-ls/user/hive/warehouse/#查看hive所有文件hive>dfs-ls/user/hive/warehouse/ptest#查看ptest文件hive>sourcefile<filepath>#在client里執(zhí)行一個hive腳本文件hive>quit#退出交互式shellhive>exit#退出交互式shellhive>reset#重置配置為默認值hive>!ls#從Hiveshell執(zhí)行一個shell命令操作及函數(shù)查看函數(shù):hive>showfunctions;正則查看函數(shù)名:showfunctions'xpath.*';查看具體函數(shù)內(nèi)容:describefunctionxpath;|descfunctionxpath;字段類型Hive支持基本數(shù)據(jù)類型和復雜類型,基本數(shù)據(jù)類型主要有數(shù)值類型<INT、FLOAT、DOUBLE>、布爾型和字符串,復雜類型有三種:ARRAY、MAP和STRUCT。基本數(shù)據(jù)類型TINYINT:1個字節(jié)SMALLINT:2個字節(jié)INT:4個字節(jié)BIGINT:8個字節(jié)BOOLEAN:TRUE/FALSEFLOAT:4個字節(jié),單精度浮點型DOUBLE:8個字節(jié),雙精度浮點型STRING字符串復雜數(shù)據(jù)類型ARRAY:有序字段MAP:無序字段STRUCT:一組命名的字段表類型hive表大致分為普通表、外部表、分區(qū)表三種。普通表創(chuàng)建表hive>createtabletb_person<idint,namestring>;創(chuàng)建表并創(chuàng)建分區(qū)字段dshive>createtabletb_stu<idint,namestring>partitionedby<dsstring>;查看分區(qū)hive>showpartitionstb_stu;顯示所有表hive>showtables;按正則表達式顯示表,hive>showtables'tb_*';表添加一列hive>altertabletb_personaddcolumns<new_colint>;添加一列并增加列字段注釋hive>altertabletb_stuaddcolumns<new_col2intcomment'acomment'>;更改表名hive>altertabletb_sturenametotb_stu;刪除表<hive只能刪分區(qū),不能刪記錄或列>hive>droptabletb_stu;對于托管表,drop操作會把元數(shù)據(jù)和數(shù)據(jù)文件刪除掉,對于外部表,只是刪除元數(shù)據(jù)。如果只要刪除表中的數(shù)據(jù),保留表名可以在HDFS上刪除數(shù)據(jù)文件:hive>dfs-rmr/user/hive/warehouse/mutill1/*將本地/home/hadoop/ziliao/stu.txt文件中的數(shù)據(jù)加載到表中,stu.txt文件數(shù)據(jù)如下:1zhangsan2lisi3wangwu將文件中的數(shù)據(jù)加載到表中hive>loaddatalocalinpath'/home/hadoop/ziliao/stu.txt'overwriteintotabletb_person;加載本地數(shù)據(jù),同時給定分區(qū)信息hive>loaddatalocalinpath'/home/hadoop/ziliao/stu.txt'overwriteintotabletb_stupartition<ds='2008-08-15'>;備注:如果導入的數(shù)據(jù)在HDFS上,則不需要local關(guān)鍵字。托管表導入的數(shù)據(jù)文件可在數(shù)據(jù)倉庫目錄"user/hive/warehouse/<tablename>"中看到。查看數(shù)據(jù)hive>dfs-ls/user/hive/warehouse/tb_stuhive>dfs-ls/user/hive/warehouse/tb_person外部表external關(guān)鍵字可以讓用戶創(chuàng)建一個外部表,在建表的同時指定一個指向?qū)嶋H數(shù)據(jù)的路徑<location>,hive創(chuàng)建內(nèi)部表時,會將數(shù)據(jù)移動到數(shù)據(jù)倉庫指向的路徑;若創(chuàng)建外部表,僅記錄數(shù)據(jù)所在的路徑,不對數(shù)據(jù)的位置做任何改變。在刪除表的時候,內(nèi)部表的元數(shù)據(jù)和數(shù)據(jù)會被一起刪除,而外部表只刪除元數(shù)據(jù),不刪除數(shù)據(jù)。eg.創(chuàng)建外部表:hive>createexternaltabletb_record<col1string,col2string>rowformatdelimitedfieldsterminatedby'\t'location'/user/hadoop/input';這樣表tb_record的數(shù)據(jù)就是hdfs://user/hadoop/input/*的數(shù)據(jù)了。分區(qū)表分區(qū)是表的部分列的集合,可以為頻繁使用的數(shù)據(jù)建立分區(qū),這樣查找分區(qū)中的數(shù)據(jù)時就不需要掃描全表,這對于提高查找效率很有幫助。創(chuàng)建分區(qū):createtablelog<tsbigint,linestring>partitionedby<namestring>;插入分區(qū):insertoverwritetablelogpartition<name='xiapi'>selectidfromuserinfowherename='xiapi';查看分區(qū):showpartitionslog;刪除分區(qū):altertableptestdroppartition<name='xiapi'>備注:通常情況下需要先預先創(chuàng)建好分區(qū),然后才能使用該分區(qū)。還有分區(qū)列的值要轉(zhuǎn)化為文件夾的存儲路徑,所以如果分區(qū)列的值中包含特殊值,如'%',':','/','#',它將會被使用%加上2字節(jié)的ASCII碼進行轉(zhuǎn)義。sql操作及桶創(chuàng)建表首先建立三張測試表:userinfo表中有兩列,以tab鍵分割,分別存儲用戶的id和名字name;classinfo表中有兩列,以tab鍵分割,分別存儲課程老師teacher和課程名classname;choice表中有兩列,以tab鍵分割,分別存儲用戶的userid和選課名稱classname<類似中間表>。創(chuàng)建測試表:hive>createtableuserinfo<idint,namestring>rowformatdelimitedfieldsterminatedby'\t';hive>createtableclassinfo<teacherstring,classnamestring>rowformatdelimitedfieldsterminatedby'\t';hive>createtablechoice<useridint,classnamestring>rowformatdelimitedfieldsterminatedby'\t';注意:'\t'相當于一個tab鍵盤。顯示剛才創(chuàng)建的數(shù)據(jù)表:hive>showtables;導入數(shù)據(jù)建表后,可以從本地文件系統(tǒng)或HDFS中導入數(shù)據(jù)文件,導入數(shù)據(jù)樣例如下:userinfo.txt內(nèi)容如下<數(shù)據(jù)之間用tab鍵隔開>:1xiapi2xiaoxue3qingqingclassinfo.txt內(nèi)容如下<數(shù)據(jù)之間用tab鍵隔開>:jackmathsamchinalucyenglishchoice.txt內(nèi)容如下<數(shù)據(jù)之間用tab鍵隔開>:1math1china1english2china2english3english首先在本地"/home/hadoop/ziliao"下按照上面建立三個文件,并添加如上的內(nèi)容信息。按照下面導入數(shù)據(jù)。hive>loaddatalocalinpath'/home/hadoop/ziliao/userinfo.txt'overwriteintotableuserinfo;hive>loaddatalocalinpath'/home/hadoop/ziliao/classinfo.txt'overwriteintotableclassinfo;hive>loaddatalocalinpath'/home/hadoop/ziliao/choice.txt'overwriteintotablechoice;查詢表數(shù)據(jù)hive>select*fromuserinfo;hive>select*fromclassinfo;hive>select*fromchoice;分區(qū)創(chuàng)建分區(qū)hive>createtableptest<useridint>partitionedby<namestring>rowformatdelimitedfieldsterminatedby'\t';準備導入數(shù)據(jù)xiapi.txt內(nèi)容如下<數(shù)據(jù)之間用tab鍵隔開>:1導入數(shù)據(jù)hive>loaddatalocalinpath'/home/hadoop/ziliao/xiapi.txt'overwriteintotableptestpartition<name='xiapi'>;查看分區(qū)hive>dfs-ls/user/hive/warehouse/ptest/name=xiapi;查詢分區(qū)hive>select*fromptestwherename='xiapi';顯示分區(qū)hive>showpartitionsptest;對分區(qū)插入數(shù)據(jù)<每次都會覆蓋掉原來的數(shù)據(jù)>:hive>insertoverwritetableptestpartition<name='xiapi'>selectidfromuserinfowherename='xiapi';刪除分區(qū)hive>altertableptestdroppartition<name='xiapi'>桶可以把表或分區(qū)組織成桶,桶是按行分開組織特定字段,每個桶對應(yīng)一個reduce操作。在建立桶之前,需要設(shè)置""屬性為true,使Hive能夠識別桶。在表中分桶的操作如下:hive>sethive.enforce.bucketing=true;hive>sethive.enforce.bucketing;hive.enforce.bucketing=true;hive>createtablebtest2<idint,namestring>clusteredby<id>into3bucketsrowformatdelimitedfieldsterminatedby'\t';向桶中插入數(shù)據(jù),這里按照用戶id分了三個桶,在插入數(shù)據(jù)時對應(yīng)三個reduce操作,輸出三個文件。hive>insertoverwritetablebtest2select*fromuserinfo;查看數(shù)據(jù)倉庫下的桶目錄,三個桶對應(yīng)三個目錄。hive>dfs-ls/user/hive/warehouse/btest2;Hive使用對分桶所用的值進行hash,并用hash結(jié)果除以桶的個數(shù)做取余運算的方式來分桶,保證了每個桶中都有數(shù)據(jù),但每個桶中的數(shù)據(jù)條數(shù)不一定相等,如下所示。hive>dfs-cat/user/hive/warehouse/btest2/*0_0;hive>dfs-cat/user/hive/warehouse/btest2/*1_0;hive>dfs-cat/user/hive/warehouse/btest2/*2_0;分桶可以獲得比分區(qū)更高的查詢效率,同時分桶也便于對全部數(shù)據(jù)進行采樣處理。下面是對桶取樣的操作。hive>select*frombtest2tablesample<bucket1outof3onid>;多表插入多表插入指的是在同一條語句中,把讀取的同一份元數(shù)據(jù)插入到不同的表中。只需要掃描一遍元數(shù)據(jù)即可完成所有表的插入操作,效率很高。多表操作示例如下。hive>createtablemutillasselectid,namefromuserinfo;#有數(shù)據(jù)hive>createtablemutil2likemutill;#無數(shù)據(jù),只有表結(jié)構(gòu)hive>fromuserinfoinsertoverwritetablemutillselectid,nameinsertoverwritetablemutil2selectcount<distinctid>,namegroupbyname;連接連接是將兩個表中在共同數(shù)據(jù)項上相互匹配的那些行合并起來,HiveQL的連接分為內(nèi)連接、左向外連接、右向外連接、全外連接和半連接5種。a.內(nèi)連接<等值連接>內(nèi)連接使用比較運算符根據(jù)每個表共有的列的值匹配兩個表中的行。例如,檢索userinfo和choice表中標識號相同的所有行。hive>selectuserinfo.*,choice.*fromuserinfojoinchoiceon<userinfo.id=choice.userid>;b.左連接左連接的結(jié)果集包括"LEFTOUTER"子句中指定的左表的所有行,而不僅僅是連接列所匹配的行。如果左表的某行在右表中沒有匹配行,則在相關(guān)聯(lián)的結(jié)果集中右表的所有選擇列均為空值。hive>selectuserinfo.*,choice.*fromuserinfoleftouterjoinchoiceon<userinfo.id=choice.userid>;c.右連接右連接是左向外連接的反向連接,將返回右表的所有行。如果右表的某行在左表中沒有匹配行,則將為左表返回空值。hive>selectuserinfo.*,choice.*fromuserinforightouterjoinchoiceon<userinfo.id=choice.userid>;d.全連接全連接返回左表和右表中的所有行。當某行在另一表中沒有匹配行時,則另一個表的選擇列表包含空值。如果表之間有匹配行,則整個結(jié)果集包含基表的數(shù)據(jù)值。hive>selectuserinfo.*,choice.*fromuserinfofullouterjoinchoiceon<userinfo.id=choice.userid>;e.半連接半連接是Hive所特有的,Hive不支持IN操作,但是擁有替代的方案;leftsemijoin,稱為半連接,需要注意的是連接的表不能在查詢的列中,只能出現(xiàn)在on子句中。hive>selectuserinfo.*fromuserinfoleftsemijoinchoiceon<userinfo.id=choice.userid>;子查詢標準SQL的子查詢支持嵌套的select子句,HiveQL對子查詢的支持很有限,只能在from引導的子句中出現(xiàn)子查詢。如下語句在from子句中嵌套了一個子查詢<實現(xiàn)了對教課最多的老師的查詢>。hive>selectteacher,MAX<class_num>from<selectteacher,count<classname>asclass_numfromclassinfogroupbyteacher>subqgroupbyteacher;視圖操作目前,只有Hive0.6之后的版本才支持視圖。Hive只支持邏輯視圖,并不支持物理視圖,建立視圖可以在MySQL元數(shù)據(jù)庫中看到創(chuàng)建的視圖表,但是在Hive的數(shù)據(jù)倉庫目錄下沒有相應(yīng)的視圖表目錄。當一個查詢引用一個視圖時,可以評估視圖的定義并為下一步查詢提供記錄集合。這是一種概念的描述,實際上,作為查詢優(yōu)化的一部分,Hive可以將視圖的定義與查詢的定義結(jié)合起來,例如從查詢到視圖所使用的過濾器。在視圖創(chuàng)建的同時確定視圖的架構(gòu),如果隨后再改變基本表<如添加一列>將不會在視圖的架構(gòu)中體現(xiàn)。如果基本表被刪除或以不兼容的方式被修改,則該視圖的查詢將被無效。視圖是只讀的,不能用于LOAD/INSERT/ALTER。視圖可能包含ORDERBY和LIMIT子句,如果一個引用了視圖的查詢也包含這些子句,那么在執(zhí)行這些子句時首先要查看視圖語句,然后返回結(jié)果按照視圖中的語句執(zhí)行。以下是創(chuàng)建視圖的例子:hive>createviewteacher_classsumasselectteacher,count<classname>fromclassinfogroupbyteacher;刪除視圖:hive>dropviewteacher_classnum;函數(shù)創(chuàng)建函數(shù)hive>createtemporaryfunctionfunction_nameasclass_name該語句創(chuàng)建一個由類名實現(xiàn)的函數(shù)。在Hive中用戶可以使用Hive類路徑中的任何類,用戶通過執(zhí)行addfiles語句將函數(shù)類添加到類路徑,并且可持續(xù)使用該函數(shù)進行操作。刪除函數(shù)注銷用戶定義函數(shù)的格式如下:hive>droptemporaryfunctionfunction_na運行案例學生數(shù)據(jù)分析之人數(shù)統(tǒng)計某高校開設(shè)了體育選修課,可供選修的科目有羽毛球、籃球、足球、體操、游泳、乒乓球、跆拳道、網(wǎng)球、排球等。現(xiàn)需要統(tǒng)計學校學生報名各個科目的人數(shù),從而分配相應(yīng)的教學老師。學生包名數(shù)據(jù)在phy_opt_course.txt文件中。現(xiàn)在我們通過Hive的MapReduce程序來進行計算。計算過程如下:首先我們需要在Hive中創(chuàng)建數(shù)據(jù)表,表名稱為phy_opt_course,數(shù)據(jù)表結(jié)構(gòu)如下:stname<string>stID<int>class<string>opt_cour<string>進入Hive,通過CREATE語法來進行創(chuàng)建,并指定字段分隔符為"\t",換行符為"\n",并以"TEXTFILE"的形式進行存儲。hive>CREATETABLEphy_opt_course><stnameSTRING,stIDINT,classSTRING,opt_courSTRING>>ROWFORMATDELIMITED>FIELDSTERMINATEDBY'\t'>LINESTERMINATEDBY'\n'>STOREDASTEXTFILE;接下來將phy_opt_course.txt中的數(shù)據(jù)導入到Hive的phy_opt_course表中hive>loaddatalocalinpath'/root/phy_opt_course.txt'intotablephy_opt_course;查看表中數(shù)據(jù)。hive>select*fromphy_opt_course;通過GroupBy語法來統(tǒng)計各個科目的數(shù)據(jù)。并將統(tǒng)計的數(shù)據(jù)導入到phy_opt_count中。在導入之前,我們需要創(chuàng)建一個phy_opt_count的數(shù)據(jù)表結(jié)構(gòu),并指定字段分隔符為"\t",換行符為"\n",并以"TEXTFILE"的形式進行存儲。hive>CREATETABLEphy_opt_count><opt_courSTRING,cour_countInt>>ROWFORMATDELIMITED>FIELDSTERMINATEDBY'\t'>LINESTERMINATEDBY'\n'>STOREDASTEXTFILE;導入數(shù)據(jù)。hive>INSERTOVERWRITETABLEphy_opt_count>SELECTphy_opt_course.opt_cour,COUNT<DISTINCTphy_opt_course.stID>>FROMphy_opt_course>GROUPBYphy_opt_course.opt_cour;通過SELECT語句查詢數(shù)據(jù)hive>SELECT*FROMphy_opt_count;管理HDFS中的網(wǎng)絡(luò)日志數(shù)據(jù)某企業(yè)的WEB服務(wù)器中有一些日志訪問數(shù)據(jù),現(xiàn)需要使用Hive數(shù)據(jù)倉庫統(tǒng)計日志數(shù)據(jù)中的IP地址所對應(yīng)的國家,并且需要將訪問日期和訪問時間進行合并。首先我們需要在Hive中創(chuàng)建數(shù)據(jù)表,表名稱為weblog_entries,數(shù)據(jù)表結(jié)構(gòu)如下:md5<STRING>url<STRING>request_date<STRING>request_time<STRING>ip<STRING>進入Hive,通過CREATE語法來進行創(chuàng)建,使用關(guān)鍵字EXTERNAL定義該表為外部表,在HDFS文件系統(tǒng)中的位置為/data/hive/weblog/,并指定字段分隔符為"\t",換行符為"\n",hive>DROPTABLEIFEXISTSweblog_entries;OKTimetaken:0.043secondshive>CREATEEXTERNALTABLEweblog_entries<>md5STRING,>urlSTRING,>request_dateSTRING,>request_timeSTRING,>ipSTRING>>>ROWFORMATDELIMITEDFIELDSTERMINATEDBY'\t'>LINESTERMINATEDBY'\n'>LOCATION'/data/hive/weblog/';OKTimetaken:1.972seconds接下來將weblog_entries.txt中的數(shù)據(jù)導入到Hive的weblog_entries表中hive>loaddatalocalinpath'/root/tmp/weblog_entries.txt'intotableweblog_entries;Loadingdatatotabledefault.weblog_entriesTabledefault.weblog_entriesstats:[numFiles=1,numRows=0,totalSize=251130,rawDataSize=0]OKTimetaken:0.998seconds查看表中數(shù)據(jù)。hive>select*fromweblog_entries;下面是樣例輸出,這里只包含兩行實例,完整輸出一共包含3000行。e42fe5714cb4402f81e5dce8da17導入成功后,需要把weblog_entries中分開的request_date和request_time字段進行合并,在命令行輸出單獨的一列,并以一個下劃線"_"進行分割。hive>SELECTconcat_ws<'_',request_date,request_time>>FROMweblog_entries;下面是樣例輸出,這里只包含兩行實例,完整輸出一共包含3000行。2012-05-10_21:33:262012-05-10_21:13:10下面將日志數(shù)據(jù)中的IP字段與IP對應(yīng)的國家進行簡單的內(nèi)鏈接。首先需要創(chuàng)建一個ip_to_country表格,里面包含hive>CREATETABLEip_to_country<>ipSTRING,>countrystring>

溫馨提示

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

評論

0/150

提交評論