一、前言
本人認為,學習一門技術首先需要系統的了解技術整個框架,才能讓自己對這門技術的理解更進一步,同時,先有理論,后有技術的出現,這代表著,我們需要在學習好理論基礎的前提上完成實踐的操作,這樣才能算上入門,而本人的學習筆記,主要先結合網路資源對理論進行深入理解,后在此基礎上實踐,
一、前言
二、Hadoop框架
2.1 Google的三駕馬車
2.2 Hadoop的組成
2.2.1 HDFS架構
2.2.3 MapReduce架構
2.3 大資料技術生態體系
三、NTP集群時間同步配置
3.1 Yum配置
3.2 NTP配置
二、Hadoop框架
2.1 Google的三駕馬車
了解Hadoop組成框架之前,我們需要認識Google公司的三架馬車,Google公司最出名的,不只是開發了一個強悍的搜索引擎,還在于Google公司創造了三種革命性技術,即Google三架馬車:GFS、MapReduce、BigTable,并且,Google公司在04到06年還發表了關于這三種技術的重要論文,極大普及了大眾對大量資料進行分布式處理的知識盲區,進而促進了Hadoop出現,

2.2 Hadoop的組成
對于Hadoop2.x而言,主要的框架以及功能為:
| MapReduce | 負責計算 |
| HDFS | 負責資料存盤 |
| Yarn | 負責資源調度 |
| Common | 輔助工具 |
無論是2.x或者是3.x版本中,Hadoop的框架中始終有Yarn、MapReduce和HDFS的存在,由此可見,它們對于Hadoop的意義,因此,我們需要深入了解這三種 “ 功能 ” ,
2.2.1 HDFS架構
HDFS包含了NameNode、DataNode、SecondaryNameNode,分別對應著Hadoop集群啟動時各個節點的部分啟動項,同時,在通過JPS陳述句查詢Hadoop啟動項時,我們可以看到Hadoop集群只啟動了1個NameNode節點和N個DataNode,以及1個ScondaryNameNode,其中N代表的是集群節點數,同時通過各節點的啟動項,我們也能反向推出HDFS是屬于主/從結構的模型,

HDFS各個Node的功能,可以理解為:
| NameNode | 存盤檔案的元資料 |
| DataNode | 存盤檔案塊資料,以及資料的校驗和 |
| SecondaryNameNode | 監控HDFS狀態的輔助后臺程式 |
其中,NameNode與DataNode都儲存著檔案的資料,不過,NameNode是存盤的是描述DataNode的資料的資料,而DataNode存盤的是以塊存盤的資料,即我們需要的資料,
Tips:在HDFS中會將超過默認值128MB的檔案進行分塊儲存,因此,當我們需要人為的處理塊儲存資料時,只需要將所有塊中的檔案進行組合拼接即可,
SecondaryNameNode,顧名思義就是作為NameNode的備份,但是它不同于其他備份邏輯,SecondaryNameNode的備份邏輯是冷備份,
冷備份是指,NameNode在每一次ShutDown后通過作業系統命令對資料進行備份,類似于我們在Vmare虛擬機上面對作業系統進行快照的備份,因此,我們可以將SecondaryNameNode這種冷備份理解為每隔一段時間獲得NameNode的快照,
2.2.2 YARN架構
YARN包含了ResourceManager、NodeManager、ApplicationMaster、Container,我們在啟動Hadoop集群中,會發現在JPS命令結果中有1個ResourceManager和N個NodeManage,在NodeManage中存在著ApplicationMaster負責分配作業,并與ResourceManager協商呼叫資源Container,

ResourceManager的功能理解:
| 處理客戶端請求 |
| 監控NodeManager |
| 啟動或監控ApplicationMaster |
| 資源的分配與調度 |
NodeManager的功能理解:
| 管理單個節點上的資源 |
| 處理ResourceManager的命令 |
| 處理ApplicationMaster的命令 |
ApplicationMaster的功能理解:
| Container管理 |
| 為應用程式(實體)申請空間,分配作業 |
| 作業的監控與容錯 |
Container的功能理解:作為YARN中的抽象資源,封裝了節點上多維度資料,
2.2.3 MapReduce架構
MapReduce在各種現代高級編程語言當中都有其身影,而在這所有編程語言當中它都是始終分為Map和Reduce,在Hadoop集群中,MapReduce并不存在于JPS查詢后的啟動項中,它由YARN架構呼叫,

