大數據學習的必備五大核心技術

大數據系統的技術龐大而複雜。基礎技術包括數據採集、數據預處理、分佈式存儲、NoSQL數據庫、數據倉庫、機器學習、並行計算、可視化等技術類別和不同的技術層次。首先,本文給出了一個通用的大數據處理框架,主要分爲以下幾個方面:數據採集與預處理、數據存儲、數據清洗、數據查詢分析和數據可視化。

u=1617758630,1173690512&fm=11&gp=0.jpg

一、數據採集和預處理

對於來自不同來源的數據,包括移動互聯網數據、社交網絡數據等,這些結構化和非結構化的海量數據是分散的,即所謂的數據孤島,這些數據在此時是沒有意義的。數據採集是將這些數據寫入數據倉庫,將分散的數據集成在一起,並對數據進行分析。數據採集包括文件日誌採集、數據庫日誌採集、關係數據庫訪問和應用程序訪問。當數據量較小時,可以編寫常規腳本將日誌寫入存儲系統,但隨着數據量的增長,這些方法不能提供數據安全性,且操作維護困難,需要較強的解決方案。

作爲實時日誌收集系統,Flume NG支持日誌系統中的各種類型的數據發送器來收集數據。同時,數據被簡單地處理並寫入各種數據接收器(例如文本,HDFS,Hbase等)。 。 Flume NG使用三層架構:代理層,收集器層和存儲層,每個層都可以水平擴展。代理包含Source,Channel和Sink。源用於將數據源消費(收集)到通道組件。該通道用作中間臨時存儲器以保存所有源組件信息。接收器從通道讀取數據並在成功讀取後刪除它。頻道中的信息。

NDC(NeteaseDataCanal)被翻譯成NetEase Data Canal System,它是NetEase的實時數據遷移、同步和結構化數據庫訂閱的平臺解決方案。它集成了NetEase過去在數據傳輸領域的工具和經驗,通過數據鏈接連接獨立數據庫、分佈式數據庫、OLAP系統和下游應用程序。NDC的設計除了保證數據的高效傳輸外,還遵循單元化和平臺化的設計思想。

logflash是一個開源的服務器端數據處理管道,可以同時從多個源收集數據,轉換數據,並將數據發送到您最喜愛的“存儲庫”。常用的儲存庫是彈性研究。Logflash支持多種輸入選項,可以同時從許多常用的數據源中捕獲事件,並可以方便地以連續流方式從日誌、度量、Web應用程序、數據存儲和各種aws服務中收集數據。

Sqoop使用的一種工具,用於在關係數據庫和Hadoop中的數據之間傳輸數據。可以將數據從關係數據庫(如MySQL、Oracle)導入Hadoop(如HDFS、Hive、HBase)。還可以將Hadoop(如HDFS、Hive、HBase)中的數據導入到關係數據庫(如MySQL、Oracle)中。Sqoop允許MapReduce作業(非常容錯的分佈式並行計算)執行任務。Sqoop的另一個優點是它傳輸大量結構化或半結構化數據的過程是完全自動化的。

流計算是業界的一個熱門話題。流式計算能夠實時清理、聚合和分析多個高通量數據源,能夠快速處理和反饋社交網站、新聞等中存在的數據流。目前,有很多大型數據流分析工具,如開源Strom、火花流等。

Strom集羣結構是由一個主節點(Nimbus)和多個工作節點(Supervisor)組成的主從結構。主節點是在運行時靜態指定或動態選擇的。Nimbus和Supervisor都是Storm提供的後臺守護程序。動物園管理員之間的通信與狀態更改通知和監視通知結合使用。Nimbus流程的主要職責是管理、協調和監控集羣上運行的拓撲(包括拓撲發佈、任務分配、在處理事件時重新分配任務等)。主管進程等待Nimbus分配任務以生成並監視工作者(JVM進程)以執行任務。主管和工作人員在不同的JVM上運行,如果由主管啓動的工作進程退出(或由於錯誤而退出),則主管嘗試重新生成新的工作進程。

