大数据技术综合分析!数据采集与预处理
對(duì)于各種來(lái)源的數(shù)據(jù),包括移動(dòng)互聯(lián)網(wǎng)數(shù)據(jù)、社交網(wǎng)絡(luò)的數(shù)據(jù)等,這些結(jié)構(gòu)化和非結(jié)構(gòu)化的海量數(shù)據(jù)是零散的,也就是所謂的數(shù)據(jù)孤島,此時(shí)的這些數(shù)據(jù)并沒(méi)有什么意義,數(shù)據(jù)采集就是將這些數(shù)據(jù)寫(xiě)入數(shù)據(jù)倉(cāng)庫(kù)中,把零散的數(shù)據(jù)整合在一起,對(duì)這些數(shù)據(jù)綜合起來(lái)進(jìn)行分析。
數(shù)據(jù)采集包括文件日志的采集、數(shù)據(jù)庫(kù)日志的采集、關(guān)系型數(shù)據(jù)庫(kù)的接入和應(yīng)用程序的接入等。在數(shù)據(jù)量比較小的時(shí)候,可以寫(xiě)個(gè)定時(shí)的腳本將日志寫(xiě)入存儲(chǔ)系統(tǒng),但隨著數(shù)據(jù)量的增長(zhǎng),這些方法無(wú)法提供數(shù)據(jù)安全保障,并且運(yùn)維困難,需要更強(qiáng)壯的解決方案。
在這里我還是要推薦下我自己建的大數(shù)據(jù)學(xué)習(xí)交流qq裙:522189307 , 裙 里都是學(xué)大數(shù)據(jù)開(kāi)發(fā)的,如果你正在學(xué)習(xí)大數(shù)據(jù) ,小編歡迎你加入,大家都是軟件開(kāi)發(fā)黨,不定期分享干貨(只有大數(shù)據(jù)開(kāi)發(fā)相關(guān)的),包括我自己整理的一份最新的大數(shù)據(jù)進(jìn)階資料和高級(jí)開(kāi)發(fā)教程,歡迎進(jìn)階中和進(jìn)想深入大數(shù)據(jù)的小伙伴。上述資料加群可以領(lǐng)取
?
?
?
Flume NG作為實(shí)時(shí)日志收集系統(tǒng),支持在日志系統(tǒng)中定制各類數(shù)據(jù)發(fā)送方,用于收集數(shù)據(jù),同時(shí),對(duì)數(shù)據(jù)進(jìn)行簡(jiǎn)單處理,并寫(xiě)到各種數(shù)據(jù)接收方(比如文本,HDFS,Hbase等)。
Flume NG采用的是三層架構(gòu):Agent層,Collector層和Store層,每一層均可水平拓展。其中Agent包含Source,Channel和 Sink,source用來(lái)消費(fèi)(收集)數(shù)據(jù)源到channel組件中,channel作為中間臨時(shí)存儲(chǔ),保存所有source的組件信息,sink從channel中讀取數(shù)據(jù),讀取成功之后會(huì)刪除channel中的信息。
?
NDC,Netease Data Canal,直譯為網(wǎng)易數(shù)據(jù)運(yùn)河系統(tǒng),是網(wǎng)易針對(duì)結(jié)構(gòu)化數(shù)據(jù)庫(kù)的數(shù)據(jù)實(shí)時(shí)遷移、同步和訂閱的平臺(tái)化解決方案。它整合了網(wǎng)易過(guò)去在數(shù)據(jù)傳輸領(lǐng)域的各種工具和經(jīng)驗(yàn),將單機(jī)數(shù)據(jù)庫(kù)、分布式數(shù)據(jù)庫(kù)、OLAP系統(tǒng)以及下游應(yīng)用通過(guò)數(shù)據(jù)鏈路串在一起。除了保障高效的數(shù)據(jù)傳輸外,NDC的設(shè)計(jì)遵循了單元化和平臺(tái)化的設(shè)計(jì)哲學(xué)。
?
?
Logstash是開(kāi)源的服務(wù)器端數(shù)據(jù)處理管道,能夠同時(shí)從多個(gè)來(lái)源采集數(shù)據(jù)、轉(zhuǎn)換數(shù)據(jù),然后將數(shù)據(jù)發(fā)送到您最喜歡的 “存儲(chǔ)庫(kù)” 中。一般常用的存儲(chǔ)庫(kù)是Elasticsearch。Logstash 支持各種輸入選擇,可以在同一時(shí)間從眾多常用的數(shù)據(jù)來(lái)源捕捉事件,能夠以連續(xù)的流式傳輸方式,輕松地從您的日志、指標(biāo)、Web 應(yīng)用、數(shù)據(jù)存儲(chǔ)以及各種 AWS 服務(wù)采集數(shù)據(jù)。
?
Sqoop,用來(lái)將關(guān)系型數(shù)據(jù)庫(kù)和Hadoop中的數(shù)據(jù)進(jìn)行相互轉(zhuǎn)移的工具,可以將一個(gè)關(guān)系型數(shù)據(jù)庫(kù)(例如Mysql、Oracle)中的數(shù)據(jù)導(dǎo)入到Hadoop(例如HDFS、Hive、Hbase)中,也可以將Hadoop(例如HDFS、Hive、Hbase)中的數(shù)據(jù)導(dǎo)入到關(guān)系型數(shù)據(jù)庫(kù)(例如Mysql、Oracle)中。
Sqoop 啟用了一個(gè) MapReduce 作業(yè)(極其容錯(cuò)的分布式并行計(jì)算)來(lái)執(zhí)行任務(wù)。Sqoop 的另一大優(yōu)勢(shì)是其傳輸大量結(jié)構(gòu)化或半結(jié)構(gòu)化數(shù)據(jù)的過(guò)程是完全自動(dòng)化的。
?
流式計(jì)算是行業(yè)研究的一個(gè)熱點(diǎn),流式計(jì)算對(duì)多個(gè)高吞吐量的數(shù)據(jù)源進(jìn)行實(shí)時(shí)的清洗、聚合和分析,可以對(duì)存在于社交網(wǎng)站、新聞等的數(shù)據(jù)信息流進(jìn)行快速的處理并反饋,目前大數(shù)據(jù)流分析工具有很多,比如開(kāi)源的strom,spark streaming等。
?
?
Strom集群結(jié)構(gòu)是有一個(gè)主節(jié)點(diǎn)(nimbus)和多個(gè)工作節(jié)點(diǎn)(supervisor)組成的主從結(jié)構(gòu),主節(jié)點(diǎn)通過(guò)配置靜態(tài)指定或者在運(yùn)行時(shí)動(dòng)態(tài)選舉,nimbus與supervisor都是Storm提供的后臺(tái)守護(hù)進(jìn)程,之間的通信是結(jié)合Zookeeper的狀態(tài)變更通知和監(jiān)控通知來(lái)處理。nimbus進(jìn)程的主要職責(zé)是管理、協(xié)調(diào)和監(jiān)控集群上運(yùn)行的topology(包括topology的發(fā)布、任務(wù)指派、事件處理時(shí)重新指派任務(wù)等)。
supervisor進(jìn)程等待nimbus分配任務(wù)后生成并監(jiān)控worker(jvm進(jìn)程)執(zhí)行任務(wù)。supervisor與worker運(yùn)行在不同的jvm上,如果由supervisor啟動(dòng)的某個(gè)worker因?yàn)殄e(cuò)誤異常退出(或被kill掉),supervisor會(huì)嘗試重新生成新的worker進(jìn)程。
?
當(dāng)使用上游模塊的數(shù)據(jù)進(jìn)行計(jì)算、統(tǒng)計(jì)、分析時(shí),就可以使用消息系統(tǒng),尤其是分布式消息系統(tǒng)。Kafka使用Scala進(jìn)行編寫(xiě),是一種分布式的、基于發(fā)布/訂閱的消息系統(tǒng)。
?
?
Kafka的設(shè)計(jì)理念之一就是同時(shí)提供離線處理和實(shí)時(shí)處理,以及將數(shù)據(jù)實(shí)時(shí)備份到另一個(gè)數(shù)據(jù)中心,Kafka可以有許多的生產(chǎn)者和消費(fèi)者分享多個(gè)主題,將消息以topic為單位進(jìn)行歸納;Kafka發(fā)布消息的程序稱為producer,也叫生產(chǎn)者,預(yù)訂topics并消費(fèi)消息的程序稱為consumer,也叫消費(fèi)者;當(dāng)Kafka以集群的方式運(yùn)行時(shí),可以由一個(gè)服務(wù)或者多個(gè)服務(wù)組成,每個(gè)服務(wù)叫做一個(gè)broker,運(yùn)行過(guò)程中producer通過(guò)網(wǎng)絡(luò)將消息發(fā)送到Kafka集群,集群向消費(fèi)者提供消息。
Kafka通過(guò)Zookeeper管理集群配置,選舉leader,以及在Consumer Group發(fā)生變化時(shí)進(jìn)行rebalance。Producer使用push模式將消息發(fā)布到broker,Consumer使用pull模式從broker訂閱并消費(fèi)消息。
Kafka可以和Flume一起工作,如果需要將流式數(shù)據(jù)從Kafka轉(zhuǎn)移到hadoop,可以使用Flume代理agent,將Kafka當(dāng)做一個(gè)來(lái)源source,這樣可以從Kafka讀取數(shù)據(jù)到Hadoop。
?
Zookeeper是一個(gè)分布式的,開(kāi)放源碼的分布式應(yīng)用程序協(xié)調(diào)服務(wù),提供數(shù)據(jù)同步服務(wù)。它的作用主要有配置管理、名字服務(wù)、分布式鎖和集群管理。配置管理指的是在一個(gè)地方修改了配置,那么對(duì)這個(gè)地方的配置感興趣的所有的都可以獲得變更,省去了手動(dòng)拷貝配置的繁瑣,還很好的保證了數(shù)據(jù)的可靠和一致性,同時(shí)它可以通過(guò)名字來(lái)獲取資源或者服務(wù)的地址等信息,可以監(jiān)控集群中機(jī)器的變化,實(shí)現(xiàn)了類似于心跳機(jī)制的功能。
總結(jié)
以上是生活随笔為你收集整理的大数据技术综合分析!数据采集与预处理的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: Problem 2. number题解
- 下一篇: 页面中切换echarts主题