一種基於大數據模型平臺下的細粒度數據溯源方法與流程
2023-10-08 18:25:09 2
本發明涉及一種數據溯源方法,尤其是一種基於大數據模型平臺下的細粒度數據溯源方法。
背景技術:
近些年隨著計算機和移動網際網路的發展,各種信息呈爆炸式的增長,這些信息基本可以分成兩類,一類是原始的錄入數據,另一類是由這些數據經過若干處理派生出來的數據。但是一般暴露給用戶的往往是結果數據,這些數據對於使用者來說,其處理過程或者說可信度來說是不得而知的,而有時候結果數據和原始數據沒有任何關係,這就使得用戶必須去關心結果數據的來源,因此產生了數據溯源技術。
數據溯源是對數據起源和數據產生過程的描述,這些信息在很多方面發揮著重要的作用,例如調試數據和轉換、審計、評估數據的質量和信任度以及實現對數據的訪問控制等方面。數據溯源可以分為粗粒度溯源和細粒度溯源,在細粒度溯源方面,國內研究相對較少。
傳統的細粒度數據溯源方法主要集中在資料庫領域,其解決方法是通過增加標記欄位來記錄資料庫中每一項的處理傳播過程,而在大數據平臺下,不管是源數據還是結果數據,都存儲在hdfs上,無法直接對每個輸入數據項進行注釋。因此本發明提出一種針對大數據模型平臺的細粒度數據溯源方法。
技術實現要素:
本發明的目的在於克服現有技術的不足,提供一種基於大數據模型平臺的細粒度數據溯源方法,能夠解決在大數據模型平臺下數據溯源過程中的數據依賴區分問題。
本發明的目的是通過以下技術方案來實現的,一種基於大數據模型平臺的細粒度數據溯源方法,包括以下步驟:
s1:模型工作流分析,在hadoop平臺下對oozie引擎所構成的模型工作流的分析,主要分析工作流中的輸入、輸出以及大數據處理框架的數據處理過程;
s2:細粒度溯源定義,以一種遞歸的形式表示工作流的細粒度數據溯源;
s3:溯源信息捕獲,在模型執行過程中,動態地產生並獲取溯源信息;
s4:溯源標記存儲,對捕獲的溯源信息以關聯形式在hdfs上存儲;
s5:溯源追蹤,用來追溯產生結果數據文件中的細粒度數據項的來源輸入數據項。
所述的模型工作流是在hadoop平臺上由控制流節點和動作節點組成的工作流,並由hadoopoozie工作流引擎伺服器解釋執行。
所述的細粒度溯源定義,通過給定一個大數據平臺下的工作流w,並用一個四元組表示為w={i,o,m,p},其中i表示該工作流的輸入集i={i1,i2...in},其中i表示輸入文件中單個輸入項;o表示工作流的輸出集o={o1,o2...on},其中o表示輸出文件中單個輸出項;m表示工作流中的模型集m={m1,m2...mn},其中m表示工作流中任意模型;p表示工作流的細粒度數據溯源操作。
所述溯源信息捕獲,通過對模型處理框架擴展,並加入溯源信息的產生和傳遞功能,使在模型執行過程中產生的溯源信息在工作流處理模型中傳遞。
所述溯源標記存儲,通過使用中間標識來對每個模型的輸入和輸出項之間建立關聯,並將溯源信息的關聯以文件的形式存儲在hdfs上。
所述溯源追蹤,基於溯源存儲文件,並以一種遞歸的方式對任意結果數據項來追蹤產生其的所有相關輸入項,溯源追蹤的粒度基於行級數據項。
所述的模型工作流中的控制節點不對數據產生影響,因此主要分析動作節點如mapreduce、hive、spark等。
所述的細粒度溯源定義包括以下子步驟:
s21:單個模型溯源表示:假設工作流中任何一個模型轉換表示為t,給定一個轉換實例t(i)=o,輸入集為i,單個的輸出元素o∈o,細粒度溯源需要能夠確定出那些貢獻給輸出元素o的輸入子集
s22:工作流溯源表示:工作流溯源是對當前工作流中涉及到所有模型轉換的溯源,並用遞歸方式表示方式根據單個轉換溯源,工作流w的溯源用pw表示,工作流w中的任何單個原始e的溯源表示為pw(e),若e為初始輸入元素,即e∈ik,那麼pw(e)={e},否則假設t作為輸出e的轉換,pt(e)作為e的一級溯源,遞歸表示為
所述的溯源信息捕獲包括以下子步驟:
s31:recordreader擴展:recordreader的封裝器將每次產生的輸出鍵值(ki,vi)和相對應的唯一標識q組合成(ki,)一起傳遞給mapper;
s32:mapper擴展:mapper封裝器將傳來數據(ki,)作為輸入,並對其分解,將輸出鍵值(ki,vi)傳遞給底層的map函數處理,得到新的輸出鍵值(km,vm),mapper封裝器將新輸出鍵值(km,vm)和唯一標識q一起作為結果並封裝為(km,)輸出;
s33:reducer擴展:reducer封裝器收到經mapper封裝器處理後的輸出後,根據相同的新輸出鍵值km進行遍歷,並把所有遍歷後的鍵值傳遞給reducer,同時reducer封裝器將持久化存儲map溯源信息對於每個reducer輸出(ko,vo),reducer封裝器將map溯源信息和reducer輸出組合後傳遞給recordwriter封裝器;
s34:recordwriter擴展:recordwriter封裝器把reducer封裝器處理後的溯源信息作為輸入,並通過recordwriter為每個輸出(ko,vo)生成一個唯一標識p,最後recordwriter封裝器存儲reduce溯源信息
所述的溯源標記存儲包括以下子步驟:
s41:map溯源存儲,對map過程產生的溯源信息進行存儲,通過輸入數據項的文件名和偏移量生成唯一標識q,並根據不同分組生成唯一關聯標識kid,以的形式存儲在map溯源文件中;
s42:reduce溯源存儲,對reduce過程產生的溯源信息進行存儲,通過輸入數據項的文件名和偏移量生成唯一標識p,以的形式存儲在reduce溯源文件中。
所述的溯源追蹤包括以下子步驟:
s51:選擇需要追蹤的數據項並查詢;
s52:根據該數據項確定所屬文件path和偏移量offset,利用backtrace方法進行溯源追蹤;
s53:根據結果文件和溯源文件之間的命名規則,確定要查詢的溯源文件名file,如果當前要查詢的溯源文件是reduce溯源,則轉入s54;如果是map溯源,則轉入s55;否則,表示已經追蹤到源頭,轉入s56;
s54:根據文件名file讀取reduce溯源文件,並採用二分搜索的方式掃描每一行,讀取每行的第一個屬性為pos,並查找和傳入的偏移量數值相等的pos,接著讀取該pos所在行的第二個屬性為provenanceid,並轉入s53遞歸調用backtrace(file,provenanceid);
s55:根據文件名file讀取map溯源文件,採用二分搜索方式,讀取每行數據,並依次將其分割為lineid,fileid,position,然後查找和傳入的偏移量數值相等lineid的行,根據fileid和file查詢輸入的文件名並設置為file,最後轉入s53遞歸調用backtrace(file,position);
s56:執行到該步驟表明已追蹤到源頭,直接輸出文件名和輸入數據項,直到所有的數據項追蹤完畢,執行結束。
本發明的有益效果是:為現有的大數據模型分析平臺提供了一種有效的、正確的數據溯源方法,該方法克服了傳統方法在大數據平臺下不適用的問題,並為溯源文件建立索引,減少io操作,提高了查詢速度。
附圖說明
圖1為一種基於大數據模型平臺的細粒度溯源方法的流程圖;
圖2為溯源模型構建第一流程圖;
圖3為溯源模型構建第二流程圖;
圖4為溯源標記存儲關係圖;
圖5為細粒度數據溯源追蹤流程圖。
具體實施方式
下面結合具體實施例進一步詳細描述本發明的技術方案,但本發明的保護範圍不局限於以下所述。
實施例1
如圖1,一種基於大數據模型平臺的細粒度數據溯源方法,包括以下步驟:
s1:模型工作流分析,在hadoop平臺下對oozie引擎所構成的模型工作流的分析,主要分析工作流中的輸入、輸出以及大數據處理框架的數據處理過程;
s2:細粒度溯源定義,以一種遞歸的形式表示工作流的細粒度數據溯源;
s3:溯源信息捕獲,在模型執行過程中,動態地產生並獲取溯源信息;
s4:溯源標記存儲,對捕獲的溯源信息以關聯形式在hdfs上存儲;
s5:溯源追蹤,用來追溯產生結果數據文件中的細粒度數據項的來源輸入數據項。
所述的模型工作流是在hadoop平臺上由控制流節點和動作節點組成的工作流,並由hadoopoozie工作流引擎伺服器解釋執行。
所述的細粒度溯源定義,通過給定一個大數據平臺下的工作流w,並用一個四元組表示為w={i,o,m,p},其中i表示該工作流的輸入集i={i1,i2...in},其中i表示輸入文件中單個輸入項;o表示工作流的輸出集o={o1,o2...on},其中o表示輸出文件中單個輸出項;m表示工作流中的模型集m={m1,m2...mn},其中m表示工作流中任意模型;p表示工作流的細粒度數據溯源操作。
如圖2,3,所述溯源信息捕獲,通過對原生態大數據模型處理框架擴展,並加入溯源信息的產生和傳遞功能,使在模型執行過程中產生的溯源信息在工作流處理模型中傳遞。
如圖4,所述溯源標記存儲,通過使用中間標識來對每個模型的輸入和輸出項之間建立關聯,並將溯源信息的關聯以文件的形式存儲在hdfs上。
如圖5,所述溯源追蹤,基於溯源存儲文件,並以一種遞歸的方式對任意結果數據項來追蹤產生其的所有相關輸入項,溯源追蹤的粒度基於行級數據項。
所述的模型工作流中的控制節點不對數據產生影響,因此主要分析動作節點如mapreduce、hive、spark等。以mapreduce為例,mapreduce框架主要包括兩個階段:
map階段:設map函數為m,輸入數據集為i,對於i中每個元素i,它可以產生0個或者多個輸出元素,即
m(i)=∪i∈im({i})
reduce階段:設reduce函數為r,輸入數據集為i,其中每個元素是一個鍵值對,則r的輸出為針對輸入i中的每個相同鍵的分組產生的0個或者多個元素,假設用k1,k2...kn表示i中不同鍵,gj是由輸入i中所有鍵等於kj的鍵值對組成,即
r(i)=∪j∈[1,n]r({gj})
所述的細粒度溯源定義包括以下子步驟:
s21:單個模型溯源表示:假設工作流中任何一個模型轉換表示為t,給定一個轉換實例t(i)=o,輸入集為i,單個的輸出元素o∈o,細粒度溯源需要能夠確定出那些貢獻給輸出元素o的輸入子集
s22:工作流溯源表示:工作流溯源是對當前工作流中涉及到所有模型轉換的溯源,並用遞歸方式表示方式根據單個轉換溯源,工作流w的溯源用pw表示,工作流w中的任何單個原始e的溯源表示為pw(e),若e為初始輸入元素,即e∈ik,那麼pw(e)={e},否則假設t作為輸出e的轉換,pt(e)作為e的一級溯源,遞歸表示為
所述的溯源信息捕獲包括以下子步驟:
s31:recordreader擴展:recordreader的封裝器將每次產生的輸出鍵值(ki,vi)和相對應的唯一標識q組合成(ki,)一起傳遞給mapper;
s32:mapper擴展:mapper封裝器將傳來數據(ki,)作為輸入,並對其分解,將輸出鍵值(ki,vi)傳遞給底層的map函數處理,得到新的輸出鍵值(km,vm),mapper封裝器將新輸出鍵值(km,vm)和唯一標識q一起作為結果並封裝為(km,)輸出;
s33:reducer擴展:reducer封裝器收到經mapper封裝器處理後的輸出後,根據相同的新輸出鍵值km進行遍歷,並把所有遍歷後的鍵值傳遞給reducer,同時reducer封裝器將持久化存儲map溯源信息對於每個reducer輸出(ko,vo),reducer封裝器將map溯源信息和reducer輸出組合後傳遞給recordwriter封裝器;
s34:recordwriter擴展:recordwriter封裝器把reducer封裝器處理後的溯源信息作為輸入,並通過recordwriter為每個輸出(ko,vo)生成一個唯一標識p,最後recordwriter封裝器存儲reduce溯源信息
所述的溯源標記存儲包括以下子步驟:
s41:map溯源存儲,對map過程產生的溯源信息進行存儲,通過輸入數據項的文件名和偏移量生成唯一標識q,並根據不同分組生成唯一關聯標識kid,以的形式存儲在map溯源文件中;
s42:reduce溯源存儲,對reduce過程產生的溯源信息進行存儲,通過輸入數據項的文件名和偏移量生成唯一標識p,以的形式存儲在reduce溯源文件中。
所述的溯源追蹤包括以下子步驟:
s51:選擇需要追蹤的數據項並查詢;
s52:根據該數據項確定所屬文件path和偏移量offset,利用backtrace方法進行溯源追蹤;
s53:根據結果文件和溯源文件之間的命名規則,確定要查詢的溯源文件名file,如果當前要查詢的溯源文件是reduce溯源,則轉入s54;如果是map溯源,則轉入s55;否則,表示已經追蹤到源頭,轉入s56;
s54:根據文件名file讀取reduce溯源文件,並採用二分搜索的方式掃描每一行,讀取每行的第一個屬性為pos,並查找和傳入的偏移量數值相等的pos,接著讀取該pos所在行的第二個屬性為provenanceid,並轉入s53遞歸調用backtrace(file,provenanceid);
s55:根據文件名file讀取map溯源文件,採用二分搜索方式,讀取每行數據,並依次將其分割為lineid,fileid,position,然後查找和傳入的偏移量數值相等lineid的行,根據fileid和file查詢輸入的文件名並設置為file,最後轉入s53遞歸調用backtrace(file,position);
s56:執行到該步驟表明已追蹤到源頭,直接輸出文件名和輸入數據項,直到所有的數據項追蹤完畢,執行結束。
以上所述僅是本發明的優選實施方式,應當理解本發明並非局限於本文所披露的形式,不應看作是對其他實施例的排除,而可用於各種其他組合、修改和環境,並能夠在本文所述構想範圍內,通過上述教導或相關領域的技術或知識進行改動。而本領域人員所進行的改動和變化不脫離本發明的精神和範圍,則都應在本發明所附權利要求的保護範圍內。