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

首頁綜合 正文
目錄

柚子快報邀請碼778899分享:【大數據】深入了解Hadoop

柚子快報邀請碼778899分享:【大數據】深入了解Hadoop

http://yzkb.51969.com/

文章目錄

一、Hadoop1.1、Hadoop發(fā)展1.2、Hadoop特性1.3、Hadoop三大組件

二、Hadoop---HDFS(分布式文件存儲系統(tǒng))2.1、hdfs服務的構成2.2、HDFS的Shell操作2.3、**`HDFS讀寫流程`**2.4、三副本機制2.5、元數據介紹2.6、HDFS的歸檔2.7、HDFS垃圾桶機制2.8、HDFS安全機制

三、Hadoop---MapReduce(分布式計算引擎)3.1、MapReudce簡單使用3.2、**`MapReduce 計算流程`**3.3、MapReduce計算歷史服務

四、Hadoop---Yarn(資源調度系統(tǒng))4.1、Yarn服務的構成4.2、Yarn的資源調度流程4.3、Yarn資源調度方案

五、Hadoop集群搭建5.1、搭建步驟5.2、高可用搭建步驟

一、Hadoop

狹義上: 分布式數據管理(存儲,計算)的系統(tǒng)服務 廣義上: 大數據開發(fā)的一個生態(tài)系統(tǒng),很多大數據開發(fā)的工具都可以接入到hadoop中 如 zk可以配合Hadoop一起實現高可用

1.1、Hadoop發(fā)展

Hadoop屬于Apache基金會的開源項目,下載源碼使用 是搜索引擎公司開發(fā)的,Hadoop的實現原理參考谷歌的兩篇論文, GFS論文,開發(fā)了hdfs 負責存儲 Mapreduce論文,開發(fā)了mapreduce 負責計算

1.2、Hadoop特性

擴容能力(Scalable):Hadoop是在可用的計算機集群間分配數據并完成計算任務的,這些集群可以方便的擴展到數以千計的節(jié)點中。成本低(Economical):Hadoop通過普通廉價的機器組成服務器集群來分發(fā)以及處理數據,以至于成本很低。高效率(Efficient):通過并發(fā)數據,Hadoop可以在節(jié)點之間動態(tài)并行的移動數據,使得速度非???。可靠性(Rellable):能自動維護數據的多份復制,并且在任務失敗后能自動地重新部署(redeploy)計算任務。所以Hadoop的按位存儲和處理數據的能力值得信賴。

1.3、Hadoop三大組件

HDFS 負責數據存儲服務MapReduce 負責數據計算Yarn 負責計算資源的調度 hadoop2.0 之后的版本引入

二、Hadoop—HDFS(分布式文件存儲系統(tǒng))

負責大數據的數據儲存功能

對海量數采用文件的方式進行存儲,同一個文件的數據可能會存儲在不同的服務器實現分布式存儲

2.1、hdfs服務的構成

namenode服務 管理hdfs的主服務

所有的數據的讀寫請求都要交給namenode處理由namenode負責將數據進行分配存在不同的datanode上namenode主服務只會有一個,一旦namenode服務出現問題,整個hdfs服務都不可用,namenode是單點故障 datanode服務 負責存儲數據

和namenode保持通訊,將自身信息告知namenode數據存儲時,是按照塊(block)進行存儲,默認塊大小 128M

當數據大小不夠128M時,按照數據大小存儲數據到磁盤上 為了保證數據安全可靠,會對數據進行副本備份, 默認是3副本,每塊數據會存儲3份,三份數據會存儲在不同服務器 SecondaryNameNode 負責協(xié)助namenode完成對元數據的存儲

元數據是文件的信息(名字,大小,存儲位置),datanode信息,塊信息在hdfs運行期間,元數據是在內存上存儲的,內存存儲數據是臨時存儲,一點斷電或服務不可用宕機會造成內存數據丟失,hdfs為了避免數據丟失,會將元數據在磁盤上進行存儲SecondaryNameNode 協(xié)助namenode將元數據存在磁盤上如果namenode完成磁盤存儲數據,需要耗費大量時間,此時無法處理其他請求,所以元數據的磁盤存儲交給SecondaryNameNode 實現

2.2、HDFS的Shell操作

在hadoop的2.x版本中沒有web頁面的操作選項,只能通過shell方式操作

hdfs dfs 參數

hdfs dfs -mkdir /hdfs_data

hdfs dfs -touch /hdfs_data/a.txt

hdfs dfs -rm -r /hdfs_data

hdfs dfs -cp /hdfs_data/a.txt /data

hdfs dfs -mv /data/畫圖.pptx /hdfs_data

