柚子快報激活碼778899分享:hadoop 初學(xué)大數(shù)據(jù)
柚子快報激活碼778899分享:hadoop 初學(xué)大數(shù)據(jù)
一、Hadoop概述
1、什么是Hadoop
Hadoop是Apache旗下的一個用java語言實現(xiàn)開源軟件框架,是一個開發(fā)和運(yùn)行處理大規(guī)模數(shù)據(jù)的軟件平臺。允許使用簡單的編程模型在大量計算機(jī)集群上對大型數(shù)據(jù)集進(jìn)行分布式處理。
Hadoop基于Java實現(xiàn) => JDK
Hadoop屬于Apache基金會(ASF)下的一個開源框架 => 開源 + 免費(fèi)
Hadoop主要是對大數(shù)據(jù)集(數(shù)據(jù)量比較大 => 適合處理GB級別以上數(shù)據(jù)集)進(jìn)行分布式(多臺機(jī)器)處理。
① 狹義上說,Hadoop指Apache這款開源框架,它的核心組件有:
HDFS(分布式文件系統(tǒng)):解決海量數(shù)據(jù)存儲
YARN(作業(yè)調(diào)度和集群資源管理的框架):解決資源任務(wù)調(diào)度
MAPREDUCE(分布式運(yùn)算編程框架):解決海量數(shù)據(jù)計算
Map :分,把大數(shù)據(jù)分解為多個部分,每個部分單獨(dú)計算
Reduce:合,把每一個Map計算的結(jié)果進(jìn)行合并匯總得出最終計算結(jié)論
② 廣義上來說,Hadoop通常是指一個更廣泛的概念——Hadoop生態(tài)圈。
當(dāng)下的Hadoop已經(jīng)成長為一個龐大的體系,隨著生態(tài)系統(tǒng)的成長,新出現(xiàn)的項目越來越多,其中不乏一些非Apache主管的項目,這些項目對HADOOP是很好的補(bǔ)充或者更高層的抽象。
2、Hadoop起源
Hadoop是Apache Lucene創(chuàng)始人 ==Doug Cutting (道格·卡?。?=創(chuàng)建的。最早起源于Nutch(搜索引擎),它是Lucene的子項目。Nutch的設(shè)計目標(biāo)是構(gòu)建一個大型的全網(wǎng)搜索引擎,包括網(wǎng)頁抓取、索引、查詢等功能,但隨著抓取網(wǎng)頁數(shù)量的增加,遇到了嚴(yán)重的可擴(kuò)展性問題:如何解決數(shù)十億網(wǎng)頁的存儲和索引問題。
去深圳圖書館 => 找書
去深圳圖書館 => 電腦 => 所有圖書目錄 => 某個書位于哪個樓層,哪個書架,第幾排,第幾個
谷歌的三篇文章(重要)
2003年Google發(fā)表了一篇論文為該問題提供了可行的解決方案。論文中描述的是谷歌的產(chǎn)品架構(gòu),該架構(gòu)稱為:谷歌分布式文件系統(tǒng)(GFS),可以解決他們在網(wǎng)頁爬取和索引過程中產(chǎn)生的超大文件的存儲需求。Hadoop => HDFS產(chǎn)生 => 海量數(shù)據(jù)存儲
2004年 Google發(fā)表論文向全世界介紹了谷歌版的MapReduce系統(tǒng)。
同時期,Nutch的開發(fā)人員完成了相應(yīng)的開源實現(xiàn)HDFS和MAPREDUCE,并從Nutch中剝離成為獨(dú)立項目HADOOP,到2008年1月,HADOOP成為Apache頂級項目,迎來了它的快速發(fā)展期。
2006年Google發(fā)表了論文是關(guān)于BigTable的,這促使了后來的Hbase的發(fā)展。
因此,Hadoop及其生態(tài)圈的發(fā)展離不開Google的貢獻(xiàn)。
3、Hadoop分支
組成不同:
Hadoop1.0版本只有兩個組件: HDFS (namenode、secondarynamenode、datanode)和 MapReduce(JobTracker、TaskTracker)
Hadoop2.0版本只有三個 HDFS(物理層面) 和MapReduce(代碼層面)、Yarn(物理層面)
Hadoop 3.0相比之前的Hadoop 2.0有一系列的功能增強(qiáng)。目前已經(jīng)趨于穩(wěn)定,可能生態(tài)圈的某些組件還沒有升級、整合完善。
Hadoop1.X
HDFS集群(namenode)
① namenode(NN):負(fù)責(zé)整個HDFS集群資源管理,負(fù)責(zé)元數(shù)據(jù)的存儲
什么是元數(shù)據(jù)?所謂的元數(shù)據(jù)其實就是描述數(shù)據(jù)的數(shù)據(jù) => 名稱、權(quán)限、數(shù)據(jù)還要分片存儲,到底每一片存儲在哪個位置 => 每個文件占用150B字節(jié)大小內(nèi)存空間
② secondarynamenode(2NN):非namenode備份,輔助namenode完成元數(shù)據(jù)管理
③ datanode(DN):專門用于實現(xiàn)數(shù)據(jù)的保存(真正放數(shù)據(jù)的地方)
MapReduce集群
① jobtracker:負(fù)責(zé)資源分配管理、負(fù)責(zé)任務(wù)的調(diào)度(3顆CPU、128GB * 3)
任務(wù) => jobtracker => 1顆CPU、2GB內(nèi)存
② tasktracker:負(fù)責(zé)具體執(zhí)行任務(wù)的節(jié)點
缺點:namenode單節(jié)點、更嚴(yán)重的是JobTracker是單節(jié)點運(yùn)行,而且只能是單節(jié)點。一旦JobTracker出現(xiàn)故障,就形成單點故障,對于整個MR集群時致命的!
Hadoop2.X
HDFS集群
① namenode(NN):負(fù)責(zé)整個HDFS集群資源管理,負(fù)責(zé)元數(shù)據(jù)的存儲
什么是元數(shù)據(jù)?所謂的元數(shù)據(jù)其實就是描述數(shù)據(jù)的數(shù)據(jù) => 名稱、權(quán)限、數(shù)據(jù)還要分片存儲,到底每一片存儲在哪個位置 => 每個文件占用150B字節(jié)大小內(nèi)存空間
② secondarynamenode(2NN):非namenode備份,輔助namenode完成元數(shù)據(jù)管理
③ datanode(DN):專門用于實現(xiàn)數(shù)據(jù)的保存(真正放數(shù)據(jù)的地方)
沒有MR集群了,MR變成了代碼層面的任務(wù) => 雖然是代碼層面的,但是依然是Hadoop的三大組件之一
YARN資源調(diào)度集群
① ResourceManager(RM):負(fù)責(zé)資源分配管理、負(fù)責(zé)任務(wù)的調(diào)度(3顆CPU、128GB * 3)
② NodeManager(NM):負(fù)責(zé)執(zhí)行RM分配過來的任務(wù)
NodeManager中還存在一個具體的進(jìn)程,ApplicationMaster(AM) => 分配任務(wù)
Hadoop2.X中首先解決的問題就是JobTracker單點故障問題,另外把MapReduce變成代碼層面的任務(wù),引入YARN資源調(diào)度集群。
我們課程中使用的是:Apache Hadoop 3.X
Hadoop高可用架構(gòu) => Zookeeper應(yīng)用場景:
存在問題:目前Hadoop架構(gòu)中,namenode、resourcemanager最容易成為性能瓶頸以及單點故障,因為無論是namenode還是resourcemanager都是單點架構(gòu),所以所謂的高可用架構(gòu)就是解決集群中namenode以及resourcemanager單點問題即可。
4、Hadoop特性(優(yōu)點)
① 擴(kuò)容能力(Scalable)
Hadoop是在可用的計算機(jī)集群間分配數(shù)據(jù)并完成計算任務(wù)的,這些集群可用方便的擴(kuò)展到數(shù)以千計的節(jié)點中。
② 成本低(Economical)
Hadoop通過普通廉價的機(jī)器組成服務(wù)器集群來分發(fā)以及處理數(shù)據(jù),以至于成本很低。
③ 高效率(Efficient)
通過并發(fā)數(shù)據(jù),Hadoop可以在節(jié)點之間動態(tài)并行的移動數(shù)據(jù),使得速度非???。
④ 可靠性(Rellable)
能自動維護(hù)數(shù)據(jù)的多份復(fù)制,并且在任務(wù)失敗后能自動地重新部署(redeploy)計算任務(wù)。所以Hadoop的按位存儲和處理數(shù)據(jù)的能力值得人們信賴。
副本機(jī)制 => 1TB => HDFS有副本機(jī)制(默認(rèn)3副本機(jī)制,一個數(shù)據(jù)會冗余3份)
Hadoop特點:① 擴(kuò)容能力強(qiáng) ② 成本低 ③ 高效 ④ 可靠性
有問題:Hadoop支持隨機(jī)讀寫么?
答:不是,Hadoop支持隨機(jī)讀(并行讀),串行寫
5、Hadoop國內(nèi)外應(yīng)用
不管是國內(nèi)還是國外,Hadoop最受青睞的行業(yè)是互聯(lián)網(wǎng)領(lǐng)域,可以說互聯(lián)網(wǎng)公司是Hadoop的主要使用力量。
國外來說,Yahoo、Facebook、IBM等公司都大量使用Hadoop集群來支撐業(yè)務(wù)。比如:
Yahoo的Hadoop應(yīng)用在支持廣告系統(tǒng)、用戶行為分析、支持Web搜索等。
Facebook主要使用Hadoop存儲內(nèi)部日志與多維數(shù)據(jù),并以此作為報告、分析和機(jī)器學(xué)習(xí)的數(shù)據(jù)源。
國內(nèi)來說,BAT、美團(tuán)、JD、滴滴、字節(jié)跳動領(lǐng)頭的互聯(lián)網(wǎng)公司是當(dāng)仁不讓的Hadoop使用者、維護(hù)者。比如Ali云梯(14年國內(nèi)最大Hadoop集群)、百度的日志分析平臺、推薦引擎系統(tǒng)等。
國內(nèi)其他非互聯(lián)網(wǎng)領(lǐng)域也有不少hadoop的應(yīng)用,比如:
金融行業(yè): 個人征信分析
證券行業(yè): 投資模型分析
交通行業(yè): 車輛、路況監(jiān)控分析
電信行業(yè): 用戶上網(wǎng)行為分析
總之:Hadoop并不會跟某種具體的行業(yè)或者某個具體的業(yè)務(wù)掛鉤,它只是一種用來做海量數(shù)據(jù)分析處理的工具。
二、Hadoop集群搭建
1、Hadoop的社區(qū)版與商業(yè)版
社區(qū)版 免費(fèi)開源 Apache基金會(Apache Hadoop)商業(yè)版 第三方公司基于免費(fèi)版的Hadoop開發(fā)了一些額外收費(fèi)功能(Ambari、CDH)
選擇Linux軟件版本一定不要選擇最新版(容易成為小白鼠) => 確認(rèn)大版本,向前推1-2個小版本。3.3.3 => 3.3.0、3.3.1、3.3.2
為什么要有商業(yè)版?
答:① 第一個為了賺錢
? ② Hadoop還有比較大的問題,向前兼容做的不好,Hadoop3.x => Hadoop2.x
2、Hadoop的服務(wù)集群搭建
單機(jī)版 所有服務(wù)運(yùn)行在一臺機(jī)器 只有一個主服務(wù)主要場景是在進(jìn)行計算驗證式可以搭建單機(jī)服務(wù)(HDFS、MapReduce、YARN)=> 只適合小型測試偽分布式 一臺機(jī)器上運(yùn)動完整的Hadoop 服務(wù),服務(wù)端口會進(jìn)行區(qū)分指定(假裝是一個真正的集群)完全分布式 使用多臺不同的機(jī)器分別運(yùn)行不同的服務(wù) => 生產(chǎn)環(huán)境
3、Hadoop的三個核心服務(wù)
存儲 HDFS 分布式文件存儲系統(tǒng)
namenode 管理服務(wù) master 只有一個datanode 具體負(fù)責(zé)存儲的服務(wù) slave 可以在多臺機(jī)器上部署secondarynamenode 對name產(chǎn)生數(shù)據(jù)進(jìn)行合并存儲 資源調(diào)度 YARN
ResourceManager 管理服務(wù) 管理所有機(jī)器的資源 只有一個NodeManager 服務(wù)監(jiān)控每臺機(jī)器的資源匯報給ResourceManager 部署在多臺機(jī)器 計算 MapReduce
不需要單獨(dú)啟動服務(wù)mapreduce需要編寫計算邏輯代碼,交給MapReduce去運(yùn)行代碼
4、純凈系統(tǒng)搭建
至少準(zhǔn)備3臺機(jī)器,配置基礎(chǔ)環(huán)境(略)
4.1 上傳hadoop壓縮包(node1)
上傳hadoop壓縮包(hadoop-3.3.0-Centos7-64-with-snappy.tar.gz)解壓,注意:上傳文件位置為 /export/server目錄
cd /export/server
tar -xf /export/server/hadoop-3.3.0-Centos7-64-with-snappy.tar.gz
4.2 配置環(huán)境變量(node1/node2/node3)
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
4.3 手動修改配置文件(node1) => 關(guān)鍵點
進(jìn)入/export/server/hadoop-3.3.0/etc/hadoop目錄下進(jìn)行修改
① hadoop-env.sh文件
文件中設(shè)置的是Hadoop運(yùn)行時需要的環(huán)境變量。JAVA_HOME是必須設(shè)置的,即使我們當(dāng)前的系統(tǒng)中設(shè)置了JAVA_HOME,它也是不認(rèn)識的,因為Hadoop即使是在本機(jī)上執(zhí)行,它也是把當(dāng)前的執(zhí)行環(huán)境當(dāng)成遠(yuǎn)程服務(wù)器。
# 首先要配置JDK,Java運(yùn)行環(huán)境
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文件
hadoop的核心配置文件,有默認(rèn)的配置項core-default.xml。
core-default.xml與core-site.xml的功能是一樣的,如果在core-site.xml里沒有配置的屬性,則會自動會獲取core-default.xml里的相同屬性的值。
③ hdfs-site.xml文件
HDFS的核心配置文件,有默認(rèn)的配置項hdfs-default.xml。
hdfs-default.xml與hdfs-site.xml的功能是一樣的,如果在hdfs-site.xml里沒有配置的屬性,則會自動會獲取hdfs-default.xml里的相同屬性的值。
④ mapred-site.xml文件
MapReduce的核心配置文件,有默認(rèn)的配置項mapred-default.xml。
mapred-default.xml與mapred-site.xml的功能是一樣的,如果在mapred-site.xml里沒有配置的屬性,則會自動會獲取mapred-default.xml里的相同屬性的值。
⑤ yarn-site.xml文件
YARN的核心配置文件,有默認(rèn)的配置項yarn-default.xml。
yarn-default.xml與yarn-site.xml的功能是一樣的,如果在yarn-site.xml里沒有配置的屬性,則會自動會獲取yarn-default.xml里的相同屬性的值。
⑥ workers文件
workers文件里面記錄的是集群主機(jī)名。主要作用是配合一鍵啟動腳本如start-dfs.sh、stop-yarn.sh用來進(jìn)行集群啟動。這時候workers文件里面的主機(jī)標(biāo)記的就是從節(jié)點角色所在的機(jī)器。
node1
node2
node3
配置完成后進(jìn)行Hadoop目錄轉(zhuǎn)發(fā),直接轉(zhuǎn)發(fā)給node2和node3一份即可。
node1操作:
cd /export/server/
scp -r hadoop-3.3.0 root@node2:/export/server/
scp -r hadoop-3.3.0 root@node3:/export/server/
5、修改hadoop的默認(rèn)配置(不用操作)
格式 xml https://hadoop.apache.org/docs/stable/
# 模板格式
6、啟動hadoop服務(wù)
數(shù)據(jù)初始化 重要:一定要在node1上對namenode進(jìn)行初始化 hdfs namenode -format
特別注意:以上格式化操作,只在第一次搭建集群式,操作1次即可,后期一定不要執(zhí)行這個命令,否則后果自負(fù)?。。?/p>
啟動方式
? ① 腳本啟動:在node1上啟動
start-all.sh
? ② 單個服務(wù)依次啟動 當(dāng)腳本使用不成功時,可以手動依次操作
[root@node1 ~]# hdfs --daemon start namenode
[root@node1 ~]# jps
3889 NameNode
3958 Jps
[root@node1 ~]# hdfs --daemon start datanode
[root@node1 ~]# jps
3889 NameNode
4065 Jps
4010 DataNode
[root@node1 ~]# yarn --daemon start resourcemanager
[root@node1 ~]# jps
4128 ResourceManager
3889 NameNode
4010 DataNode
4172 Jps
[root@node1 ~]# yarn --daemon start nodemanager
[root@node1 ~]# jps
4128 ResourceManager
3889 NameNode
4404 NodeManager
4521 Jps
4010 DataNode
[root@node1 ~]#
注:如果采用依次啟動的方式,則node2和node3也要執(zhí)行以上命令
日志查看
cd /export/server/hadoop-3.3.0/logscat hadoop-root-namenode-node1.log | grep ERR 關(guān)閉服務(wù)
? ① 腳本關(guān)閉
stop-all.sh
? ② 依次關(guān)閉 當(dāng)腳本使用不成功時,可以手動依次操作
[root@node1 ~]# hdfs --daemon stop namenode
[root@node1 ~]# hdfs --daemon stop datanode
[root@node1 ~]# yarn --daemon stop resourcemanager
[root@node1 ~]# yarn --daemon stop nodemanager
7、hadoop使用
HDFS服務(wù)訪問 => 端口 9870
訪問namenode服務(wù)所在的服務(wù)器 Yarn服務(wù)訪問 => 端口 8088 => 查看正在計算的任務(wù)成功與否以及日志查看
訪問resourcemanager所在的服務(wù)器 MapReduce的計算
cd /export/server/hadoop-3.3.0/share/hadoop/mapreducehadoop jar hadoop-mapreduce-examples-3.3.0.jar pi 20 50
8、Hadoop中HDFS與MR測試過程
HDFS測試:
hadoop fs -put 本地文件名稱 遠(yuǎn)程文件路徑(默認(rèn)已經(jīng)直接連接到Hadoop的HDFS服務(wù))
案例:刪除一個itheima.txt文件到HDFS集群中
touch itheima.txt
hadoop fs -put itheima.txt /
MR測試:
cd /export/server/hadoop-3.3.0/share/hadoop/mapreduce
yarn jar hadoop-mapreduce-examples-3.3.0.jar pi 2 50
涉及到的知識點:蒙特卡洛算法求圓周率
9、使用注意
服務(wù)出現(xiàn)問題
關(guān)閉所有服務(wù)刪除所有服務(wù)器的數(shù)據(jù)文件 /export/data/hadoop-3.3.0/在node1上重新初始化再次啟動服務(wù) 不要忘了配置windows域名
三、Hadoop輔助功能
1、MapReduce jobhistory服務(wù)
node1:19888 => 查看job歷史信息(默認(rèn)關(guān)閉狀態(tài))
背景
默認(rèn)情況下,yarn上關(guān)于MapReduce程序執(zhí)行歷史信息、執(zhí)行記錄不會永久存儲;
一旦yarn集群重啟 之前的信息就會消失。
功能
保存yarn上已經(jīng)完成的MapReduce的執(zhí)行信息。
配置因為需求修改配置。重啟hadoop集群才能生效。
cd /export/server/hadoop-3.3.0/etc/hadoop/
vim mapred-site.xml
scp同步給其他機(jī)器
scp /export/server/hadoop-3.3.0/etc/hadoop/mapred-site.xml node2:/export/server/hadoop-3.3.0/etc/hadoop/
scp /export/server/hadoop-3.3.0/etc/hadoop/mapred-site.xml node3:/export/server/hadoop-3.3.0/etc/hadoop/
重啟hadoop集群自己手動啟停jobhistory服務(wù)。
#hadoop2.x版本命令
mr-jobhistory-daemon.sh start|stop historyserver
#hadoop3.x版本命令
mapred --daemon start historyserver
mapred --daemon stop historyserver
[root@node1 ~]# jps
13794 JobHistoryServer
13060 DataNode
12922 NameNode
13436 NodeManager
13836 Jps
13327 ResourceManager
2、HDFS 垃圾桶機(jī)制(安全保證)
背景 在windows叫做回收站
在默認(rèn)情況下 hdfs沒有垃圾桶 意味著刪除操作直接物理刪除文件。
[root@node1 ~]# hadoop fs -rm /itcast/1.txt
Deleted /itcast/1.txt
功能:和回收站一種 在刪除數(shù)據(jù)的時候 先去垃圾桶 如果后悔可以復(fù)原。配置
cd /export/server/hadoop-3.3.0/etc/hadoop/
vim core-site.xml
在core-site.xml中開啟垃圾桶機(jī)制
指定保存在垃圾桶的時間。單位分鐘
實際工作中,可以根據(jù)業(yè)務(wù)的需要調(diào)整垃圾桶回收時間1 ~ 7天。
普及一個概念垃圾桶中的checkpoint(刪除點),刪除點 => 24小時是一個周期,每個周期就可以理解為一個checkpoint。24小時(1個checkpoint)-> 24小時(1個checkpoint),checkpoint周期可以自定義,如果沒有設(shè)置,默認(rèn)等同于fs.trash.interval。
集群同步配置 重啟hadoop服務(wù)。
[root@node1 hadoop]# pwd
/export/server/hadoop-3.3.0/etc/hadoop
[root@node1 hadoop]# scp core-site.xml node2:$PWD
core-site.xml 100% 1027 898.7KB/s 00:00
[root@node1 hadoop]# scp core-site.xml node3:$PWD
core-site.xml
3、垃圾桶使用
配置好之后 再刪除文件 直接進(jìn)入垃圾桶
[root@node1 ~]# hadoop fs -rm /itcast.txt
INFO fs.TrashPolicyDefault: Moved: 'hdfs://node1:8020/itcast.txt' to trash at: hdfs://node1:8020/user/root/.Trash/Current/itcast.txt
垃圾桶的本質(zhì)就是hdfs上的一個隱藏目錄。
hdfs://node1:8020/user/用戶名/.Trash/Current
后悔了 需要恢復(fù)怎么做?
hadoop fs -cp /user/root/.Trash/Current/itcast.txt /
就想直接刪除文件怎么做?
hadoop fs -rm -skipTrash /itcast.txt
[root@node1 ~]# hadoop fs -rm -skipTrash /itcast.txt
Deleted /itcast.txt
100% 1027 898.7KB/s 00:00
[root@node1 hadoop]# scp core-site.xml node3:$PWD core-site.xml
## 3、垃圾桶使用
- 配置好之后 再刪除文件 直接進(jìn)入垃圾桶
[root@node1 ~]# hadoop fs -rm /itcast.txt INFO fs.TrashPolicyDefault: Moved: ‘hdfs://node1:8020/itcast.txt’ to trash at: hdfs://node1:8020/user/root/.Trash/Current/itcast.txt
- 垃圾桶的本質(zhì)就是hdfs上的一個隱藏目錄。
hdfs://node1:8020/user/用戶名/.Trash/Current
- 后悔了 需要恢復(fù)怎么做?
hadoop fs -cp /user/root/.Trash/Current/itcast.txt /
- 就想直接刪除文件怎么做?
```shell
hadoop fs -rm -skipTrash /itcast.txt
[root@node1 ~]# hadoop fs -rm -skipTrash /itcast.txt
Deleted /itcast.txt
柚子快報激活碼778899分享:hadoop 初學(xué)大數(shù)據(jù)
好文閱讀
本文內(nèi)容根據(jù)網(wǎng)絡(luò)資料整理,出于傳遞更多信息之目的,不代表金鑰匙跨境贊同其觀點和立場。
轉(zhuǎn)載請注明,如有侵權(quán),聯(lián)系刪除。