當前位置:
首頁 > 知識 > hadoop以及相關組件介紹以及個人理解

hadoop以及相關組件介紹以及個人理解

前言

本人是由java後端轉型大數據方向,目前也有近一年半時間了,不過我平時的開發平台是阿里雲的Maxcompute,通過這麼長時間的開發,對數據倉庫也有了一定的理解,ETL這些經驗還算比較豐富。但是由於Maxcompute是一個更簡單的大數據開發平台,導致個人在分散式計算的底層一些知識比較薄弱,所以這次決定花幾個月時間好好學習一下hadoop,後續當然也會開始spark的學習。個人感覺這塊學習的東西還是比較多,同時也要不斷的實踐的,所以這趟學習之旅,希望能夠記錄自己的一些心得體會,供自己參考,同時也希望能夠和跟我一樣剛入門的同學一起分享探討。

註:我目前學習主要是參考官網文檔,《Hadoop實戰》,《Hadoop權威指南》

注2:本人主要是學習Hadoop的相關生態系統,去了解分散式計算大數據計算平台的底層的一些東西,所以期間我會拋棄一些運維相關的學習包括詳細的部署,hadoop集群的安全策略等。

初始Hadoop

google的三篇論文(GFS,MapReduce,BigTable)很快促進了hadoop的面世,hadoop實際上起源於Nutch項目,於2006年2月正式啟動,2008年開始hadoop正式火起來了。

Apache Hadoop和Hadoop 生態系統
  • Common:一系列組件和介面,用於分散式文件系統和通用I/O
  • Avro : 一種序列化系統,用於支持高效,跨語言的RPC和持久化數據存儲
  • MapReduce : 分散式數據處理模型和習性環境,也就是計算框架
  • HDFS : 分散式文件系統
  • Pig :數據流語言和運行環境,用以探究非常龐大的數據集。pig運行在MapReduce和HDFS之上
  • Hive : 一種分散式呢的 、按列存儲的數據倉庫。HIVE管理HDFS中存儲的數據,並提供基於SQL的查詢語言
  • HBase:一種分散式的、按列存儲的資料庫。HBase使用HDFS作為底層存儲,同時支持MapReduce的批量式計算和點查詢,類似BigTable
  • ZooKeeper:一種分散式的、可用性高的協調服務。ZooKeeper提供分散式鎖之類的基本服務用戶構建分散式應用,對於java後端的 ,rpc相關的都是使用到ZooKeeper
  • Sqoop:該工具用於在結構化數據存儲和HDFS之間高效批量傳輸數據,也就是數據同步的工具
  • Oozie:該服務用於運行和調度Hadoop作業,可以理解為一個工作流調度系統

HDFS和MapReduct體系結構

HDFS和MapReduce時Hadoop的兩大核心,整個Hadoop的體系結構主要是通過HDFS倆實現分散式存儲的底層支持的,並且會通過MapReduce來實現分散式並行任務處理的程序支持。

首先我們先來看一下HDFS的體系結構,HDFS採用了主從結構模型,HDFS集群是由一個NameNode(主)和若干個DataNode組成的,NameNode管理文件系統的命名空間和客戶端對文件的訪問操作;DataNode管理存儲的數據;如下圖:

hadoop以及相關組件介紹以及個人理解

接下來介紹一下MapReduce的體系結構,MapReduce框架是由一個單獨運行在主節點的JobTracker和運行在每個集群從節點的TaskTracker共同組成的。JobTracker負責調度構成一個作業的所有任務,從節點僅負責由主節點指派的任務。當一個job被提交時,JobTracker接收到提交作業和其配置信息之後,就會將配置信息等分發給從節點,同時調度任務並監控TaskTracker的執行。

淺談一下HDFS,HBase和Hive

剛開始接觸這些概念的時候,感覺稀里糊塗,不清楚這幾個之間到底是什麼區別,之所以會產生混淆,因為這幾個都是跟Hadoop的數據管理有關,下面我們就簡單分析一下。

HDFS的數據管理