當上遊模塊的數據用於計算、統計和分析時,可以使用消息系統,特別是分佈式消息系統。Kafka是用Scala編寫的,是一個基於發佈/訂閱的分佈式消息傳遞系統。Kafka的設計思想之一是提供離線處理和實時處理,以及將數據實時備份到另一個數據中心。卡夫卡可以讓許多生產者和消費者共享多個主題,並在主題單元中總結消息。卡夫卡發佈消息的程序稱爲生產者,也稱爲生產者,訂閱主題和消費消息的程序稱爲消費者,也稱爲消費者。當Kafka作爲一個集羣運行時,它可以由一個或多個服務組成,每個服務都稱爲代理,在此期間,生產者通過網絡向Kafka集羣發送消息,該集羣向消費者提供消息。Kafka通過ZooKeeper管理集羣配置,選舉領導者,並在消費者組發生變化時重新平衡。生產者使用推送模式將消息發佈到代理,消費者使用拉模式訂閱和使用來自代理的消息。大數據技術學習交換口裙,數字515數字269數字485。卡夫卡可以和水槽一起工作。如果需要將流數據從Kafka傳輸到Hadoop,可以使用Flume Agent,以使用Kafka作爲源。這允許您將數據從Kafka讀取到Hadoop。

動物園管理員是提供數據同步服務的分佈式、開源分佈式應用程序協調服務。其功能包括配置管理、名稱服務、分佈式鎖定和集羣管理。配置管理是指在一個地方修改配置,這樣所有對這個地方的配置感興趣的人都可以改變,消除了繁瑣的手動複製配置,同時也確保了數據的可靠性和一致性。同時可以通過名稱獲得資源或服務的地址等信息,並可以監視集羣中機器的變化,實現類似於心跳機制的功能。

二、數據存儲

Hadoop作爲一個開源框架,專爲離線和大規模數據分析而設計。HDFS作爲其核心存儲引擎,在數據存儲中得到了廣泛的應用。

HBase是一個分佈式的、面向列的開源數據庫,可以看作是HDFS的封裝,HDFS本質上是一個數據存儲和NoSQL數據庫。HBase是一個關鍵/值系統,部署在HDFS上,以克服HDFS在隨機讀寫方面的缺點。與Hadoop一樣,HBase的目標主要依靠橫向擴展,通過不斷增加廉價的商用服務器來增加計算和存儲容量。

Phoenix,相當於Java中間件,可以幫助開發工程師訪問NoSQL數據庫HBase,就像他們使用JDBC訪問關係數據庫一樣。

SILE是一種Hadoop資源管理器,可以爲上層應用提供統一的資源管理和調度。它的引入爲集羣的利用、資源的統一管理和數據共享帶來了極大的好處。SILE由以下主要組件組成:全局資源管理器ResourceManager、ResourceManager的每個節點代理NodeManager、代表每個應用程序的應用程序,以及每個ApplicationMaster在NodeManager上運行的多個容器。

Mesos是一款開源集羣管理軟件,支持Hadoop、ElasticSearch、Spark、Storm和Kafka等應用程序架構。

REDIS是一種非常快速的非關係數據庫,它可以存儲鍵和五種不同類型的值之間的映射,將存儲在內存中的鍵值對數據持久化到硬盤,並使用複製功能來擴展性能。您還可以使用客戶端碎片來擴展寫入性能。

Atlas是介於應用程序和MySQL之間的中間件。在後端數據庫中,Atlas相當於與其連接的客戶端,而前端應用程序則等同於DB。作爲服務器,Atlas與應用程序進行通信。實現了MySQL的客戶端和服務器協議,同時作爲客戶端與MySQL進行通信。它保護應用程序不受數據庫細節的影響,並維護連接池以減少MySQL負擔。啓動Atlas時,將創建多個線程,其中一個線程是主線程,其餘線程是輔助線程。主線程負責偵聽所有客戶端連接請求,輔助線程僅偵聽主線程發出的命令請求。

kudu是一個圍繞Hadoop生態系統構建的存儲引擎。kudu與Hadoop生態系統有一個共同的設計概念。它運行在普通服務器上,可以在分佈式規模上部署,並且滿足業界的高可用性要求。它的設計思想是對快速數據進行快速分析。作爲一個開源的存儲引擎,它可以提供低延遲的隨機讀寫和高效的數據分析功能。kudu不僅提供行級插入、更新和刪除API,還提供接近實木地板性能的批掃描操作。使用相同的存儲空間,不僅可以實現隨機讀寫,而且可以滿足數據分析的要求。kudu有廣泛的應用場景,如實時數據分析、數據可能發生變化的時間序列數據應用程序等等。

在數據存儲過程中,涉及的表有數千列,包括各種複雜的查詢。建議使用列存儲方法,如parquent、orc等對數據進行壓縮。拼花地板可以支持靈活的壓縮選項,大大減少了磁盤上的存儲空間。

三、數據清洗

maprect作爲hadoop的查詢引擎,用於大規模數據集的並行計算。“地圖”和“減少”是其主要思想。它極大地便利了程序員在不進行分佈式並行編程的分佈式系統中運行自己的程序。

