蔣亮 唐紫珺



摘? 要:針對大數據背景下數據的海量性、異構性、多樣性等特點,對大數據專業開設的“數據采集與搜索”課程產生了非常大的影響。因此該課程不管是教學內容還是教學方法都需要緊緊跟隨大數據時代特性進行更新和調整。文章對這兩方面進行了教學探索,提出了需要增加和強化Flume數據采集框架、Kafka消息隊列、Easticsearch數據搜索引擎以及Python爬蟲技術等教學內容,同時也進一步探討了實踐式教學、反饋式教學、個性化教學等教學方式,以能夠適應大數據專業的教學需求。
關鍵詞:數據采集;Flume;Kafka;Elasticsearch;Python爬蟲;教學方法
中圖分類號:TP311;G434? ? ? ?文獻標識碼: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世紀,大數據技術、數據挖掘、人工智能等技術已經成為智能時代發展的關鍵技術。而這些關鍵技術都是基于數據而進行相關的研究,因此數據采集是這些技術發展的前置條件,尤其是大數據的采集。而在大數據背景下,數據呈現的海量性、多樣異構性特點對數據采集工作提出了巨大的挑戰。傳統的數據采集大多通過Python爬蟲技術完成,并且目前高職院校開設的數據采集課程幾乎都是圍繞Python爬蟲技術開展,這顯然無法滿足大數據時代的數據采集工作要求,并且海量數據下的搜索等知識點沒有開設相關的課程內容。因此為了適應大數據背景下的數據采集與搜索,需要在“數據采集與搜索”課程中增加新的教學內容。同時為了更好地完成新內容的教學工作,也需要在教學方法上進行進一步的探討。
1? Flume概述
Flume是一個分布式、高可用、高可靠海量日志采集、聚合和傳輸系統。Flume借助其內部的source、channel、sink等組件來完成數據采集工作的整個流程。source組件用來獲取數據,channel組件可以緩存source組件采集的數據,sink組件則用來把緩存在channel的數據寫入外部存儲系統或者是下一個agent中。Flume通過將source、channel、sink等組件組裝為agent并編寫對應的配置文件來完成數據采集工作。Flume基本架構如圖1所示。
2? Kafka概述
Kafka是一個分布式、高吞吐量、低延遲、分區、高容錯,基于zookeeper協調的分布式發布訂閱消息系統。其作為當前大數據生態中較流行的消息隊列系統,其常用于處理事務日志和其它實時數據。
在上述Kafka架構圖中,broker是Kafka服務器,負責對外提供服務;zookeeper用于保存Kafka一些元數據;Kafka producer用來把數據寫入到Kafka消息隊列中;Kafka consumer用來從Kafka消息隊列中讀取消息進行處理。Kafka組件的架構如圖2所示。
3? Elasticsearch
Elasticsearch是ELK生態中負責數據存儲和搜索的組件,其是基于Lucene庫的分布式、RESTful的開源搜索引擎。它是一個分布式、高實時性、高擴展的搜索與數據分析引擎。分布式指的是它能夠實現分布式的實時文件存儲,每個字段都被索引并且可搜索;高實時性指的是它能夠支持實時分析的分布式搜索,在億萬數據中做到毫秒級響應;高擴展指的是它可以輕易支持擴展到上百臺服務器,處理PB級結構化或非結構化數據。Elasticsearch架構如圖3,Gateway代表ElasticSearch索引的持久化存儲方式。Distributed Lucene Directory,它是Lucene里的一些列索引文件組成的目錄,用來負責管理這些索引文件。包括數據的讀取、寫入以及索引的添加和合并等。Elasticsearch的架構如圖3所示。
Search Moudle是Elasticsearch中負責搜索的功能模塊,Index Module是Elasticsearch中負責建立索引的功能模塊。Mapping用來明確字段的類型以及Elasticsearch如何索引數據、以及數據是否被索引到等。Discovery,主要是負責集群的master節點發現。Transport,其代表Elasticsearch內部節點,代表跟集群的客戶端交互,包括Thrift、Memcached、Http等協議。RESTful style API,通過RESTful方式來實現API編程,完成交互功能。
4? 教學內容設計
在大數據背景下,“數據采集與搜索”課程通過增加Flume、Kafka、Elasticsearch等教學內容,能夠跟上時代潮流,從而讓學生能夠掌握大數據采集與搜索的前沿技術。
4.1? Flume課程內容
Flume作為一個分布式、可靠、高可用的海量日記采集系統,其可以分為source、channel、sink、Interceptor、channel selector、sink processor等六部分內容來進行課程設計,如表1所示。
4.2? Kafka課程內容
Kafka作為一個分布式、高吞吐量、分區、多副本的消息隊列,其可以分為集群安裝、Kafka基礎知識、Kafka producer、Kafka consumer、性能調優等五部分內容來進行課程設計,如表2所示。
4.3? Elasticsearch課程內容
Elasticsearch作為一個分布式、高實時性、高擴展的搜索與數據分析引擎,其可以分為集群安裝、Elasticsearch基礎知識、Elasticsearch CRUD操作、Elasticsearch性能調優等四部分內容來進行課程設計,如表3所示。
4.4? 教學方式探究
在大數據背景下,數據采集課程與時俱進地引入新的教學內容,教師也需要根據學生的思維能力和學習能力的差異性,進行教學模式的改革。充分利用多媒體技術的優勢,與學生進行線上、線下的互動,提升學生興趣,調動學生學習積極性,幫助學生掌握數據采集課程的重難點。另外需要構建新的考核系統,在學習能力、學習態度、知識模塊、課題測驗、考試成績等維度進行差異考核,體現學習引領性。同時針對數據采集課程的內容,也需要在教學方式上進行更新,以能夠適應大數據專業的教學需求。以實踐式教學為基礎,指導學生進行課程內容實踐,再以實踐結論來加強理論知識的理解。充分利用反饋式教學,及時獲取教學反饋,不斷調整和改進教學內容和進度。積極借助個性化教學來豐富教學方式、提升課堂吸引力,從而提高教學質量。
5? 教學案例
“數據采集與搜索”課程,增加了Flume、Kafka、Elasticsearch等核心內容,旨在加強學生對大數據組件實踐操作能力。通過構建包含這些課程內容的實踐案例來對課程進行整體設計。利用Flume提供的眾多類型的組件來完成各種類型數據源的數據采集工作,并借助Kafka集群的分布式來提高數據存儲的可靠性,再通過把數據寫入到Elasticsearch中,實現數據的快速查詢與分析。其拓撲圖如圖4所示。
5.1? 實踐步驟描述
(1)Flume組件用來獲取爬蟲數據,其步驟為:
步驟1:按照既定規則定義整個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采集數據的讀寫,其步驟為:
步驟1:利用Properties對象構建KafkaProducer對象;
步驟2:獲取爬蟲數據,封裝為ProducerRecord對象;
步驟3:通過send方法將數據寫入Kafka指定的Topic中;
步驟4:利用Properties對象構建KafkaConsumer對象;
步驟5:通過poll方法讀取Kafka topic中的數據;
步驟6:將KafkaConsumer讀取的數據寫入ElasticSearch集群中。
(3)ElasticSearch組件用來實現數據的快速查詢,其步驟為:
步驟1:通過Settings.builder方法構建鏈接ES集群的參數;
步驟2:使用TransportClient構建訪問ES集群的客戶端;
步驟3:使用ES提供的API構建查詢邏輯并執行。
5.2? 實踐結果驗證
驗證數據是否正確寫入到Kafka集群中,其結果如圖5所示。
驗證數據是否成功寫入到Elasticsearch中,其結果如圖6所示。
6? 結? 論
在大數據時代,不管是數據的海量性還是數據類型的多樣性,都是數據采集需要面對的難題。針對高職院校的大數據專業,“數據采集與搜索”課程通過新增核心教學內容,構建層次分明、結構清晰的實踐案例,并研究新型教學方式,探索出適合職業院校大數據人才的教學方案,培養出國家和社會需要的專業人才。
參考文獻:
[1] 姜曉兵.基于大數據思維的經濟管理類專業應用統計課程教學探索 [J].高教學刊.2020(12):94-97
[2] 胡夕.Apache Kafka實戰 [M].北京:電子工業出版社,2018.
[3] 馮霞.基高職院校大數據方向數據庫課程體系及教學模式的改革與探索 [J].電腦知識與技術.2021,17(9):101-102+112.
[4] 王勇,張躍.Kafka與HBase在健康監測大數據平臺中的應用研究 [J].軟件導刊.2021,20(4):188-193
[5] 馬智勤,廖雪花,鄧威,等.基于分布式ElasticSearch相似內容比對算法研究 [J].計算機與數字工程.2020,48(12):2843-2849.
作者簡介:蔣亮(1988—),男,漢族,湖南邵陽人,助教,碩士研究生,研究方向:數據挖掘、人工智能、大數據技術、機器視覺等;唐紫珺(1993—),女,漢族,湖南永州人,助教,碩士研究生,研究方向:生物信息學算法,大數據分析。