欧美free性护士vide0shd,老熟女,一区二区三区,久久久久夜夜夜精品国产,久久久久久综合网天天,欧美成人护士h版

目錄

柚子快報(bào)邀請(qǐng)碼778899分享:大數(shù)據(jù)導(dǎo)論學(xué)習(xí)

柚子快報(bào)邀請(qǐng)碼778899分享:大數(shù)據(jù)導(dǎo)論學(xué)習(xí)

http://yzkb.51969.com/

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

fs.defaultFS

hdfs://node1:8020

hadoop.tmp.dir

/export/data/hadoop-3.3.0

hadoop.http.staticuser.user

root

hadoop.proxyuser.root.hosts

*

hadoop.proxyuser.root.groups

*

fs.trash.interval

1440

?hdfs-site.xml文件

vim hdfs-site.xml

dfs.namenode.secondary.http-address

node2:9868

?mapred-site.xml文件

vim mapred-site.xml

mapreduce.framework.name

yarn

mapreduce.jobhistory.address

node1:10020

mapreduce.jobhistory.webapp.address

node1:19888

yarn.app.mapreduce.am.env

HADOOP_MAPRED_HOME=${HADOOP_HOME}

mapreduce.map.env

HADOOP_MAPRED_HOME=${HADOOP_HOME}

mapreduce.reduce.env

HADOOP_MAPRED_HOME=${HADOOP_HOME}

yarn-site.xml文件

vim yarn-site.xml

yarn.resourcemanager.hostname

node1

yarn.nodemanager.aux-services

mapreduce_shuffle

yarn.nodemanager.pmem-check-enabled

false

yarn.nodemanager.vmem-check-enabled

false

yarn.log-aggregation-enable

true

yarn.log.server.url

http://node1:19888/jobhistory/logs

yarn.log-aggregation.retain-seconds

604800

?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ī)則讀取解析返回對(duì)。默認(rèn)是按行讀取。

3.調(diào)用Mapper類中的map方法處理數(shù)據(jù)。每讀取解析出來(lái)一個(gè),調(diào)用一次map方法。

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),重啟生效。

hadoop.proxyuser.root.hosts

*

hadoop.proxyuser.root.groups

*

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

javax.jdo.option.ConnectionURL

jdbc:mysql://node1:3306/hive3?createDatabaseIfNotExist=true&useSSL=false&useUnicode=true&characterEncoding=UTF-8

javax.jdo.option.ConnectionDriverName

com.mysql.jdbc.Driver

javax.jdo.option.ConnectionUserName

root

#數(shù)據(jù)庫(kù)密碼,改成自己的

javax.jdo.option.ConnectionPassword

123456

hive.server2.thrift.bind.host

node1

hive.metastore.uris

thrift://node1:9083

hive.metastore.event.db.notification.api.auth

false

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í)

http://yzkb.51969.com/

推薦閱讀

評(píng)論可見(jiàn),查看隱藏內(nèi)容

本文內(nèi)容根據(jù)網(wǎng)絡(luò)資料整理,出于傳遞更多信息之目的,不代表金鑰匙跨境贊同其觀點(diǎn)和立場(chǎng)。

轉(zhuǎn)載請(qǐng)注明,如有侵權(quán),聯(lián)系刪除。

本文鏈接:http://gantiao.com.cn/post/18856958.html

發(fā)布評(píng)論

您暫未設(shè)置收款碼

請(qǐng)?jiān)谥黝}配置——文章設(shè)置里上傳

掃描二維碼手機(jī)訪問(wèn)

文章目錄