蔣亮 唐紫珺
摘? 要:針對大數(shù)據(jù)背景下數(shù)據(jù)的海量性、異構(gòu)性、多樣性等特點,對大數(shù)據(jù)專業(yè)開設(shè)的“數(shù)據(jù)采集與搜索”課程產(chǎn)生了非常大的影響。因此該課程不管是教學(xué)內(nèi)容還是教學(xué)方法都需要緊緊跟隨大數(shù)據(jù)時代特性進(jìn)行更新和調(diào)整。文章對這兩方面進(jìn)行了教學(xué)探索,提出了需要增加和強(qiáng)化Flume數(shù)據(jù)采集框架、Kafka消息隊列、Easticsearch數(shù)據(jù)搜索引擎以及Python爬蟲技術(shù)等教學(xué)內(nèi)容,同時也進(jìn)一步探討了實踐式教學(xué)、反饋式教學(xué)、個性化教學(xué)等教學(xué)方式,以能夠適應(yīng)大數(shù)據(jù)專業(yè)的教學(xué)需求。
關(guān)鍵詞:數(shù)據(jù)采集;Flume;Kafka;Elasticsearch;Python爬蟲;教學(xué)方法
中圖分類號:TP311;G434? ? ? ?文獻(xiàn)標(biāo)識碼:A 文章編號:2096-4706(2021)05-0138-03
Teaching Exploration of “Data Acquisition and Search” Course for Big Data Major
JIANG Liang,TANG Zijun
(Hunan College of Information,Changsha? 410200,China)
Abstract:In view of the characteristics of data mass,heterogeneity and diversity under the background of big data,it has a great influence on the course of “Data Acquisition and Search” offered by big data specialty. Therefore,both the teaching content and teaching methods of the course need to be updated and adjusted closely with the characteristics of the era of big data. The article has carried on the teaching exploration to these two aspects,proposes the need to increase and strengthen Flume data acquisition framework,Kafka message queue,Easticsearch data search engine,Python crawler technology and other teaching content,and further discusses practical teaching,feedback teaching,personalized teaching and other teaching methods,in order to meet the teaching needs of big data major.
Keywords:data acquisition;Flume;Kafka;Elasticsearch;Python crawler;teaching method
0? 引? 言
在21世紀(jì),大數(shù)據(jù)技術(shù)、數(shù)據(jù)挖掘、人工智能等技術(shù)已經(jīng)成為智能時代發(fā)展的關(guān)鍵技術(shù)。而這些關(guān)鍵技術(shù)都是基于數(shù)據(jù)而進(jìn)行相關(guān)的研究,因此數(shù)據(jù)采集是這些技術(shù)發(fā)展的前置條件,尤其是大數(shù)據(jù)的采集。而在大數(shù)據(jù)背景下,數(shù)據(jù)呈現(xiàn)的海量性、多樣異構(gòu)性特點對數(shù)據(jù)采集工作提出了巨大的挑戰(zhàn)。傳統(tǒng)的數(shù)據(jù)采集大多通過Python爬蟲技術(shù)完成,并且目前高職院校開設(shè)的數(shù)據(jù)采集課程幾乎都是圍繞Python爬蟲技術(shù)開展,這顯然無法滿足大數(shù)據(jù)時代的數(shù)據(jù)采集工作要求,并且海量數(shù)據(jù)下的搜索等知識點沒有開設(shè)相關(guān)的課程內(nèi)容。因此為了適應(yīng)大數(shù)據(jù)背景下的數(shù)據(jù)采集與搜索,需要在“數(shù)據(jù)采集與搜索”課程中增加新的教學(xué)內(nèi)容。同時為了更好地完成新內(nèi)容的教學(xué)工作,也需要在教學(xué)方法上進(jìn)行進(jìn)一步的探討。
1? Flume概述
Flume是一個分布式、高可用、高可靠海量日志采集、聚合和傳輸系統(tǒng)。Flume借助其內(nèi)部的source、channel、sink等組件來完成數(shù)據(jù)采集工作的整個流程。source組件用來獲取數(shù)據(jù),channel組件可以緩存source組件采集的數(shù)據(jù),sink組件則用來把緩存在channel的數(shù)據(jù)寫入外部存儲系統(tǒng)或者是下一個agent中。Flume通過將source、channel、sink等組件組裝為agent并編寫對應(yīng)的配置文件來完成數(shù)據(jù)采集工作。Flume基本架構(gòu)如圖1所示。
2? Kafka概述
Kafka是一個分布式、高吞吐量、低延遲、分區(qū)、高容錯,基于zookeeper協(xié)調(diào)的分布式發(fā)布訂閱消息系統(tǒng)。其作為當(dāng)前大數(shù)據(jù)生態(tài)中較流行的消息隊列系統(tǒng),其常用于處理事務(wù)日志和其它實時數(shù)據(jù)。
在上述Kafka架構(gòu)圖中,broker是Kafka服務(wù)器,負(fù)責(zé)對外提供服務(wù);zookeeper用于保存Kafka一些元數(shù)據(jù);Kafka producer用來把數(shù)據(jù)寫入到Kafka消息隊列中;Kafka consumer用來從Kafka消息隊列中讀取消息進(jìn)行處理。Kafka組件的架構(gòu)如圖2所示。
3? Elasticsearch
Elasticsearch是ELK生態(tài)中負(fù)責(zé)數(shù)據(jù)存儲和搜索的組件,其是基于Lucene庫的分布式、RESTful的開源搜索引擎。它是一個分布式、高實時性、高擴(kuò)展的搜索與數(shù)據(jù)分析引擎。分布式指的是它能夠?qū)崿F(xiàn)分布式的實時文件存儲,每個字段都被索引并且可搜索;高實時性指的是它能夠支持實時分析的分布式搜索,在億萬數(shù)據(jù)中做到毫秒級響應(yīng);高擴(kuò)展指的是它可以輕易支持?jǐn)U展到上百臺服務(wù)器,處理PB級結(jié)構(gòu)化或非結(jié)構(gòu)化數(shù)據(jù)。Elasticsearch架構(gòu)如圖3,Gateway代表ElasticSearch索引的持久化存儲方式。Distributed Lucene Directory,它是Lucene里的一些列索引文件組成的目錄,用來負(fù)責(zé)管理這些索引文件。包括數(shù)據(jù)的讀取、寫入以及索引的添加和合并等。Elasticsearch的架構(gòu)如圖3所示。
Search Moudle是Elasticsearch中負(fù)責(zé)搜索的功能模塊,Index Module是Elasticsearch中負(fù)責(zé)建立索引的功能模塊。Mapping用來明確字段的類型以及Elasticsearch如何索引數(shù)據(jù)、以及數(shù)據(jù)是否被索引到等。Discovery,主要是負(fù)責(zé)集群的master節(jié)點發(fā)現(xiàn)。Transport,其代表Elasticsearch內(nèi)部節(jié)點,代表跟集群的客戶端交互,包括Thrift、Memcached、Http等協(xié)議。RESTful style API,通過RESTful方式來實現(xiàn)API編程,完成交互功能。
4? 教學(xué)內(nèi)容設(shè)計
在大數(shù)據(jù)背景下,“數(shù)據(jù)采集與搜索”課程通過增加Flume、Kafka、Elasticsearch等教學(xué)內(nèi)容,能夠跟上時代潮流,從而讓學(xué)生能夠掌握大數(shù)據(jù)采集與搜索的前沿技術(shù)。
4.1? Flume課程內(nèi)容
Flume作為一個分布式、可靠、高可用的海量日記采集系統(tǒng),其可以分為source、channel、sink、Interceptor、channel selector、sink processor等六部分內(nèi)容來進(jìn)行課程設(shè)計,如表1所示。
4.2? Kafka課程內(nèi)容
Kafka作為一個分布式、高吞吐量、分區(qū)、多副本的消息隊列,其可以分為集群安裝、Kafka基礎(chǔ)知識、Kafka producer、Kafka consumer、性能調(diào)優(yōu)等五部分內(nèi)容來進(jìn)行課程設(shè)計,如表2所示。
4.3? Elasticsearch課程內(nèi)容
Elasticsearch作為一個分布式、高實時性、高擴(kuò)展的搜索與數(shù)據(jù)分析引擎,其可以分為集群安裝、Elasticsearch基礎(chǔ)知識、Elasticsearch CRUD操作、Elasticsearch性能調(diào)優(yōu)等四部分內(nèi)容來進(jìn)行課程設(shè)計,如表3所示。
4.4? 教學(xué)方式探究
在大數(shù)據(jù)背景下,數(shù)據(jù)采集課程與時俱進(jìn)地引入新的教學(xué)內(nèi)容,教師也需要根據(jù)學(xué)生的思維能力和學(xué)習(xí)能力的差異性,進(jìn)行教學(xué)模式的改革。充分利用多媒體技術(shù)的優(yōu)勢,與學(xué)生進(jìn)行線上、線下的互動,提升學(xué)生興趣,調(diào)動學(xué)生學(xué)習(xí)積極性,幫助學(xué)生掌握數(shù)據(jù)采集課程的重難點。另外需要構(gòu)建新的考核系統(tǒng),在學(xué)習(xí)能力、學(xué)習(xí)態(tài)度、知識模塊、課題測驗、考試成績等維度進(jìn)行差異考核,體現(xiàn)學(xué)習(xí)引領(lǐng)性。同時針對數(shù)據(jù)采集課程的內(nèi)容,也需要在教學(xué)方式上進(jìn)行更新,以能夠適應(yīng)大數(shù)據(jù)專業(yè)的教學(xué)需求。以實踐式教學(xué)為基礎(chǔ),指導(dǎo)學(xué)生進(jìn)行課程內(nèi)容實踐,再以實踐結(jié)論來加強(qiáng)理論知識的理解。充分利用反饋式教學(xué),及時獲取教學(xué)反饋,不斷調(diào)整和改進(jìn)教學(xué)內(nèi)容和進(jìn)度。積極借助個性化教學(xué)來豐富教學(xué)方式、提升課堂吸引力,從而提高教學(xué)質(zhì)量。
5? 教學(xué)案例
“數(shù)據(jù)采集與搜索”課程,增加了Flume、Kafka、Elasticsearch等核心內(nèi)容,旨在加強(qiáng)學(xué)生對大數(shù)據(jù)組件實踐操作能力。通過構(gòu)建包含這些課程內(nèi)容的實踐案例來對課程進(jìn)行整體設(shè)計。利用Flume提供的眾多類型的組件來完成各種類型數(shù)據(jù)源的數(shù)據(jù)采集工作,并借助Kafka集群的分布式來提高數(shù)據(jù)存儲的可靠性,再通過把數(shù)據(jù)寫入到Elasticsearch中,實現(xiàn)數(shù)據(jù)的快速查詢與分析。其拓?fù)鋱D如圖4所示。
5.1? 實踐步驟描述
(1)Flume組件用來獲取爬蟲數(shù)據(jù),其步驟為:
步驟1:按照既定規(guī)則定義整個agent需要使用的組件;
步驟2:配置exec source的type、command、channel selector等配置項;
步驟3:配置file channel的type、dataDirs、checkpointDir、capacity等配置項;
步驟4:配置avro sink的type、hostname、port等配置項;
步驟5:通過把source、sink組件連接到channel上,組裝為完整的agent。
(2)Kafka組件用來完成Flume采集數(shù)據(jù)的讀寫,其步驟為:
步驟1:利用Properties對象構(gòu)建KafkaProducer對象;
步驟2:獲取爬蟲數(shù)據(jù),封裝為ProducerRecord對象;
步驟3:通過send方法將數(shù)據(jù)寫入Kafka指定的Topic中;
步驟4:利用Properties對象構(gòu)建KafkaConsumer對象;
步驟5:通過poll方法讀取Kafka topic中的數(shù)據(jù);
步驟6:將KafkaConsumer讀取的數(shù)據(jù)寫入ElasticSearch集群中。
(3)ElasticSearch組件用來實現(xiàn)數(shù)據(jù)的快速查詢,其步驟為:
步驟1:通過Settings.builder方法構(gòu)建鏈接ES集群的參數(shù);
步驟2:使用TransportClient構(gòu)建訪問ES集群的客戶端;
步驟3:使用ES提供的API構(gòu)建查詢邏輯并執(zhí)行。
5.2? 實踐結(jié)果驗證
驗證數(shù)據(jù)是否正確寫入到Kafka集群中,其結(jié)果如圖5所示。
驗證數(shù)據(jù)是否成功寫入到Elasticsearch中,其結(jié)果如圖6所示。
6? 結(jié)? 論
在大數(shù)據(jù)時代,不管是數(shù)據(jù)的海量性還是數(shù)據(jù)類型的多樣性,都是數(shù)據(jù)采集需要面對的難題。針對高職院校的大數(shù)據(jù)專業(yè),“數(shù)據(jù)采集與搜索”課程通過新增核心教學(xué)內(nèi)容,構(gòu)建層次分明、結(jié)構(gòu)清晰的實踐案例,并研究新型教學(xué)方式,探索出適合職業(yè)院校大數(shù)據(jù)人才的教學(xué)方案,培養(yǎng)出國家和社會需要的專業(yè)人才。
參考文獻(xiàn):
[1] 姜曉兵.基于大數(shù)據(jù)思維的經(jīng)濟(jì)管理類專業(yè)應(yīng)用統(tǒng)計課程教學(xué)探索 [J].高教學(xué)刊.2020(12):94-97
[2] 胡夕.Apache Kafka實戰(zhàn) [M].北京:電子工業(yè)出版社,2018.
[3] 馮霞.基高職院校大數(shù)據(jù)方向數(shù)據(jù)庫課程體系及教學(xué)模式的改革與探索 [J].電腦知識與技術(shù).2021,17(9):101-102+112.
[4] 王勇,張躍.Kafka與HBase在健康監(jiān)測大數(shù)據(jù)平臺中的應(yīng)用研究 [J].軟件導(dǎo)刊.2021,20(4):188-193
[5] 馬智勤,廖雪花,鄧威,等.基于分布式ElasticSearch相似內(nèi)容比對算法研究 [J].計算機(jī)與數(shù)字工程.2020,48(12):2843-2849.
作者簡介:蔣亮(1988—),男,漢族,湖南邵陽人,助教,碩士研究生,研究方向:數(shù)據(jù)挖掘、人工智能、大數(shù)據(jù)技術(shù)、機(jī)器視覺等;唐紫珺(1993—),女,漢族,湖南永州人,助教,碩士研究生,研究方向:生物信息學(xué)算法,大數(shù)據(jù)分析。