hdfs dfs -mv /hdfs_data/畫圖.pptx /hdfs_data/a.pptx

hdfs dfs -cat /hdfs_data/a.txt

hdfs dfs -ls /

hdfs的文件上傳下載

hdfs dfs -get hdfs上的文件路徑 本地的文件路徑(本地指操作的當前服務器)

hdfs dfs -put 本地的文件路徑(本地指操作的當前服務器) hdfs上的目錄路徑

2.3、HDFS讀寫流程

讀流程

客戶端向filesystem請求獲取文件數據, filesystem請求NN檢查文件, NN獲取元數據進行檢查并返回檢查結果給filesystem,filesystem返回給客戶端,客戶端請求調用讀取數據方法fsDataReadStream, fsDataReadStream請求NN獲取數據所在位置,NN返回數據所在位置(按照塊存儲順序返回所有塊的DN數據),然后按照packet大小讀取數據,存儲在內存上,數據讀取完成后寫入文件 當讀取某個DN不可用時,會匯報給NN

寫流程

1.客戶端通過DistributedFileSystem模塊向NN請求上傳文件,NN檢查目標文件是否已存在,父目錄是否存在并返回檢查結果 2. 客戶端向NN請求第一個Block上傳到哪幾個DN服務器上 3. NN返回3個DN節(jié)點,分別為DN1,DN2,DN3 4. 客戶端通過FSDataWriteStream模塊請求NN獲取要存儲數據的DN并向DN1上傳數據,DN1收到請求會繼續(xù)調用DN2,然后DN2調用DN3,將這個通信管道建立完成 5. DN1,DN2,DN3逐級應答客戶端 6. 客戶端開始往 DN1 上傳第一個 Block (默認128M)(先從磁盤讀取數據放到一個本地內存緩存),以 Packet(64KB) 為單位,DN1 收到一個 Packet 就會傳給 DN2,DN2傳給 DN3;DN1每傳一個 packet 會放入一個應答隊列等待應答。 7. 當一個 Block 傳輸完成之后,客戶端再次請求 NameNode 上傳第二個 Block 的服務器。(重復執(zhí)行3-7步)

2.4、三副本機制

保證每個塊在不同的服務器不同機架上

服務器數量低于副本數量,存儲數據時會報錯

1-第一個副本,由NN決定找哪個DN

2-第二個副本,有NN找第一個副本所在機架的不同服務器上

3-第三個副本,找和第一個副本不同機架的服務器上

2.5、元數據介紹

hdfs的元數據兩個部分

內存上的元數據

在服務運行期間,所有的元數據會先存儲在內存上文件信息,datanode信息,塊信息 元數據文件

為了避免內存上的元數據丟失,會將內存的上的元數據保存在磁盤上secondarynamenode完成元數據文件的保存存儲位置在hadoop的指定數據

/export/data/hadoop-3.3.0/dfs/name/current edits_xxxxx 編輯日志文件,記錄所有的文件操作信息 hdfs oev -i edits_0000000000000010086-0000000000000010100 -o edits.xml

fsimage_xxxxx 鏡像文件,保存了元數據內容 文件和塊內容

datanode會匯報自身狀態(tài)給NameNode,默認是3秒

hdfs oiv -i fsimage_0000000000000010119 -p XML -o fsimage.xml

元數據備份流程

客戶端發(fā)送文件操作請求給NN,NN將新的元數據同步到內存中并同時操作信息記錄在edits文件中,如果edits存儲1M會產生新的文件 SNN向NN發(fā)送checkpoint請求,時間間隔是一小時,當發(fā)生checkpoint時會創(chuàng)建新的edits文件,checkpoint后的請求操作信息會被記錄在新的edits中,SNN執(zhí)行edits文件中的操作,操作后的數據加載內存中,將元數據保存在fsimage中,將fsimage文件傳遞給NN并修改文件名

元數據保存文件的條件

1-時間間隔達到1小時 2-文件操作次數達到100萬次 兩個條件只要滿足一個就是執(zhí)行checkpoint進行元數據文件保存

# Checkpoint操作受兩個參數控制,可以通過hdfs-site.xml進行配置:

dfs.namenode.checkpoint.period

3600

# 兩次連續(xù)的checkpoint之間的時間間隔。默認1小時

dfs.namenode.checkpoint.txns

1000000

# 最大的沒有執(zhí)行checkpoint事務的數量,滿足將強制執(zhí)行緊急checkpoint,即使尚未達到檢查點周期。默認設置為100萬。

2.6、HDFS的歸檔

