本發明專利技術公開一種大數據實時處理方法,涉及計算機應用系統領域。本發明專利技術數據的入庫,查詢,傳輸都是并發的,實時的。在分發任務的同時,進行過濾索引,過濾索引的同時,將過濾完的索引文件分發到datanode上面,同時datanode完成本地文件的查詢,并向客戶端返回數據。任何datanode的查詢完成,即向用戶返回查詢結果。本發明專利技術方法處理過程都是并發執行的,最大限度的利用了計算機的硬件設備,高效B+結構和查詢的并行執行,使查詢達到了實時完成,極大地提高了查詢的效率,用戶執行查詢操作時便能獲得查詢結果。
【技術實現步驟摘要】
本專利技術涉及計算機應用系統領域,具體涉及ー種涉及海量數據實時處理的方法。
技術介紹
隨著信息化的發展,企業要處理的數據爆炸式的增長,數據量都達到了 TB級,PB級,由此帶來了一系列的問題。數據量的增多,系統的負載越來越大,數據的入庫和查詢性能隨之下降。在不增加硬件成本的情況下,如何發揮系統的最大性能,使入庫,查詢速度最快,是許多企業面臨的難題。云計算的出現為海量數據處理提供了有效地解決途徑,在通常的云計算解決方案中,通過Hadoop (—種分布式系統基礎架構)的HDFS (—種分布式文件系統)可以方便的實現海量數據存儲,同時有效防止單點故障,避免不必要的損失。但是,在HDFS上進行數據檢索時,常用的方法是開啟全局捜索MapReduce (大規模數據并行運算),這需要完整過濾一遍·HDFS上存儲的所有數據。在云計算中,尤其是在海量數據情況下,這樣做會對系統資源造成巨大的浪費,耗費大量的時間,這顯然不是一個適合投入現實生產環境的方式。
技術實現思路
本專利技術的目的在于克服現有云計算解決方案中常用數據處理方法會造成系統資源浪費,數據處理時間長的缺點,提供一種有效的海量數據實時處理方法。本專利技術的實現大數據實時處理方法,其數據的入庫,查詢,傳輸都是并發的,實時的 (1)實時入庫以現有的HDFS為基礎,在每臺datanode(數據節點)上啟動多線程創建索引,并行創建索引文件,索引的創建以B+樹的結構生成; (2)實時查詢使用分布式計算系統,在服務器端創建并提交job(任務)進行查詢,查詢分為三步 A.namenode (控制節點)上進行索引過濾,由于索引文件名是按照時間創建的,根據查詢條件中的時間和索引文件名匹配,篩選滿足條件的索引文件; B.將任務分發到每臺datanode上,根據篩選出的索引文件和查詢條件通過B+樹查詢,得到滿足條件的數據的位置; C.再次進行任務的分發,根據上一歩得到的數據的位置在每臺機器上讀取數據,并返回查詢結果; (3)實時結果傳輸使用jetty(—個開源的servlet容器)作為web容器,在HDFS上做數據查詢的同吋,jetty輪循查詢結果目錄,如果不為空,則讀取查詢結果文件并返回給客戶端,客戶端繼續向服務器端發送continue (繼續)請求,服務器端啟動多線程讀取查詢結果,將讀取數據返回給客戶端,如果返回的讀取數據為空,流程結束,如果不為空,客戶端繼續發送continue請求;查詢過程中,任何datanode查詢成功,即向客戶端返回數據,不需要所有datanode查詢完成。本專利技術的大數據實時處理方法中,數據的入庫,查詢,傳輸都是并發的,實時的。在創建任務的同時,進行過濾索引,過濾索引的同時,將過濾完的索引文件分發到datanode上面,同時datanode完成本地文件的查詢,并向客戶端返回數據。任何datanode的查詢完成,即向用戶返回查詢結果。本專利技術方法處理過程都是并發執行的,最大限度的利用了計算機的硬件設備,高效B+結構和查詢的并行執行,使查詢達到了實時完成,極大地提高了查詢的效率,用戶執行查詢操作時便能獲得查詢結果。附圖說明圖I是基于B+樹的字段索引不意 圖2是jetty的查詢流程 圖3是數據的查詢傳輸流程圖。具體實施例方式下面結合附圖對本專利技術的技術方案進行詳細說明 本專利技術的所有處理都是并發執行的,最大限度的利用了計算機的硬件設備,極大地提高了處理效率。使用戶執行查詢操作時便能獲得查詢結果。本專利技術包括數據的實時入庫,實時查詢,實時結果傳輸,數據的入庫,查詢,傳輸都 是并發的,實時的。I.實時入庫 以現有的HDFS為基礎,在每臺datanode上啟動多線程創建索引,并行創建索引文件。索引的創建方式如圖I所示 對ー些重要字段建立索引,以B+樹的結構生成,每一條新的記錄只需要插入到B+樹中。B+樹的插入僅在葉結點上進行。每插入ー個(關鍵碼-指針)索引項后都要判斷結點中的子樹棵數是否超出范圍。當插入后結點中的子樹棵數大于m (B+樹的階數)吋,需要將葉結點分裂為兩個結點。它們的雙親結點中應同時包含這兩個結點的最大關鍵碼和結點地址。此后,問題歸于在非葉結點中的插入了。在非葉結點中關鍵碼的插入與葉結點的插入類似,非葉結點中的子樹棵數的上限為m,超出這個范圍也要進行結點分裂。在做根結點分裂吋,因為沒有雙親結點,就必須創建新的雙親結點,作為樹的新根。2.實時查詢 使用分布式計算系統,首先客戶端向服務器端發送get請求,服務器端創建并提交job進行查詢,查詢分為三步 I) . namenode進行索引過濾,由于索引文件名是按照時間創建的,根據查詢條件中的時間(查詢條件中必須有時間條件,開始時間和結束時間)和索引文件名匹配,篩選滿足條件的索引文件。2).將任務分發到每臺datanode上,根據篩選出的索引文件和查詢條件通過B+樹查詢,得到滿足條件的數據的位置。數據位置記錄了存儲數據所在機器(datanode)的ip和偏移量,根據ip找到機器,再根據偏移量就能找到對應的數據。3).再次進行任務的分發,根據上一歩得到的數據的位置在每臺機器上讀取數據,并返回查詢結果,將查詢結果集寫到本地文件中。高效B+結構和查詢的并行執行,使查詢達到了實時完成。3.實時結果傳輸 使用jetty作為web容器,在HDFS上做數據查詢的同時,jetty輪循查詢結果目錄,如果不為空,則讀取查詢結果文件并返回給客戶端,客戶端繼續向服務器端發送continue請求,服務器端啟動多線程讀取查詢結果,將讀取數據返回給客戶端,如果返回的讀取數據為空,流程結束,如果不為空,客戶端繼續發送continue請求。查詢過程中,任何datanode查詢成功,即向客戶端返回數據,不需要所有datanode查詢完成。 圖2是jetty的查詢流程圖,圖3是數據的查詢傳輸完整流程。使用jetty作為web容器,首先客戶端向服務器端發送get請求,服務器端解析json (—種輕量級的數據交換格式)串,根據json串中的查詢條件實例化job對象,提交job進行分布式查詢,最后返回結果。在HDFS上做查詢的同吋,jetty輪循查詢結果目錄,如果不為空,則讀取文件并返回給客戶端,客戶端繼續向服務端發送continue請求,服務器端啟動多線程讀取查詢結果,將讀取數據返回給客戶端。如果查詢結果為空并且HDFS上的查詢已經結束,則返回空,流程結束。本文檔來自技高網...
【技術保護點】
一種大數據實時處理方法,其特征在于數據的入庫,查詢,傳輸都是并發的,實時的:(1)實時入庫:以現有的HDFS為基礎,在每臺datanode上啟動多線程創建索引,并行創建索引文件,索引的創建以B+樹的結構生成;(2)實時查詢:使用分布式計算系統,在服務器端創建并提交job進行查詢,查詢分為三步:A.?namenode上進行索引過濾,由于索引文件名是按照時間創建的,根據查詢條件中的時間和索引文件名匹配,篩選滿足條件的索引文件;B.將任務分發到每臺datanode上,根據篩選出的索引文件和查詢條件通過B+樹查詢,得到滿足條件的數據的位置;C.再次進行任務的分發,根據上一步得到的數據的位置在每臺機器上讀取數據,并返回查詢結果;(3)實時結果傳輸:使用jetty作為web容器,在HDFS上做數據查詢的同時,jetty輪循查詢結果目錄,如果不為空,則讀取查詢結果文件并返回給客戶端,客戶端繼續向服務器端發送continue請求,服務器端啟動多線程讀取查詢結果,將讀取數據返回給客戶端,如果返回的讀取數據為空,流程結束,如果不為空,客戶端繼續發送continue請求;查詢過程中,任何datanode查詢成功,即向客戶端返回數據,不需要所有datanode查詢完成。...
【技術特征摘要】
1.ー種大數據實時處理方法,其特征在于數據的入庫,查詢,傳輸都是并發的,實時的 (1)實時入庫以現有的HDFS為基礎,在每臺datanode上啟動多線程創建索引,并行創建索引文件,索引的創建以B+樹的結構生成; (2)實時查詢使用分布式計算系統,在服務器端創建并提交job進行查詢,查詢分為~- j_hiニ少 A.namenode上進行索引過濾,由于索引文件名是按照時間創建的,根據查詢條件中的時間和索引文件名匹配,篩選滿足條件的索引文件; B.將任務分發到每臺datanode上,根據篩選出的索引文件和查詢條件通過B+樹查詢,得到滿足...
【專利技術屬性】
技術研發人員:張真,王磊,陳偉,王胤然,楊震宇,王磊,周亮亮,
申請(專利權)人:南京云創存儲科技有限公司,
類型:發明
國別省市:
還沒有人留言評論。發表了對其他瀏覽者有用的留言會獲得科技券。