1. 大數據怎麼採集
主要有以下幾種方式:
一、線上交互數據採集。
通過容易傳播的在線活動或者類公益互動等形式,在與用戶產生交互的過程中實現數據的採集,這種方式的數據採集成本比較低,速度比較快,范圍比較廣
二、瀏覽器頁面採集。
主要是收集網頁頁面的瀏覽日誌(PV/UV等)和交互日誌數據。
三、客戶端日誌採集。
是指通過自有的APP客戶端進行數據採集,在項目開發過程中寫入數據統計的代碼,用於APP客戶端的數據採集。
四、資料庫同步數據採集。
是指直接將資料庫進行交互同步,進而實現數據採集,這種方式的優勢是數據來源大而全,根據同步的方式 可以分為:
直接數據源同步
生成數據文件同步
資料庫日誌同步
2. 大數據採集的方法
大數據的採集方法
1)資料庫採集
Redis、MongoDB和HBase等NoSQL資料庫常用於數據的採集。企業通過在採集端部署大量資料庫,並在這些資料庫之間進行負載均衡和分片,來完成大數據採集工作。
2)系統日誌採集
系統日誌採集主要是手機公司業務平台日常產生的大量日誌數據,供離線和在線的大數據分析系統使用。高可用性、高可靠性、可擴展性是日誌收集系統所具有的基本特徵。系統日誌採集工具均採用分布式架構,能夠滿足每秒數百MB的日誌數據採集和傳輸需求。
3)網路數據採集
網路數據採集是指通過網路爬蟲或網站公開API等方式從網站上獲取數據信息的過程。
4)感知設備數據採集
感知設備數據採集是指通過感測器、攝像頭和其他智能終端自動採集信號、圖片或錄像來獲取數據。
3. 一個典型的大數據解決方案,包含哪些組件
首先,一個典型的大數據解決方案,也就是大數據系統平台的構建,涉及到多個層次,數據採集和傳輸、數據存儲、數據計算、資源管理、任務調度等,每個流程階段當中,都有多個組件可選擇,關鍵是要能夠滿足實際的需求。
簡單舉例說明一下典型的一些組件:
文件存儲:Hadoop HDFS
離線計算:Hadoop MapRece、Spark
流式、實時計算:Storm、Spark Streaming
K-V、NOSQL資料庫:HBase、Redis、MongoDB
資源管理:YARN、Mesos
日誌收集:Flume、Scribe、Logstash、Kibana
消息系統:Kafka、StormMQ、ZeroMQ、RabbitMQ
查詢分析:Hive、Impala、Presto、Phoenix、SparkSQL、Flink、Kylin、Druid
分布式協調服務:Zookeeper
集群管理與監控:Ambari、Ganglia、Nagios、Cloudera Manager
數據挖掘、機器學習:Mahout、Spark MLLib
數據同步:Sqoop
任務調度:Oozie
4. 大數據中的日誌數據包括哪些
日誌數據的類型包括:1.錯誤日誌(errorlog);2.慢查詢日誌(slow query log) ;3.一般查詢日誌(general log);4.二進制日誌(binlog);5.中繼日誌(relay log);。
日誌一般分成Undo與Redo:Undo一般用於事務的取消與回滾,記錄的是數據被修改前的值;Redo一般用於恢復已確認但未寫入資料庫的數據,記錄的是數據修改後的值。例如:資料庫忽然斷電重啟,資料庫啟動時一般要做一致性檢查,會把已寫到Redo的數據但未寫入資料庫的數據重做一遍。
大數據以容量大、類型多、存取速度快、應用價值高為主要特徵的數據集合,最早應用於IT行業,目前正快速發展為對數量巨大、來源分散、格式多樣的數據進行採集、存儲和關聯分析,從中發現新知識、創造新價值、提升新能力的新一代信息技術和服務業態。大數據必須採用分布式架構,對海量數據進行分布式數據挖掘,因此必須依託雲計算的分布式處理、分布式資料庫和雲存儲、虛擬化技術。
5. 大數據怎麼採集數據
數據採集是所有數據系統必不可少的,隨著大數據越來越被重視,數據採集的挑戰也變的尤為突出。我們今天就來看看大數據技術在數據採集方面採用了哪些方法:
1、離線採集:工具:ETL;在數據倉庫的語境下,ETL基本上就是數據採集的代表,包括數據的提取(Extract)、轉換(Transform)和載入(Load)。在轉換的過程中,需要針對具體的業務場景對數據進行治理,例如進行非法數據監測與過濾、格式轉換與數據規范化、數據替換、保證數據完整性等。
2、實時採集:工具:Flume/Kafka;實時採集主要用在考慮流處理的業務場景,比如,用於記錄數據源的執行的各種操作活動,比如網路監控的流量管理、金融應用的股票記賬和 web 伺服器記錄的用戶訪問行為。在流處理場景,數據採集會成為Kafka的消費者,就像一個水壩一般將上游源源不斷的數據攔截住,然後根據業務場景做對應的處理(例如去重、去噪、中間計算等),之後再寫入到對應的數據存儲中。這個過程類似傳統的ETL,但它是流式的處理方式,而非定時的批處理Job,些工具均採用分布式架構,能滿足每秒數百MB的日誌數據採集和傳輸需求。
3、互聯網採集:工具:Crawler, DPI等;Scribe是Facebook開發的數據(日誌)收集系統。又被稱為網頁蜘蛛,網路機器人,是一種按照一定的規則,自動地抓取萬維網信息的程序或者腳本,它支持圖片、音頻、視頻等文件或附件的採集。爬蟲除了網路中包含的內容之外,對於網路流量的採集可以使用DPI或DFI等帶寬管理技術進行處理。
4、其他數據採集方法對於企業生產經營數據上的客戶數據,財務數據等保密性要求較高的數據,可以通過與數據技術服務商合作,使用特定系統介面等相關方式採集數據。比如八度雲計算的數企BDSaaS,無論是數據採集技術、BI數據分析,還是數據的安全性和保密性,都做得很好。數據的採集是挖掘數據價值的第一步,當數據量越來越大時,可提取出來的有用數據必然也就更多。只要善用數據化處理平台,便能夠保證數據分析結果的有效性,助力企業實現數據驅動。
6. 基於大數據審計的信息安全日誌分析法
雜訊數據隨著經濟和信息技術的不斷發展,許多企業開始引入了ERP等系統,這些系統使得企業的眾多活動數據可以實時記錄,形成了大量有關企業經營管理的數據倉庫。從這些海量數據中獲取有用的審計數據是目前計算機審計的一個應用。接下來我為你帶來基於大數據審計的信息安全日誌分析法,希望對你有幫助。
大數據信息安全日誌審計分析方法
1.海量數據採集。
大數據採集過程的主要特點和挑戰是並發數高,因此採集數據量較大時,分析平台的接收性能也將面臨較大挑戰。大數據審計平台可採用大數據收集技術對各種類型的數據進行統一採集,使用一定的壓縮及加密演算法,在保證用戶數據隱私性及完整性的前提下,可以進行帶寬控制。
2.數據預處理。
在大數據環境下對採集到的海量數據進行有效分析,需要對各種數據進行分類,並按照一定的標准進行歸一化,且對數據進行一些簡單的清洗和預處理工作。對於海量數據的預處理,大數據審計平台採用新的技術架構,使用基於大數據集群的分布式計算框架,同時結合基於大數據集群的復雜事件處理流程作為實時規則分析引擎,從而能夠高效並行地運行多種規則,並能夠實時檢測異常事件。
3.統計及分析。
按照數據分析的實時性,分為實時數據分析和離線數據分析。大數據平台在數據預處理時使用的分布式計算框架Storm就非常適合對海量數據進行實時的統計計算,並能夠快速反饋統計結果。Storm框架利用嚴格且高效的事件處理流程保證運算時數據的准確性,並提供多種實時統計介面以使用。
4.數據挖掘。
數據挖掘是在沒有明確假設的前提下去挖掘信息、發現知識,所以它所得到的信息具有未知、有效、實用三個特徵。與傳統統計及分析過程不同的是,大數據環境下的數據挖掘一般沒有預先設定好的主題,主要是在現有數據上面進行基於各種演算法的計算,從而起到預測的效果,並進一步實現一些高級別數據分析的需求。
大數據分析信息安全日誌的解決方案
統一日誌審計與安全大數據分析平台能夠實時不間斷地將用戶網路中來自不同廠商的安全設備、網路設備、主機、操作系統、資料庫系統、用戶業務系統的日誌和警報等信息匯集到管理中心,實現全網綜合安全審計;同時藉助大數據分析和挖掘技術,通過各種模型場景發現各種網路行為、用戶異常訪問和操作行為。
1.系統平台架構。
以國內某大數據安全分析系統為例,其架構包括大數據採集平台、未知威脅感知系統、分布式實時計算系統(Storm)、復雜事件處理引擎(Esper)、Hadoop平台、分布式文件系統(HDFS)、分布式列資料庫(Hbase)、分布式並行計算框架(Map/Rece、Spark)、數據倉庫(Hive)、分布式全文搜索引擎(ElasticSearch)、科學計算系統(Euler)。這些技術能夠解決用戶對海量事件的採集、處理、分析、挖掘和存儲的需求。
如圖1所示,系統能夠實時地對採集到的不同類型的信息進行歸一化和實時關聯分析,通過統一的控制台界面進行實時、可視化的呈現,協助安全管理人員迅速准確地識別安全事件,提高工作效率。
2.實現功能。
系統能夠實現的功能包括:審計范圍覆蓋網路環境中的全部網路設備、安全設備、伺服器、資料庫、中間件、應用系統,覆蓋200多種設備和應用中的上萬類日誌,快速支持用戶業務系統日誌審計;系統收集企業和組織中的所有安全日誌和告警信息,通過歸一化和智能日誌關聯分析引擎,協助用戶准確、快速地識別安全事故;通過系統的'安全事件並及時做出安全響應操作,為用戶的網路環境安全提供保障;通過已經審計到的各種審計對象日誌,重建一段時間內可疑的事件序列,分析路徑,幫助安全分析人員快速發現源;整個Hadoop的體系結構主要通過分布式文件系統(HDFS)來實現對分布式存儲的底層支持。
3.應用場景。
上述系統可解決傳統日誌審計無法實現的日誌關聯分析和智能定位功能。如在企業的網路系統中,大范圍分布的網路設備、安全設備、伺服器等實時產生的日誌量非常大,要從其中提取想要的信息非常困難,而要從設備之間的關聯來判斷設備故障也將是一大難點。例如,某企業定位某設備與周圍直連設備的日誌消息相關聯起來判斷該設備是否存在異常或故障,如對於其中一台核心交換機SW1,與之直連的所有設備如果相繼報介面down的日誌,則可定位該設備SWl為故障設備,此時應及時做出響應。而傳統數據難以通過周圍設備的關聯告警來定位該故障,大數據審計平台則是最好的解決方法。
大數據分析方法可以利用實體關聯分析、地理空間分析和數據統計分析等技術來分析實體之間的關系,並利用相關的結構化和非結構化的信息來檢測非法活動。對於集中存儲起來的海量信息,可以讓審計人員藉助歷史分析工具對日誌進行深度挖掘、調查取證、證據保全。
7. 支付行業日誌大數據分析案例解讀
支付行業日誌大數據分析案例解讀
伴隨新的支付方式出現,近年來移動支付蓬勃發展,如何分析、利用海量交易數據,已成為當前支付企業面對的巨大難題。日誌作為數據的載體,蘊含著豐富的信息,傳統的日誌分析方式低效而固化,無法應對數據體量大、格式不統一、增長速度快的現狀,在交易出現異常及失敗時,更難以滿足實時處理、快速響應的需求。
本文講述某支付公司採用日誌易後,通過日誌大數據實現業務深度分析及風險控制的實踐經驗。
本次分享結合企業自身對支付行業的理解,將支付行業的需求總結為以下三點:
一、監管合規
1、人民銀行對支付機構的日誌審計和安全合規規定;
2、開發訪問日誌的許可權管理。
二、安全性
安全是支付公司非常重視的,安全風險有時會引起一些輿論導向,比如某些金融機構案件被媒體標注為特別關注;某某支付公司發現了資金線的問題,消費者的錢不知去向等,這些都是一個社會的關注的焦點。結合市場風險及大環境,支付行業的安全性需求具體表現在:
1、支付交易的安全性要求;
2、數據訪問的安全性要求;
3、防止敏感信息的泄露等。
對支付行業來說,日誌易產品在數據訪問、許可權要求等方面體現出很好的應用價值。
三、可靠性
1、定位及解決問題的時效性;
2、系統流程的可靠性。
眾多支付公司,當前做的產品主要針對新興支付行業,特別是當前較熱門的移動支付。那麼移動支付的優勢在哪裡?最主要的是便捷,而便捷的基礎就是時效性強,可靠性高。為了更好發揮移動支付的便捷,支付公司對時效性,可靠性的要求很高,而這才是使用日誌易大數據分析平台的深層次原因,日誌易幫支付公司解決了最根本的行業需求,在可靠性方面展現了產品的價值。
支付公司日常業務方面的需求,涉及到以下場景:
1、多種不同的訪問失敗類型進行分類;
2、每天需要做應答碼的統計排名、佔比以及走勢圖;
3、每個分類統計結果在一張圖分別展示每個應答碼趨勢;
4、統計當日支付失敗數量並分析;
5、需要導出訪問失敗類型的匯總統計表;
6、成功交易佔比分析。
該公司原有的解決方案存在一定的局限性,比如:手動工作耗時量大、實時性差、人為造成失誤、分析維度不能靈活變動及決策滯後等等。
支付公司有時會根據業務需要,對數據進行收集、清理,包括日誌數據的清理等。當人為參與數據操作過多時,會引起部分意想不到的失誤,從而引發問題。另外一點就是,原有方案實時性差,會導致公司的很多業務流程優化非常滯後。支付行業IT人都知道,支付的維度是非常非常多的,做任何一筆支付,基礎維度包括時間、金額、筆數等,還會有像交易地點、客戶習性或者說需要根據支付數據研究客戶的習性等等。一家支付公司不可能單純做一個支付產品,所以支付產品包羅萬象,聚合起來維度就更為復雜。
面對支付企業眾多需求和行業的原有解決方案的短板,客戶選擇部署日誌易產品後,實現了如下功能:
1、各交易系統中每筆交易的狀態等信息,按時間戳歸類進行分析統計、實時報表展示;
2、根據日誌易實時統計的多個維度的報表、圖表,更准確的做出故障點判斷;
3、決策層更直觀的看到每天、每周、每種交易類型的故障高峰期及故障問題分布。
該支付公司使用日誌易產品實現的解決方案及一些需求:
1、產品角度來說,第一就是優化,充分滿足客戶需求,提升用戶體驗,第二是產品分析,第三是數字營銷方面的.要求;
2、從業務流程的角度或者說從合規角度來說,第一就是我們的業務流程分析,第二是後續的設備性能管理方面的要求。第三是合規方面的要求,最後是運維系統的預防性維護工作;
3、從日誌易的數據收集角度來說,產品可以從支付公司的業務數據,也就是從交易數據抽取,然後可以從運維方面的IT數據、安全數據抽取,甚至可以從物聯網去抽取一些數據。
電子支付如今已滲透入網購、轉賬、生活繳費、基金債券等居民的日常生活中,關系著國家經濟及居民的生活質量,可謂任重而道遠。日誌易作為國內首家海量日誌分析企業,一直致力於開發一款配置方便、功能強大的日誌管理工具,以高品質的產品為金融行業用戶信息化建設搭建高可靠平台,共同面對數字浪潮中更多的未知與挑戰,實現支付企業對日誌分析管理產品高效、實時、安全的需求。
;8. 如何通過flume將設備日誌採集入大數據平台
大數據時代,誰掌握了足夠的數據,誰就有可能掌握未來,而其中的數據採集就是將來的流動資產積累。
幾乎任何規模企業,每時每刻也都在產生大量的數據,但這些數據如何歸集、提煉始終是一個困擾。而大數據技術的意義確實不在於掌握規模龐大的數據信息,而在於對這些數據進行智能處理,從中分析和挖掘出有價值的信息,但前提是如何獲取大量有價值的數據。
在最近的工作當中,本人剛好實現了運用大數據技術分析網站訪問日誌的方案,整個方案包括對網站日誌的採集、清洗、存儲和統計分析,計劃通過幾篇文章將技術實現細節分享出來,以期引起更多的思考和討論。
網站訪問日誌介紹
相信很多做過網站管理的人對網站訪問日誌(Access Log)應該不會陌生,現在主流的網站伺服器(如apache,tomcat,ngxin等)都支持將日誌數據記錄到伺服器的日誌文件中。
網站的訪問日誌中記錄了很多有用的信息,比如正常用戶的訪問足跡、惡意搗亂的足跡、用戶的入站方式、出站頁面等等信息。對以上信息匯總分類後,可以得到更有價值的東西,比如可以得到搜索引擎的抓取頻率和來訪時間段、可以得到哪些頁面是用戶熱搜的等等。
首先看一個訪問日誌的例子:
10.52.10.49 - - [17/Sep/2014:11:34:21 +0800] "GET /webapp HTTP/1.1" 302 - "-" "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/37.0.2062.120 Safari/537.36"
這是一個combined格式的訪問日誌,裡面記錄了用戶的訪問ip、時間、訪問地址、來源地址等。如要了解具體的格式說明,請查看相關資料。
日誌採集存儲方案
對於一個比較活躍的網站來說,訪問日誌將會是一個海量的數據,考慮到網站日誌更新頻繁、和海量數據的特點,我選擇了Flume + HBase的採集和存儲方案。
Flume
Flume最早是Cloudera提供的日誌收集系統,目前是Apache下的一個項目,Flume支持在日誌系統中定製各類數據發送方,用於收集數據。
Flume提供對數據進行簡單處理,並寫到各種數據接受方(可定製)的能力 Flume提供了從console(控制台)、RPC(Thrift-RPC)、text(文件)、tail(UNIX tail)、syslog(syslog日誌系統,支持TCP和UDP等2種模式),exec(命令執行)等數據源上收集數據的能力。
HBase
HBase – Hadoop Database,是一個高可靠性、高性能、面向列、可伸縮的分布式存儲系統,利用HBase技術可在廉價PC Server上搭建起大規模結構化存儲集群。
本次方案以Tomcat為Web伺服器,通過Flume實時監控網站的日誌文件並將新增日誌收集、清洗並保存到HBase中,供Spark等分布計算框架分析使用等。
方案實現
前提條件:
已經在linux伺服器上安裝並啟動了相關的程序:Tomcat7,Hadoop2.4.1,Zookeeper3.4.6,HBase0.98.5,Flume1.5。具體安裝步驟請自行查看相關文檔。
1. 首先開啟Tomcat中的日誌記錄功能,並選擇combined格式。
修改TOMCAT_PATH/conf/server.xml,增加日誌記錄:
<Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
prefix="localhost_access_log." suffix=".txt" renameOnRotate="true"
pattern="combined" />
這樣,tomcat就會在logs目錄下每天生成localhost_access_log文件並實時記錄用戶的訪問情況。
2. 實現日誌文件對象和解析程序
AccessLog.java:
public class AccessLog {
private String clientIp;
private String clientIndentity;
private String remoteUser;
private Date dateTime;
private String request;
private String httpStatusCode;
private String bytesSent;
private String referer;
private String userAgent;
…
}
AccessLogParser.java:
public class AccessLogParser {
private static String pattern = "^([\\d.]+) (\\S+) (\\S+) \\[([\\w:/]+\\s[+\\-]\\d{4})\\] \"(.+?)\" (\\d{3}) (\\d+|-) \"([^\"]+)\" \"([^\"]+)\"";
private static Pattern p = Pattern.compile(pattern);
public static AccessLog parse(String line){
Matcher matcher = p.matcher(line);
if (matcher.matches()){
AccessLog accessLog = new AccessLog();
accessLog.setClientIp(matcher.group(1));
accessLog.setClientIndentity(matcher.group(2));
accessLog.setRemoteUser(matcher.group(3));
accessLog.setDateTime(getDateTime(matcher.group(4)));
accessLog.setRequest(matcher.group(5));
accessLog.setHttpStatusCode(matcher.group(6));
accessLog.setBytesSent(matcher.group(7));
accessLog.setReferer(matcher.group(8));
accessLog.setUserAgent(matcher.group(9));
return accessLog;
}
logger.warn("This line is not a valid combined log, ignored it. -- " + line);
return null;
}
3. 通過HBase Shell在HBase中建立相應的表access_log
執行:$HBASE_HOME/bin/hbase shell,進入shell命令行
create 'access_log','cb',創建access_log,和一個列族cb。因為hbase是一個列伺服器,一個列族中可以增加很多列,為了性能考慮,一般不要創建多於三個列族。
出現如下提示信息,即創建成功
0 row(s) in 11.9690 seconds
=> Hbase::Table - access_log
可以通過list命令查看資料庫中的表,或scan 『access_log』,查看錶中數據
4. 配置Flume,實現採集和存儲
在本方案中,我們要將數據存儲到HBase中,所以使用flume中提供的hbase sink,同時,為了清洗轉換日誌數據,我們實現自己的AsyncHbaseEventSerializer。
9. 系統日誌採集是大數據收集的主要來源之一對嗎
是。
數據的採集主要來源是日誌,日誌是用戶在網站上產生的一些行為信息。
應用程序日誌一方面記錄各種程序執行狀況,一方面記錄用戶的操作軌跡。
10. 大數據三大核心技術:拿數據、算數據、賣數據!
大數據的由來
對於「大數據」(Big data)研究機構Gartner給出了這樣的定義。「大數據」是需要新處理模式才能具有更強的決策力、洞察發現力和流程優化能力來適應海量、高增長率和多樣化的信息資產。
1
麥肯錫全球研究所給出的定義是:一種規模大到在獲取、存儲、管理、分析方面大大超出了傳統資料庫軟體工具能力范圍的數據集合,具有海量的數據規模、快速的數據流轉、多樣的數據類型和價值密度低四大特徵。
大數據技術的戰略意義不在於掌握龐大的數據信息,而在於對這些含有意義的數據進行專業化處理。換而言之,如果把大數據比作一種產業,那麼這種產業實現盈利的關鍵,在於提高對數據的「加工能力」,通過「加工」實現數據的「增值」。
從技術上看,大數據與雲計算的關系就像一枚硬幣的正反面一樣密不可分。大數據必然無法用單台的計算機進行處理,必須採用分布式架構。它的特色在於對海量數據進行分布式數據挖掘。但它必須依託雲計算的分布式處理、分布式資料庫和雲存儲、虛擬化技術。
大數據需要特殊的技術,以有效地處理大量的容忍經過時間內的數據。適用於大數據的技術,包括大規模並行處理(MPP)資料庫、數據挖掘、分布式文件系統、分布式資料庫、雲計算平台、互聯網和可擴展的存儲系統。
最小的基本單位是bit,按順序給出所有單位:bit、Byte、KB、MB、GB、TB、PB、EB、ZB、YB、BB、NB、DB。
大數據的應用領域
大數據無處不在,大數據應用於各個行業,包括金融、 汽車 、餐飲、電信、能源、體能和 娛樂 等在內的 社會 各行各業都已經融入了大數據的印跡。
製造業,利用工業大數據提升製造業水平,包括產品故障診斷與預測、分析工藝流程、改進生產工藝,優化生產過程能耗、工業供應鏈分析與優化、生產計劃與排程。
金融行業,大數據在高頻交易、社交情緒分析和信貸風險分析三大金融創新領域發揮重大作用。
汽車 行業,利用大數據和物聯網技術的無人駕駛 汽車 ,在不遠的未來將走入我們的日常生活。
互聯網行業,藉助於大數據技術,可以分析客戶行為,進行商品推薦和針對性廣告投放。
電信行業,利用大數據技術實現客戶離網分析,及時掌握客戶離網傾向,出台客戶挽留措施。
能源行業,隨著智能電網的發展,電力公司可以掌握海量的用戶用電信息,利用大數據技術分析用戶用電模式,可以改進電網運行,合理設計電力需求響應系統,確保電網運行安全。
物流行業,利用大數據優化物流網路,提高物流效率,降低物流成本。
城市管理,可以利用大數據實現智能交通、環保監測、城市規劃和智能安防。
體育 娛樂 ,大數據可以幫助我們訓練球隊,決定投拍哪種 題財的 影視作品,以及預測比賽結果。
安全領域,政府可以利用大數據技術構建起強大的國家安全保障體系,企業可以利用大數據抵禦網路攻擊,警察可以藉助大數據來預防犯罪。
個人生活, 大數據還可以應用於個人生活,利用與每個人相關聯的「個人大數據」,分析個人生活行為習慣,為其提供更加周到的個性化服務。
大數據的價值,遠遠不止於此,大數據對各行各業的滲透,大大推動了 社會 生產和生活,未來必將產生重大而深遠的影響。
大數據方面核心技術有哪些?
大數據技術的體系龐大且復雜,基礎的技術包含數據的採集、數據預處理、分布式存儲、NoSQL資料庫、數據倉庫、機器學習、並行計算、可視化等各種技術范疇和不同的技術層面。首先給出一個通用化的大數據處理框架,主要分為下面幾個方面:數據採集與預處理、數據存儲、數據清洗、數據查詢分析和數據可視化。
數據採集與預處理
對於各種來源的數據,包括移動互聯網數據、社交網路的數據等,這些結構化和非結構化的海量數據是零散的,也就是所謂的數據孤島,此時的這些數據並沒有什麼意義,數據採集就是將這些數據寫入數據倉庫中,把零散的數據整合在一起,對這些數據綜合起來進行分析。數據採集包括文件日誌的採集、資料庫日誌的採集、關系型資料庫的接入和應用程序的接入等。在數據量比較小的時候,可以寫個定時的腳本將日誌寫入存儲系統,但隨著數據量的增長,這些方法無法提供數據安全保障,並且運維困難,需要更強壯的解決方案。
Flume NG
Flume NG作為實時日誌收集系統,支持在日誌系統中定製各類數據發送方,用於收集數據,同時,對數據進行簡單處理,並寫到各種數據接收方(比如文本,HDFS,Hbase等)。Flume NG採用的是三層架構:Agent層,Collector層和Store層,每一層均可水平拓展。其中Agent包含Source,Channel和 Sink,source用來消費(收集)數據源到channel組件中,channel作為中間臨時存儲,保存所有source的組件信息,sink從channel中讀取數據,讀取成功之後會刪除channel中的信息。
NDC
Logstash
Logstash是開源的伺服器端數據處理管道,能夠同時從多個來源採集數據、轉換數據,然後將數據發送到您最喜歡的 「存儲庫」 中。一般常用的存儲庫是Elasticsearch。Logstash 支持各種輸入選擇,可以在同一時間從眾多常用的數據來源捕捉事件,能夠以連續的流式傳輸方式,輕松地從您的日誌、指標、Web 應用、數據存儲以及各種 AWS 服務採集數據。
Sqoop
Sqoop,用來將關系型資料庫和Hadoop中的數據進行相互轉移的工具,可以將一個關系型資料庫(例如Mysql、Oracle)中的數據導入到Hadoop(例如HDFS、Hive、Hbase)中,也可以將Hadoop(例如HDFS、Hive、Hbase)中的數據導入到關系型資料庫(例如Mysql、Oracle)中。Sqoop 啟用了一個 MapRece 作業(極其容錯的分布式並行計算)來執行任務。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進程。
Zookeeper
Zookeeper是一個分布式的,開放源碼的分布式應用程序協調服務,提供數據同步服務。它的作用主要有配置管理、名字服務、分布式鎖和集群管理。配置管理指的是在一個地方修改了配置,那麼對這個地方的配置感興趣的所有的都可以獲得變更,省去了手動拷貝配置的繁瑣,還很好的保證了數據的可靠和一致性,同時它可以通過名字來獲取資源或者服務的地址等信息,可以監控集群中機器的變化,實現了類似於心跳機制的功能。
數據存儲
Hadoop作為一個開源的框架,專為離線和大規模數據分析而設計,HDFS作為其核心的存儲引擎,已被廣泛用於數據存儲。
HBase
HBase,是一個分布式的、面向列的開源資料庫,可以認為是hdfs的封裝,本質是數據存儲、NoSQL資料庫。HBase是一種Key/Value系統,部署在hdfs上,克服了hdfs在隨機讀寫這個方面的缺點,與hadoop一樣,Hbase目標主要依靠橫向擴展,通過不斷增加廉價的商用伺服器,來增加計算和存儲能力。
Phoenix
Phoenix,相當於一個Java中間件,幫助開發工程師能夠像使用JDBC訪問關系型資料庫一樣訪問NoSQL資料庫HBase。
Yarn
Yarn是一種Hadoop資源管理器,可為上層應用提供統一的資源管理和調度,它的引入為集群在利用率、資源統一管理和數據共享等方面帶來了巨大好處。Yarn由下面的幾大組件構成:一個全局的資源管理器ResourceManager、ResourceManager的每個節點代理NodeManager、表示每個應用的Application以及每一個ApplicationMaster擁有多個Container在NodeManager上運行。
Mesos
Mesos是一款開源的集群管理軟體,支持Hadoop、ElasticSearch、Spark、Storm 和Kafka等應用架構。
Redis
Redis是一種速度非常快的非關系資料庫,可以存儲鍵與5種不同類型的值之間的映射,可以將存儲在內存的鍵值對數據持久化到硬碟中,使用復制特性來擴展性能,還可以使用客戶端分片來擴展寫性能。
Atlas
Atlas是一個位於應用程序與MySQL之間的中間件。在後端DB看來,Atlas相當於連接它的客戶端,在前端應用看來,Atlas相當於一個DB。Atlas作為服務端與應用程序通訊,它實現了MySQL的客戶端和服務端協議,同時作為客戶端與MySQL通訊。它對應用程序屏蔽了DB的細節,同時為了降低MySQL負擔,它還維護了連接池。Atlas啟動後會創建多個線程,其中一個為主線程,其餘為工作線程。主線程負責監聽所有的客戶端連接請求,工作線程只監聽主線程的命令請求。
Ku
Ku是圍繞Hadoop生態圈建立的存儲引擎,Ku擁有和Hadoop生態圈共同的設計理念,它運行在普通的伺服器上、可分布式規模化部署、並且滿足工業界的高可用要求。其設計理念為fast analytics on fast data。作為一個開源的存儲引擎,可以同時提供低延遲的隨機讀寫和高效的數據分析能力。Ku不但提供了行級的插入、更新、刪除API,同時也提供了接近Parquet性能的批量掃描操作。使用同一份存儲,既可以進行隨機讀寫,也可以滿足數據分析的要求。Ku的應用場景很廣泛,比如可以進行實時的數據分析,用於數據可能會存在變化的時序數據應用等。
在數據存儲過程中,涉及到的數據表都是成千上百列,包含各種復雜的Query,推薦使用列式存儲方法,比如parquent,ORC等對數據進行壓縮。Parquet 可以支持靈活的壓縮選項,顯著減少磁碟上的存儲。
數據清洗
MapRece作為Hadoop的查詢引擎,用於大規模數據集的並行計算,」Map(映射)」和」Rece(歸約)」,是它的主要思想。它極大的方便了編程人員在不會分布式並行編程的情況下,將自己的程序運行在分布式系統中。
隨著業務數據量的增多,需要進行訓練和清洗的數據會變得越來越復雜,這個時候就需要任務調度系統,比如oozie或者azkaban,對關鍵任務進行調度和監控。
Oozie
Oozie是用於Hadoop平台的一種工作流調度引擎,提供了RESTful API介面來接受用戶的提交請求(提交工作流作業),當提交了workflow後,由工作流引擎負責workflow的執行以及狀態的轉換。用戶在HDFS上部署好作業(MR作業),然後向Oozie提交Workflow,Oozie以非同步方式將作業(MR作業)提交給Hadoop。這也是為什麼當調用Oozie 的RESTful介面提交作業之後能立即返回一個JobId的原因,用戶程序不必等待作業執行完成(因為有些大作業可能會執行很久(幾個小時甚至幾天))。Oozie在後台以非同步方式,再將workflow對應的Action提交給hadoop執行。
Azkaban
Azkaban也是一種工作流的控制引擎,可以用來解決有多個hadoop或者spark等離線計算任務之間的依賴關系問題。azkaban主要是由三部分構成:Relational Database,Azkaban Web Server和Azkaban Executor Server。azkaban將大多數的狀態信息都保存在MySQL中,Azkaban Web Server提供了Web UI,是azkaban主要的管理者,包括project的管理、認證、調度以及對工作流執行過程中的監控等;Azkaban Executor Server用來調度工作流和任務,記錄工作流或者任務的日誌。
流計算任務的處理平台Sloth,是網易首個自研流計算平台,旨在解決公司內各產品日益增長的流計算需求。作為一個計算服務平台,其特點是易用、實時、可靠,為用戶節省技術方面(開發、運維)的投入,幫助用戶專注於解決產品本身的流計算需求
數據查詢分析
Hive
Hive的核心工作就是把SQL語句翻譯成MR程序,可以將結構化的數據映射為一張資料庫表,並提供 HQL(Hive SQL)查詢功能。Hive本身不存儲和計算數據,它完全依賴於HDFS和MapRece。可以將Hive理解為一個客戶端工具,將SQL操作轉換為相應的MapRece jobs,然後在hadoop上面運行。Hive支持標準的SQL語法,免去了用戶編寫MapRece程序的過程,它的出現可以讓那些精通SQL技能、但是不熟悉MapRece 、編程能力較弱與不擅長Java語言的用戶能夠在HDFS大規模數據集上很方便地利用SQL 語言查詢、匯總、分析數據。
Hive是為大數據批量處理而生的,Hive的出現解決了傳統的關系型資料庫(MySql、Oracle)在大數據處理上的瓶頸 。Hive 將執行計劃分成map->shuffle->rece->map->shuffle->rece…的模型。如果一個Query會被編譯成多輪MapRece,則會有更多的寫中間結果。由於MapRece執行框架本身的特點,過多的中間過程會增加整個Query的執行時間。在Hive的運行過程中,用戶只需要創建表,導入數據,編寫SQL分析語句即可。剩下的過程由Hive框架自動的完成。
Impala
Impala是對Hive的一個補充,可以實現高效的SQL查詢。使用Impala來實現SQL on Hadoop,用來進行大數據實時查詢分析。通過熟悉的傳統關系型資料庫的SQL風格來操作大數據,同時數據也是可以存儲到HDFS和HBase中的。Impala沒有再使用緩慢的Hive+MapRece批處理,而是通過使用與商用並行關系資料庫中類似的分布式查詢引擎(由Query Planner、Query Coordinator和Query Exec Engine三部分組成),可以直接從HDFS或HBase中用SELECT、JOIN和統計函數查詢數據,從而大大降低了延遲。Impala將整個查詢分成一執行計劃樹,而不是一連串的MapRece任務,相比Hive沒了MapRece啟動時間。
Hive 適合於長時間的批處理查詢分析,而Impala適合於實時互動式SQL查詢,Impala給數據人員提供了快速實驗,驗證想法的大數據分析工具,可以先使用Hive進行數據轉換處理,之後使用Impala在Hive處理好後的數據集上進行快速的數據分析。總的來說:Impala把執行計劃表現為一棵完整的執行計劃樹,可以更自然地分發執行計劃到各個Impalad執行查詢,而不用像Hive那樣把它組合成管道型的map->rece模式,以此保證Impala有更好的並發性和避免不必要的中間sort與shuffle。但是Impala不支持UDF,能處理的問題有一定的限制。
Spark
Spark擁有Hadoop MapRece所具有的特點,它將Job中間輸出結果保存在內存中,從而不需要讀取HDFS。Spark 啟用了內存分布數據集,除了能夠提供互動式查詢外,它還可以優化迭代工作負載。Spark 是在 Scala 語言中實現的,它將 Scala 用作其應用程序框架。與 Hadoop 不同,Spark 和 Scala 能夠緊密集成,其中的 Scala 可以像操作本地集合對象一樣輕松地操作分布式數據集。
Nutch
Nutch 是一個開源Java 實現的搜索引擎。它提供了我們運行自己的搜索引擎所需的全部工具,包括全文搜索和Web爬蟲。
Solr
Solr用Java編寫、運行在Servlet容器(如Apache Tomcat或Jetty)的一個獨立的企業級搜索應用的全文搜索伺服器。它對外提供類似於Web-service的API介面,用戶可以通過http請求,向搜索引擎伺服器提交一定格式的XML文件,生成索引;也可以通過Http Get操作提出查找請求,並得到XML格式的返回結果。
Elasticsearch
Elasticsearch是一個開源的全文搜索引擎,基於Lucene的搜索伺服器,可以快速的儲存、搜索和分析海量的數據。設計用於雲計算中,能夠達到實時搜索,穩定,可靠,快速,安裝使用方便。
還涉及到一些機器學習語言,比如,Mahout主要目標是創建一些可伸縮的機器學習演算法,供開發人員在Apache的許可下免費使用;深度學習框架Caffe以及使用數據流圖進行數值計算的開源軟體庫TensorFlow等,常用的機器學習演算法比如,貝葉斯、邏輯回歸、決策樹、神經網路、協同過濾等。
數據可視化
對接一些BI平台,將分析得到的數據進行可視化,用於指導決策服務。主流的BI平台比如,國外的敏捷BI Tableau、Qlikview、PowrerBI等,國內的SmallBI和新興的網易有數等。
在上面的每一個階段,保障數據的安全是不可忽視的問題。
基於網路身份認證的協議Kerberos,用來在非安全網路中,對個人通信以安全的手段進行身份認證,它允許某實體在非安全網路環境下通信,向另一個實體以一種安全的方式證明自己的身份。
控制許可權的ranger是一個Hadoop集群許可權框架,提供操作、監控、管理復雜的數據許可權,它提供一個集中的管理機制,管理基於yarn的Hadoop生態圈的所有數據許可權。可以對Hadoop生態的組件如Hive,Hbase進行細粒度的數據訪問控制。通過操作Ranger控制台,管理員可以輕松的通過配置策略來控制用戶訪問HDFS文件夾、HDFS文件、資料庫、表、欄位許可權。這些策略可以為不同的用戶和組來設置,同時許可權可與hadoop無縫對接。
簡單說有三大核心技術:拿數據,算數據,賣數據。