江西省都昌縣建設(shè)局網(wǎng)站上海谷歌seo公司
目錄
1.分布式和集群
?2.Hadoop框架
3.版本更新
4.hadoop架構(gòu)詳解
5.頁面訪問端口
6.Hadoop-HDFS
HDFS架構(gòu)?
HDFS副本
7.SHELL命令
?
?8.啟動hive服務(wù)
1.分布式和集群
- 分布式: 多臺服務(wù)器協(xié)同配合完成同一個大任務(wù)(每個服務(wù)器都只完成大任務(wù)拆分出來的單獨1個子任務(wù))
- 集 群: 多臺服務(wù)器聯(lián)合起來獨立做相同的任務(wù)(多個服務(wù)器分擔(dān)客戶端發(fā)來的請求)
- 注意: 集群如果客戶端請求量(任務(wù)量)多,多個服務(wù)器同時處理不同請求(不同任務(wù)),如果請求量少,一臺服務(wù)器干活,其他服務(wù)器做備份使用
?2.Hadoop框架
- Hadoop簡介:是Apache旗下的一個用Java語言實現(xiàn)開源軟件框架,是一個存儲和計算大規(guī)模數(shù)據(jù)的軟件平臺。
- Hadoop起源: Doug Cutting 創(chuàng)建的,最早起源一個Nutch項目。
- 三駕馬車: ?谷歌的三遍論文加速了hadoop的研發(fā)
- Hadoop框架意義: 作為大數(shù)據(jù)解決方案,越來越多的企業(yè)將Hadoop 技術(shù)作為進(jìn)入大數(shù)據(jù)領(lǐng)域的必備技術(shù)。
- 狹義上來說:Hadoop指Apache這款開源框架,它的核心組件有:HDFS,MR,YANR
- 廣義上來說:Hadoop通常是指一個更廣泛的概念——Hadoop生態(tài)圈
- Hadoop發(fā)行版本: 分為開源社區(qū)版和商業(yè)版。
- 開源社區(qū)版:指由Apache軟件基金會維護(hù)的版本,是官方維護(hù)的版本體系,版本豐富,兼容性稍差。
- 商業(yè)版:指由第三方商業(yè)公司在社區(qū)版Hadoop基礎(chǔ)上進(jìn)行了一些修改、整合以及各個服務(wù)組件兼容性測試而發(fā)行的版本,如: cloudera的CDH等。
3.版本更新
1.x版本系列: hadoop的第二代開源版本,該版本基本已被淘汰 ? ? ? ?hadoop組成: ?HDFS(存儲)和MapReduce(計算和資源調(diào)度)
2.x版本系列: 架構(gòu)產(chǎn)生重大變化,引入了Yarn平臺等許多新特性 ? ? ? hadoop組成: ?HDFS(存儲)和MapReduce(計算)和YARN(資源調(diào)度)
3.x版本系列: 因為2版本的jdk1.7不更新,基于jdk1.8升級產(chǎn)生3版本 ? hadoop組成: ?HDFS(存儲)和MapReduce(計算)和YARN(資源調(diào)度)
4.hadoop架構(gòu)詳解
當(dāng)前版本hadoop組成: HDFS , MapReduce ,YARN
HDFS:(分布式文件系統(tǒng)),解決海量數(shù)據(jù)存儲
?? ?元數(shù)據(jù): 描述核心數(shù)據(jù)的數(shù)據(jù)
?? ?NameNode:集群當(dāng)中的主節(jié)點,主要用于管理集群當(dāng)中的各種數(shù)據(jù)
?? ?SecondaryNameNode:主要能用于輔助NameNode進(jìn)行文件塊元數(shù)據(jù)存儲
?? ?DataNode:集群當(dāng)中的從節(jié)點,主要用于存儲真實的海量的業(yè)務(wù)數(shù)據(jù)
YARN:(作業(yè)調(diào)度和集群資源管理的框架),解決資源任務(wù)調(diào)度
?? ?ResourceManager: 接收用戶的計算請求任務(wù),并負(fù)責(zé)集群的資源管理和分配
?? ?NodeManager: 負(fù)責(zé)執(zhí)行主節(jié)點分配的任務(wù)(給MR的計算程序提供資源)
MapReduce:(分布式運(yùn)算編程框架),解決海量數(shù)據(jù)計算
?? ?如何計算: 核心思想就是分而治之 ? Map負(fù)責(zé)分解,Reduce負(fù)責(zé)合并
?? ?MR程序: 使用java/python然后去編寫MR程序,成本高 ? ? ? ? ? 如何解決? ?在hive平臺上編寫sql,執(zhí)行sql底層自動轉(zhuǎn)為MR程序
?? ?
MapReduce計算需要的數(shù)據(jù)和產(chǎn)生的結(jié)果需要HDFS來進(jìn)行存儲
MapReduce的運(yùn)行需要由Yarn集群來提供資源調(diào)度。
5.頁面訪問端口
HDFS:9870
YARN:8088
jobhistory:19888
6.Hadoop-HDFS
HDFS存儲大文件,把大文件默認(rèn)切割成128M大小的block塊,進(jìn)行存儲
HDFS存儲塊的時候,會給每個塊進(jìn)行備份(一共三份)
HDFS文件系統(tǒng)可存儲超大文件,時效性稍差。
HDFS具有硬件故障檢測和自動快速恢復(fù)功能。
HDFS為數(shù)據(jù)存儲提供很強(qiáng)的擴(kuò)展能力。
HDFS存儲一般為一次寫入,多次讀取,只支持追加寫入,不支持隨機(jī)修改。
HDFS可在普通廉價的機(jī)器上運(yùn)行。
HDFS架構(gòu)?
1、Client
? ? 發(fā)請求就是客戶端。
? ? 文件切分。文件上傳 HDFS 的時候,Client 將文件切分成 一個一個的Block,然后進(jìn)行存儲
? ? 與 NameNode 交互,獲取文件的位置信息。
? ? 與 DataNode 交互,讀取或者寫入數(shù)據(jù)。
? ? Client 提供一些命令來管理 和訪問HDFS,比如啟動或者關(guān)閉HDFS。
2、NameNode
? ? 就是 master,它是一個主管、管理者。
? ? 處理客戶端讀寫請求。
? ? 管理 HDFS 元數(shù)據(jù)(文件路徑,文件的大小,文件的名字,文件權(quán)限,文件切割后的塊(block)信息…)。
? ? 配置3副本備份策略。
3、DataNode
? ? 就是Slave。NameNode 下達(dá)命令,DataNode 執(zhí)行實際的操作。
? ? 存儲實際的數(shù)據(jù)塊(block)。
? ? 執(zhí)行數(shù)據(jù)塊的讀/寫操作。
? ? 定時向namenode匯報block信息。
4、Secondary NameNode
? ? 并非 NameNode 的備份節(jié)點。當(dāng)NameNode 掛掉的時候,它并不能馬上替換 NameNode 并提供服務(wù)。
? ? 只是輔助 NameNode,對HDFS元數(shù)據(jù)進(jìn)行合并,合并后再交給NameNode。
? ? 在緊急情況下,可輔助恢復(fù) NameNode 部分?jǐn)?shù)據(jù)。
HDFS副本
block塊: HDFS被設(shè)計成能夠在一個大集群中跨機(jī)器可靠地存儲超大文件。它將每個文件拆分成一系列的數(shù)據(jù)塊進(jìn)行存儲,這個數(shù)據(jù)塊被稱為block,除了最后一個,所有的數(shù)據(jù)塊都是同樣大小的。
block 塊大小默認(rèn): 128M(134217728字節(jié))
注意: 為了容錯,文件的所有block都會有副本。每個文件的數(shù)據(jù)塊大小和副本系數(shù)都是可配置的。
?? ?
副本系數(shù)默認(rèn): ?3個
hdfs默認(rèn)文件: https://hadoop.apache.org/docs/r3.3.4/hadoop-project-dist/hadoop-hdfs/hdfs-default.xml
7.SHELL命令
hdfs的shell命令概念: 安裝好hadoop環(huán)境之后,可以執(zhí)行類似于Linux的shell命令對文件的操作,如ls、mkdir、rm等,對hdfs文件系統(tǒng)進(jìn)行操作查看,創(chuàng)建,刪除等。
hdfs的shell命令格式1: hadoop fs -命令 參數(shù)
hdfs的shell命令格式2: hdfs dfs -命令 參數(shù)
hdfs的家目錄默認(rèn): /user/root ? 如果在使用命令操作的時候沒有加根目錄/,默認(rèn)訪問的是此家目錄/user/root
查看目錄下內(nèi)容: ?hdfs dfs -ls 目錄的絕對路徑
創(chuàng)建目錄: hdfs dfs -mkdir 目錄的絕對路徑
創(chuàng)建文件: hdfs dfs -touch 文件的絕對路徑
移動目錄/文件: hdfs dfs -mv 要移動的目錄或者文件的絕對路徑 ?目標(biāo)位置絕對路徑
復(fù)制目錄/文件: hdfs dfs -cp 要復(fù)制的目錄或者文件的絕對路徑 ?目標(biāo)位置絕對路徑
刪除目錄/文件: hdfs dfs -rm [-r] 要刪除的目錄或者文件的絕對路徑
查看文件的內(nèi)容: hdfs dfs -cat 要查看的文件的絕對路徑 ? ? ? ? ?注意: 除了cat還有head,tail也能查看
查看hdfs其他shell命令幫助: hdfs dfs --help
注意: hdfs有相對路徑,如果操作目錄或者文件的時候沒有以根目錄/開頭,就是相對路徑,默認(rèn)操作的是/user/root
把本地文件內(nèi)容追加到hdfs指定文件中: hdfs dfs -appendToFile 本地文件路徑 hdfs文件絕對路徑
注意: window中使用頁面可以完成window本地和hdfs的上傳下載,當(dāng)然linux中使用命令也可以完成文件的上傳和下載
linux本地上傳文件到hdfs中: hdfs dfs -put linux本地要上傳的目錄或者文件路徑 ?hdfs中目標(biāo)位置絕對路徑
hdfs中下載文件到liunx本地: hdfs dfs -get hdfs中要下載的目錄或者文件的絕對路徑 linux本地目標(biāo)位置路徑?
?8.啟動hive服務(wù)
后臺啟動metastore服務(wù): nohup hive --service metastore &
后臺啟動hiveserver2服務(wù): nohup hive --service hiveserver2 &
查看metastore和hiveserver2進(jìn)程是否啟動: jps ? ? ? ? ? ? ? ? ? 注意: 服務(wù)名都叫RunJar,可以通過進(jìn)程編號區(qū)分
服務(wù)啟動需要一定時間可以使用lsof查看: lsof -i:10000 ? ? ? ? ? ? ?注意: 如果無內(nèi)容繼續(xù)等待,如果有內(nèi)容代表啟動成功
[root@node1 bin]# nohup hive --service metastore &
[1] 13490
nohup: 忽略輸入并把輸出追加到"nohup.out"?
回車[root@node1 bin]# nohup hive --service hiveserver2 &
[2] 13632
nohup: 忽略輸入并把輸出追加到"nohup.out"?
回車
[root@node1 bin]# jps
...
13490 RunJar
13632 RunJar
[root@node1 bin]#?
# 注意:10000端口號一般需要等待3分鐘左右才會查詢到
[root@node1 bin]# lsof -i:10000
COMMAND ? PID USER ? FD ? TYPE DEVICE SIZE/OFF NODE NAME
java ? ?18804 root ?520u ?IPv6 266172 ? ? ?0t0 ?TCP *:ndmp (LISTEN)
# 此處代表hive啟動成功
?9.啟動hadoop服務(wù)
# 一鍵啟動hdfs和yarn集群
[root@node1 ~]# start-all.sh# 單獨啟動mr計算任務(wù)歷史服務(wù)
[root@node1 ~]# mapred --daemon start historyserver