王黎,張瑩
漯河食品職業學院,河南 漯河 462000
大數據技術是一個相對龐大的概念,具體又可細分為多個核心的管理功能。而這些功能的實現全部都離不開各種專業的軟件工具和相應的編程技術。在大數據的采集中需通過程序算法規定字段、格式等內容。在數據庫存儲和查詢中需使用專門的SQL、HQL等語言,數據的可視化則要使用前端編程語言和工具。計算機軟件技術的發展與進步直接關系到大數據的發展,因而要將二者綜合起來研究。
網絡信息化技術早已深入地進入到生活中的各類場景,大量的日常工作都從傳統的人工模式轉化為基于網絡的線上模式,網絡化系統的特點是將生活中的具體場景業務化、數據化以及流程化,每一個環節都會記錄并存儲下相關的數據信息,業務場景越是細化,數據規模就越龐大,由此便產生了海量的系統運營數據。大數據技術在本質上是為了適應現代社會數據規模急速膨脹所建立一整套數據管理技術,從圖1中可知,大數據技術在實際應用過程中需實現一系列核心功能,主要包括海量數據的采集、存儲、查詢、計算以及數據的可視化等。而這些功能的實現都依賴于現代化的計算機軟件工具、編程語言以及程序算法等,可以說,計算機軟件技術是實現大數據開發和管理的基礎。例如,在大數據的存儲中使用的Hbase可支持海量數據的讀寫以及分布式NoSQL數據庫,而數據庫相關的技術就是最典型的計算機軟件技術。從圖1展示的關系即可判斷,大數據應用中的每一個核心節點都會使用到大量的計算技術軟件技術,并且后者的更新速度非??欤碌能浖ぞ吆图夹g不斷涌現,這些都會成為助力大數據技術發展的積極因素[1]。