我們知道操作系統都有自己的文件管理系統,而HDFS就是hadoop的分散式文件管理系統,舉個例子,我們有個100GB的文件,用HDFS可能是放到100台機器上存儲的,而我們不需要關心它是怎麼存儲以及怎麼讀取的。我們從NameNode,client,DataNode來簡單介紹一下HDFS對數據的管理。

文件寫入:

client向NameNode發起文件寫入的請求 -----> NameNode根據文件大小和文件塊配置,返回給client相關的DataNode的信息----->client將文件劃分多個block,寫入DataNode

文件讀取:

client向NameNode發起文件讀取請求--->NameNode返回DataNode信息----->client讀取文件

文件塊block複製

NameNode發現部分文件的block有問題或者DataNode失效--->通知DataNode相互複製block------>DataNode開始直接相互複製

HBase的數據管理

HBase時一個類似Bigtable的分散式資料庫,它的大部分特性和Bigtable一樣,是一個稀疏的、長期存儲的、多維度的排序映射表,這張表的索引時行關鍵字,列關鍵字和時間戳。

HBase的一些特性可以參考這篇文章http://blog.csdn.net/macyang/article/details/6066622,說實話,我現在對HBase的理解還是很模糊的,因為也沒有場景遇到過。暫且先在此記一下相關概念。

Hbase體系結構三大重要組成部分:HRegion HBaseMaster HBase Client

Hive的數據管理

毫無疑問,Hive將是我們使用最多的工具,包括我在Maxcompute上開發,其實主要工作也是類似Hive QL,Hive的定義很簡單,它是建立在Hadoop上的數據倉庫基礎框架,它提供了一系列的工具,來進行數據的ETL。Hive定義了簡單的類SQL的查詢語言,簡稱Hive QL。因為Hive是一個數據倉庫框架,所以按照使用層次我們可以從元數據存儲、數據存儲和數據交換三個方面來介紹。

1.元數據存儲

元數據其實就是數據倉庫中表名稱,表的列,表的分區,表分區的屬性等,Hive將元數據存儲在RDMS中。

2.數據存儲

Hive咩有專門的數據存儲格式,也沒有未數據建立索引,用戶在創建表的時候只需要告訴Hive數據中的列分隔符和行分隔符,它就能解析數據了。

其次,Hive中所有的數據都存儲在HDFS中(因為Hive其實只是一個數倉的框架,它是不包括存儲的,我們可以簡單的理解為通過列和行的分隔符,將文件中的每行數據映射成表的一條記錄)

3.數據交換

我們通常使用Hive客戶端鏈接HiveServer,當然也可以通過web界面去寫sql,Hive的大部分查詢實際上都是利用MapReduce進行計算的

另外,下圖是Hive的數據交換圖,我們可以簡單的看一下

hadoop以及相關組件介紹以及個人理解

喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 達人科技 的精彩文章:

web組件工具之獲取表單數據:webUtils
第一章之s5pv210啟動順序
VMware workstation批量創建虛擬機和自動化安裝操作系統(一)
Python:使用Kivy將python程序打包為apk文件
bboss quartz定時任務使用案例介紹

TAG:達人科技 |

您可能感興趣

OpenStack 基礎介紹03——各組件綜述之Nova
你所不了解的 Bash:關於 Bash 數組的介紹
Metagaming的介紹及其他
golang expect包的使用介紹
Ceph介紹及原理架構分享
中間人攻擊框架xerosploit介紹
Linux中Postfix郵件原理介紹(一)
Python Exceptions介紹
Win7系統spoolsv.exe應用程序錯誤解決方法介紹
OpenStack 基礎介紹02——整體架構介紹
WeChat Applet介紹與開發準備
python的模塊module介紹
performance_schema全方位介紹
介紹 Fedora 上的 Swift
Python async/await 介紹
mysql之innodb的鎖分類介紹
Camtasia Studio 軟體介紹
輕鬆學單詞:Sight Words介紹和資源分享
Google Optimization Tools介紹
Phytonia旗下3step面霜的詳細介紹