從零搭建企業大數據分析和機器學習平臺-技術棧介紹(三)

来源:https://www.cnblogs.com/qingmiaokeji/archive/2019/09/05/11463096.html
-Advertisement-
Play Games

數據傳輸和採集 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


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • MySQL學習——約束 摘要:本文主要學習了資料庫的約束。 primary key(主鍵) 定義 主鍵約束是一個列或者多個列,其值能唯一地標識表中的每一行。這樣的一列或多列稱為表的主鍵,通過它可以強製表的實體完整性。 主鍵約束相當於唯一約束和非空約束的組合,主鍵約束列不允許重覆,也不允許出現空值。 ...
  • 與python交互之前我們需要安裝一個MySQL的驅動模塊Connector,這個驅動模塊直接在cmd命令行輸入 安裝是否成功可以接著輸入 進入自己的編輯器(pycharm)首先連接資料庫方式: 資料庫連接 1、當前模塊直接連接 2、導入配置文件進行連接 游標 游標的作用是執行sql語句,或者保存s ...
  • 【作者】 王棟:攜程技術保障中心資料庫專家,對資料庫疑難問題的排查和資料庫自動化智能化運維工具的開發有強烈的興趣。 【問題描述】 最近碰到有台MySQL實例出現了MySQL服務短暫hang死,表現為瞬間的併發線程上升,連接數暴增。 排查Error Log文件中有page_cleaner超時的信息,引 ...
  • 一、簡介 在提交大數據作業到集群上運行時,通常需要先將項目打成 JAR 包。這裡以 Maven 為例,常用打包方式如下: 不加任何插件,直接使用 mvn package 打包; 使用 maven assembly plugin 插件; 使用 maven shade plugin 插件; 使用 mav ...
  • Application管理 YARN中,Application是指應用程式,他可能啟動多個運行實例,每個運行實例由一個ApplicationMaster與一組該ApplicationMaster啟動的任務組成,他擁有名稱、隊列名、優先順序等屬性,是一個比較寬泛的概念,可以是一個MapReduce作業、 ...
  • SQL語句的概述 SQL語言的分類 數據定義語言(Data Definition Language)主要用於修改、創建和刪除資料庫對象,其中包括CREATE ALTER DROP語句。 數據查詢語言(Data Query Language)主要用於查詢資料庫中的數據,其主要是SELECT語句,SEL ...
  • MongoDB 更類似 MySQL,支持欄位索引、游標操作,其優勢在於查詢功能比較強大,擅長查詢 JSON 數據,能存儲海量數據,但是不支持事務。 Redis 是一個開源(BSD許可)的,記憶體中的數據結構存儲系統,支持多種類型的數據結構,可用作資料庫,高速緩存和消息隊列代理。 1、記憶體管理機制 Re ...
  • 確保埠與服務正常。 如果都正常,那麼服務有可能沒有添加遠程訪問。 本人鏈接報錯10060,那麼問題出在阿裡雲的主機預設不開放3306埠,那麼在安全組策略中加入對應的埠 登錄後輸入 use mysql,選擇使用mysql資料庫,因為修改遠程連接的基本信息保存在mysql資料庫中,所以使用mysq ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...