主要解決內存元數據數據量過大 文件數據量非常多時,內存上或存儲大量的文件元數據,此時內存占用資源比較大,可以對文件進行歸檔,類似對文件進行打包合成一個打包文件 一般歸檔是針對大量小文件

文件歸檔

hadoop archive -archiveName data.har -p /data /hdfs_data

歸檔的查看

hdfs dfs -ls har:///hdfs_data/data.har

歸檔解壓

hdfs dfs -cp har:///hdfs_data/data.har/a.txt /hdfs_data

歸檔注意點 歸檔后并不會刪除原有數據 原有數據依然會占用內存空間 要節(jié)省內存空就需要刪除原有文件

2.7、HDFS垃圾桶機制

刪除hdfs文件時,可以將文件臨時存在垃圾桶中,存儲時間可以進行設置 可以core-site.xml中設置 時間單位是分鐘

fs.trash.interval

1440

[root@node1 hadoop] hdfs dfs -rm /hdfs_data/a.txt

2023-06-18 18:01:34,332 INFO fs.TrashPolicyDefault: Moved: 'hdfs://node1:8020/hdfs_data/a.txt' to trash at: hdfs://node1:8020/user/root/.Trash/Current/hdfs_data/a.txt

[root@node1 hadoop] hdfs dfs -rm -skipTrash /hdfs_data/a.pptx

Deleted /hdfs_data/a.pptx

2.8、HDFS安全機制

保證文件操作的安全性 在hdfs啟動時,會進行安全機制檢查,檢查塊信息和datanode信息 檢查通過了,可以進行文件的增刪改查操作 檢查未通過 只能讀取文件,不能進行文件的寫入修改刪除操作

安全機制檢查的內容

1-保證每個塊至少有一個副本,沒有出現塊的丟失 2-保證數據塊占整個塊的比例不能低于0.999f,不能低于99.999% 3-保證至少有0個datanode運行 4-滿足以上3個條件之后等待30秒退出安全模式

shell操作

查看 hdfs dfsadmin -safemode get

啟動 hdfs dfsadmin -safemode enter

關閉 hdfs dfsadmin -safemode leave

hdfs dfsadmin -safemode forceExit

三、Hadoop—MapReduce(分布式計算引擎)

MapReduce 是hadoop負責計算的服務功能,采用的計算方式是分布式計算,就算思想’分而治之’

傳統(tǒng)計算方式是移動數據計算 分布式計算,移動計算到數據所在位置進行計算

3.1、MapReudce簡單使用

hadoop提供測試代碼 /export/server/hadoop/share/hadoop/mapreduce

hadoop jar hadoop-mapreduce-examples-3.3.0.jar pi 5 100

詞頻統(tǒng)計

hadoop jar hadoop-mapreduce-examples-3.3.0.jar wordcount /input /output

3.2、MapReduce 計算流程

Map過程:(Map數量由塊決定) a. 通過split切割讀取文件中的每行數據 b. 將每行需要計算的數據轉為kv結構 c. 將kv數據寫入環(huán)形緩沖區(qū),默認大小100M,當達到80%開始spill溢出寫入文件進行shuffle操作shuffle過程: a. 分區(qū):partition ⅰ. 將Map處理后的數據分成多份:

采用hash取余的方式進行分區(qū)采用hash(key)%分區(qū)數(reduce個數) --余數相同的數據放同一分區(qū)分區(qū)數由reduce個數決定 b. 排序:sort ⅰ. 會對相同分區(qū)后的數據進行排序–排序的分區(qū)數據會寫入文件 c. 合并:merge ⅰ. 將相同分區(qū)的小文件數據合并成大文件(合并后的數據會排序,最終保證數據有序) Reduce過程:(Reduce數量由開發(fā)人員決定) a. 先通過fetch拉取合并后的文件數據,將數據加載到內存,然后將拉取后的數據進行排序 b. 堆排序后的數據聚合計算 c. 不同分區(qū)的數據會有對應的reduce進行拉取

3.3、MapReduce計算歷史服務

需要對歷史日志服務進行配置 啟動歷史日志服務

mapred --daemon start historyserver

hadoop服務運行錯誤查看的日志文件

四、Hadoop—Yarn(資源調度系統(tǒng))

Yarn是hadoop中負責資源調度的服務功能,mapreduce計算時使用的資源都需要找yarn申請,申請成功后才能進行計算。

yarn是hadoop2.x版本之后引入的服務,在之前計算實時都是使用各自服務器上的資源,有了yarn可以協(xié)調分配多臺服務器的資源。

4.1、Yarn服務的構成

ResourceManager 簡寫RM

管理整個yarn服務處理所有的計算任務資源申請請求單點故障,出現問題后整個yarn都不可用計算時會指定創(chuàng)建applicationmaster服務不參與具體計算的資源分配 NodeManager 簡寫NM

