hadoop生態系統基本介紹


1)hadoop 生態系統

  hdfs:(Hadoop Distributed File System 分布式文件系統)

    a) block:  hdfs將一個大文件切割成多個小文件,在2.0版本中每個小文件的大小為128MB,這些小文件被稱作為塊(block)

    b) namenode:namenode 是 HDFS 集群主節點,負責維護整個 hdfs 文件系統的目錄樹,以及每一個路徑(文 件)所對應的 block 塊信息(block 的 id,及所在的 datanode 服務器)

      NameNode 對數據的管理采用了兩種存儲形式:內存和磁盤

      首先是內存中存儲了一份完整的元數據,包括目錄樹結構,以及文件和 數據塊與副本存儲地 的映射關系;

      1) 內存元數據  metadata : metadata (全部存在內存中)

      2) 磁盤元數據鏡像文件 fsimage:fsimage_0000000000000000555

      3) 數據歷史操作日志文件 edits:edits_0000000000000000001-0000000000000000018 (可通過日志運算出元數據,全部存在磁盤中)

      4) 數據預寫操作日志文件 (正在編輯的日志文件)edits_inprogress_0000000000000000556

      5) 集群的版本信息: VERSION  存放 hdfs 集群的版本信息

     c) datanode:datanode 是 HDFS 集群從節點,每一個 block 都可以在多個 datanode 上存儲多個副本(副本 數量也可以通過參數設置 dfs.replication,默認是 3)

 

 

  yarn:(Yet Another Resources Negotiator 運算資源調度系統)    

  mapReduce:(Map 和 Reduce 分布式運算編程框架)

    mapTask:一個split(切片)對應一個mapTask,默認大小為128M,和一個block(塊)大小一致,所以一般是一個文件一個mapTask

    reduceTask:有多少個reduce分區個數就有多少個reduceTask,就會生成多少個結果文件 通過setNumReduceTasks()來設置分區個數

          默認一個分區

 

  common:(基礎功能組件)(工具包,RPC 框架)JNDI 和 RPC

 

2)hbase:非關系型數據庫

 

3)hive:Hive 依賴於 HDFS 存儲數據,Hive 將 HQL 轉換成 MapReduce 執行 所以說 Hive 是基於 Hadoop 的一個數據倉庫工具,

      實質就是一款基於 HDFS 的 MapReduce 計算框架,對存儲在 HDFS 中的數據進行分析和管理

 

4)Zookeeper:ZooKeeper 是一個分布式的,開放源碼的分布式應用程序協調服務,是 Google 的 Chubby 一個開源的實現。

       它提供了簡單原始的功能,分布式應用可以基於它實現更高級的服務,比 如分布式同步,配置管理,集群管理,命名管理,隊列管理。

       它被設計為易於編程,使用文 件系統目錄樹作為數據模型。服務端跑在 java 上,提供 java 和 C 的客戶端 API

 

 

5)Flume: Flume 是一個分布式、可靠、高可用的海量日志聚合系統,支持在系統中定制各類數據發送方,

       用於收集數據,同時,Flume 提供對數據的簡單處理,並寫到各種數據接收方的能力。

 

 

6)kafka:Kafka 是一個分布式消息隊列,在流式計算中,Kafka 一般用來緩存數據(類似大壩,蓄水),Storm 通過消費 Kafka 的數據進行計算。

     經典架構:Flume + Kafka + Storm + Redis

     Kafka 是一個分布式消息隊列:具有生產者、消費者的功能。它提供了類似於 JMS 的特性,

        但是在設計實現上完全不同,此外它並不是 JMS 規范的實現。

     Kafka 對消息保存時根據 Topic 進行歸類,發送消息者稱為 Producer,消息接受者稱為 Consumer,

     此外 Kafka 集群有多個 Kafka 實例組成,每個實例(server)成為 broker。

     

 

 

7)redis:Redis以內存作為數據存儲介質,所以讀寫數據的效率極高,遠遠超過數據庫

    REmote DIctionary Server(Redis)是一個由 Salvatore Sanfilippo 寫的開源的、高性能的、使用

    ANSI C 語言編寫、遵守 BSD 協議、支持網絡、可基於內存亦可持久化的日志型、key-value

    存儲系統,並提供多種語言的 API。和 memcached 類似,Redis 常被稱作是一款 key-value 內

    存存儲系統或者內存數據庫,同時由於它支持豐富的數據結構,又被稱為一種數據結構服務

    器(Data Structure Server)。因為值(value)可以是字符串(String),哈希(Map),列表(list),

    集合(sets)和有序集合(sorted sets)等類型。

 

 

8)sqoop:數據遷移工具

    Sqoop 是 Apache 旗下一款“Hadoop 和關系數據庫服務器之間傳送數據”的工具。

    導入數據:MySQL,Oracle 導入數據到 Hadoop 的 HDFS、HIVE、HBASE 等數據存儲系統

    導出數據:從 Hadoop 的文件系統中導出數據到關系數據庫 MySQL 等

    Sqoop 的本質還是一個命令行工具,和 HDFS,Hive 相比,並沒有什么高深的理論。

 

 

9)azkaban:工作流調度器  

    對市面上最流行的兩種調度器,給出以下詳細對比,以供技術選型參考。總體來說,ooize

    相比 azkaban 是一個重量級的任務調度系統,功能全面,但配置使用也更復雜。如果可以不

    在意某些功能的缺失,輕量級調度器 azkaban 是很不錯的候選對象。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM