數據傳輸和採集 Sqoop數據傳輸工具 實際項目開發中,往往很多業務數據是存放在關係型資料庫中,如 MySQL資料庫。我們需要將這些數據集中到數據倉庫中進行管理,便於使用計算模型進行統計、挖掘這類操作。 Sqoop是Apache軟體基金會的⼀一款頂級開源數據傳輸工具,用於在 Hadoop與關係型數據 ...
數據傳輸和採集
Sqoop數據傳輸工具
實際項目開發中,往往很多業務數據是存放在關係型資料庫中,如 MySQL資料庫。我們需要將這些數據集中到數據倉庫中進行管理,便於使用計算模型進行統計、挖掘這類操作。
Sqoop是Apache軟體基金會的⼀一款頂級開源數據傳輸工具,用於在 Hadoop與關係型資料庫(如MySQL、Oracle、PostgreSQL等)之間進 行數據傳遞。它可以將關係型數據中的數據導⼊入到Hadoop的分散式文件 系統(HDFS)中,也可以將分散式文件系統(HDFS)中的數據導出到 關係型資料庫中。
Flume日誌收集工具
在實際項目中,有些源數據是以gz壓縮格式存儲在磁碟⽬目錄上,並非存儲 在資料庫中。如需將這類源數據存儲到分散式⽂文件系統(HDFS)上,可 以藉助Flume這款Apache頂級的日誌收集工具來完成。
Flume是⼀一個分散式、高可用、高可靠的系統,它能將不同的海量數據源收 集、傳輸、存儲到一個數據存儲系統中,如分散式⽂文件系統(HDFS)、發 布訂閱消息系統(Kafka)。
Kafka分散式消息隊列
Apache Kafka(http://kafka.apache.org)是LinkedIn公司設計和開發 的⾼高吞吐量的分散式發佈訂閱消息系統,其內在設計就是分散式的,具有良好的可擴展性。Kafka的創造者們在使⽤用 之前的一些消息中間件時,發現如果嚴格遵循JMS的規範,雖然消息投遞的成功率非常之高,但是會增加不少額外的消耗,例如JMS所需的沉重消息頭,以及維護各種索引結構的開銷等。最終導致系統性能很難有 進一步的突破,不太適合海量數據的應用。因此,他們並沒有完全按照 JMS的規範來設計Kafka,而是對⼀一些原有的定義做了簡化,大幅提升了了處理性能,同時對傳送成功率也有一定的保證。總體看來,Kafka有 如下特性。
高性能存儲:通過特別設計的磁碟數據結構,保證時間複雜度為 O(1)的消息持久化,這樣數以TB的消息存儲也能夠保持良好的穩定 性能。此外,被保存的消息可以多次被消費,用於商務智能ETL和其他 一些實時應⽤用程式。
天生分散式:Kafka被設計為一個分散式系統,它利用ZooKeeper來管理多個代理(Broker),支持負載均衡和副本機制,易於橫向地擴 展。ZooKeeper旨在構建可靠的、分散式的數據結構,這裡用於管理和協調Kafka代理。當系統中新增了代理,或者某個代理故障失效時, ZooKeeper服務會通知生產者和消費者,讓它們據此開始與其他代理協調工作。
高吞吐量:由於存儲性能的大幅提升,以及良好的橫向擴展性,因此即使是非常普通的硬體Kafka也可以支持每秒數十萬的消息流,同時為發佈和訂閱提供驚人的吞吐量。
無狀態代理:與其他消息系統不同,Kafka代理是無狀態的。代理不會記錄消息被消費的狀態,而是需要消費者各自維護。
主題(Topic)和分區(Partition):支持通過Kafka伺服器和消費機集群來分區消息。一個主題可以認為是一類消息,而每個主題可以分成多個分區。通過分區,可以將數據分散到多個伺服器上,避免達到單機瓶頸。更多的分區意味著可以容納更多的消費者,有效提升併發消費的能力。基於副本方案,還能夠對多個分區進行備份和調度。
消費者分組(Consumer Group)
數據存儲
Hbase分散式Nosql資料庫
在大規模的數據集中,考慮數據存儲的高可用性、高吞吐量、半結構 化的數據、高效的查詢性能等因素,一般的資料庫很難滿⾜足需求。有需求自然會有解決方案,HBase的誕生很好地彌補了這個缺陷。
HBase是⼀一個分散式的、面向列的開源非關係型資料庫(NoSQL), 和Google的BigTable能力類似。HBase和一般的關係型資料庫不同,它適合於存儲非結構化的數據。 提示:BigTable是Google設計的分散式數據存儲系統,⽤用來處理海量數據的⼀一種⾮非關係型的資料庫(NoSQL)。 HBase擁有高可用性、高性能、面向列存儲、可拓展等特性。利用 HBase的這些特性,可以在廉價的伺服器上搭建⼀一套大規模的存儲集群。
應用場景:
數據量大,並且訪問需要滿足隨機、快速響應的需要。
需要滿足動態擴容的需要。
不需要滿足關係型資料庫中的特性(如事務、連接、交叉表)。
寫數據時,需要擁有高吞吐的能力。
Hdfs分散式文件系統
HDFS(Hadoop Distributed File System),作為Google File System(GFS)的實現,是Hadoop項目的核心子項目,是分散式計算中數據存儲管理的基礎,是基於流數據模式訪問和處理超大文件的需求而開發的,可以運行於廉價的商用伺服器上。它所具有的高容錯、高可靠性、高可擴展性、高獲得性、高吞吐率等特征為海量數據提供了不怕故障的存儲,為超大數據集(Large Data Set)的應用處理帶來了很多便利。
大數據處理
Hadoop
Hadoop是一個由Apache基金會所開發的分散式系統基礎架構,它可以使用戶在不瞭解分散式底層細節的情況下開發分散式程式,充分利用集群的威力進行高速運算和存儲。 從其定義就可以發現,它解決了兩大問題:大數據存儲、大也就是 Hadoop的兩大核心:HDFS和MapReduce。
今的Hadoop系統已經可以讓使用者輕鬆地架構分散式存儲平臺了,開發和運行大規模的數據處理應用,其主要優勢如下。
透明性:使用者可以在不瞭解Hadoop分散式底層細節的情況下,開發分散式程式,充分利用集群的威力進行高速運算和存儲。
高擴展性:擴展分為縱向擴展和橫向擴展,縱向擴展將增加單機的資源,總會達到瓶頸;而橫向將增加集群中的機器數量,獲得近似線性增加的性能,不容易達到瓶頸。Hadoop集群中的節點資源,採用的就是橫向方式,可以方便地進行擴充,並獲得顯著的性能提升。
高效性:由於採用了多個資源並行處理,使得Hadoop不再受限於單機操作(特別是較慢的磁碟I/O讀寫),可以快速地完成大規模的任務。加上其所具有的可擴展性,隨著硬體資源的增加,性能將會得到進⼀一步的提升。
高容錯和高可靠性:Hadoop中的數據都有多處備份,如果數據發生丟失或損壞,能夠自動從其他副本(Replication)進行複原。同理,失敗的計算任務也可以分配到新的資源節點,進行自動重試。
低成本:正是因為Hadoop有良好的擴展性和容錯性,所以沒有必要再為其添置昂貴的⾼高端伺服器。廉價的硬體,甚⾄至是個人電腦都可以成為資源節點。 HDFS(Hadoop Distributed File System)是可擴展、容錯、高性能的分散式文件系統,非同步複製,一次寫入多次讀取,主要負責存儲。
Spark
Spark是由加州大學伯克利分校AMP實驗室開源的分散式大規模數據處理通用引擎,具有高吞吐、低延時、通用易擴展、高容錯等特點。 Spark內部提供了豐富的開發庫,集成了數據分析引擎Spark SQL、圖 計算框架GraphX、機器學習庫MLlib、流計算引擎Spark Streaming。 Spark在函數式編程語⾔言Scala中實現,提供了豐富的開發API,支持 Scala、Java、Python、R等多種開發語言。同時,Spark提供了多種運行模式,既可以採用獨立部署的方式運行,也可以依托Hadoop YARN、Apache Mesos等資源管理器調度任務運行。目前,Spark已經在金融、交通、醫療、氣象等多種領域中廣泛使用。
數據查詢分析工具
Apache Hive
Apache Hive是建立在Hadoop上的數據倉庫,它提供了一系列工具,可 以用來查詢和分析數據。Hive提供了執行SQL的介面,⽤用於操作存儲在 Hadoop分散式文件系統(HDFS)中的數據。
Hive可以將結構化的數據文件映射成為一張資料庫表,並且提供了便捷 的SQL查詢功能,開發者可以通過SQL語句將實現的業務功能轉化為 MapReduce任務來運行。 Hive的學習成本較低,可以通過類SQL語句快速實現MapReduce統計任務,所以開發者不必開發專門的MapReudce應用,十分適合做數據倉庫 的統計工作。 Hive定義了了類SQL的查詢語句,稱為HQL或者Hive SQL。它允許用戶通 過編寫SQL語句來實現查詢、統計、表數據遷移等功能。同時,也允許 熟悉MapReduce的開發者編寫自定義的Mapper和Reducer來實現複雜的 需求。 Hive數據倉庫是構建在Hadoop的分散式文件系統(HDFS)之上,而 Hive底層的設計是通過MapReduce計算框架來執行用戶提交的任務。因為MapReduce計算框架底層設計的原因,所以在操作數據倉庫(Hive) 時具有較高的延時,並且在提交作業(Job)和調度(Scheduler)時需要大量的資源開銷,因而Hive比較適合處理離線數據,如聯機分析處理(OLAP)。
Pig、Impala和Spark SQL
除了Hive以外,還有一些其他的選擇,可幫助用戶更容易地使用 Hadoop中存放的數據,這裡先簡單闡述一下Pig、Impala和Spark SQL。從Hive的介紹中大家不難發現,要使用該工具,需要對類 SQL語言有比較深入的認識。然⽽而有些開發者,雖然對SQL不甚理解,但是擅於MapReduce的編程。那麼,對於這些人群而言是否有工具能夠提升他們的生產效率呢?Pig(http://pig.apache.org)就是在這樣的背景下應運而生的,它也是Apache旗下的開源項目。很多時候數據的處理需要多個MapReduce過程才能實現,數據處理過程與可能的數據轉換也可能很困難。而Pig 為大型數據集的處理提供了更高層次的抽象,以及更豐富的數據結構。從抽象層次來看,它提供了腳本語⾔言Pig Latin,該語言的編譯 器會將數據分析請求轉換成一系列經過優化處理的MapReduce運算,可以認為是SQL的一個面向過程的簡化版本。其中,一條語句就是一個操作,與資料庫的表類似。同時,Pig還擁有大量的數據類型,不僅支持包、元組和映射等高級概念,還支持簡單的數據類型。Pig的比較運算符也相對完整,包括使用正則表達式的豐富匹配 模式。因此,有了Pig,用戶不一定需要懂得SQL的語法和含義也能控制MapReduce的作業,同時又能簡化MapReduce的開發和不同的數據之間的轉換。
另一個執行於現有Hadoop基礎設施上的互動SQL查詢引擎是 Impala,它是Cloudera公司主導開發的查詢系統。類似Apache Hive,Impala也能通過類SQL的語言查詢存儲在HDFS和HBase中的PB級大數據。不過,Impala考慮了實時性更強的需求,在設計上和Hive有所不同。Hive採用 的方法是SQL查詢轉化成MapReduce任務,這仍然是一個 批處理過程,故而難以滿足查詢的交互性。相比之下,Impala 的速度之快就成了它的一大特色。為了實現這一點,Impala參考了Google的互動式數據分析系統Dremel。Impala使用 Parquet實現了列存儲,並借鑒了MPP並行資料庫的思想。同 時,它採用HiveQL和JDBC等介面,進行全局統一的元數據存儲和讀取。對於用戶查詢則是直接進行分散式處理,在HDFS 或HBase上本地讀寫,因此具有良好的擴展性和容錯性。此 外,由於放棄了MapReduce的運行框架,它也沒有 MapReduce作業啟動、洗牌、排序等開銷,無須將中間結果 寫入磁碟,節省了大量的I/O開銷,也降低了網路傳輸的數據量。當然,Impala並不是用來取代現有的MapReduce框架的,而是作為MapReduce的一個強力補充。一般而言, Impala更適合處理輸出數據較小的查詢請求,而對於大數據量 的批處理任務,MapReduce依然是更好的選擇。有理由相信在不久的未來,藉助處理速度上的優勢,Impala可以在大數據 處理領域占得一席之地
機器學習
Mahout
Apache Mahout的主要目標是建立可伸縮的機器學習演算法。這種可伸縮性是針對大規模的數據集而言的。Apache Mahout的演算法運行在Apache Hadoop平臺下,它通過MapReduce模式實現。但是, Apache Mahout並不嚴格要求演算法的實現要基於Hadoop平臺,單個節點或非Hadoop平臺也可以。Apache Mahout核心庫的非分散式演算法也具有良好的性能。
Apache Mahout是 Apache Software Foundation (ASF)旗下的一個開源項目,提供了一些經典的機器學習演算法,旨 在幫助開發人員更加方便快捷地創建智能應用程式。該項目已經發展到了它的第三個年頭,有了三個公共發行版本。Apache Mahout項目包含聚類、分類、推薦引擎、頻繁子項挖掘。
Spark mllib
MLlib是Spark的機器學習(ML)庫。旨在簡化機器學習的工程實踐工作,並方便擴展到更大規模。MLlib由一些通用的學習演算法和工具組成,包括分類、回歸、聚類、協同過濾、降維等,同時還包括底層的優化原語和高層的管道API。
其他工具
大數據平臺CDH(一站式打包)
Cloudera版本(Cloudera’s Distribution Including Apache Hadoop,簡稱“CDH”),基於Web的用戶界面,支持大多數Hadoop組件,包括HDFS、MapReduce、Hive、Pig、 Hbase、Zookeeper、Sqoop,簡化了大數據平臺的安裝、使用難度。
Hue hadoop可視化操作
Hue是一個開源的Apache Hadoop UI系統,最早是由Cloudera Desktop演化而來,由Cloudera貢獻給開源社區,它是基於Python Web框架Django實現的。通過使用Hue我們可以在瀏覽器端的Web控制臺上與Hadoop集群進行交互來分析處理數據,例如操作HDFS上的數據,運行MapReduce Job等等Hue所支持的功能特性集合:
預設基於輕量級sqlite資料庫管理會話數據,用戶認證和授權,可以自定義為MySQL、Postgresql,以及Oracle
基於文件瀏覽器(File Browser)訪問HDFS
基於Hive編輯器來開發和運行Hive查詢
支持基於Solr進行搜索的應用,並提供可視化的數據視圖,以及儀錶板(Dashboard)
支持基於Impala的應用進行互動式查詢
支持Spark編輯器和儀錶板(Dashboard)
支持Pig編輯器,並能夠提交腳本任務
支持Oozie編輯器,可以通過儀錶板提交和監控Workflow、Coordinator和Bundle
支持HBase瀏覽器,能夠可視化數據、查詢數據、修改HBase表
支持Metastore瀏覽器,可以訪問Hive的元數據,以及HCatalog
支持Job瀏覽器,能夠訪問MapReduce Job(MR1/MR2-YARN)
支持Job設計器,能夠創建MapReduce/Streaming/Java Job
支持Sqoop 2編輯器和儀錶板(Dashboard)
支持ZooKeeper瀏覽器和編輯器
支持MySql、PostGresql、Sqlite和Oracle資料庫查詢編輯器
————————————————
版權聲明:本文為CSDN博主「有理想的iter」的原創文章,遵循 CC 4.0 BY-SA 版權協議,轉載請附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/huangmingleiluo/article/details/100523815