監(jiān)控每臺服務器的資源情況,匯報給RM創(chuàng)建container資源空間給計算任務使用 ApplicationMaster

只有在進行計算時會由RM創(chuàng)建負責整個計算任務的管理(具體資源的分配),也就是管Map和Reduce計算Map和Reduce在計算時的信息會匯報給ApplicationMaster計算完成,會由RM釋放

4.2、Yarn的資源調度流程

1.客戶端提交計算任務給RM 2. RM找到NM創(chuàng)建ApplicantionMaster 3. ApplicationMater和RM保持通訊并申請計算資源 4.申請成功,RM返回資源充足的NM信息,App通知對應的NM創(chuàng)建container資源空間 5.在對應的資源空間上運行MapTask,讀取block數據轉為kv(mr計算時有一個combine機制在map端進行聚合計算) 6.map通過shuffle將數據傳遞給reduce計算 7.計算完成后釋放所有計算資源

4.3、Yarn資源調度方案

當有多個計算任務提交時,資源分配給哪個計算任務使用? 此時需要指定資源調度策略 1-先進先出(FIFO) 誰先申請先給誰分配 2-容量調度(Capacity) 將資源劃分多份,交給多個任務分開使用 默認采用 3-公平調度 (Fair) 計算任務部分完成后,釋放資源給其他任務使用 map計算完成后就可以釋放資源不必等所有計算完成再釋放 在yarn-site.xml文件下可以設置調度側率

# 容量調度 默認

yarn.resourcemanager.scheduler.class= org.apache.hadoop.yarn.server.resourcemanager.scheduler.capacity.CapacityScheduler

# 公平調度

yarn.resourcemanager.scheduler.class=org.apache.hadoop.yarn.server.resourcemanager.reservation.FairSchedulerPlanFollower

當采用容量調度時需要單獨對分配的容量進行指定 在hadoop的配置文件目錄下指定capacity-scheduler.xml文件

yarn.scheduler.capacity.root.queues

prod,dev # 將資源分成兩份一個叫prod一個dev

yarn.scheduler.capacity.root.dev.queues

mapreduce,spark # 將dev分成兩份 一個叫mapreduce一個spark

yarn.scheduler.capacity.root.prod.capacity

40 # 分配prod資源空間占比為40%

yarn.scheduler.capacity.root.dev.capacity

60 # 分配dev資源空間占比為60%

yarn.scheduler.capacity.root.dev.maximum-capacity

75 # 動態(tài)調整dev的大小 最大為75%

yarn.scheduler.capacity.root.dev.mapreduce.capacity

50 # 指定dev下的mapreduce 占用dev的空間的50%

yarn.scheduler.capacity.root.dev.spark.capacity

50 # 指定dev下的spark 占用dev的空間的50%

在使用時可以在代碼中指定采用哪個資源,指定資源名稱 root.dev.mapreduce

五、Hadoop集群搭建

Hadoop部署方式分三種: Standalone mode(獨立模式)、 Pseudo-Distributed mode(偽分布式模式)、 Cluster mode(集群模式) 其中前兩種都是在單機部署。 獨立模式又稱為單機模式,僅1個機器運行1個java進程,主要用于調試。 偽分布模式也是在1個機器上運行HDFS的NameNode和DataNode、YARN的 ResourceManger和NodeManager,但分別啟動單獨的java進程,主要用于調試。 集群模式主要用于生產環(huán)境部署。會使用N臺主機組成一個Hadoop集群。這種部署模式下,主節(jié)點和從節(jié)點會分開部署在不同的機器上。

5.1、搭建步驟

1.上傳hadoop壓縮包(hadoop-3.3.0-Centos7-64-with-snappy.tar.gz)解壓,注意:上傳文件位置為 /export/server目錄

cd /export/server

tar zxvf /export/server/hadoop-3.3.0-Centos7-64-with-snappy.tar.gz

2.配置環(huán)境變量

echo 'export HADOOP_HOME=/export/server/hadoop-3.3.0' >> /etc/profile

echo 'export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin' >> /etc/profile

source /etc/profile

3.手動修改配置文件(3和4二選一)

進入/export/server/hadoop-3.3.0/etc/hadoop目錄下進行修改

① hadoop-env.sh文件

export JAVA_HOME=/export/server/jdk

#文件最后添加

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文件

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

*

③ hdfs-site.xml文件

dfs.namenode.secondary.http-address

node2:9868

④ 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文件

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文件

node1

node2

node3

4.使用配置文件替換(3和4二選一)

