文章目錄
- 一、認識大資料
- 1.1、認識大資料
- 1.2、大資料特征
- 1.3、大資料流程圖
- 1.4、什么是大資料平臺?
- 二、Hadoop 核心組件
- 2.1、Apache Hadoop簡介
- 2.2、主要模塊
- 2.3、Hadoop 分布式檔案系統-HDFS
- 2.4、Hadoop任務調度和資源管理框架-YARN
- 2.5、Hadoop分布式編程模型-MapReduce
- 三、Hadoop生態環境
- 3.1、Apache HBase
- 3.2、Apache Hive
- 3.3、Apache Sqoop
- 3.4、Apache Oozie
- 3.5、其他
一、認識大資料
1.1、認識大資料
大資料(Big data)或稱巨量資料、海量資料、大資料,指的是所涉及的資料量規模巨大到無法通過人工或者計算機,在合理的時間內達到截取、管理、處理、并整理成為人類所能解讀的形式的資訊,
1.2、大資料特征
- Volumn:容量,資料的大小
- Variety:種類,資料型別的種類
- Velocity:速度,獲取資料的速度
1.3、大資料流程圖
1.4、什么是大資料平臺?
大資料平臺是指以處理海量資料存盤、計算及不間斷流資料實時計算等場景為主的一套基礎設施,典型的包括Hadoop系列、Spark、Storm、Flink以及Flume/Kafka等集群,
既可以采用開源平臺,也可以采用華為、星環等商業級解決方案,既可以部署在私有云上,也可以部署在公有云上,
大資料平臺的功能:
1、容納海量資料
2、速度快
3、兼容傳統工具
4、利用Hadoop
5、為資料科學家提供支持
6、提供資料分析功能
二、Hadoop 核心組件
2.1、Apache Hadoop簡介
Apache Hadoop是一套用于在由通用硬體構建的大型集群上運行應用程式的框架,它實作了Map/Reduce編程范型,計算任務會被分割成小塊(多次)運行在不同的節點上,除此之外,它還提供了一款分布式檔案系統(HDFS),資料被存盤在計算節點上以提供極高的跨資料中心聚合帶寬,
優點:
高可靠性、高擴展性、高效性、高容錯性、低成本
2.2、主要模塊
- Hadoop Common:基礎工具庫用以支持其他模塊
- HDFS:高可用的分布式檔案存盤系統
- Hadoop YARN:任務調度和集群資源管理框架
- MapReduce:分布式編程模型
- Hadoop Ozone:Hadoop類存盤模型
2.3、Hadoop 分布式檔案系統-HDFS
客戶端(client)代表用戶與namenode和datanode互動來訪問整個檔案系統
Namenode: 元資料操作,打開、關閉、重命名檔案及檔案夾、檔案塊到DataNode映射
DataNode: 檔案塊生成、洗掉、復制及執行NameNode的指令
HDFS通過多個檔案塊來實作大檔案存盤,所有的檔案塊都是同樣大小(除了最后一個檔案塊);
NameNode決定檔案塊的復制,NameNode定時會收到DataNode的心跳包及塊報告,
2.4、Hadoop任務調度和資源管理框架-YARN
YARN 是 Hadoop 中的資源管理系統,它是一個通用的資源管理模塊,可為各類應用程式進行資源管理和調度,
ResourceManager :處理客戶端請求、啟動/監控ApplicationMaster、監控NodeManager、資源分配與調度
NodeManager:單個節點上的資源管理、處理來自ResourceManager的命令、處理來自ApplicationMaster的命令
ApplicationMaster:資料切分、為應用程式申請資源,并分配給內部任務、任務監控與容錯
- ResourceManager由Scheduler和ApplicationMaster組成;
- Scheduler: 對各個任務及佇列分配資源,沒有監控及對任務狀態的追蹤,同時也不保證對失敗的任務進行重試
- ApplicationManager: 接受提交的任務,協調第一個用于啟動ApplicationMaster的container,同時針對ApplicationMaster的失敗提供重試
- ApplicationMaster:從Scheduler請求合適的資源containers,追蹤狀態及監控進度
2.5、Hadoop分布式編程模型-MapReduce
MapReduce是Google提出的一個軟體架構,用于大規模資料集(大于1TB)的并行運算,概念“Map(映射)”和“Reduce(歸納)”,及他們的主要思想,都是從函式式編程語言借來的,還有從矢量編程語言借來的特性,
當前的軟體實作是指定一個Map(映射)函式,用來把一組鍵值對映射成一組新的鍵值對,指定并發的Reduce(歸納)函式,用來保證所有映射的鍵值對中的每一個共享相同的鍵組,
三、Hadoop生態環境
3.1、Apache HBase
- HBase是一個分布式的、面向列的開源資料庫,該技術來源于Chang et al所撰寫的Google論文"Bigtable:一個結構化資料的分布式存盤系統"
- 高可靠性、高性能、面向列、可伸縮
- HDFS為HBase提供高可靠底層存盤支持
- MapReduce為HBase提供高性能計算能力
- Zookeeper為HBase提供穩定服務和failover機制
存盤大量的資料(>TB)
需要很高的寫吞吐量
大規模資料集很好性能的隨機訪問(按列)
需要進行優雅的資料擴展
結構化和半結構化的資料
不需要全部的關系資料庫特性,例如交叉列、交叉表,事務,連接等等
3.2、Apache Hive
- Hive是基于Hadoop的一個資料倉庫工具
- 可以將結構化的資料檔案映射為一張資料庫表,并提供簡單的sql查詢功能,可以將sql陳述句轉換為MapReduce任務進行運行
- 其優點是學習成本低,可以通過類SQL陳述句快速實作簡單的MapReduce統計,不必開發專門的MapReduce應用,十分適合資料倉庫的統計分析
- Hive定義了簡單的類 SQL 查詢語言,稱為 HQL,它允許熟悉 SQL 的用戶查詢資料
- Hive 并不能夠在大規模資料集上實作低延遲快速的查詢,Hive 并不適合那些需要低延遲的應用,Hive 并不提供實時的查詢和基于行級的資料更新操作
- Hive 不支持對資料的改寫和添加,所有的資料都是在加載的時候確定的
- Hive 的最佳使用場合是大資料集的批處理作業,例如,網路日志分析
3.3、Apache Sqoop
- Sqoop是一款開源的工具,主要用于在Hadoop(Hive)與傳統的
資料庫(mysql、postgresql…)間進行資料的傳遞,可以將一個關系型
資料庫(例如 : MySQL ,Oracle ,Postgres等)中的資料導進到
Hadoop的HDFS中,也可以將HDFS的資料導進到關系型資料庫中 - 可以通過hadoop的mapreduce把資料從關系型資料庫中匯入資料到HDFS
- 類似于其他ETL工具,使用元資料模型來判斷資料型別并在資料從資料源轉移到Hadoop時確保型別安全的資料處理
- Sqoop專為大資料批量傳輸設計,能夠分割資料集并創建Hadoop任務來處理每個區塊
3.4、Apache Oozie
- Oozie是一個管理Hdoop作業(job)的作業流程調度管理系統,
- 它是一個開源作業流引擎,用于管理和協調運行在Hadoop平臺上(包括:HDFS、Pig和MapReduce)的Jobs,
- 它圍繞著兩個核心進行:作業流(Workflow)和協調器(Coordinator),前者定義任務拓撲和執行邏輯,后者負責作業流的依賴和觸發,
- Workflow,即作業流,是一個有向無環圖 (DAG,Directed Acyclic Graph),描述了需要執行的 Actions 序列,
3.5、其他
-
Flume:一種分布式的、可靠的、可用的服務,其用于高效地搜集、匯總、移動大量日志資料,
-
ZooKeeper:一種集中服務,其用于維護配置資訊,命名,提供分布式同步,以及提供分組服務,
-
Mahout:一種基于Hadoop的機器學習和資料挖掘的分布式計算框架演算法集,實作了多種MapReduce模式的資料挖掘演算法,
-
Spark:一個開源的資料分析集群計算框架,最初由加州大學伯克利分校AMPLab開發,建立于HDFS之上,Spark與Hadoop一樣,用于構建大規模、低延時的資料分析應用,Spark采用Scala語言實作,使用Scala作為應用框架,
-
Storm: 一個分布式的、容錯的實時計算系統,由BackType開發,后被Twitter捕獲,Storm屬于流處理平臺,多用于實時計算并更新資料庫,Storm也可被用于“連續計算”(continuous computation),對資料流做連續查詢,在計算時就將結果以流的形式輸出給用戶,它還可被用于“分布式RPC”,以并行的方式運行昂貴的運算,
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/302997.html
標籤:其他
上一篇:資料庫中的主鍵與外鍵的關系