圖1 大數據技術及其對應的軟件技術能力需求
數據是大數據技術的源頭,各類業務場景中產生的數據要通過專業的計算機軟件技術來進行采集,大數據采集方式分為多種類型,具體如下。
(1)基于服務器日志的數據采集。這種數據采集方式的基本原理如下:用戶訪問一個軟件系統時,如網站頁面、APP頁面,用戶的前端操作行為可通過網站來進行監聽,頁面上的各類按鈕可設計點擊監聽事件、輸入監聽事件、選擇監聽事件等,用戶每進行一次操作,對應的就會從前端發出一個網絡請求,后端程序中設計了專門的程序代碼,訪問進入到服務器之后就會在日志文件中增加一條新的記錄,日志的格式可自行設定,由此就會產生大規模的日志信息。以Nginx服務器為例,日志中可記錄訪問者的IP地址、訪問時間、用戶信息、請求的網絡鏈接等。工程技術人員可利用數據處理工具,如Linux中的切割、正則匹配等命令從日志文件中提取出有用的信息,并將其存儲起來[2]。
(2)實時采集。這種采集方式中會使用到一些重要的計算機軟件工具及相應的數據處理技術,典型的如Kafka(一種分布式的消息系統),在數據規模較大、訪問請求較為集中的網絡應用系統中可使用類似于Kafka這樣的消息中間件工具,某些系統數據先進入到Kafka中,等待后端系統批量化的處理和存儲新數據,Kafka具備臨時性的存儲功能,同時可做一定程度的數據處理,但最終的數據還是要寫入到數據庫中[3]。
(3)網絡請求寫入數據。這種數據采集方式指的是用戶在前端系統提交表單或者發送前端Ajax請求,由請求頭攜帶相關的數據參數到后端,經過一系列的數據運算之后將特定類型的數據資源存儲在大數據的存儲系統中,實際上這是最常規的數據采集方式之一。這一過程中使用到的計算機軟件技術包括前端代碼編寫、后端代碼編寫、業務邏輯梳理、后端數據庫系統操作等。
(4)網絡采集腳本寫入數據。爬蟲技術是通過前端網頁抓取數據的一種方法,目前主要利用Python編寫網絡爬蟲腳本,對特定的網站系統開展數據的采集,這是一種專業的前端數據采集方式,腳本獲取的數據經過邏輯運算或者計算,轉化成更具價值的存儲數據。
(1)大數據存儲技術和傳統的計算機存儲技術的主要區別。在過去很長一段時間之內,數據存儲技術建立在Oracle、MySQL等關系型數據庫上,在數據規模較小的情況下,這種數據庫完全可以滿足使用需求,但是進入大數據時代之后,傳統的關系型數據庫在查詢速度上表現出嚴重的缺陷,無法滿足大數據系統的數據存儲和響應速度。于是各種新的數據庫和架構模式就出現了[4]。大數據技術下的數據存儲系統關鍵要解決好數據規模不斷攀升與數據操作響應速度之間的矛盾。
(2)大數據存儲技術。①傳統的關系型數據庫在大數據存儲中依然具備很高的利用價值,因為這些關系型數據庫可通過系統架構的方式形成龐大的數據庫集群,將原本非常集中的數據存儲任務分散到不同的關系型數據庫中。例如,將網站系統中的圖片資源統一存儲在一個數據庫中,將其他數據資源存儲在其他數據庫中,并且還可進行分庫、分表等一系列操作。用戶訪問數據時可在后端的程序代碼中根據訪問資源的類型連接到對應的數據庫上,這樣就能顯著提高傳統數據庫的負載能力和響應速度,其技術優化在于數據庫系統的架構方式上。②HBase。現階段,談到大數據存儲技術,HBase是非常重要的一種技術路徑,這種數據存儲技術的特點是分布式、高性能、高可靠,可通過Shell接口、API接口等存儲數據資源。與傳統的關系性數據庫不同,HBase對數據的結構沒有做出嚴格的限制,而關系型數據庫依靠字段類型、字段長度等限制數據的基本結構。因而HBase的存儲模式更加靈活。③NoSQL數據庫。所謂NoSQL指的是“Not only SQL”,也是相對于傳統的關系型數據庫而言的,因為后者主要使用SQL語言完成操作。NoSQL數據庫的典型代表是MongoDb、ES等。MongoDb的數據格式Bson,結構上與Json非常類似。MongoDb的性能非常優越,可勝任大數據量的存儲和查詢,尤其是查詢功能,對傳統關系型數據庫形成了巨大的優勢。圖2展示了MongoDb中數據的存儲格式,其中存儲的字段名稱是name(姓名),對應的存儲內容是“yeyz”和“zhangsan”,這種數據庫可靈活地擴充每一條存儲信息的內容,如增加新的字段。這些非關系型數據庫為大數據技術的實現提供了有力的保障,在很大程度上提升了數據存儲的能力[5]。

圖2 MongoDB數據格式
基于Pearson相關系數,對大數據緩存技術進行優化,Pearson系數的取值為[-1,+1],如果Pearson系數為+1,則變量為正相關關系,如果Pearson系數為-1,則表示變量為負相關關系,其計算公式為:

大數據技術在存儲到數據之后,還需支持快速高效的數據查詢服務,數據查詢與數據存儲系統存在直接的關聯。傳統的基于關系型數據庫的大數據存儲系統依靠SQL語句來查詢相關數據,SQL適用于Oracle、MySQL等一系列關系型數據庫。MongoDB的數據查詢方式具有其特定的命令規則,可謂自成體系。在大數據查詢中要格外重視以下幾種軟件技術和工具。①Hive。Apache公司在大數據技術方面提供了較為完整的技術架構,如Hadoop、Hive等。其中Hadoop是一種適用于大數據的分布式系統,而Hive則建立在Hadoop之上,其作用是數據倉庫的管理工具,數據存在文件中,而這些文件滿足關系性數據庫的字段要求,形成了一種基于文件的結構化數據,Hive可將這些文件映射成類似于關系型數據庫的數據表,然后可利用SQL語言直接在映射成的數據表中查詢字段信息。Hive中使用的查詢語言稱為HQL,但在原理上、寫法上與SQL基本上是一致的。②Spark。這是一種大數據分析引擎,基于內存,其特點是通用性強、速度快以及可擴展能力強。Spark中內置了Spark SQL,專門用于完成大數據的查詢。實際上Spark SQL使用的查詢語言就是HQL和SQL。數據源無論是JSON格式、Hive表,均可使用Spark SQL來進行查詢。Spark與Hadoop類似,都是一個完整的生態,其中包含了一系列專業的軟件工具,內嵌了編程語言,Spark中涵蓋了Spark Core、Spark SQL、MLlib(機器學習)、Graphx(圖計算)[6]。這些軟件工具相互配合,在大數據存儲、計算以及查詢方面發揮著各自的作用。并且國內外的企業已經開始大量使用這些技術來開展大數據業務。
進入大數據時代之后,數據規??焖贁U張,對數據運算造成了很大的挑戰。在交通、電子商務、醫療等各個產業中都會產生大量的數據計算需求,并且這種計算容量達到了很高的級別。大數據技術下開發出了專業的大數據計算引擎。較為著名的計算引擎包括Storm、Flink、Spark Streaming等。這些計算引擎是一種專業的算法程序,本質上也屬于軟件技術的一種,按照相關分類,一種稱為實時計算引擎,另一種稱為離線計算引擎。前者在計算上的延時非常短,一般只有毫秒到秒級別,離線計算的延時量較大,可按照T+1秒來評估。實時計算引擎中的典型代表是Flink、Spark Streaming。離線計算引擎的典型是Spark。Storm可用于實現批量計算任務。圖3中較為全面地展示了一些主流大數據技術在整個系統中的關聯關系,從中可觀察到Flink在系統中所處的位置,作為一種計算引擎,經過Flink的處理之后才會將數據存儲在數據庫中,Flink在工作時會占用計算機內存[7]。

圖3 大數據系統中各種軟件工具和技術的關聯示意圖
大數據技術畢竟是為人和社會所服務的,各種海量的數據既要滿足于軟件工具的計算、存儲和查詢,更為關鍵的是借助前端頁面將這些大數據展示出來,形成一種數據可視化的管理模式。例如,企業在運營過程中需掌握用戶大數據,如地區分布圖。那么前端可使用類似電子地圖的形式將各個省份的用戶數據展示在對應在版圖上,這樣就可一目了然的通過視覺化的圖形快速掌握相關信息。實際上大數據可視化需要前端的軟件界面和后端的數據查詢代碼實現高度的配合。至于可視化的前端界面,主要是利用JS、HTML5以及CSS等前端語言進行編寫。目前已經出現了一大批集成化的可視化前端軟件工具平臺,例如Highcharts、ECharts等。其中ECharts由國內的企業自主開發而成,內置了折線圖、柱狀圖、陰影圖、雷達圖以及其他多種類型的可視化前端數據展示效果,并且軟件開發人員還可利用ECharts自行定義和開發一些可視化的圖例。大數據展示是大數據技術中非常關鍵的一個環節。除了圖例之外,還包括企業管理中經常使用的報表、數據表格等。總體而言,大數據的可視化展示主要使用了前端軟件開發技術,包括JavaScript以及各種成熟的前端軟件包。ECharts在使用時先將源代碼下載下來,然后放置在服務器中的特定目錄中,隨著項目共同引入,之后便可在前端調用其中的對象,展示數據圖表[8]。
計算機軟件技術是大數據技術的重要基礎,從數據采集,到數據存儲,再到數據的前端展示,都離不開各種軟件工具、編程語言以及集成化的軟件框架。在研究大數據技術時應該充分建立計算機軟件技術的基礎之上,分析大數據中的不同功能分別使用了哪些軟件工具和技術,重點在于HBase、Hive、Spark等與大數據密切相關的軟件技術。