
大數據技術的體系龐大且復雜,基礎的技術包含數據的采集、數據預處理、分布式存儲、NoSQL數據庫、數據倉庫、機器學習、并行計算、可視化等各種技術范疇和不同的技術層面。
數據采集與預處理
對于各種來源的數據,包括移動互聯網數據、社交網絡的數據等,這些結構化和非結構化的海量數據是零散的,也就是所謂的數據孤島,此時的這些數據并沒有什么意義,數據采集就是將這些數據寫入數據倉庫中,把零散的數據整合在一起,對這些數據綜合起來進行分析。數據采集包括文件日志的采集、數據庫日志的采集、關系型數據庫的接入和應用程序的接入等。在數據量比較小的時候,可以寫個定時的腳本將日志寫入存儲系統,但隨著數據量的增長,這些方法無法提供數據安全保障,并且運維困難,需要更強壯的解決方案。
Flume NG作為實時日志收集系統,支持在日志系統中定制各類數據發送方,用于收集數據,同時,對數據進行簡單處理,并寫到各種數據接收方(比如文本,HDFS,Hbase等)。Flume NG采用的是三層架構:Agent層,Collector層和Store層,每一層均可水平拓展。其中Agent包含Source,Channel和Sink,source用來消費(收集)數據源到channel組件中,channel作為中間臨時存儲,保存所有source的組件信息,sink從channel中讀取數據,讀取成功之后會刪除channel中的信息。
NDC,Netease Data Canal,直譯為網易數據運河系統,是網易針對結構化數據庫的數據實時遷移、同步和訂閱的平臺化解決方案。它整合了網易過去在數據傳輸領域的各種工具和經驗,將單機數據庫、分布式數據庫、OLAP系統以及下游應用通過數據鏈路串在一起。除了保障高效的數據傳輸外,NDC的設計遵循了單元化和平臺化的設計哲學。
Logstash是開源的服務器端數據處理管道,能夠同時從多個來源采集數據、轉換數據,然后將數據發送到您最喜歡的“存儲庫”中。一般常用的存儲庫是Elasticsearch。Logstash支持各種輸入選擇,可以在同一時間從眾多常用的數據來源捕捉事件,能夠以連續的流式傳輸方式,輕松地從您的日志、指標、Web應用、數據存儲以及各種AWS服務采集數據。
Sqoop,用來將關系型數據庫和Hadoop中的數據進行相互轉移的工具,可以將一個關系型數據庫(例如Mysql、Oracle)中的數據導入到Hadoop(例如HDFS、Hive、Hbase)中,也可以將Hadoop(例如HDFS、Hive、Hbase)中的數據導入到關系型數據庫(例如Mysql、Oracle)中。Sqoop啟用了一個MapReduce作業(極其容錯的分布式并行計算)來執行任務。Sqoop的另一大優勢是其傳輸大量結構化或半結構化數據的過程是完全自動化的。
流式計算是行業研究的一個熱點,流式計算對多個高吞吐量的數據源進行實時的清洗、聚合和分析,可以對存在于社交網站、新聞等的數據信息流進行快速的處理并反饋,目前大數據流分析工具有很多,比如開源的strom,spark streaming等。
Strom集群結構是有一個主節點(nimbus)和多個工作節點(supervisor)組成的主從結構,主節點通過配置靜態指定或者在運行時動態選舉,nimbus與supervisor都是Storm提供的后臺守護進程,之間的通信是結合Zookeeper的狀態變更通知和監控通知來處理。nimbus進程的主要職責是管理、協調和監控集群上運行的topology(包括topology的發布、任務指派、事件處理時重新指派任務等)。supervisor進程等待nimbus分配任務后生成并監控worker(jvm進程)執行任務。supervisor與worker運行在不同的jvm上,如果由supervisor啟動的某個worker因為錯誤異常退出(或被kill掉),supervisor會嘗試重新生成新的worker進程。
當使用上游模塊的數據進行計算、統計、分析時,就可以使用消息系統,尤其是分布式消息系統。Kafka使用Scala進行編寫,是一種分布式的、基于發布/訂閱的消息系統。Kafka的設計理念之一就是同時提供離線處理和實時處理,以及將數據實時備份到另一個數據中心,Kafka可以有許多的生產者和消費者分享多個主題,將消息以topic為單位進行歸納;Kafka發布消息的程序稱為producer,也叫生產者,預訂topics并消費消息的程序稱為consumer,也叫消費者;當Kafka以集群的方式運行時,可以由一個服務或者多個服務組成,每個服務叫做一個broker,運行過程中producer通過網絡將消息發送到Kafka集群,集群向消費者提供消息。Kafka通過Zookeeper管理集群配置,選舉leader,以及在Consumer Group發生變化時進行rebalance。Producer使用push模式將消息發布到broker,Consumer使用pull模式從broker訂閱并消費消息。大數據技術學習交流kou裙,數字515數字269數字485,Kafka可以和Flume一起工作,如果需要將流式數據從Kafka轉移到hadoop,可以使用Flume代理agent,將Kafka當做一個來源source,這樣可以從Kafka讀取數據到Hadoop。
Zookeeper是一個分布式的,開放源碼的分布式應用程序協調服務,提供數據同步服務。它的作用主要有配置管理、名字服務、分布式鎖和集群管理。配置管理指的是在一個地方修改了配置,那么對這個地方的配置感興趣的所有的都可以獲得變更,省去了手動拷貝配置的繁瑣,還很好的了數據的可靠和一致性,同時它可以通過名字來獲取資源或者服務的地址等信息,可以監控集群中機器的變化,實現了類似于心跳機制的功能。
以上就是關于“大數據學習必須掌握的數據采集與預處理核心技術”的內容介紹,希望對大家學習有所幫助。想要了解更多大數據學習培訓相關資訊歡迎來咨詢。