隨着業務數據量的增加,需要進行培訓和清理的數據將變得越來越複雜。此時,需要任務調度系統(如Oozie或Azkaban)來調度和監視關鍵任務。

Oozie是面向Hadoop平臺的工作流調度引擎,它提供了RESTfulAPI接口來接受用戶提交請求(提交工作流作業)。當提交工作流時,工作流引擎負責工作流執行和狀態轉換。用戶在HDFS上部署作業(MR作業),然後提交工作流,Oozie以異步方式將作業(MR作業)提交給Hadoop。這就是爲什麼在調用Oozie的RESTful界面提交作業後立即返回JobId,並且用戶程序不必等待作業完成(因爲一些大型作業可能需要很長時間(幾個小時甚至幾天)。Oozie在後臺以異步方式將與工作流相對應的Action提交給Hadoop執行。

Azkaban也是一個工作流控制引擎,可用於解決離線計算任務(如多個hadoop或spark)之間的依賴關係。 Azkaban主要由三部分組成:關係數據庫,Azkaban Web服務器和Azkaban Executor服務器。 Azkaban將大部分狀態信息保存在MySQL中。 Azkaban Web Server提供Web UI,它是azkaban的主要管理者,包括項目管理,身份驗證,調度和工作流執行期間的監控; Azkaban Executor Server用於計劃工作流和任務,以及記錄工作流或任務的日誌。

作爲流量計算任務的處理平臺,SLOTH是NetEase第一個自主研發的流量計算平臺,旨在解決公司各種產品對流量計算日益增長的需求。作爲一種計算服務平臺,它具有易用性、實時性、可靠性等特點,爲用戶節省技術投入(開發、操作和維護),幫助用戶專注於解決產品本身的流程計算需求。

四、數據查詢分析

蜂巢的核心工作是將sql語句轉化爲mr程序,將結構化數據映射到數據庫表中,並提供hql(hellsql)查詢功能。蜂巢本身不存儲和計算數據。它完全依賴於hdfs和maprect。您可以將蜂巢理解爲一個客戶端工具,將sql操作轉換爲相應的映射減少任務,然後在hadoop上運行。蜂巢支持標準的sql語法,消除了用戶編寫地圖程序的過程。它的出現使精通sql技能但不熟悉maprect、編程能力弱、不擅長java語言的用戶可以輕鬆地使用sql語言查詢、聚合和分析hdfs大型數據集上的數據。

蜂巢是爲大數據批量處理而誕生的。Hive的出現解決了傳統關係數據庫(MySQL、Oracle)在大數據處理方面的瓶頸。Hive將執行計劃劃分爲MAP->Shuffle->Reduce->MAP->Shuffle->Reduce。一個模型。如果一個查詢被編譯成多輪MapReduce,將會有更多的中間結果。由於MapReduce執行框架本身的特點,太多的中間進程會增加整個查詢的執行時間。在運行Hive的過程中,用戶只需要創建表、導入數據和編寫SQL分析語句。該過程的其餘部分由Hive框架自動完成。

Impala是Hive的一個補充,用於實現高效的SQL查詢。利用Impala在Hadoop上實現SQL,實現對大數據的實時查詢和分析。大數據是通過熟悉的傳統關係數據庫的SQL風格進行操作的,數據也可以存儲在HDFS和HBase中。Impala不使用Slow Hive+MapReduce批處理,而是使用分佈式查詢引擎(由查詢規劃器、查詢協調器和查詢執行引擎組成),類似於商業並行關係數據庫中的查詢引擎。您可以通過SELECT、JOIN和STATISTICS函數直接從HDFS或HBASE查詢數據,從而大大減少了延遲。Impala將整個查詢劃分爲執行計劃樹,而不是一系列MapReduce任務,而Hive沒有MapReduce啓動時間。

Hive適用於長時間的批量查詢分析,而Impala適用於實時交互式SQL查詢。 Impala爲數據工作者提供了快速實驗和驗證想法的重要想法。您可以使用Hive進行數據轉換,然後使用Impala。對Hive的已處理數據集執行快速數據分析。總結:Impala將執行計劃呈現爲一個完整的執行計劃樹,可以更自然地將執行計劃分發到每個Impalad執行查詢,而無需將其組合到管道類型map-> reduce模式(如Hive)。這可確保Impala具有更好的併發性,並避免不必要的中間排序和混洗。但是,Impala不支持UDF,並且對可以處理的問題存在某些限制。

SPARK具有HadoopMapReduce的特點,它將Job中間輸出保存在內存中,因此不需要讀取HDFS。SPARK使內存分佈數據集除了提供交互式查詢外,還可以優化迭代工作負載。SPARK是用Scala語言實現的,並使用Scala作爲其應用框架。與Hadoop不同,Spark和Scala可以緊密集成,Scala可以像處理本地集合對象一樣輕鬆地操作分佈式數據集。

Nutch 是一個開源Java 實現的搜索引擎。它提供了我們運行自己的搜索引擎所需的全部工具,包括全文搜索和Web爬蟲。

Solr是一個全文搜索服務器,用於用Java編寫並運行在ApacheTomcat或Jetty等servlet容器中的獨立企業搜索應用程序。它提供了一個類似於Web服務的API接口。用戶可以向搜索引擎服務器提交特定格式的XML文件,並通過http請求生成索引。您還可以通過http GET操作發出搜索請求,並以XML格式獲取返回的結果。

ElasticSearch是一個基於Lucene搜索服務器的開源全文搜索引擎,能夠快速存儲、搜索和分析海量數據。專爲雲計算而設計,可實現實時搜索,穩定可靠,速度快,安裝使用方便。

它還涉及一些機器學習語言。例如,Mahout的主要目標是爲開發人員創建一些可擴展的機器學習算法,以便在Apache的許可下自由使用;深度學習框架Caffe和開源軟件庫,用於使用數據流圖進行數值計算。 TensorFlow等常用的機器學習算法,如貝葉斯,Logistic迴歸,決策樹,神經網絡,協同過濾等。

五、數據可視化

通過與一些BI平臺的對接,可以可視化分析得到的數據,指導決策服務。主流的商務智能助推器,如國外的敏捷商務智能平臺、Qlikview、Powrerbi、國內的smallbi和新興的網易等。

在上述各個階段,數據的安全是一個不容忽視的問題。

基於網絡身份認證的Kerberos協議用於在非安全網絡中通過安全手段對個人通信進行身份認證。它允許實體在不安全的網絡環境中通信。以安全的方式向其他實體證明您的身份。

Ranger控制權限,是Hadoop羣集權限框架,它爲操作、監視和管理提供複雜的數據權限。它提供了一種集中管理機制來管理基於紗線的Hadoop生態系統中的所有數據權限。細粒度的數據訪問控制可以在Hadoop生態系統的組件(如Hive、HBase)上執行。通過運行Ranger控制檯,管理員可以輕鬆地配置策略,以控制用戶對HDFS文件夾、HDFS文件、數據庫、表和字段權限的訪問。可以爲不同的用戶和組設置這些策略,並且可以與Hadoop無縫連接權限。

簡單地說,有三種核心技術:獲取數據、計算數據和銷售數據。

首先,由於大數據,不能得到大量的數據都是徒勞的。現在由於機器學習的興起,以及金油算法的興起,導致算法的地位下降,數據的狀態得到了改善。例如,由於教育的發展,個人智力的重要性降低了,教育背景變得更重要了,因爲一般人都能按照標準的程序閱讀一本書,這比牛頓好得多。Google說:在許多情況下,將強大的數據提供給通用算法比將愚蠢的數據提供給強大的算法要好。你知道要得到一個好的算法有多難嗎?大多數人甚至不知道有什麼困難。拿數據來說是很重要的,大數據技術學習交換口裙,199427210,熟練的女人沒有飯就很難做飯啊!那麼爲什麼很多公司都想燒錢搶入口,搶用戶,是爲了爭奪數據源啊!但是操作,和產品更注重這一點,我是一個程序員,我不在乎。

二是計算數據。如果數據是直接有價值的,那麼公司就沒有必要。政府應該直接獲利。蘋果可以看到秋天,人們牛頓可以所有的重力,我只能拿起吃,差距啊…所以有數據,可以自己找出來的。計算數據需要一個計算平臺。如何存儲數據(hdfs,s3,hbase,卡珊德拉),如何計數(hadoop,spark)取決於程旭遠……

三是,只有出售才能實現,否則就是爲了公共利益,如李思和大錘中的“疑犯追蹤”。預測未來,避免不利因素,是智能的最終目標和意義,對嗎?每個人都應該一起考慮這件事。

事實上,我認爲最後一個是“核心技術”,“星火、風暴、深度學習”是第二梯隊。當然,如果沒有強大的計算能力的支持,智能就不應該能夠談論它。

中安威士:保護核心數據,捍衛網絡安全

來源:網絡收集

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章