柚子快報(bào)邀請(qǐng)碼778899分享:大數(shù)據(jù)導(dǎo)論學(xué)習(xí)
柚子快報(bào)邀請(qǐng)碼778899分享:大數(shù)據(jù)導(dǎo)論學(xué)習(xí)
1.概念
1.數(shù)據(jù)是什么?
數(shù)據(jù)是指對(duì)客觀事件進(jìn)行記錄并可以鑒別的符合,是對(duì)客觀事物的性質(zhì),狀態(tài)以及相互關(guān)系等進(jìn)行記載的物理符號(hào)或這些物理符號(hào)的組合,它是可以識(shí)別的,抽象的符合。
它不僅是狹義上的數(shù)字,還可能是具有一定意義的文字,字母,數(shù)字符號(hào)的組合,圖形,視頻,音頻等,也是客觀事物的屬性,數(shù)量,位置及其相互關(guān)系的抽象表示。
2.數(shù)據(jù)如何產(chǎn)生?
對(duì)客觀事物的計(jì)量和記錄產(chǎn)生數(shù)據(jù)。
3.企業(yè)數(shù)據(jù)分析方向
1.現(xiàn)狀分析
分析當(dāng)下的數(shù)據(jù),現(xiàn)階段的整體情況,各個(gè)部分的構(gòu)成占比,發(fā)展,變動(dòng)。
實(shí)時(shí)分析(Real Time Processing | Streaming):面向當(dāng)下,分析實(shí)時(shí)產(chǎn)生的數(shù)據(jù);所謂的實(shí)時(shí)是指從數(shù)據(jù)產(chǎn)生到數(shù)據(jù)分析到數(shù)據(jù)應(yīng)用的時(shí)間間隔很短,可細(xì)分秒級(jí),毫秒級(jí)。也叫流處理。
2.原因分析
分析過(guò)去的數(shù)據(jù),某一現(xiàn)狀為什么發(fā)生,確定原因,做出調(diào)整優(yōu)化
離線分析(Batch Processing):面向過(guò)去,面向歷史,分析已有的數(shù)據(jù),在時(shí)間維度明顯成批次性變化。一周一分析(T+7),一天一分析(T+1),所以也叫批處理。
3.預(yù)測(cè)分析
結(jié)合數(shù)據(jù)預(yù)測(cè)未來(lái),結(jié)合已有數(shù)據(jù)預(yù)測(cè)未來(lái)發(fā)展趨勢(shì)。
機(jī)器學(xué)習(xí)(Machine Learning):基于歷史數(shù)據(jù)和當(dāng)下產(chǎn)生的實(shí)時(shí)數(shù)據(jù)預(yù)測(cè)未來(lái)發(fā)生的事情。側(cè)重于數(shù)學(xué)算法的運(yùn)用,如分類,聚類,關(guān)聯(lián),預(yù)測(cè)。
4.數(shù)據(jù)分析步驟
1.明確分析目的和思路
2.數(shù)據(jù)收集
數(shù)據(jù)從無(wú)到有的過(guò)程:比如傳感器收集氣象數(shù)據(jù),埋點(diǎn)收集用戶行為數(shù)據(jù)。
數(shù)據(jù)傳輸搬運(yùn)的過(guò)程:比如采集數(shù)據(jù)庫(kù)到數(shù)據(jù)分析平臺(tái)。
3.數(shù)據(jù)預(yù)處理
對(duì)收集到的數(shù)據(jù)進(jìn)行加工處理,形成適合數(shù)據(jù)分析的樣式,主要包含數(shù)據(jù)清洗,數(shù)據(jù)轉(zhuǎn)化,數(shù)據(jù)提取,數(shù)據(jù)計(jì)算
數(shù)據(jù)預(yù)處理可以保證數(shù)據(jù)的一致性和有效性,讓數(shù)據(jù)變成干凈規(guī)整的結(jié)構(gòu)化數(shù)據(jù)。
干凈規(guī)整的結(jié)構(gòu)化數(shù)據(jù):專業(yè)來(lái)說(shuō)就是二維表的數(shù)據(jù),行列對(duì)應(yīng);即格式清晰,利于解讀的數(shù)據(jù)。
4.數(shù)據(jù)分析
5.數(shù)據(jù)展現(xiàn)
又稱為數(shù)據(jù)可視化,指的是分析結(jié)果圖表展示
6.報(bào)告撰寫
5.大數(shù)據(jù)定義
無(wú)法在一定時(shí)間范圍內(nèi)用常規(guī)軟件工具進(jìn)行捕捉,管理和處理的數(shù)據(jù)集合。
大數(shù)據(jù)5V特征
1.Volume
數(shù)據(jù)體量大,采集,存儲(chǔ),計(jì)算數(shù)據(jù)量大
2.Variety
種類,來(lái)源多樣化。結(jié)構(gòu)化,半結(jié)構(gòu)化,非結(jié)構(gòu)化。日志文本,圖片,音頻,視頻等。
3.Value
低價(jià)值密度。海量信息但是價(jià)值密度低,深度復(fù)雜的挖掘分析需要機(jī)器學(xué)習(xí)參與
5.Velocity
速度快。數(shù)據(jù)增長(zhǎng),獲取,處理速度快。
5.Veracity
數(shù)據(jù)的質(zhì)量。數(shù)據(jù)的準(zhǔn)確性,可信賴度。
6.分布式與集群
分布式:每臺(tái)機(jī)器上部署不同組件
集群:每臺(tái)機(jī)器上部署相同組件
2.Apache Hadoop
1.概念
用java實(shí)現(xiàn),開(kāi)源,允許用戶使用簡(jiǎn)單的編程模型實(shí)現(xiàn)跨機(jī)器集群對(duì)海量數(shù)據(jù)進(jìn)行分布式計(jì)算處理。
1.Hadoop核心組件
? ? ? ? Hadoop HDFS(分布式文件存儲(chǔ)系統(tǒng)):解決海量數(shù)據(jù)存儲(chǔ)
? ? ? ? Hadoop YARN(集群資源管理和任務(wù)調(diào)度框架):解決資源任務(wù)調(diào)度
? ? ? ? Hadoop MapReduce(分布式計(jì)算框架):解決海量數(shù)據(jù)計(jì)算
2.Hadoop現(xiàn)狀
? ? ? ? HDFS作為分布式文件存儲(chǔ)系統(tǒng),處在生態(tài)圈的底層與核心地位
? ? ? ? YARN作為分布式通用的集群資源管理系統(tǒng)和任務(wù)調(diào)度平臺(tái),支撐各種計(jì)算引擎運(yùn)行,保證了Hadoop地位
? ? ? ? MapReduce作為大數(shù)據(jù)生態(tài)圈第一代分布式計(jì)算引擎,由于自身設(shè)計(jì)的模型所產(chǎn)生的弊端,導(dǎo)致企業(yè)一線幾乎不再直接使用MapReduce進(jìn)行編程處理,但是很多軟件的底層依然在使用MapReduce引擎來(lái)處理數(shù)據(jù)。
3.Hadoop特性優(yōu)點(diǎn)
1.擴(kuò)容能力(scalability):Hadoop是在可用的計(jì)算機(jī)集群間分配數(shù)據(jù)并完成計(jì)算任務(wù)的,這些集群可方便靈活的方式擴(kuò)展到數(shù)以千計(jì)的節(jié)點(diǎn)。
2.成本低(Economical):Hadoop集群允許通過(guò)部署普通廉價(jià)的機(jī)器組成集群來(lái)處理大數(shù)據(jù),以至于成本很低??粗氐氖羌赫w能力。
3.效率高(efficiency):通過(guò)并發(fā)數(shù)據(jù),Hadoop可以在節(jié)點(diǎn)之間動(dòng)態(tài)并行的移動(dòng)數(shù)據(jù),使得速度非常快。
4.可靠性(reliability):能自動(dòng)維護(hù)數(shù)據(jù)的多份復(fù)制,并且在任務(wù)失敗后能自動(dòng)的重新部署(redeploy)計(jì)算任務(wù)。所以Hadoop的按位存儲(chǔ)和處理數(shù)據(jù)的能力值得人們信賴。
4.Hadoop集群整體概述
Hadoop集群包括兩個(gè)集群:HDFS集群,YARN集群
兩個(gè)集群邏輯上分離,通常物理上在一起
兩個(gè)集群互相之間沒(méi)有依賴,互不影響。某些角色進(jìn)程往往部署在同一臺(tái)物理機(jī)器上
兩個(gè)集群都是標(biāo)準(zhǔn)的主從架構(gòu)集群
5.HDFS集群(分布式存儲(chǔ))
主角色:NameNode
從角色:DataNode
主角色輔助角色:SecondaryNameNode
6.YARN集群(資源管理,調(diào)度)
主角色:ResouceManager
從角色:NadeManager
2.安裝部署
1.集群角色規(guī)劃
角色規(guī)劃的準(zhǔn)則
? ? ? ? 根據(jù)軟件工作特性和服務(wù)器硬件資源情況合理分配
角色規(guī)劃注意事項(xiàng)
? ? ? ? 資源上有搶奪沖突的,盡量不要部署在一起
? ? ? ? 工作上需要相互配合的,盡量部署在一起
2.服務(wù)器基礎(chǔ)環(huán)境準(zhǔn)備
1.每臺(tái)服務(wù)器配置主機(jī)名(唯一)
cat /etc/hostname
2.設(shè)置hosts映射
cat /etc/hosts
3.防火墻關(guān)閉
# 關(guān)閉防火墻
systemctl stop firewalld.service
# 禁止防火墻自動(dòng)啟動(dòng)
systemctl disable firewalld.service
4.ssh免密登錄
# 生成公鑰,私鑰
ssh-keygen
# 設(shè)置免密登錄,節(jié)點(diǎn)名需要在hosts里面配置了映射才能直接用名稱,負(fù)責(zé)用ip,設(shè)置之后就可以直接使用ssh命令跨節(jié)點(diǎn)了
ssh-copy-id node1
5.集群時(shí)間同步
yum -y install ntpdate
ntpdate ntp4.aliyun.com
6.創(chuàng)建統(tǒng)一工作目錄(所有機(jī)器)
mkdir -p /export/server/ # 軟件安裝路徑
mkdir -p /export/data/ # 數(shù)據(jù)存儲(chǔ)路徑
mkdir -p /export/software/# 安裝包存放路徑
7.JDK安裝
tar -zxvf jdk-8u241-linux-x64.tar.gz
# 設(shè)置環(huán)境變量
vim /etc/profile
export JAVA_HOME=/export/server/jdk1.8.0_241
export PATH=$PATH:$JAVA_HOME/bin
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
# 重新加載環(huán)境變量
source /etc/profile
#拷貝給其它節(jié)點(diǎn)
scp -r /export/server/jdk1.8.0_241/ root@node3:/export/server/
8.上傳,解壓Hadoop安裝包
tar -zxvf hadoop-3.3.0-Centos7-64-with-snappy.tar.gz
9.修改配置文件
hadoop-env.sh文件
vim hadoop-env.sh
#文件最后添加
export JAVA_HOME=/export/server/jdk1.8.0_241
export HDFS_NAMENODE_USER=root
export HDFS_DATANODE_USER=root
export HDFS_SECONDARYNAMENODE_USER=root
export YARN_RESOURCEMANAGER_USER=root
export YARN_NODEMANAGER_USER=root
core-site.xml 文件?
vim core-site.xml
?hdfs-site.xml文件
vim hdfs-site.xml
?mapred-site.xml文件
vim mapred-site.xml
yarn-site.xml文件
vim yarn-site.xml
?workers文件
vim workers
#寫入集群節(jié)點(diǎn)ip或映射
10.將hadoop添加到環(huán)境變量
vim /etc/profile
export HADOOP_HOME=/export/server/hadoop-3.3.0
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
source /etc/profile
?11.驗(yàn)證hadoop是否安裝成功
hadoop
12.NameNode format(格式化操作)
首次啟動(dòng)HDFS是,必須對(duì)其進(jìn)行格式化操作
format本質(zhì)上是初始化工作,進(jìn)行HDFS清理和準(zhǔn)備工作
只能執(zhí)行一次,會(huì)造成數(shù)據(jù)丟失,hsfs集群主從角色之間互不識(shí)別,需要通過(guò)刪除所有機(jī)器hadoop.tmp.dir目錄重新format解決?
hdfs namenode -format
?13.Hadoop集群?jiǎn)⑼C?/p>
在主節(jié)點(diǎn)上,使用軟件自帶的shell腳本可以一鍵啟停,前提是配置好機(jī)器之間的SSH免密登錄和workers文件
HDFS集群
? ? ? ? start-dsf.sh
? ? ? ? stop-dfs.sh
YARN集群
? ? ? ? start-yarn.sh
? ? ? ? stop-yarn.sh
Hadoop集群
? ? ? ? start-all.sh
? ? ? ? stop-all.sh
檢驗(yàn)是否啟動(dòng)成功
? ? ? ? jps命令
Hadoop啟動(dòng)日志路徑:/export/server/hadoop-3.3.0/logs/
14.Hadoop瀏覽器頁(yè)面訪問(wèn)路徑
HDFS集群:http://nameNode節(jié)點(diǎn)ip:9870
YARN集群:http://resourcemanager節(jié)點(diǎn)ip:8088
15.Hadoop安裝包目錄結(jié)構(gòu)
目錄說(shuō)明binHadoop最基本的管理腳本和使用腳本的目錄,這些腳本實(shí)是sbin目錄下管理腳本的基礎(chǔ)實(shí)現(xiàn),用戶可以直接使用這些腳本管理和使用HadoopetcHadoop配置文件所在的目錄include對(duì)外提供的編程庫(kù)頭文件(具體動(dòng)態(tài)庫(kù)和靜態(tài)庫(kù)在lib目錄中),這些頭文件均是用C++定義的,通常用于C++程序訪問(wèn)HDFS或者編寫MapReduce程序lib該目錄包含了Hadoop對(duì)外提供的編程動(dòng)態(tài)庫(kù)和靜態(tài)庫(kù),與include目錄中的頭文件結(jié)合使用libexec各個(gè)服務(wù)對(duì)用的shell配置文件所在的目錄,可用于配置日志輸出,啟動(dòng)參數(shù)(比如JVM參數(shù))等基本信息sbinHadoop管理腳本所在的目錄,主要包含HDFS和YARN中各類服務(wù)的啟動(dòng)/關(guān)閉腳本shareHadoop各個(gè)模塊編譯后的jar包所在的目錄,官方自帶示例
3.文件系統(tǒng)
文件系統(tǒng)是一種存儲(chǔ)和組織數(shù)據(jù)的方法,實(shí)現(xiàn)了數(shù)據(jù)的存儲(chǔ),分級(jí)組織,訪問(wèn)和獲取等操作,使得用戶對(duì)文件訪問(wèn)和查找變得容易。
文件系統(tǒng)使用樹(shù)形目錄的抽象邏輯概念代替了硬盤等物理設(shè)備使用數(shù)據(jù)塊的概念,用戶不必關(guān)心數(shù)據(jù)底層存在硬盤哪里,只需要記住這個(gè)文件的所屬目錄和文件名即可。
文件系統(tǒng)通常使用硬盤和光盤這樣的存儲(chǔ)設(shè)備,并維護(hù)文件在設(shè)備中的物理位置。
1.傳統(tǒng)文件系統(tǒng)
? ? ? ? 通常指單機(jī)的文件系統(tǒng),也就是底層不會(huì)橫跨多態(tài)機(jī)器實(shí)現(xiàn)。
三個(gè)特征:
? ? ? ? 1.帶有抽象的目錄樹(shù)結(jié)構(gòu),樹(shù)都是從/根目錄開(kāi)始往下蔓延
? ? ? ? 2.樹(shù)中節(jié)點(diǎn)分為兩類:目錄和文件
? ? ? ? 3.從根目錄開(kāi)始,節(jié)點(diǎn)路徑具有唯一性
兩個(gè)概念:
? ? ? ? 數(shù)據(jù):指存儲(chǔ)的內(nèi)容本身,比如文件,視頻,圖片等,這些數(shù)據(jù)底層最終是存儲(chǔ)在磁盤等存儲(chǔ)介質(zhì)上的,一般用戶無(wú)需關(guān)心。
? ? ? ? 元數(shù)據(jù)(metadata):解釋性數(shù)據(jù),記錄數(shù)據(jù)的數(shù)據(jù)。一般指文件大小,最后修改時(shí)間,底層存儲(chǔ)位置,屬性,所屬用戶,權(quán)限等信息。
2.分布式存儲(chǔ)系統(tǒng)
核心屬性
? ? ? ? 分布式存儲(chǔ)??無(wú)線擴(kuò)展支持海量數(shù)據(jù)存儲(chǔ)(加機(jī)器)
? ? ? ? 元數(shù)據(jù)記錄? 快速定位文件位置便于查找
? ? ? ? 分塊存儲(chǔ)? ?針對(duì)塊并行操作提高效率
? ? ? ? 副本機(jī)制? ?冗余存儲(chǔ)保障數(shù)據(jù)安全
3.HDFS(Hadoop Distributed File System)
Hadoop分布式文件系統(tǒng),作為大數(shù)據(jù)生態(tài)圈最底層的分布式存儲(chǔ)服務(wù)而存在。
HDFS主要是解決大數(shù)據(jù)如何存儲(chǔ)問(wèn)題的。分布式意味著是HDFS是橫跨在多臺(tái)計(jì)算機(jī)上的存儲(chǔ)系統(tǒng)。能夠在普通硬件上運(yùn)行的分布式文件系統(tǒng),是高度容錯(cuò)的,適應(yīng)于具有大數(shù)據(jù)集的應(yīng)用程序,非常適于存儲(chǔ)大型數(shù)據(jù)。使用多臺(tái)計(jì)算機(jī)存儲(chǔ)文件,并且提高統(tǒng)一的訪問(wèn)接口,像是訪問(wèn)一個(gè)普通文件系統(tǒng)一樣使用分布式文件系統(tǒng)。
適合場(chǎng)景
? ? ? ? 大文件,數(shù)據(jù)流式訪問(wèn),一次寫入多次讀取,低成本部署,廉價(jià)PC,高容錯(cuò)
不適合場(chǎng)景
? ? ? ? 小文件,數(shù)據(jù)交互式訪問(wèn),頻繁任意修改,低延遲處理
1.重要特性
1.主從架構(gòu)
? ? ? ? HDFS集群是標(biāo)準(zhǔn)的master/slave主從架構(gòu)集群。
? ? ? ? 一般是一個(gè)HDFS集群是有一個(gè)Namenode和一定數(shù)目的Datanode組成
? ? ? ? Namenode是HDFS主節(jié)點(diǎn),Datanode是HDFS從節(jié)點(diǎn),兩種角色各司其職,共同協(xié)調(diào)完成分布式的文件存儲(chǔ)服務(wù)
2.分塊存儲(chǔ)
? ? ? ? HDFS中的文件在物理上是分塊存儲(chǔ)(block)的,默認(rèn)大小是128M(134217728),不足128M則本身就是一塊
? ? ? ? 塊的大小可以通過(guò)配置參數(shù)來(lái)規(guī)定,參數(shù)位于hdfs-default.xml中:dfs.blocksize
3.副本機(jī)制
? ? ? ?文件的所有block都會(huì)有副本。副本系數(shù)可以在文件創(chuàng)建的時(shí)候指定,也可以在之后通過(guò)命令改變
? ? ? ? 副本數(shù)由參數(shù)dfs.replication控制,默認(rèn)是3,連同本身總共3份。
4.元數(shù)據(jù)管理
Namenode元數(shù)據(jù)兩種類型
1.文件自身屬性信息
? ? ? ? 文件名稱,權(quán)限,修改時(shí)間,文件大小,復(fù)制因子,數(shù)據(jù)塊大小
2.文件塊位置映射信息
? ? ? ? 記錄文件塊和DataNode之間的映射信息,即哪個(gè)塊位于哪個(gè)節(jié)點(diǎn)上。
5.namespace
? ? ? ? HDFS支持傳統(tǒng)的層次型文件組織結(jié)構(gòu)。用戶可以創(chuàng)建目錄,然后將文件保存在這些目錄里。文件系統(tǒng)名字空間的層次結(jié)構(gòu)和大多數(shù)現(xiàn)有的文件系統(tǒng)類似:用戶可以創(chuàng)建,刪除,移動(dòng)或重命名文件。
? ? ? ? Namenode負(fù)責(zé)維護(hù)文件系統(tǒng)的namespace名稱空間,任何對(duì)文件系統(tǒng)名稱空間或?qū)傩缘男薷亩紝⒈籒amenode記錄下來(lái)
? ? ? ? HDFS會(huì)給客戶端提高一個(gè)統(tǒng)一的抽象目錄樹(shù),客戶端通過(guò)路徑來(lái)訪問(wèn)文件。
6.數(shù)據(jù)塊存儲(chǔ)
? ? ? ? 文件的各個(gè)block的具體存儲(chǔ)管理由DataNode節(jié)點(diǎn)承擔(dān)
? ? ? ? 每一個(gè)block都可以在多個(gè)DataNode上存儲(chǔ)
4.HDFS shell命令操作
命令行界面(command-line interface, CLI):指用戶通過(guò)鍵盤輸入指令,計(jì)算機(jī)接收到指令后,予以執(zhí)行的一種人機(jī)交互方式。
Hadoop提供了文件系統(tǒng)的shell命令行客戶端:hadoop fs [generic options]
1.文件系統(tǒng)協(xié)議
? ? ? ? HDFS Shell CLI支持操作多種文件系統(tǒng),包括本地文件系統(tǒng)(file:///),分布式文件系統(tǒng)(hdfs://nn:8020)等
? ? ? ? 具體操作的是什么文件系統(tǒng)取決于命令中文件路徑URL中的前綴協(xié)議
? ? ? ? 如果沒(méi)有指定前綴,則將會(huì)讀取環(huán)境變量中的fs.defaultFS屬性,以該屬性值作為默認(rèn)文件系統(tǒng)
# 操作本地文件系統(tǒng)
hadoop fs -ls fiel:///
# 操作HDFS分布式文件系統(tǒng)
hadoop fs -ls hdfs://node1:8020/
# 直接根目錄,沒(méi)有指定協(xié)議,將加載讀取fs.defaultFS值
hadoop fs -ls /
三種命令
? ? ? ? hadoop dfs:只能操作HDFS文件系統(tǒng)(包括于Local FS間的操作),已經(jīng)Deprecated,不支持了
? ? ? ? hdfs dfs: 只能操作HDFS文件系統(tǒng)相關(guān)(包括與Local FS間的操作),常用
? ? ? ? hadoop fs:可操作任意文件系統(tǒng),不僅僅是hdfs文件系統(tǒng),使用范圍更廣
2.常用命令
1.創(chuàng)建文件夾
hadoop fs -mkdir [-p] path
2.查看指定目錄下的內(nèi)容
hadoop fs -ls [-h] [-R] path
? ? ? ? -h 人性化顯示文件size
? ? ? ? -R 遞歸查看指定目錄及其子目錄
3.上傳文件到HDFS指定目錄下
hadoop fs -put [-f] [-p] 本地文件 目標(biāo)目錄
? ? ? ? -f 覆蓋目標(biāo)文件
? ? ? ? -p 保留訪問(wèn)和修改時(shí)間,所有權(quán)和權(quán)限
hadoop fs -put a.txt /test
hadoop fs -put file:///etc/profile hdfs://node1:8020/test
4.查看HDFS文件內(nèi)容
hadoop fs -cat 文件
讀取指定文件全部?jī)?nèi)容,顯示在標(biāo)準(zhǔn)輸出控制臺(tái)
5.下載HDFS文件
hadoop fs -get [-f] [-p] 目標(biāo)文件 本地目錄
下載文件到本地文件系統(tǒng)指定目錄
? ? ? ? -f 覆蓋目標(biāo)文件
? ? ? ? -p 保留訪問(wèn)和修改時(shí)間,所有權(quán)和權(quán)限
6.拷貝HDFS文件
hadoop fs -cp [-f] 目標(biāo)文件 存放目錄
? ? ? ? -f 覆蓋目標(biāo)文件
7.追加數(shù)據(jù)到HDFS文件中
hadoop fs -appendToFile 本地文件列表 目標(biāo)文件
將所有給定本地文件的內(nèi)容追加到給定目標(biāo)文件中,如果目標(biāo)文件不存在,將創(chuàng)建該文件
8.HDFS數(shù)據(jù)移動(dòng)操作
hadoop fs -mv 目標(biāo)文件 目標(biāo)目錄
移動(dòng)文件到指定文件夾下
4.HDFS集群角色及職責(zé)
1.主角色 namenode
NameNode是Hadoop分布式文件系統(tǒng)的核心,架構(gòu)中的主角色
NameNode維護(hù)和管理文件系統(tǒng)元數(shù)據(jù),包括名稱空間目錄樹(shù)結(jié)構(gòu),文件和塊的位置信息,訪問(wèn)權(quán)限等信息。
基于此,NameNode成為了訪問(wèn)HDFS的唯一入口。
NameNode內(nèi)部通過(guò)內(nèi)存和磁盤文件兩種方式管理元數(shù)據(jù)
其中磁盤上的元數(shù)據(jù)文件包括Fsimage內(nèi)容元數(shù)據(jù)鏡像文件和edits log(Journal)編輯日志
2.從角色 datanode
DataNode是Hadoop HDFS中的從角色,負(fù)責(zé)具體的數(shù)據(jù)塊存儲(chǔ)。
DataNode的數(shù)量決定了HDFS集群的整體數(shù)據(jù)存儲(chǔ)能力。通過(guò)和NameNode配合維護(hù)著數(shù)據(jù)塊
3.主角色輔助角色 secondarynamenode
Secondary NameNode充電NameNode的輔助節(jié)點(diǎn),但不能替代NameNode
主要是幫助主角色進(jìn)行元數(shù)據(jù)文件的合并動(dòng)作
4.namenode職責(zé)
NameNode僅存儲(chǔ)HDFS的元數(shù)據(jù):文件系統(tǒng)中所有文件的目錄樹(shù),并跟蹤整個(gè)集群的文件,不存儲(chǔ)實(shí)際數(shù)據(jù)。
NameNode知道HDFS中任何給定文件的塊列表及其位置。使用此信息NameNode知道如何從塊中構(gòu)建文件。
NameNode不持久化存儲(chǔ)每個(gè)文件中各個(gè)塊所在的datanode的位置信息,這些信息會(huì)在系統(tǒng)啟動(dòng)時(shí)從DataNode重建
NameNode是Hadoop集群中的單點(diǎn)故障(局部出錯(cuò)會(huì)導(dǎo)致全局出錯(cuò))
NameNode所在機(jī)器通常會(huì)配置有大量?jī)?nèi)存(RAM)
5.datanode職責(zé)
DataNode負(fù)責(zé)最終數(shù)據(jù)塊block的存儲(chǔ)。是集群的從角色,也稱為Slave
DataNode啟動(dòng)時(shí),會(huì)將自己注冊(cè)到NameNode并匯報(bào)自己負(fù)責(zé)持有的塊列表
當(dāng)某個(gè)DataNode關(guān)閉時(shí),不會(huì)影響數(shù)據(jù)的可用性。NameNode將安排由其它DataNode管理的塊進(jìn)行副本復(fù)制。
DataNode所在機(jī)器通常配置有大量的硬盤空間,因?yàn)閷?shí)際數(shù)據(jù)存儲(chǔ)在DataNode中。
5.HDFS寫數(shù)據(jù)流程
1.Pipeline管道
? ? ? ? HDFS在上傳文件寫數(shù)據(jù)過(guò)程中采用的一種數(shù)據(jù)傳輸方式
? ? ? ? 客戶端將數(shù)據(jù)塊寫入第一個(gè)數(shù)據(jù)節(jié)點(diǎn),第一個(gè)數(shù)據(jù)節(jié)點(diǎn)保存數(shù)據(jù)之后再將塊復(fù)制到第二個(gè)數(shù)據(jù)節(jié)點(diǎn),后者保存后將其復(fù)制到第三個(gè)數(shù)據(jù)節(jié)點(diǎn)。
? ? ? ? 數(shù)據(jù)以管道的方式,順序的沿著一個(gè)方向傳輸,這樣能夠充分利用每個(gè)機(jī)器的帶寬,避免網(wǎng)絡(luò)瓶頸和高延遲時(shí)的連接,最小化推送所有數(shù)據(jù)的延時(shí)。
? ? ? ? 在線性推送模式下,每臺(tái)機(jī)器所有的出口帶寬都用于以最快的速度傳輸數(shù)據(jù),而不是在多個(gè)接收者之間分配帶寬。
2.ACK應(yīng)答響應(yīng)
????????ACK(Acknowledge character)確認(rèn)字符,在數(shù)據(jù)通信中,接收方發(fā)給發(fā)送方的一種傳輸類控制字符,表示發(fā)來(lái)的數(shù)據(jù)以確認(rèn)接收無(wú)誤。
? ? ? ? 在pipeline管道傳輸數(shù)據(jù)的過(guò)程中,傳輸?shù)姆捶较驎?huì)進(jìn)行ACK檢驗(yàn),確保數(shù)據(jù)傳輸安全
3.默認(rèn)3副本存儲(chǔ)策略
默認(rèn)副本存儲(chǔ)策略是由BlockPlacementPolicyDefault類指定
第一個(gè)副本:優(yōu)先選擇客戶端本地,否則隨機(jī)
第二個(gè)副本:不同于第一塊副本的不同機(jī)架
第三個(gè)副本:第二塊副本相同機(jī)架不同機(jī)器
4.流程
1.HDFS客戶端創(chuàng)建對(duì)象實(shí)例DistributedFileSystem,該對(duì)象中封裝了與HDFS文件系統(tǒng)操作的相關(guān)方法。
2.調(diào)用DistrubutedFileSystem對(duì)象的create()方法,通過(guò)RPC請(qǐng)求NameNode創(chuàng)建文件。
NameNode執(zhí)行各種檢查判斷:目標(biāo)文件是否存在,父目錄是否存在,客戶端是否具有創(chuàng)建文件的權(quán)限。檢查通過(guò),NameNode就會(huì)為本次請(qǐng)求記下一條記錄,返回FSDataOutputStream輸出流對(duì)象給客戶端用于寫數(shù)據(jù)。
3.客戶端通過(guò)FSDataOutputStream輸出流開(kāi)始寫入數(shù)據(jù)
4.客戶端寫入數(shù)據(jù)時(shí),將數(shù)據(jù)分成一個(gè)個(gè)數(shù)據(jù)包(packet 默認(rèn)64k),內(nèi)部組件DataSreamer請(qǐng)求NameNode挑選出適合存儲(chǔ)數(shù)據(jù)副本的一組DataNode地址,默認(rèn)是3副本存儲(chǔ)。
DataStreamer將數(shù)據(jù)包流式傳輸?shù)絧ipeline的第一個(gè)DataNode,該DataNode存儲(chǔ)數(shù)據(jù)包并將它發(fā)送到pipeline的第二個(gè)DataNode。同樣,第二個(gè)DataNode存儲(chǔ)數(shù)據(jù)包并且發(fā)送給第三個(gè)(最后一個(gè)) DataNode。
5.傳輸?shù)姆捶较蛏希瑫?huì)通過(guò)ACK機(jī)制校驗(yàn)數(shù)據(jù)包傳輸是否成功
6.客戶端完成數(shù)據(jù)寫入后,在FSDataOutputStream輸出流上調(diào)用close()方法關(guān)閉。
7.DistributedFileSystem聯(lián)系NameNode告知其文件寫入完成,等待NameNode確認(rèn)。
因?yàn)閚amenode已經(jīng)知道文件由哪些塊組成(DataStream請(qǐng)求分配數(shù)據(jù)塊),因此僅需等待最小復(fù)制塊即可成功返回。最小復(fù)制是由參數(shù)dfs.namenode.replication.min指定,默認(rèn)是1。
3.Hadoop MapReduce
1.MapReduce思想
核心:先分在合,分而治之。? ? ? ? 把一個(gè)復(fù)雜的問(wèn)題,按照一定的“分解”方法分為等價(jià)的規(guī)模較小的若干部分,然后逐個(gè)解決,分別找出各部分的結(jié)果,然后把各部分的結(jié)果組成整個(gè)問(wèn)題的最終結(jié)果。
Map表示第一階段,負(fù)責(zé)“拆分”:即把復(fù)雜的任務(wù)分解為若干個(gè)“簡(jiǎn)單的子任務(wù)”來(lái)并行處理??梢赃M(jìn)行拆分的前提是這些小任務(wù)可以并行計(jì)算,彼此間幾乎沒(méi)有依賴關(guān)系。
Reduce表示第二階段,負(fù)責(zé)“合并”:即對(duì)map階段的結(jié)果進(jìn)行全局匯總。
2.分布式計(jì)算
分布式計(jì)算是一種計(jì)算方法,和集中式計(jì)算是相對(duì)的。
隨著計(jì)算技術(shù)的發(fā)展,有些應(yīng)用需要非常巨大的計(jì)算能力才能完成,如果采用集中式計(jì)算,需要耗費(fèi)相當(dāng)長(zhǎng)的時(shí)間來(lái)完成。
分布式計(jì)算將該應(yīng)用分解成許多小的部分,分配給多臺(tái)計(jì)算機(jī)進(jìn)行處理。節(jié)約整體計(jì)算時(shí)間,提高計(jì)算效率。
Hadoop MapReduce是一個(gè)分布式計(jì)算框架。
3.MapReduce特點(diǎn)
1.易于編程
MapReduce框架提供了用于二次開(kāi)發(fā)的接口,簡(jiǎn)單的實(shí)現(xiàn)一些接口,就可以完成一個(gè)分布式程序。任務(wù)計(jì)算交給計(jì)算框架去處理,將分布式程序部署到hadoop集群上運(yùn)行,集群節(jié)點(diǎn)可以擴(kuò)展到成百上千個(gè)。
2.良好的擴(kuò)展性
當(dāng)計(jì)算機(jī)資源不夠時(shí),可以通過(guò)增加機(jī)器來(lái)擴(kuò)展它的計(jì)算能力??梢噪S節(jié)點(diǎn)數(shù)目增長(zhǎng)保持近似于線性的增長(zhǎng)。
3.高容錯(cuò)性
Hadoop集群式分布式搭建和部署的,如何單一機(jī)器節(jié)點(diǎn)宕機(jī)了,可以把上面的計(jì)算任務(wù)轉(zhuǎn)移到另一個(gè)節(jié)點(diǎn)上運(yùn)行,不影響整個(gè)作業(yè)任務(wù)的完成。
4.適合海量數(shù)據(jù)的離線處理
可以處理GB,TP,PB級(jí)別的數(shù)據(jù)。
5.實(shí)時(shí)計(jì)算性能差
MapReduce主要應(yīng)用于離線作業(yè),無(wú)法做到秒級(jí)或者亞秒級(jí)的數(shù)據(jù)響應(yīng)。
6.不能進(jìn)行流式計(jì)算
流式計(jì)算特點(diǎn)是數(shù)據(jù)是源源不斷的計(jì)算,并且數(shù)據(jù)是動(dòng)態(tài)的,而MapReduce作為一個(gè)離線計(jì)算框架,主要是針對(duì)靜態(tài)數(shù)據(jù)集的,數(shù)據(jù)是不能動(dòng)態(tài)變化的。
7.MapReduce實(shí)例進(jìn)程
一個(gè)完整的MapReduce程序在分布式運(yùn)行時(shí)有三類
MRAppMaster:負(fù)責(zé)整個(gè)MR程序的過(guò)程調(diào)度及狀態(tài)協(xié)調(diào)
MapTask:負(fù)責(zé)map階段的整個(gè)數(shù)據(jù)處理流程
ReduceTask:負(fù)責(zé)reduce階段的整個(gè)數(shù)據(jù)處理流程
階段組成:
一個(gè)MapReduce編程模型中只能包含一個(gè)Map階段和一個(gè)Reduce階段,或者只有Map階段。
不能有諸如多個(gè)map階段,多個(gè)reduce階段的情景出現(xiàn)
如果業(yè)務(wù)邏輯非常復(fù)雜,只能多個(gè)MapReduce程序串行運(yùn)行
MapReduce數(shù)據(jù)類型:
整個(gè)MapReduce程序中,數(shù)據(jù)都是以key-value鍵值對(duì)的形式流轉(zhuǎn)的
MapReduce內(nèi)置了很多默認(rèn)屬性,比如排序,分組等,都和數(shù)據(jù)的k有關(guān),所以kv的數(shù)據(jù)類型確定及其重要。
4.MapReduce官方示例
一個(gè)最終完整版本的MR程序需要用戶編寫的代碼和Hadoop自己實(shí)現(xiàn)的代碼整合在一起才可以。
其中用戶負(fù)責(zé)map,reduce兩個(gè)階段的業(yè)務(wù)問(wèn)題,Hadoop負(fù)責(zé)底層所有的技術(shù)問(wèn)題
示例程序路徑:/export/server/hadoop-3.3.0/share/hadoop/mapreduce
示例程序:hadoop-mapreduce-examples-3.3.0.jar
MapReduce程序提交命令:[hadoop jar|yarn jar] hadoop-mapreduce-examples-3.3.0.jar 參數(shù)
? ? ? ? 第一個(gè)參數(shù):pi表示MapReduce程序執(zhí)行圓周率計(jì)算任務(wù)
? ? ? ? 第二個(gè)參數(shù):用于指定map階段運(yùn)行的任務(wù)task次數(shù),并發(fā)度
? ? ? ? 第三個(gè)參數(shù):用于指定每個(gè)map任務(wù)取樣的個(gè)數(shù)
提交到Y(jié)ARN集群上分布式執(zhí)行
5.Map執(zhí)行流程
1.把輸入目錄下文件按照一定的標(biāo)準(zhǔn)逐個(gè)進(jìn)行邏輯切片,形成切片規(guī)劃。默認(rèn)每個(gè)切片128M,每一個(gè)切片由一個(gè)MapTask處理,有多少個(gè)切片就有多少個(gè)MapTask。
2.對(duì)切片中的數(shù)據(jù)按照一定的規(guī)則讀取解析返回
3.調(diào)用Mapper類中的map方法處理數(shù)據(jù)。每讀取解析出來(lái)一個(gè)
4.按照一定的規(guī)則對(duì)Map輸出的鍵值對(duì)進(jìn)行分區(qū)partition。默認(rèn)不分區(qū),因?yàn)橹挥幸粋€(gè)reducetask,分區(qū)的數(shù)量就是reducetask運(yùn)行的數(shù)量。
5.Map輸出數(shù)據(jù)寫入內(nèi)存緩沖區(qū),達(dá)到比例溢出到磁盤上。溢出spill的時(shí)候根據(jù)key進(jìn)行排序sort,默認(rèn)根據(jù)key字典序排序。
6.對(duì)所有溢出文件進(jìn)行最終的merge合并,成為一個(gè)文件。
6.Reduce階段流程
1.ReduceTask會(huì)主動(dòng)從MapTask復(fù)制拉取屬于需要自己處理的數(shù)據(jù)。
2.把拉取來(lái)數(shù)據(jù),全部進(jìn)行合并merge,即把分散的數(shù)據(jù)合并成一個(gè)大的數(shù)據(jù)。再對(duì)合并后的數(shù)據(jù)排序。
3.對(duì)排序后的鍵值對(duì)調(diào)用reduce方法。鍵相等的鍵值對(duì)調(diào)用一次reduce方法。最后把這些輸出的鍵值對(duì)寫入到HDFS文件中。
7.Shuffle機(jī)制
shuffle是一個(gè)過(guò)程
1.概念
Shuffle本意為洗牌,即有序到無(wú)序,而在MapReduce中,Sheffle為洗牌的逆過(guò)程,指將map端的無(wú)規(guī)則輸出按指定的規(guī)則"打亂"成具有一定規(guī)則的數(shù)據(jù),以便reduce端接收處理。
一般把從Map產(chǎn)生輸出開(kāi)始到Reduce取得數(shù)據(jù)作為輸入之前的過(guò)程稱作shuffle
2.Map端Shuffle
Collect階段:將MapTask的結(jié)果收集輸出到默認(rèn)大小為100M的環(huán)形緩沖區(qū),保存之前會(huì)對(duì)key進(jìn)行分區(qū)的計(jì)算,默認(rèn)Hash分區(qū)。
Spill階段:當(dāng)內(nèi)存中的數(shù)量達(dá)到一定的閾值的時(shí)候,就會(huì)將數(shù)據(jù)寫入本地磁盤,在將數(shù)據(jù)寫入磁盤之前需要對(duì)數(shù)據(jù)進(jìn)行一次排序的操作,如果配置了conbiner,還會(huì)將有相同分區(qū)號(hào)和key的數(shù)據(jù)進(jìn)行排序。
Merge階段:把所有溢出的臨時(shí)文件進(jìn)行一次合并操作,以確保一個(gè)MapTask最終只產(chǎn)生一個(gè)中間數(shù)據(jù)文件。
3.Reduce端shuffle
Copy階段:ReduceTask啟動(dòng)Fetcher線程到已經(jīng)完成MapTask的節(jié)點(diǎn)上復(fù)制一份屬于自己的數(shù)據(jù)。
Merge階段:在ReduceTask遠(yuǎn)程復(fù)制數(shù)據(jù)的同時(shí),會(huì)在后臺(tái)開(kāi)啟兩個(gè)線程對(duì)內(nèi)存到本地的數(shù)據(jù)文件進(jìn)行合并操作。
Sort階段:在對(duì)數(shù)據(jù)進(jìn)行合并的同時(shí),會(huì)進(jìn)行排序操作,由于MapTask階段已經(jīng)對(duì)數(shù)據(jù)進(jìn)行了局部的排序,ReduceTask只需保證Copy的數(shù)據(jù)的最終整體有效即可。
4.Shuffle弊端
Shuffle是MapReduce的核心,但是Shuffle中頻繁涉及到數(shù)據(jù)在內(nèi)存,磁盤之間的多次往復(fù),導(dǎo)致了MapReduce計(jì)算速度慢。
4.Hadoop YARN
Yet Another Resource Negotiator: 另一種資源協(xié)調(diào)者
1.概念
是一種新的Hadoop資源管理器,是一個(gè)通用資源管理系統(tǒng)和調(diào)度平臺(tái),可為上層應(yīng)用提供統(tǒng)一的資源管理和調(diào)度。
資源管理系統(tǒng):集群的硬件資源,和程序運(yùn)行相關(guān),比如內(nèi)存,CPU等。
調(diào)度平臺(tái):多個(gè)程序同時(shí)申請(qǐng)計(jì)算資源如何分配,調(diào)度的規(guī)則/算法。
通用:不僅僅支持MapReduce程序,理論上支持各種計(jì)算程序。只關(guān)心資源的管理。
可以把YARN理解為相當(dāng)于一個(gè)分布式的操作系統(tǒng)平臺(tái),而MapReduce等技術(shù)程序則相當(dāng)于運(yùn)行于操作系統(tǒng)上的應(yīng)用程序,YARN為這些程序提供運(yùn)算所需的資源。
2.Hadoop YARN架構(gòu),組件
1.架構(gòu)
物理集群層面: ResourceManager, NodeManager
App層面: ApplicationMaster(App Mstr)
Client
Container容器(資源的抽象),邏輯隔離
2.3大組件
ResourceManager(RM)
YARN集群中的主角色,決定系統(tǒng)中所有應(yīng)用程序之間資源分配的最終權(quán)限,即最終仲裁者。接收用戶的作用提交,并通過(guò)NM分配,管理各個(gè)機(jī)器上的計(jì)算資源。
NodeManager(NM)
YARN中的從角色,一臺(tái)機(jī)器上一個(gè),負(fù)責(zé)管理本機(jī)器上的計(jì)算資源。根據(jù)RM命令,啟動(dòng)Container容器,監(jiān)視容器的資源使用情況。并且向RM主角色匯報(bào)資源使用情況。
ApplicationMaster(AM)
用戶提交的每個(gè)應(yīng)用程序均包含一個(gè)AM。應(yīng)用程序的老大,負(fù)責(zé)程序內(nèi)部各階段的資源申請(qǐng),監(jiān)督程序的執(zhí)行情況。?
3.程序提交交互流程
MR作業(yè)提交? Client --> RM
資源的申請(qǐng)? ?MrAppMaster --> RM
MR作業(yè)狀態(tài)匯報(bào)? ?Container(Map|Reduce Task) --> Container(MrAppMaster)
節(jié)點(diǎn)的狀態(tài)匯報(bào)? ?NM --> RM
整體概述
? ? ? ? 當(dāng)用戶向YARN中提交一個(gè)應(yīng)用程序后,YARN將分兩個(gè)階段運(yùn)行該應(yīng)用程序
? ? ? ? 第一個(gè)階段是客戶端申請(qǐng)資源啟動(dòng)運(yùn)行本次程序的ApplicationMaster
? ? ? ? 第二個(gè)階段是由ApplicationMaster根據(jù)本次程序內(nèi)部具體情況,為它申請(qǐng)資源,并監(jiān)控它的整個(gè)運(yùn)行過(guò)程,直到運(yùn)行完成。
具體流程
? ? ? ? 1.用戶提供客戶端向YARN中的ResourceManager提交應(yīng)用程序(比如hadoop jar提交MR程序)
? ? ? ? 2.ResouceManager為該應(yīng)用程序分配第一個(gè)Container(容器),并于對(duì)應(yīng)的NodeManager通信,要求它在這個(gè)Container中啟動(dòng)這個(gè)應(yīng)用程序的ApplicationMaster。
? ? ? ? 3.ApplicationMaster啟動(dòng)成功之后,首先向ResourceManager注冊(cè)并保持通信,這樣用戶可以之間通過(guò)ResouceManager查看應(yīng)用程序的運(yùn)行狀態(tài)。
? ? ? ? 4.AM為本次程序內(nèi)部的各個(gè)Task任務(wù)向RM申請(qǐng)資源,并監(jiān)控它的運(yùn)行狀態(tài)。
? ? ? ? 5.一旦ApplicationMaster申請(qǐng)到資源后,便于對(duì)應(yīng)的NodeManager通信,要求它啟動(dòng)任務(wù)。
? ? ? ? 6.NodeManager為任務(wù)設(shè)置好運(yùn)行環(huán)境后,將任務(wù)啟動(dòng)命令寫到一個(gè)腳本中,并通過(guò)運(yùn)行該腳本啟動(dòng)任務(wù)。
? ? ? ? 7.各個(gè)任務(wù)通過(guò)某個(gè)RPC協(xié)議向ApplicationMaster匯報(bào)自己的狀態(tài)和進(jìn)度,以讓ApplicationManager隨時(shí)掌握各個(gè)任務(wù)的運(yùn)行狀態(tài),從而可以在任務(wù)失敗時(shí)重新啟動(dòng)任務(wù)。在應(yīng)用程序運(yùn)行過(guò)程中,用戶可以隨時(shí)通過(guò)RPC向Application查詢應(yīng)用程序的當(dāng)前運(yùn)行狀態(tài)。
? ? ? ? 8.應(yīng)用程序運(yùn)行完成后,ApplicationMaster向ReourceManager注銷并關(guān)閉自己。
4.YARN資源調(diào)度器scheduler
Scheduler完全專用于調(diào)度作業(yè),無(wú)法跟蹤應(yīng)用程序的狀態(tài)
yarn-site.xml中的yarn.resourcemanager.scheduler.class進(jìn)行配置
1.FIFO Schelduler(先進(jìn)先出調(diào)度器)
先進(jìn)先出,先提交的先運(yùn)行。不考慮優(yōu)先級(jí)和范圍,適用于負(fù)載較低的小規(guī)模集群。
擁有一個(gè)控制全局的隊(duì)列queue,默認(rèn)queue名稱為default,該調(diào)度器會(huì)獲取當(dāng)前集群上所有的資源信息作用于這個(gè)全局queue
優(yōu)點(diǎn):無(wú)需配置,先到先得,易于執(zhí)行
缺點(diǎn):任務(wù)的優(yōu)先級(jí)不會(huì)變高,高優(yōu)先級(jí)的作用需要等待。不適合共享集群
2.Capacity Scheduler(容量調(diào)度,默認(rèn))
允許多個(gè)組織共享整個(gè)集群資源,每個(gè)組織可以獲得集群的一部分計(jì)算能力。通過(guò)為每個(gè)組織分配專門的隊(duì)列,然后再為每個(gè)隊(duì)列分配一定的集群資源,這樣整個(gè)集群就可以通過(guò)設(shè)置多個(gè)隊(duì)列的方式給多個(gè)組織提供服務(wù)了。在隊(duì)列內(nèi)部采用先進(jìn)先出策略。
該調(diào)度器以隊(duì)列為單位劃分資源。
優(yōu)勢(shì):
? ? ? ? 1.層次化的隊(duì)列設(shè)計(jì)(Hierachical Queues)
? ? ? ? 層次化的管理,可以更容易,更合理分配和限制資源的使用。
? ? ? ? 2.容量保證(Capacity Guarantees)
? ? ? ? 每個(gè)隊(duì)列上都可以設(shè)置一個(gè)資源的占比,保證每個(gè)隊(duì)列都不會(huì)占用整個(gè)集群的資源。
? ? ? ? 3.安全(Security)
? ? ? ? 每個(gè)隊(duì)列有嚴(yán)格的訪問(wèn)控制。用戶只能向自己的隊(duì)列里面提交任務(wù),而且不能修改或者訪問(wèn)其它隊(duì)列的任務(wù)。
? ? ? ? 4.彈性分配(Elasticity)
? ? ? ? 空閑的資源可以被分配給任何隊(duì)列。當(dāng)多個(gè)隊(duì)列出現(xiàn)爭(zhēng)用的時(shí)候,則會(huì)按照權(quán)重比例進(jìn)行平衡。
3.Fair Scheduler(公平調(diào)度)
使所有應(yīng)用在平均情況下隨著時(shí)間的流逝可以獲得相等的資源份額??梢栽诙鄠€(gè)隊(duì)列間工作,允許資源共享和搶占。
優(yōu)勢(shì):
? ? ? ? 1.分層隊(duì)列
? ? ? ? 隊(duì)列可以按照層次結(jié)構(gòu)排列以劃分資源,并可以配置權(quán)重以按特定比例共享集群
? ? ? ? 2.基于用戶或組的隊(duì)列映射:可以根據(jù)提交任務(wù)的用戶名或組來(lái)分配隊(duì)列。如果任務(wù)指定了一個(gè)隊(duì)列,則在該隊(duì)列中提交任務(wù)。
? ? ? ? 3.資源搶占
? ? ? ? 根據(jù)應(yīng)用的配置,搶占和分配資源可以是友好的或是強(qiáng)制的。默認(rèn)不啟用資源搶占。
? ? ? ? 4.保證最小配額
? ? ? ? 可以設(shè)置隊(duì)列最小資源,允許將保證的最小份額分配給隊(duì)列,保證用戶可以啟動(dòng)任務(wù)。當(dāng)隊(duì)列不能滿足最小資源時(shí),可以從其它隊(duì)列搶占。當(dāng)隊(duì)列資源使用不完時(shí),可以給其它隊(duì)列使用。確保某些用戶,組或生成應(yīng)用始終獲得足夠的資源。
? ? ? ? 5.允許資源共享
? ? ? ? 即當(dāng)一個(gè)應(yīng)用運(yùn)行時(shí),如果其它隊(duì)列沒(méi)有任務(wù)執(zhí)行。則可以使用其它隊(duì)列,當(dāng)其它隊(duì)列有應(yīng)用需要資源時(shí)再將占用的隊(duì)列釋放出來(lái)。所有的應(yīng)用都從資源隊(duì)列中分配資源。
? ? ? ? 6.默認(rèn)不限制每個(gè)隊(duì)列和用戶可以同時(shí)運(yùn)行應(yīng)用的數(shù)量
? ? ? ? 可以配置來(lái)選擇隊(duì)列和用戶并行執(zhí)行的應(yīng)用數(shù)量。選擇并行執(zhí)行應(yīng)用數(shù)量不會(huì)導(dǎo)致任務(wù)提交失敗,超出的應(yīng)用會(huì)在隊(duì)列中等待。
5.數(shù)據(jù)倉(cāng)庫(kù) Apache Hive
1.概念
數(shù)據(jù)倉(cāng)庫(kù)(Data Warehouse, 數(shù)倉(cāng),DW):是一個(gè)用于存儲(chǔ),分析,報(bào)告的數(shù)據(jù)系統(tǒng)。數(shù)據(jù)倉(cāng)庫(kù)的目的是構(gòu)建面向分析的集成化數(shù)據(jù)環(huán)境,分析結(jié)果為企業(yè)提供決策支持。
數(shù)據(jù)倉(cāng)庫(kù)本身并不“生產(chǎn)”任何數(shù)據(jù),其數(shù)據(jù)來(lái)源于不同外部系統(tǒng)。
同時(shí)數(shù)據(jù)倉(cāng)庫(kù)自身也不需要“消費(fèi)”任何的數(shù)據(jù),其結(jié)果開(kāi)放給各個(gè)外部應(yīng)用使用。
OLTP:聯(lián)機(jī)事務(wù)處理系統(tǒng),執(zhí)行聯(lián)機(jī)事務(wù)處理。
我們把面向分析,支持分析的系統(tǒng)稱之為OLAP(聯(lián)機(jī)分析處理)系統(tǒng),數(shù)據(jù)倉(cāng)庫(kù)是OLAP系統(tǒng)的一種實(shí)現(xiàn)。
數(shù)倉(cāng)主要特征:
1.面向主題(Subject-Oriented)
? ? ? ? 主題是一個(gè)抽象的概念,是較高層次上數(shù)據(jù)綜合,歸類并進(jìn)行分析利用的抽象。在邏輯意義上,對(duì)應(yīng)企業(yè)中某一宏觀分析領(lǐng)域所涉及的分析對(duì)象。
2.集成性(Integrated)
? ? ? ? 主題相關(guān)的數(shù)據(jù)通常會(huì)分布在多個(gè)操作型系統(tǒng)中,彼此分散,獨(dú)立,異構(gòu)。需要集成到數(shù)倉(cāng)主題下。要經(jīng)過(guò)統(tǒng)一與綜合,對(duì)數(shù)據(jù)進(jìn)行抽取,清理,轉(zhuǎn)換和匯總。要統(tǒng)一源數(shù)據(jù)中所有矛盾之處,如字段的同名異義,異名同義,單位不統(tǒng)一,字長(zhǎng)不統(tǒng)一等。要進(jìn)行數(shù)據(jù)綜合和計(jì)算。
3.非易失性(Non-Volatile)
? ? ? ? 也叫非易變性。數(shù)據(jù)倉(cāng)庫(kù)是分析數(shù)據(jù)的平臺(tái),而不是創(chuàng)造數(shù)據(jù)的平臺(tái)。數(shù)據(jù)進(jìn)入數(shù)據(jù)倉(cāng)庫(kù)后,便穩(wěn)定且不會(huì)改變。
? ? ? ? 數(shù)據(jù)倉(cāng)庫(kù)的數(shù)據(jù)反映的是一段相當(dāng)長(zhǎng)的時(shí)間內(nèi)歷史數(shù)據(jù)的內(nèi)容,數(shù)據(jù)一般被較長(zhǎng)時(shí)間保留。
? ? ? ? 數(shù)據(jù)倉(cāng)庫(kù)中一般有大量的查詢操作,但修改和刪除操作很少。
4.時(shí)變性(Time-Variant)
? ? ? ? 數(shù)據(jù)倉(cāng)庫(kù)的數(shù)據(jù)需要隨著數(shù)據(jù)更新,以適應(yīng)決策的需要。
數(shù)據(jù)倉(cāng)庫(kù)主流開(kāi)發(fā)語(yǔ)言-SQL
結(jié)構(gòu)化查詢語(yǔ)言(Structured Query Language, SQL)
結(jié)構(gòu)化數(shù)據(jù):也叫行數(shù)據(jù),由二維表結(jié)構(gòu)來(lái)邏輯表達(dá)和實(shí)現(xiàn)的數(shù)據(jù)。嚴(yán)格的遵循數(shù)據(jù)格式與長(zhǎng)度規(guī)范,主要通過(guò)關(guān)系型數(shù)據(jù)庫(kù)進(jìn)行存儲(chǔ)和管理。
什么是Hive
? ? ? ? Apache Hive是一款建立在Hadoop之上的開(kāi)源數(shù)據(jù)倉(cāng)庫(kù)系統(tǒng),可以將存儲(chǔ)在Hadoop文件中的結(jié)構(gòu)化,半結(jié)構(gòu)化數(shù)據(jù)文件映射為一張數(shù)據(jù)庫(kù)表,基于表提供了一種類似于SQL的查詢模型,稱為Hive查詢語(yǔ)言(HQL),用于訪問(wèn)和分析存儲(chǔ)在Hadoop文件中的大型數(shù)據(jù)集。
? ? ? ? Hive核心是將HQL轉(zhuǎn)換為MapReduce程序,然后將程序提交到Hadoop集群執(zhí)行。
? ? ? ? Hive利用HDFS存儲(chǔ)數(shù)據(jù),利用MapReduce查詢分析數(shù)據(jù)。用戶專注于編寫HQL,Hive負(fù)責(zé)轉(zhuǎn)換為MapReduce程序完成對(duì)數(shù)據(jù)的分析。
Hive組件
1.用戶接口
? ? ? ? 包括CLI,JDBC/ODBC,WebGUI。其中,CLI(command line interface)為shell命令行。Hive中的Thrift服務(wù)器允許外部客戶端通過(guò)網(wǎng)絡(luò)與Hive進(jìn)行交互,類似于JDBC或ODBC協(xié)議。WebGUI是通過(guò)瀏覽器訪問(wèn)Hive。
2.元數(shù)據(jù)存儲(chǔ)
? ? ? ? 通常是存儲(chǔ)在關(guān)系數(shù)據(jù)庫(kù)如mysql/derby中。Hive中的元數(shù)據(jù)包括表的名字,表的列和分區(qū)及其屬性(是否為外部表等),表的屬性,表的數(shù)據(jù)所在目錄等。
3.Driver驅(qū)動(dòng)程序
? ? ? ? 包括語(yǔ)法解析器,計(jì)劃編譯器,優(yōu)化器,執(zhí)行器。
? ? ? ? 完成HQL查詢語(yǔ)句從詞法分析,語(yǔ)法分析,編譯,優(yōu)化以及查詢計(jì)劃的生成。生成的查詢計(jì)劃存儲(chǔ)在HDFS中,并在隨后有執(zhí)行引擎調(diào)用執(zhí)行。
4.執(zhí)行引擎
? ? ? ? Hive本身并不直接處理數(shù)據(jù)文件。而是通過(guò)執(zhí)行引擎處理。當(dāng)下Hive支持MapReduce,Tez, Spark 3種引擎。
Hive元數(shù)據(jù)
? ? ? ? 元數(shù)據(jù)(Metadata),又稱為中介數(shù)據(jù),中繼數(shù)據(jù)。為描述數(shù)據(jù)的數(shù)據(jù)(data about data),主要是描述數(shù)據(jù)屬性(property)的信息,用來(lái)支持如存儲(chǔ)位置,歷史事件,資源查找,文件記錄等功能。
Hive Metadata
? ? ? ? 即Hive的元數(shù)據(jù),包含用Hive創(chuàng)建的database,table,表的位置,類型,屬性,字段順序類型等元信息。元數(shù)據(jù)存儲(chǔ)在關(guān)系型數(shù)據(jù)庫(kù)中。如hive內(nèi)置的Derby,或者第三方如MySql等。
Hive Metastore
? ? ? ? 即元數(shù)據(jù)服務(wù),Metastore服務(wù)的作用是管理metadata元數(shù)據(jù),對(duì)外暴露服務(wù)地址,讓各種客戶端通過(guò)連接metastore服務(wù),由metastore再去連接MySQL數(shù)據(jù)庫(kù)來(lái)存取元數(shù)據(jù)。
? ? ? ? 有了metastore服務(wù),就可以有多個(gè)客戶端同時(shí)連接,而且這些客戶端不需要知道MySQL數(shù)據(jù)庫(kù)的用戶名和密碼,只需要連接meatstore服務(wù)即可。某種程度上也保證了hive元數(shù)據(jù)的安全。
metastore配置方式
? ? ? ? 內(nèi)嵌模式,本地模式,遠(yuǎn)程模式
區(qū)分方式
內(nèi)嵌模式本地模式遠(yuǎn)程模式Metastore是否單獨(dú)配置,啟動(dòng)否否是Metadata存儲(chǔ)介質(zhì)Derby(內(nèi)置)MysqlMysql
2.安裝部署
1.安裝前準(zhǔn)備
服務(wù)器基礎(chǔ)環(huán)境:集群時(shí)間同步,防火墻關(guān)閉,主機(jī)Host映射,免密登錄,JDK安裝。
Hadoop集群健康可用
啟動(dòng)Hive之前必須先啟動(dòng)Hadoop集群。注:需等待HDFS安全模式關(guān)閉之后再啟動(dòng)運(yùn)行Hive.
在Hadoop中添加相關(guān)配置屬性,以滿足Hive在Hadoop上運(yùn)行,修改Hadoop中的core-site.xml,同步集群中的每個(gè)節(jié)點(diǎn),重啟生效。
2.MySQL安裝
只需要在一臺(tái)機(jī)器安裝并且授權(quán)遠(yuǎn)程訪問(wèn)
1.卸載Centos7自帶的mariadb
rpm -qa|grep mariadb
rpm -e mariadb-libs-5.5.64-1.el7.x86_64 --nodeps
2.安裝mysql
mkdir /export/software/mysql
?上傳安裝包,解壓
tar xvf mysql-5.7.29-1.el7.x86_64.rpm-bundle.tar
安裝依賴
yum -y install libaio
啟動(dòng)mysql
rpm -ivh mysql-community-common-5.7.29-1.el7.x86_64.rpm mysql-community-libs-5.7.29-1.el7.x86_64.rpm mysql-community-client-5.7.29-1.el7.x86_64.rpm mysql-community-server-5.7.29-1.el7.x86_64.rpm
mysql初始化設(shè)置
#初始化
mysqld --initialize
#更改所屬組
chown mysql:mysql /var/lib/mysql -R
#啟動(dòng)mysql
systemctl start mysqld.service
#查看生成的臨時(shí)root密碼
cat /var/log/mysqld.log
修改root密碼,授權(quán)遠(yuǎn)程訪問(wèn),設(shè)置開(kāi)機(jī)自啟動(dòng)
mysql -u root -p
# 輸入日志中獲取的臨時(shí)密碼
# 設(shè)置新的密碼
alter user user() identified by "123456";
#授權(quán)
use mysql;
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '123456' WITH GRANT OPTION;
#刷新權(quán)限
FLUSH PRIVILEGES;
#mysql的啟動(dòng)和關(guān)閉 狀態(tài)查看 (這幾個(gè)命令必須記?。?/p>
systemctl stop mysqld
systemctl status mysqld
systemctl start mysqld
#開(kāi)機(jī)自啟動(dòng)
systemctl enable mysqld
3.Hive安裝
1.上傳Hive包,解壓,node1即可
tar zxvf apache-hive-3.1.2-bin.tar.gz
2.解決Hive與Hadoop之間guava版本差異
cd /export/server/apache-hive-3.1.2-bin/
rm -rf lib/guava-19.0.jar
cp /export/server/hadoop-3.3.0/share/hadoop/common/lib/guava-27.0-jre.jar ./lib/
3.修改配置文件
hive-env.sh
cd /export/server/apache-hive-3.1.2-bin/conf
mv hive-env.sh.template hive-env.sh
vim hive-env.sh
# 追加到文件最后
export HADOOP_HOME=/export/server/hadoop-3.3.0
export HIVE_CONF_DIR=/export/server/apache-hive-3.1.2-bin/conf
export HIVE_AUX_JARS_PATH=/export/server/apache-hive-3.1.2-bin/lib
hive-site.xml
vim hive-site.xml
#數(shù)據(jù)庫(kù)密碼,改成自己的
4.上傳mysql jdbc驅(qū)動(dòng)到hive安裝包lib下
5.初始化元數(shù)據(jù)
cd /export/server/apache-hive-3.1.2-bin/
bin/schematool -initSchema -dbType mysql -verbos
#初始化成功會(huì)在mysql中創(chuàng)建74張表
6.在hdfs創(chuàng)建hive存儲(chǔ)目錄(如存在則不用操作)
hadoop fs -mkdir /tmp
hadoop fs -mkdir -p /user/hive/warehouse
hadoop fs -chmod g+w /tmp
hadoop fs -chmod g+w /user/hive/warehouse
4.metastore服務(wù)啟動(dòng)
1.前臺(tái)啟動(dòng)
? ? ? ? 進(jìn)程會(huì)一直占據(jù)終端,ctrl + c結(jié)束進(jìn)程,服務(wù)關(guān)閉??梢愿鶕?jù)需求添加參數(shù)開(kāi)啟debug日志,獲取詳細(xì)日志信息,便于排錯(cuò)。
#前臺(tái)啟動(dòng) 關(guān)閉ctrl+c
/export/server/apache-hive-3.1.2-bin/bin/hive --service metastore
#前臺(tái)啟動(dòng)開(kāi)啟debug日志
/export/server/apache-hive-3.1.2-bin/bin/hive --service metastore --hiveconf hive.root.logger=DEBUG,console
2.后臺(tái)啟動(dòng)
? ? ? ? 輸入日志信息在/root目錄下的nohup.out
#后臺(tái)啟動(dòng) 進(jìn)程掛起 關(guān)閉使用jps+ kill -9
nohup /export/server/apache-hive-3.1.2-bin/bin/hive --service metastore &
kill -9 pid 關(guān)閉
3.Hive客戶端使用
1.Hive自帶客戶端
bin/hive
? ? ? ? 第一代,不推薦使用,是一個(gè)shellUitl??梢杂糜谝越换セ蚺幚砟J竭\(yùn)行Hive查詢,Hive相關(guān)服務(wù)的啟動(dòng),比如metastore服務(wù)。
bin/beeline
? ? ? ? 第二代,是一個(gè)JDBC客戶端,推薦,比第一代安全性高。
HiveServer2服務(wù)
? ? ? ? 遠(yuǎn)程模式下beeline通過(guò)Thrift連接到單獨(dú)的HiveServer2服務(wù)上,支持多客戶端的并發(fā)和身份認(rèn)證。
? ? ? ? HiveServer2通過(guò)Metastore服務(wù)讀寫元數(shù)據(jù),所以遠(yuǎn)程模式下,啟動(dòng)HiveServer2之前必須先啟動(dòng)metastore服務(wù)。
? ? ? ? 遠(yuǎn)程模式下,Beeline客戶端只能通過(guò)HiveServer2服務(wù)訪問(wèn)Hive,而bin/hive是通過(guò)Metastore服務(wù)訪問(wèn)的。
nohup /export/server/apache-hive-3.1.2-bin/bin/hive --service hiveserver2 &
# 連接訪問(wèn)
/export/server/apache-hive-3.1.2-bin/bin/beeline
# 啟動(dòng)之后,連接對(duì)應(yīng)服務(wù)
! connect jdbc:hive2://node1:10000
# 輸入用戶名,密碼
2.Hive可視化客戶端
DataGrip,Dbeaver,SQuirrel SQL Client等
4.Hive SQL
數(shù)據(jù)定義語(yǔ)言(Data Definition Language, DDL),對(duì)數(shù)據(jù)庫(kù)內(nèi)部的對(duì)象結(jié)構(gòu)進(jìn)行創(chuàng)建,刪除,修改等的操作語(yǔ)言,包括表,庫(kù)等。
在Hive中,默認(rèn)是數(shù)據(jù)庫(kù)叫做default,存儲(chǔ)數(shù)據(jù)位置位于HDFS的/user/hive/warehouse下
用戶自己創(chuàng)建的數(shù)據(jù)庫(kù)存儲(chǔ)位置是/user/hive/warehouse/database_name.db下
# 創(chuàng)建數(shù)據(jù)庫(kù)
create database name
切換數(shù)據(jù)庫(kù)
use name
刪除數(shù)據(jù)庫(kù),庫(kù)下沒(méi)表才能刪
drop database name
建表語(yǔ)句
create table 庫(kù)名.t_archer(
id int comment "ID編號(hào)", -- comment后面是注釋,不影響執(zhí)行
name string comment "英雄名稱",
hp_max int comment "最大生命",
mp_max int comment "最大法力",
attack_max int comment "最高物攻",
defense_max int comment "最大物防",
attack_range string comment "攻擊范圍",
role_main string comment "主要定位",
role_assist string comment "次要定位"
)
row format delimited
field terminated by "\t"; -- 字段之間的分隔符是tab鍵 指標(biāo)符
建表成功之后,在Hive的默認(rèn)存儲(chǔ)路徑下就生成了表對(duì)應(yīng)的文件夾,把要解析的文件上傳到對(duì)應(yīng)的表文件夾下。
建表時(shí)如果沒(méi)有指定分隔符,則采用默認(rèn)分隔符。默認(rèn)分隔符是'\001',一種特殊字符,使用ASCII編碼的值,鍵盤打不出來(lái)。
vim編輯器下,連續(xù)按下Ctrl + v/Ctrl + a 即可輸入'\001',形式 ^A。一些文本編輯器中以SOH形式顯示。
show語(yǔ)法
-- 顯示數(shù)據(jù)庫(kù)
show databases;
show schemas;
-- 顯示表
show tables;
-- 指定某個(gè)數(shù)據(jù)庫(kù)
show tables in database;
-- 顯示一張表的元數(shù)據(jù)信息
desc formatted table_name;
注釋comment中文亂碼問(wèn)題
# 登錄mysql數(shù)據(jù)庫(kù)
mysql -u root -p
# 切換到hive的數(shù)據(jù)庫(kù)
user hive3
# 修改編碼方式
alter table hive3.COLUMNS_V2 modify column COMMENT varchar(256) character set utf8;
alter table hive3.TABLE_PARAMS modify column PARAM_VALUE varchar(4000) character set utf8;
alter table hive3.PARTITION_PARAMS modify column PARAM_VALUE varchar(4000) character set utf8 ;
alter table hive3.PARTITION_KEYS modify column PKEY_COMMENT varchar(4000) character set utf8;
alter table hive3.INDEX_PARAMS modify column PARAM_VALUE varchar(4000) character set utf8;
5.Apache Hive DML語(yǔ)句與函數(shù)使用
1.加載數(shù)據(jù)
1.Load語(yǔ)法
?將數(shù)據(jù)文件移動(dòng)到與Hive表對(duì)應(yīng)的位置,移動(dòng)時(shí)是純復(fù)制,移動(dòng)操作。即在數(shù)據(jù)load加載到表中時(shí),Hive不會(huì)對(duì)表中的數(shù)據(jù)內(nèi)容進(jìn)行任何轉(zhuǎn)換,任何操作。
LOAD DATA [LOCAL] INPATH 'filepath' [OVERWRITE] INTO TABLE tablename;
LOAD DATA LOCAL INPATH '/root/hivedata/students.txt' INTO TABLE student_local;
hadoop fs -put |-mv? ?上傳文件命令
如果指定Local,將在本地文件系統(tǒng)中查找文件路徑,本地文件系統(tǒng)指的是Hiveserver2服務(wù)所在機(jī)器的本地Linux文件系統(tǒng),不是Hive客戶端所在的本地文件系統(tǒng)。
從本地加載時(shí)是復(fù)制操作,從Hdfs加載則是移動(dòng)操作。
如果沒(méi)有指定Loacl,如果filepath指向的是一個(gè)完整的URL,會(huì)直接適用這個(gè)URL,如果沒(méi)有指定schema,Hive會(huì)使用在hadoop配置文件中參數(shù)fs.default.name指定的
overwrite:是否覆蓋原數(shù)據(jù)
2.Insert插入
語(yǔ)法與Mysql一致,速度慢,不建議使用
一般與select搭配使用,將查詢出來(lái)的數(shù)據(jù)插入表中。
2.查詢數(shù)據(jù)
同mysql
-- 查詢當(dāng)前數(shù)據(jù)庫(kù)
select current_database();
-- 去重
select distinct * from table_name;
3.Join管理查詢
同mysql
4.函數(shù)使用
-- 查看當(dāng)下可用的所有函數(shù)
show functions
-- 查看函數(shù)的使用方式
describe function extended function_name
按函數(shù)輸入輸出的行數(shù)進(jìn)行分類
UDF(User-Defined-Function)普通函數(shù),一進(jìn)一出
UDAF(User-Defined Aggregation Function)聚合函數(shù),多進(jìn)一出
UDTF(User-Defined Table-Generating Functions)表生成函數(shù),一進(jìn)多出
6.FineBI可視化展示數(shù)據(jù)
1.特點(diǎn)
1.通過(guò)多人協(xié)作來(lái)實(shí)現(xiàn)最終的可視化構(gòu)建
2.不需要通過(guò)復(fù)雜代碼來(lái)實(shí)現(xiàn)開(kāi)發(fā),通過(guò)可視化操作實(shí)現(xiàn)開(kāi)發(fā)
3.適合于各種數(shù)據(jù)可視化的應(yīng)用場(chǎng)景
4.支持各種常見(jiàn)的分析圖表和各種數(shù)據(jù)源
5.支持處理大數(shù)據(jù)
2.安裝
官網(wǎng)免費(fèi)安裝
1.配置驅(qū)動(dòng)
如果使用FineBI連接Hive,讀取Hive的數(shù)據(jù)表,需要在FineBI中添加Hive的驅(qū)動(dòng)jar包,將Hive的驅(qū)動(dòng)jar包放入FineBI的lib目錄下
FineBI5.1\webapps\webroot\WEB-INF\lib
2.插件安裝
自己放的Hive驅(qū)動(dòng)包會(huì)和FineBI自帶的驅(qū)動(dòng)包產(chǎn)生沖突,導(dǎo)致FineBI無(wú)法識(shí)別自己的驅(qū)動(dòng)包,需要安裝FineBI官方提供的驅(qū)動(dòng)包隔離插件。
安裝之后重啟FineBI才能生效?
3.構(gòu)建連接
4.數(shù)據(jù)準(zhǔn)備
分組下新建業(yè)務(wù)包,點(diǎn)擊進(jìn)入業(yè)務(wù)包
?選擇要展示的表
?5.新建報(bào)表
儀表盤新建儀表板
柚子快報(bào)邀請(qǐng)碼778899分享:大數(shù)據(jù)導(dǎo)論學(xué)習(xí)
推薦閱讀
本文內(nèi)容根據(jù)網(wǎng)絡(luò)資料整理,出于傳遞更多信息之目的,不代表金鑰匙跨境贊同其觀點(diǎn)和立場(chǎng)。
轉(zhuǎn)載請(qǐng)注明,如有侵權(quán),聯(lián)系刪除。