通過上圖,其實我們不難理解Map階段就是對job中的資料進行并行化處理,再通過Reduce階段對結果進行匯總,
并行化處理:MapReduce根據Job對資料矢量進行切片,多個Map進行相間操作,
理解完MapReduce的基本邏輯,我們接下來需要回答一個問題,在上文并行化處理中提及的Job是什么?
本人認為現階段基本上計算機的很多技術都是可以通過英文翻譯得到它的大致,那么Job在中文中的意思為作業,所以我們就可以大致認為Job在整個Hadoop集群中就是一個作業的意思,因此,根據我們對作業的理解,就可以認為Client(客戶端)呼叫job.waitForCompletion方法,跟Hadoop集群去提交一個作業,MapReduce能夠在Hadoop集群中進行作業,所以Client提交的是一個MapReduce作業,Client提交完作業后,需要跟ResourceManager申請一個ID去分清屬于自己提交的作業,ResourceManager會回傳作業ID、Job資源提交路徑,并將Job添加到容器調度器中,
2.3 大資料技術生態體系
了解完基本的Hadoop架構后,我們再了解一下大資料技術生態體系,

(圖源來自尚硅谷)
其中,Hive、Mahout、Spark Mlib、Spark R、Spark Sql都屬于非實時資料處理;而Spark Streaming和Storm屬于實時資料處理,
每篇一個小知識:現如今比較火的Flink對標的是Spark
非實時資料處理,并不是指本意上的非實時,而是批處理,而實時資料處理,指的是流處理,
檔案日志,我們可以理解為User的每一步操作形成日志,
無論我們配置Kafka,或者是Hadoop,我們都會發現網路上大部分教程都需要我們配置Zookeeper,這是因為Zookeeper在集群配置資訊上,為我們提供了簡便的操作,類似于之前的外賣需要我們記住每家商家的電話號碼,而現在我們只需要打開美團、餓了么等App即可購買一樣,它為我們配置集群提供一致性服務,
三、NTP集群時間同步配置
了解上文中的Hadoop架構后,我們可以清晰的認識到一個貫穿于Hadoop集群的東西,時間,可以說當Client開始提交一個作業時,Hadoop就開始記錄下Client請求程序的時間戳,因此,對于Hadoop集群來說,需要有一個統一時間來避免時間差距過大導致的Hadoop集群報錯,
3.1 Yum配置
在所有節點(master、slave1、slave2)上輸入
yum clean all
yum makecache
yum -y install ntp
如果沒有報錯,恭喜你在NTP配置中已經完成了一半了,如果報錯了,則需要將Yum重新卸載后重裝,
3.2 NTP配置
在所有節點下,對server.*進行注釋,用#注釋
在master節點下輸入,并添加master主機的network地址作為每一次時間同步的根據,
vim /etc/ntp.conf #編輯
restrict 127.0.0.1 #添加
restrict ::1 #添加
restrict 192.168.x.0 mask 255.255.255.0 #添加Master主機的NETWORK地址
server 127.127.1.0 #添加
fudge 127.127.1.0 stratum 10 #添加
在slave1和slave2節點下,添加
vim /etc/ntp.conf #編輯
restrict 127.0.0.1
restrict ::1
server 192.168.x.y #192.168.x.y是master主機IP地址
對所有節點,進行重啟ntp服務
systemctl restart ntpd
在某個節點下,查看NTP服務狀態
ntpq -p

-------------------------------------------------------------結束------------------------------------------------------------
Hadoop2.7.7集群配置
https://blog.csdn.net/Libre813/article/details/120296824
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/302740.html
標籤:其他
上一篇:Canal Mysql binlog 同步至 ElasticSearch 詳細介紹
下一篇:MySQL資料庫的知識總結與整理
