大數據你必須要知道-Hadoop跳舞的大象

Hadoop到底是什麼鬼玩意?

依據維基百科說明:Apache Hadoop是一款支援數據密集型分布式應用程式並以Apache 2.0許可協定發布的開源軟體框架,結論就是有聽沒有懂。。。

其實Hadoop最單純來說明就是兩種功能:第一個可以儲存大量數據的檔案系統(稱做HDFS,Hadoop Distributed File System)、第二個為可以實現大量數據的計算框架(MRV2,又稱YARN,Yet Another Resource Negotiator),另外Hadoop本身為一套於安裝及設定沒有UI的軟體,並沒有像微軟Office等好用商用軟體按下一步就能安裝好的唷~~~

  • 提到大量是指一般電腦無法負荷的單位為大量,一般電腦就能負荷的了就…不要鬧了*
  • 所以就有一個Hadoop頂級專家(Cloudera 公司)創立了CDH,方便使用者快速部屬及設定大量Hadoop叢集,相關安裝方式請參閱CDH 部署步驟
代表Hadoop方式: 當一匹馬拉不動一台馬車時,應該設法多找幾匹馬兒一塊拉,而不是瘋狂的訓練那一匹馬讓它變的無比強壯。。。

HDFS起源:

  1. HDFS(Hadoop Distributed File System)當初受於:information_source: Google檔案系統(GFS)論文啟發 ,實做出來的檔案系統,垂直擴展硬體等級會出現瓶頸,相對成本付出較高,故此HDFS檔案系統採用水平擴充方使,以數台較低成本電腦模擬一台超級電腦。

    • 垂直擴展,價格不會與資源呈現同比例成長(如下圖所示)
    • 水平擴充,多個同樣低成本機器打造(如下圖所示)
  2. HDFS是模擬檔案系統儲存數據,數據皆是儲存在硬碟上,故需要原生OS作業系統,另不建議硬碟使用容錯式磁碟陣列(RAID,Redundant Array of Independent Disks),HDFS預設複製3個副本數據儲存在不同機器。

  3. HDFS為主-從式架構,由單個NameNode、Secondary NameNode及數個DataNode組合而成

  • 那NameNode是啥鬼?又來一個Secondary是幹啥的???詳細HDFS原理及功能介紹請參閱

YARN起源:

  1. YARN(Yet Another Resource Negotiator)當初受於:information_source: Google MapReduce論文啟發,實做出來的分散式運算框架,將大量運算需求,同時分布餘數台機器上一起運算。

  2. YARN是個運算資源配置系統,類似建議於Linux Cgroup資源控制,可以動態調節配置好資源的給運算之應用程式,並且可以結合Spark、Kafka、Hive、Oozie、Sqoop、Flume、Impala等資源管理;另目前Impala與Yarn整合尚有些Bug,故建議由Cgroup 先配置給Impala自行管理限定資源。

  3. YARN框架同為主-從式架構,由單個ResourceManager、JobHistory Server、數個NodeManager組成

  • 詳細YARN原理及功能介紹請參閱

整體Hadoop大致架構

  • 一個方框代表一部機器

  • 此方式配置確保每一次運算數據前從HDFS讀取到的數據都是從本地機器上面的,可以減少網路傳輸交換的所耗的時間。

Hadoop 部屬方式

  • Hadoop三種模式:
  1. 單機模式(Standalone Mode):
    • 這種模式下不會於啟動任何背景Java程式,此模式適合開發測試及除錯。
  2. 偽分佈式模式(Pseudo-Distributed Mode)
  3. 完全分佈式模式(Fully-Distributed Mode)
  • 屬性差異比較
屬性 本機模式 偽分佈式模式 完全分佈式模式
fs.defaultFS file:/// hdfs:/// hdfs:///
dfs.replication N/A 1 3
mapreduce .framework.name N/A yarn yarn
yarn.resourcemanager.hostname N/A localhost resourcemanager
yarn.nodemanager.auxervices N/A mapreduce_shuffle mapreduce_shuffle

Hadoop 生態系概述

  • 圖參考於Vimal Jain部落格 https://blogs.sap.com/2017/07/19/bridging-two-worlds-integration-of-sap-and-hadoop-ecosystems/

  • 通常談到Hadoop,不光只是說到Hadoop,是包含整個強大的生態系統:

    1. 儲存數據相關:Hadoop、Hbase、Kudu、Cassandra
    2. SQL查詢引擎:Hive、Impala、Presto、SparkSQL
    3. 資源管理:Yarn、Tez、Mesos
    4. 分布式程序處理:Mapreduce、Spark
    5. 數據流: Kafka、Sqoop、Flume
    6. 數據串流引擎:Flink、Spark Streaming、Storm
    7. 儲存格式:Parquet、Avro、ORC
    8. 排程工具: Oozie、AirFlow
    9. 圖形化操作工具: Hue、Zeppelin
    10. 圖形化管理工具: CDH、Ambari

Similar Posts

One Comment

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。