Hadoop大數據生態系統及常用組件簡介

2021-01-09 CSDN技術社區

經過多年信息化建設,我們已經進入一個神奇的「大數據」時代,無論是在通訊社交過程中使用的微信、QQ、電話、簡訊,還是吃喝玩樂時的用到的團購、電商、行動支付,都不斷產生海量信息數據,數據和我們的工作生活密不可分、須臾難離。

        什麼是大數據

         什麼是大數據,多大算大,100G算大麼?如果是用來存儲1080P的高清電影,也就是幾部影片的容量。但是如果100G都是文本數據,比如雲智慧透視寶後端kafka裡的數據,抽取一條mobileTopic的數據如下:【107,5505323054626937,區域網,區域網,unknown,0,0,09f26f4fd5c9d757b9a3095607f8e1a27fe421c9,1468900733003】,這種數據100G能有多少條,我們可想而知。



        數據之所以為大,不但是因為數據量的巨大,同時各種渠道產生的數據既有IT系統生成的標準數據,還有大量多媒體類的非標準數據,數據類型多種多樣,而且大量無用數據充斥其間,給數據的真實性帶來很大影響,此外很多數據必須實時處理才最有價值。

        一般數據量大(多)或者業務複雜的時候,常規技術無法及時、高效處理如此大量的數據,這時候可以使用Hadoop,它是由Apache基金會所開發的分布式系統基礎架構,用戶可以在不了解分布式底層細節的情況下,編寫和運行分布式應用充分利用集群處理大規模數據。Hadoop可以構建在廉價的機器上,比如我們淘汰的PC Server或者租用的雲主機都可以拿來用。

        今天,雲智慧的李林同學就為大家介紹一下Hadoop生態圈一些常用的組件。

        Gartner的一項研究表明,2015年,65%的分析應用程式和先進分析工具都將基於Hadoop平臺,作為主流大數據處理技術,Hadoop具有以下特性:

        方便:Hadoop運行在由一般商用機器構成的大型集群上,或者雲計算服務上

        健壯:Hadoop致力於在一般商用硬體上運行,其架構假設硬體會頻繁失效,Hadoop可以從容地處理大多數此類故障。

        可擴展:Hadoop通過增加集群節點,可以線性地擴展以處理更大的數據集。

        目前應用Hadoop最多的領域有:

        1) 搜尋引擎,Doug Cutting設計Hadoop的初衷,就是為了針對大規模的網頁快速建立索引。

        2) 大數據存儲,利用Hadoop的分布式存儲能力,例如數據備份、數據倉庫等。

        3) 大數據處理,利用Hadoop的分布式處理能力,例如數據挖掘、數據分析等。

        Hadoop生態系統與基礎組
        Hadoop2.0的時候引入了HA(高可用)與YARN(資源調度),這是與1.0的最大差別。Hadoop主要由3部分組成:Mapreduce編程模型,HDFS分布式文件存儲,與YARN。

        上圖是Hadoop的生態系統,最下面一層是作為數據存儲的HDFS,其他組件都是在HDFS的基礎上組合或者使用的。HDFS具有高容錯性、適合批處理、適合大數據處理、可構建在廉價機器上等優點,缺點是低延遲數據訪問、小文件存取、並發寫入、文件隨機修改。

         Hadoop MapReduce是一個軟體框架,基於該框架能夠容易地編寫應用程式,這些應用程式能夠運行在由上千個商用機器組成的大集群上,並以一種可靠的,具有容錯能力的方式並行地處理上TB級別的海量數據集。這個定義裡面有幾個關鍵詞:軟體框架、並行處理、可靠且容錯、大規模集群、海量數據集就是MapReduce的特色。

 

MapReduce經典代碼(wordCount) 

        上面這段代碼就是接收一堆文本數據,統計這些文本數據中每個單詞出現的次數。MapReduce也是一個計算模型,當數據量很大時,比如10個G,它可以把這10G的數據分成10塊,分發到10個節點去執行,然後再匯總,這就是並行計算,計算速度比你一臺機器計算要快的多。

        HBase

        Hadoop的主要組件介紹完畢,現在看下HBase,它是一個高可靠、高性能、面向列、可伸縮的分布式存儲系統,利用Hbase技術可在廉價PC Server上搭建大規模結構化存儲集群。HBase 是Google Bigtable 的開源實現,與Google Bigtable 利用GFS作為其文件存儲系統類似,HBase 利用Hadoop HDFS 作為其文件存儲系統;Google 運行MapReduce 來處理Bigtable中的海量數據, HBase 同樣利用Hadoop MapReduce來處理HBase中的海量數據;Google Bigtable 利用Chubby作為協同服務, HBase 利用Zookeeper作為對應

        有人問HBase和HDFS是啥關係,HBase是利用HDFS的存儲的,就像MySQL和磁碟, MySQL是應用,磁碟是具體存儲介質。HDFS因為自身的特性,不適合隨機查找,對更新操作不太友好,比如百度網盤就是拿HDFS構建的,它支持上傳和刪除,但不會讓用戶直接在網盤上修改某個文件的內容。

        HBase的表有以下特點:

        1 ) 大:一個表可以有上億行,上百萬列。

        2 ) 面向列:面向列表(簇)的存儲和權限控制,列(簇)獨立檢索。

        3 ) 稀疏:對於為空(NULL)的列,並不佔用存儲空間,因此,表可以設計的非常稀疏。

        HBase提供的訪問方式有命令行shell方式,java API(最高效和常用的),Thrift Gateway 支持C++,PHP,Python等多種語言。

HBase在淘寶的應用場景


        HBase的使用場景:

        需對數據進行隨機讀操作或者隨機寫操作;

        大數據上高並發操作,比如每秒對PB級數據進行上千次操作;

        讀寫訪問均是非常簡單的操作,比如歷史記錄,歷史訂單查詢,三大運營商的流量通話清單的查詢。

        Hive

        之前我們說了MapReduce計算模型,但是只有懂Java的才能擼代碼幹這個事,不懂Java的想用Hadoop的計算模型是不是就沒法搞了呢?比如HDFS裡的海量數據,數據分析師想弄點數據出來,咋辦?所以就要用到Hive,它提供了SQL式的訪問方式供人使用。

        Hive是由Facebook 開源, 最初用於解決海量結構化的日誌數據統計問題的ETL(Extraction-Transformation-Loading) 工具,Hive是構建在Hadoop上的數據倉庫平臺,設計目標是可以用傳統SQL操作Hadoop上的數據,讓熟悉SQL編程的人員也能擁抱Hadoop(注意。是數據倉庫。不是資料庫啊。)

        使用HQL作為查詢接口

        使用HDFS作為底層存儲

        使用MapReduce作為執行層

        所以說Hive就是基於Hadoop的一個數據倉庫工具,是為簡化MapReduce編程而生的,非常適合數據倉庫的統計分析,通過解析SQL轉化成MapReduce,組成一個DAG(有向無環圖)來執行。

         Flume

        Flume是Cloudera提供的一個高可用的,高可靠的,分布式的海量日誌採集、 聚合和傳輸的系統,Flume支持在日誌系統中定製各類數據發送方,用於收集數據;同時,Flume提供對數據進行簡單處理,並寫到各種數據接受方(可定製)的能力。

        當前Flume有兩個版本Flume 0.9X版本的統稱Flume-og,Flume1.X版本的統稱Flume-ng,由於Flume-ng經過重大重構,與Flume-og有很大不同,使用時請注意區分。


 

        Flume就是一個數據管道,支持很多源(source),sink(目標),和透視寶的suro很像,比如拉取nginx日誌可以拿這個工具簡單一配就可用。當然每臺nginx伺服器上都要配置並啟動一個flume.

        下面給大家看看配置文件(把kafka的數據寫入hdfs的配置),配置很簡單.完全免去了自己寫一個kafka的consumer再調用hdfs的API寫數據的工作量.

 

        YARN

        YARN是Hadoop 2.0中的資源管理系統,它的基本設計思想是將MRv1中的JobTracker拆分成了兩個獨立的服務:一個全局的資源調度器ResourceManager和每個應用程式特有的應用程式管理器ApplicationMaster,該調度器是一個 "純調度器",不再參與任何與具體應用程式邏輯相關的工作,而僅根據各個應用程式的資源需求進行分配,資源分配的單位用一個資源抽象概念 "Container" 來表示,Container 封裝了內存和 CPU。此外,調度器是一個可插拔的組件,用戶可根據自己的需求設計新的調度器,YARN 自身提供了 Fair Scheduler 和 Capacity Scheduler。

        應用程式管理器負責管理整個系統中所有應用程式,包括應用程式的提交、與調度器協商資源以啟動 ApplicationMaster、監控 ApplicationMaster 運行狀態並在失敗時重新啟動等。

        Ambari

        Ambari是一個集群的安裝和管理工具,雲智慧之前用的是Apache的Hadoop,運維同學用源碼包安裝,一個個配置文件去改,再分發到各個節點,中間哪一步搞錯了,整個集群就啟動不起來。所以有幾個廠商提供Hadoop的這種安裝和管理平臺,主要是CDH和HDP,國內的很多人都用CDH的,它是Cloudera公司的,如果用它的管理界面安裝,集群節點超過一定數量就要收費了。

        Ambari是Apache的頂級開源項目,可以免費使用,現在用的人也很多。Ambari使用Ganglia收集度量指標,用Nagios支持系統報警,當需要引起管理員的關注時(比如,節點停機或磁碟剩餘空間不足等問題),系統將向其發送郵件。

        ZooKeeper

        隨著計算節點的增多,集群成員需要彼此同步並了解去哪裡訪問服務和如何配置,ZooKeeper正是為此而生的。ZooKeeper 顧名思義就是動物園管理員,它是用來管大象(Hadoop) 、蜜蜂(Hive) 和 小豬(Pig) 的管理員, Apache Hbase和 Apache Solr 以及LinkedIn sensei等項目中都採用到了 Zookeeper。ZooKeeper是一個分布式的,開放源碼的分布式應用程式協調服務,以Fast Paxos算法為基礎實現同步服務,配置維護和命名服務等分布式應用。

        其他組件

        以上介紹的都是Hadoop用來計算和查詢的比較常用和主流的組件,上面那副生態圖中的其他幾個組件簡單了解一下就好:

        Pig是一種程式語言,它簡化了Hadoop常見的工作任務,Pig為大型數據集處理提供了更高層次的抽象,與MapReduce相比,Pig提供了更豐富的數據結構,一般都是多值和嵌套的數據結構。

        Mahout是Hadoop提供做機器學習用的,支持的算法也比較少,但是一些常用的 k-means 聚類、分類還是有的,他是用MapReduce做的,但是MapReduce不太擅長這個東西,所以Mahout的作者也轉投spark ML陣營了。

        Sqoop是資料庫ETL工具,用於將關係型資料庫的數據導入到 Hadoop 及其相關的系統中,如 Hive和HBase。Sqoop 的核心設計思想是利用 MapReduce 加快數據傳輸速度,也就是說 Sqoop 的導入和導出功能是通過 MapReduce 作業實現的,所以它是一種批處理方式進行數據傳輸,難以實現實時數據的導入和導出。比如雲智慧監控寶以前的業務數據都存在MySQL,隨著數據量越來越大,要把數據導到Hbase,就可以拿Sqoop直接操作。

        本文所介紹的東西都是用於離線計算的,而之前發布的《面臨大數據挑戰 透視寶如何使用Druid實現數據聚合》則是關於實時計算的框架Druid的。大數據常用的流計算框架主要有Storm,Spark Streaming,Flink,Flink雖然是2014年加入Hadoop的,但至今在生產環境上用的人還不多,似乎大家都持觀望態度。

說一下流計算(Druid,Spark Streaming)和批處理(MapReduce,Hive)有啥區別,比如電商網站的個性化廣告投放,當我們訪問了亞馬遜搜索筆記本電腦之後,他就會給你推薦很多筆記本電腦連結,你的請求和興趣愛好被亞馬遜伺服器實時接收,流計算分析之後當時就會推薦給你可能會購買的東西。如果這個東西拿批處理去做,服務端收集完了,過半個小時才算出你可能要買電腦,這時候再給你推薦電腦明顯就不合適了,因為這時候你可能在搜索電炒鍋……


 

        最後再說一下大數據的工作流,比如有兩個MapReduce的任務是有依賴的,必須第一個完成了才能執行第二個,這就需要一個調度工具來調度。MapReduce也提供調度的API,但是代碼要寫很多,上面的代碼截圖只是一部分,這個依賴我寫了大概150行。所以這時候出現了工作流,用工作流來管理我們的各個job,我目前知道的有oozie和azkaban,oozie的配置比較靈活,推薦大家使用。

聲明:CSDN登載此文出於傳遞更多信息之目的,並不意味著贊同其觀點或證實其描述。

相關焦點

  • hadoop最新發行穩定版:DKHadoop版本介紹
    Hadoop對於從事網際網路工作的朋友來說已經非常熟悉了,相信在我們身邊有很多人正在轉行從事hadoop開發的工作,理所當然也會有很多hadoop入門新手。Hadoop開發太過底層,技術難度遠比我們想像的要大,對新手而言選擇一個合適的hadoop版本就意味著上手更快!
  • Hadoop技術生態簡介
    大數據的發展歷史當中,Hadoop技術框架是佔據著重要地位的,歷經十多年的時間,依然是企業搭建大數據平臺基礎架構的主流選擇,圍繞著Hadoop而生的大數據生態組件,也都各自發揮著各自的作用。今天的Hadoop大數據培訓分享,我們來坐Hadoop技術生態做一個簡單的介紹。
  • Hadoop是低成本的大數據解決方案?別逗了!
    Hadoop是當下流行的大數據並行計算體系,橫向擴展、生態圈成熟等一直是它的主要特點。但這些特點當中,絕對不包含廉價。 可能你認為的低成本,實際上只是硬體和軟體授權成本,而不是總體成本。在學習成本、開發成本、管理成本上Hadoop並不總是佔優。現在伴隨公有雲技術的成熟,Hadoop甚至連硬體成本也不佔優了。
  • 大數據基礎知識:Hadoop分布式系統介紹
    隨著智能化、萬物互聯時代的快速發展,數據量開始暴增,一方面我們需要開始思考如何高效可靠地存儲海量的數據,另一方面我們還需要對這些數據進行分析處理,以獲得更多有價值的信息。這時期我們就需要用到Hadoop了。
  • 好程式設計師大數據培訓分享Hadoop技術優缺點
    好程式設計師大數據培訓分享Hadoop技術優缺點,目前我們正被數據包圍,全球43億部電話、20億位網際網路用戶每秒都在不斷地產生大量數據,人們發送簡訊給朋友、上傳視頻、用手機拍照、更新社交網站的信息、轉發微博、點擊廣告等,使得機器產生和保留了越來越多的數據。
  • 大數據時代可能影響你的7個商業趨勢 | 網際網路數據資訊網-199IT |...
    我們也看到了一個有益的生態系統的出現,迅速的讚美或擴展能力的核心支持技術,在大數據案例中,大數據生態系統已經迅速集中一批技術提供者,例如:Hadoop,Cassandra,Accumulo,Oracle,IBM.那麼在大數據的生態系統中我可以看到哪些趨勢會出現?有一大批的技術公司努力構建一種no-sql技術,從而為大數據提供解決方案例如:hadoop。
  • 大數據分析與數據分析的根本區別在哪裡?
    如今大數據分析和數據分析火爆,要說時機,可謂處處都是時機,關鍵要明了的一點是,大數據分析和數據分析兩者的根本區別在哪裡,只有真正了解了,才會知曉更加適合自己的領域是大數據分析師還是數據分析師。畢竟職場如戰場,時間就是生活,不容兒戲,更不容怠慢。下面我來好好告訴大家兩者的本質區別到底是什麼!大數據分析:指無法在可承受的時間範圍內用常規軟體工具進行捕捉、管理和處理的數據集合。
  • 大數據開發前要做什麼準備?8臺Hadoop伺服器進行集群規劃前配置
    安裝個CentOS Linux 8開始大數據開發2、Linux內核怎麼升級?升級有什麼好處?CentOS8升級內核並開啟BBR手裡有一臺3年前的伺服器Dell R620,上面安裝了兩路CPU型號是Xeon E5-2603 V2 1.8GHz,內存沒有插滿只有64GB,8個硬碟位插滿共8塊SAS硬碟。
  • hadoop基礎知識介紹_hadoop是什麼語言開發的_hadoop能做什麼
    Hadoop=HDFS(文件系統,數據存儲技術相關)+ Mapreduce(數據處理),Hadoop的數據來源可以是任何形式,在處理半結構化和非結構化數據上與關係型資料庫相比有更好的性能,具有更靈活的處理能力,不管任何數據形式最終會轉化為key/value,key/value是基本數據單元。
  • hadoop開發應用實例_hadoop應用開發技術實例詳解 - CSDN
    hadoop是什麼?hadoop能有哪些應用?hadoop和大數據是什麼關係?下面我們將圍繞這幾個問題詳細闡述。hadoop是什麼?Hadoop是一個由Apache基金會所開發的分布式系統基礎架構。用戶可以在不了解分布式底層細節的情況下,開發分布式程序。充分利用集群的威力進行高速運算和存儲。
  • 【招聘】中信銀行信用卡中心招IT開發、人工智慧、PMO、數據挖掘等...
    2021年中信銀行信用卡中心大數據中心社會招聘啟事。工作地點:深圳市福田區。IT系統開發崗-JAVA方向職位描述1、協助開展大數據業務需求收集、整理、匯總。2、保質高效完成大數據系統類需求的評估、設計、開發、測試、上線、系統優化及運營。
  • 簡單粗暴,微生物生態研究中常用資料庫簡介
    今天盧瑟菌就和大家簡單聊一下微生物生態研究中那些個常用的marker基因序列資料庫。RDP是目前較常用的rRNA基因高通量測序後作為比對、注釋的參考資料庫。目前其最新資料庫版本為SILVA SSU andLSU databases 128,更新時間為2016年9月29日,最新版本資料庫包含的數據信息見下表1所示。
  • 銀興智能:助力廣發銀行打造Hadoop資源管理平臺
    據深圳銀興智能數據有限公司(簡稱:銀興智能)介紹,隨著廣發銀行大數據平臺hadoop集群應用場景越來越多,研發中心、數據中心、卡中心和分行等部門均在大數據平臺上進行數據開發和數據分析,由於數據開發和分析的場景各不相同,使用和購置的資源也不同。
  • 轉行大數據方向應該怎麼做
    大數據近幾年的發展非常迅速,大數據方向也成了許多人轉行得目標,因為前景好,薪資高,那麼,轉行大數據方向應該怎樣做呢?首先大數據的就業方向有:數據挖掘、數據分析&機器學習方向、大數據運維&雲計算方向、Hadoop大數據開發方向。轉行,得先選定發展方向。
  • hadoop入門基礎教程操作篇
    關於hadoop的分享此前一直都是零零散散的想到什麼就寫什麼,整體寫的比較亂吧。最近可能還算好的吧,畢竟花了兩周的時間詳細的寫完的了hadoop從規劃到環境安裝配置等全部內容。寫過程不是很難,最煩的可能還是要給每一步配圖,工程量確實比較大。
  • Hadoop資源管理與作業調度框架yarn剖析
    提到Hadoop,大家可能首先想到的是Hdfs存儲、mapreduce離線計算,Hadoop2.x推出yarn(Yet Another Resource Negotiator)之後,hadoop已搖身一變為資源管理與作業調度平臺,基於yarn可在hadoop集群上可運行mepreduce(離線計算
  • 大數據背景下的生態系統觀測與研究
    如何實現從小尺度到大尺度(全球)、從短期到長期的觀測,獲取全球尺度生態系統觀測數據,認知區域乃至全球生態系統動態變化規律,保護和恢復生態系統是當前生態系統觀測研究面臨的重大挑戰。國際生物學計劃(International Biological Program,1964—1974 年)的實施,逐步形成了生態學領域「大科學、大數據」理念,即通過實施大科學工程,獲取海量觀測數據,開展協同科學研究。
  • 圖解Hadoop生態系統
    【CSDN綜合編譯】雖然Hortonworks和Cloudera在Apache Hadoop統治力排行榜上分列一、二,但在整理Hadoop生態系統中,他們還只能算作初創公司,仍然可能被大鱷們扼殺或收購。 圖:Hadoop生態系統。
  • Hive數據倉庫實戰
    Hive作為大數據平臺Hadoop之上的主流應用,公司一般都是用它作為公司的數據倉庫,分布式機器學習的訓練數據和數據處理也經常用它來處理,下面介紹下它的常用功能。Hive原理和功能介紹Hive是建立在 Hadoop 上的數據倉庫基礎構架。
  • 非計算機專業也不是程式設計師怎麼學好大數據,大數據工作難找嗎?
    最近幾年大數據的各種應用和案例時常見諸報導,大數據智慧城市、大數據智慧交通、大數據智慧醫療,工業大數據、農業大數據,貴州大數據、東部大數據,大數據的發展、大數據分應用...等等相關字眼,大家平時生活中多多少少都有接觸到。既然大數據的應用領域這麼廣泛,那麼零基礎非計算機相關專業的人怎麼學習大數據呢?大數據的工作好找嗎?大數據0基礎要學習些什麼?