王 華
(河南工業貿易職業學院 河南 鄭州 451191)
當前,我們處于網絡互聯時代,每時每刻都會產生大量的信息,數據來自用戶的搜索、電子郵件、系統日志、傳感器網絡、RFID標簽、飛機、汽車等。這些數據具有多樣性、原始性、半結構化或者非結構化,所以通常并不適合關系數據庫(relational database,RDB)進行處理。最重要的是,非結構化數據占數據總量的80%以上,比結構化數據要多得多。其中,易于搜索的結構化數據主要包括:文本、數字、符號、日期等,不容易搜索的非結構化數據主要包括:文本、電子郵件、網站、數據媒體、移動數據、傳感器數據、衛星圖像等。此外,數據是以不同的方式進行處理的,結構化數據較為直觀,可挖掘性較差;非結構化數據需要工具分析海量數據,發揮數據的巨大價值。
巨量數據的集合就是大數據,即BD(big data)。BD是收集大量復雜數據的數據集,需要對數據進行捕獲、存儲、分析、共享、搜索、可視化等操作,因此數據庫管理系統(database management system,DBMS)很難處理這些數據集。大數據的“大”指的是數據量巨大,可能是ZB級別的,并且來源不同。大量的數據以極快的速度傳輸,隨著數據的增加,處理速度也需要加快。因為數據量巨大,需要更多的時間進行收集和處理,這是DBMS難以勝任的原因。
大數據的特點主要有以下幾個方面:
Volume(大量):數據容量大是大數據區別于傳統數據最顯著的特征。它指的是一個數據的數量,可以達到EB或ZB的數據量。根據IDC的預測,預計到2025年,這個數字是175 ZB。
Velocity(高速):指的是數據的速度,是對數據產生和收集速度的測算。描述了數據速度的變化與以不同速度合并的數據集。
Variety(多樣):基于不同的應用系統、不同的設備,決定了大數據數據來源的廣泛性,數據形式的多樣性。除了結構化數據以外,還包含視頻、音頻、圖像等非結構化和半結構的數據,這些數據通過感知設備進行采集。
Value(低價值密度):大數據最大的價值在于通過從大量不相關的各種類型的數據中,挖掘出對未來趨勢與模式預測分析有價值的數據,并通過機器學習方法、人工智能方法或數據挖掘方法深度分析,發現新規律和新知識[1]。
對于大量需要處理的非結構化數據,需要使用Map Reduce框架,以可靠、容錯的方式進行處理。Map Reduce框架會將存儲的大量數據切分為若干個數據塊,這個任務由Map以并行的方式來完成。框架對數據塊進行排序,然后將結果輸入給Reduce。所有的數據會被存儲在文件系統中,框架負責對數據的調用[2]。框架中主要包括以下內容:
在大數據框架中,分布式文件存儲是經常使用的功能。Hadoop原生的HDFS分布式文件系統可以將文件交叉存儲在各個節點,可以讓多臺計算機和用戶分享文件和存儲空間。存儲的數據可以自動保存為多個副本,具有高容錯性。
大規模并行處理(massively parallel processing,MPP)架構與Hadoop架構是將大規模數據的計算和存儲分布到不同的獨立的節點中去處理,但兩者又有所不同:MPP實際上是指分布式數據庫,最大的特點是處理和存儲數據速度快,但是只能處理結構化的數據;Hadoop架構是以Hadoop項目為基礎的一系列分布式計算和存儲框架,可以處理更大量的數據,硬件成本低,擴展更為方便。
為了確保不發生故障,大數據系統通常都會是基于主從一致性的架構,這是為了解決因主從沒有同步造成的數據讀取問題。在實際的應用場景中,一般都是讀多寫少,所以一般采用一主多從、讀寫分離的數據庫架構來提升數據庫的讀性能。大多數解決方案都會增加集群來處理大量的數據,例如Apache、HDP,提供完整的大數據解決方案。Map Reduce框架具有操作簡單、易擴展等特點。大數據解決方案和工具可以在以下描述中獲得:①集成工具;②處理資源、工作流和服務的工具;③處理元數據服務的工具;④用于數據分析的工具;⑤用于交互式的工具。
計算機造型技能的掌握,使學生可以根據視圖或自己的想象構造形體,并實時驗證思維正確性。促進了學生三維形狀和二維圖形之間直覺思維的形成。是不可多得的自主學習的好方式。
①NoSQL:在大數據中,大量的數據為非結構化數據,而關系數據庫管理系統(relational database management system,RDBMS)主要處理的是結構化數據,顯然是不合適的。為了解決這一問題,需要使用NoSQL數據庫來處理非關系型數據和非結構化數據,包括:MongoDB、DynamoDB、HBase、Redis、CouchDB、CouchBase、OrientDB、InfiniteGraph、Neo4j、FlockDB、Cassandra等,他們擁有一個或多個數據模型:鍵值存儲數據庫、列存儲數據庫、文檔型數據庫、圖形數據庫,解決了高并發讀寫問題、海量數據的高效存儲和訪問問題,實現了高可用性及高可擴展性。
②NewSQL:NoSQL數據庫能夠很好地應對海量數據的挑戰,為用戶提供可觀的可擴展性和靈活性,但是它也有缺點:NoSQL數據庫沒有統一的查詢語句,不支持SQL查詢;不支持ACID特性;NoSQL功能較為單一。為了解決以上問題,促進了基于大數據的NewSQL新型關系數據庫管理系統的開發與應用。NewSQL是RDBMS中的數據模型(關系型、符合ACID)和NoSQL中的計算框架、分布式存儲、開源特定的結合產物。NewSQL數據庫不僅具有NoSQL數據庫對海量數據的存儲管理能力,同時還保留了傳統數據庫支持的ACID和SQL特性。
RDBMS是傳統的存儲系統,通過SQL訪問結構化數據,但在可訪問性、可擴展性方面面臨著諸多挑戰。由于一臺計算機的存儲空間有限,就需要將大量的數據存儲在多臺計算機上,這就是分布式文件系統(DFS),在Hadoop中實現的分布式文件系統為HDFS。Map Reduce依賴于DFS,提供計算可擴展性。NoSQL+NewSQL數據庫存儲已成為BDS最重要的數據庫工具,主要是因為該數據庫存儲具有模式靈活和可擴展性,其擴展性包括數據存儲規模以及寫入操作的規模。在couchDB中,在JavaScript中利用Map Reduce范式進行查詢,將索引和查詢組合在一起,以便快速運行。需要指出的是,HDFS提供了在數據庫內部通過SQL Oracle和數據集成查詢Hadoop中的數據的能力,Hadoop生成的Hive類似于在Hadoop集群上執行Map Reduce時的查詢。
隨著存儲容量的增加,數據的平均大小也在不斷增加,但存儲容量的增長速度遠遠小于數據量的增長。數據量爆發式增長的時代,DBMS無法處理如此大規模的數據,這就需要使用DB服務器處理數據,而DB服務器的可擴展性是有限制的。虛擬服務器技術能夠在應用服務器端通信不足的情況下解決提交資源的問題,存儲空間管理也需要同時解決并發I/O、主從架構的問題。BDA與傳統的分析方法不同,因為數據量巨大,RDBMS是無法處理的。Hadoop是分布式批處理基礎結構包括:Hadoop內核、HDFS以及Map Reduce幾個項目組成。
3.2.1 數據挖掘
數據挖掘是一種從數據庫中提取有用信息的技術,可以對信息進行預處理,通過不同方法對結果值進行分析。數據挖掘與人工智能、機器學習等領域有著密切的聯系。雖然數據挖掘與大數據的數據管理的基本方法極其相似,但是在規模上有著明顯的區別。因數據挖掘要處理不同的數據源、數據類型的多樣性,數據挖掘算法能力和可擴展性需要得到解決,為了解決數據挖掘的需求和挑戰,大數據就誕生了[3]。如圖1所示。
3.2.2 云計算
3.2.3 HDFS之Map Reduce
Hadoop自帶DFS,其中的文件是在物理存儲中以分塊存儲實現的,不管是老版本的64 MB,還是新版本的128 MB,都是為了衡量存儲時是否要進行切塊。例如,實際文件大小可以是500 MB、100 GB、1 TB,都可以進行存儲。Hadoop架構包含名稱節點、輔助名稱節點、數據節點、作業跟蹤器以及任務跟蹤器。名稱節點負責維護存儲在HDFS上的所有文件的元數據信息、文件以塊的方式存儲。輔助名稱節點的工作是維護名稱節點的合法性,并及時更新名稱節點的信息。數據節點是真正存儲數據的節點,提供來自文件系統客戶端的讀寫請求,并根據需求存儲并檢索數據塊。任務跟蹤器在數據節點上運行,守護進程在集群中每臺計算節點中運行,用來啟動和管理各個Map Reduce任務,從數據節點獲取數據并完成任務,與作業跟蹤器進行通信。作業跟蹤器負責一個任務的整個執行過程,調度各個子任務到各自的計算節點,是Hadoop系統的主要組件之一。圖2顯示了Hadoop的框架結構,用戶將自己的工作以Map Reduce任務數據節點加任務跟蹤器的形式呈現在類似的系統上,以達到最佳的讀寫速度。
Map Reduce是由谷歌提出的,主要是為了解決數據的并行化處理和大型數據集的存儲、提供編程范例,允許使用以及方便地分配大量計算密集型任務。因此,目前許多編程語言都具有Map Reduce的實現和擴展。
Map過程:每個Mapper任務是一個java進程,它會讀取HDFS中的文件,解析成很多的鍵值對,經過我們覆蓋的map方法處理后,轉換為很多的鍵值對再輸出。經過Recorder Reader后,Mapper任務會接收輸入的分片,然后不斷地調用map()方法,對記錄進行處理,處理完畢后,轉換為新的<key,value>輸出。
Reducer過程:每個Reducer任務是一個java進程。Reducer任務接收Mapper任務的輸出,歸約處理后寫入到HDFS中。從文件中取出一個一個的鍵值對Group,對已排序輸出的每個鍵調用reduce函數。此階段的輸出直接寫到輸出文件系統,一般為HDFS以實現可靠存儲[4]。
3.2.4 大數據建模
在收集、存儲大量數據之后,如何組織數據、如何便捷使用數據、如何實現數據可擴展性是目前面臨的幾個問題。大數據建模就是要對這些數據進行分析、挖掘,通過建立模型找到數據的客觀規律,實現以下幾個功能:一是自動預測趨勢和行為。數據挖掘自動在大型數據庫中尋找預測信息以迅速直接由數據本身得出結論;二是關聯分析。在數據庫中找出具有強相關關系的幾個屬性;三是聚類。將數據庫中類似的記錄劃歸到一起,對事物進行再認識。常見的模型算法主要有:決策樹、神經網絡、貝葉斯網絡、多元線性回歸等。
3.2.5 大數據安全
大數據與傳統數據資產相比,具有較強的社會屬性。隨著大數據應用的不斷增加和應用范圍的擴大,大數據網絡安全問題變得至關重要。在數據保護和訪問控制中,存在著許多與大數據相關的安全問題,例如:數據多樣性、敏感性、節點有效監控、隱私保護等。為實現安全防護目標,需要融合安全治理、技術、標準、運維和測評來系統性地解決大數據的安全問題。要解決以上問題,可以通過大數據安全體系實現。安全體系主要涉及:數據傳輸安全(安全數據通道、SSL VPN)、隱私保護技術(數據加密、匿名化)、數據加密(靜態數據加密、動態數據加密)、數據挖掘安全(身份認證、動態口令認證、訪問控制)、數據備份、數據鏡像等[5]。同時,需要以標準為保障,實現安全互聯協同,達到多維立體的防護。
目前,大數據已成為創新的熱點,相關技術工具的持續開發為企業帶來了更多的選擇,如數據倉庫和數據可視化。大數據專注于數據服務、數據分析、數據采集,而數據挖掘更注重數據存儲能力,云計算專注于計算架構和實踐。大數據和云計算是同一個問題的兩個方面,云計算給大數據帶來了巨大的變化,為大數據提供了存儲空間。Hadoop技術應用于存儲架構,為企業帶來低成本與較高的靈活性,在不同的節點都有自己的存儲和計算資源,保證大數據分析業務的正常運行,可擴展并且具有性價比優勢。