上傳配置文件壓縮包(hadoop-config.tar)解壓,注意:上傳文件位置為 /export/server目錄

tar xvf /export/server/hadoop-config.tar

mv -f /export/server/hadoop-config/* /export/server/hadoop-3.3.0/etc/hadoop/

rm /export/server/hadoop-config* -rf

5.集群搭建說明

需要將node1中的Hadoop文件復制到node2和node3的對應位置

scp可以進行主機的文件復制拷貝

scp -r /export/server/hadoop-3.3.0 root@node2:/export/server/

6.hadoop集群啟動 ① 數據初始化

注意: 初始化操作必須在node1中執(zhí)行

hdfs namenode -format

② 腳本啟動和關閉

start-all.sh

stop-all.sh

http://192.168.88.100:9870 問題: 無法在HDFS上傳文件,原因是本地windows下沒有進行IP地址的域名解析 解決:windows下進入C:\Windows\System32\drivers\etc 192.168.88.100 node1.jinking.cn node1 192.168.88.101 node2.jinking.cn node2 192.168.88.102 node3.jinking.cn node3

5.2、高可用搭建步驟

主要解決服務的單點故障問題,提高服務的使用效率 使用zk實現多服務狀態(tài)管理,選舉產生主備

安裝軟件

三臺服務器都要安裝

yum install psmisc -y # 實現多個服務的通訊 zkfc和nn及zk的通訊

rpm -ivh psmisc-22.20-17.el7.x86_64.rpm

備份hadoop安裝信息

tar cvf hadoop.tar /export/server/hadoop-3.3.0

刪除原有數據文件 三臺服務器都操作

rm -rf /export/data/hadoop-3.3.0

修改配置文件 以下配置現在node1上執(zhí)行

修改hadoop-env.sh

# 在文件最后添加下面兩行

export HDFS_JOURNALNODE_USER=root

export HDFS_ZKFC_USER=root

修改core-site.xml

fs.defaultFS

hdfs://cluster1

hadoop.tmp.dir

/export/data/ha-hadoop

ha.zookeeper.quorum

node1:2181,node2:2181,node3:2181

修改hdfs-site.xml

dfs.nameservices

cluster1

dfs.ha.namenodes.cluster1

nn1,nn2

dfs.namenode.rpc-address.cluster1.nn1

node1:8020

dfs.namenode.http-address.cluster1.nn1

node1:50070

dfs.namenode.rpc-address.cluster1.nn2

node2:8020

dfs.namenode.http-address.cluster1.nn2

node2:50070

dfs.namenode.shared.edits.dir

qjournal://node1:8485;node2:8485;node3:8485/cluster1

dfs.journalnode.edits.dir

/export/data/journaldata

dfs.ha.automatic-failover.enabled

true

dfs.client.failover.proxy.provider.cluster1

org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider

dfs.ha.fencing.methods

sshfence

dfs.ha.fencing.ssh.private-key-files

/root/.ssh/id_rsa

dfs.ha.fencing.ssh.connect-timeout

30000

修改yarn-site.xml

yarn.resourcemanager.ha.enabled

true

yarn.resourcemanager.cluster-id

yrc

yarn.resourcemanager.ha.rm-ids

rm1,rm2

yarn.resourcemanager.hostname.rm1

node1

yarn.resourcemanager.hostname.rm2

node2

yarn.resourcemanager.zk-address

node1:2181,node2:2181,node3:2181

yarn.nodemanager.aux-services

mapreduce_shuffle

注意: 將hadoop配置信息拷貝到node2和node3 注意: 將hadoop配置信息拷貝到node2和node3 注意: 將hadoop配置信息拷貝到node2和node3

5.啟動

啟動zk

zkServer.sh start 啟動journalnode 三臺服務器都啟動

hadoop-daemon.sh start journalnode 初始化namenode 注意:node1上執(zhí)行

hdfs namenode -format將數據文件拷貝到node2相同目錄

scp -r ha-hadoop/ node2:/export/data/ 初始化zkfc 注意在node1上執(zhí)行

hdfs zkfc -formatZK 啟動服務

start-all.sh

注意

搭建高可用后,之前的SNN會被QJM取代

柚子快報邀請碼778899分享:【大數據】深入了解Hadoop

http://yzkb.51969.com/

參考鏈接

評論可見,查看隱藏內容

本文內容根據網絡資料整理,出于傳遞更多信息之目的,不代表金鑰匙跨境贊同其觀點和立場。

轉載請注明,如有侵權,聯系刪除。

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

發(fā)布評論

您暫未設置收款碼

請在主題配置——文章設置里上傳

掃描二維碼手機訪問

文章目錄