集團大數(shù)據(jù)平臺建設項目系統(tǒng)功能設計方案_第1頁
集團大數(shù)據(jù)平臺建設項目系統(tǒng)功能設計方案_第2頁
集團大數(shù)據(jù)平臺建設項目系統(tǒng)功能設計方案_第3頁
集團大數(shù)據(jù)平臺建設項目系統(tǒng)功能設計方案_第4頁
集團大數(shù)據(jù)平臺建設項目系統(tǒng)功能設計方案_第5頁
已閱讀5頁,還剩154頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

集團大數(shù)據(jù)平臺建設項目系統(tǒng)功能設計方案概述圖5-1系統(tǒng)功能設計內容 參見上圖,系統(tǒng)功能設計主要包括:平臺管理(多租戶管理、多應用管理、作業(yè)調度管理、統(tǒng)一運維監(jiān)控)、數(shù)據(jù)管理(結構化數(shù)據(jù)管理、半/非結構化結構數(shù)據(jù)管理、數(shù)據(jù)采集、數(shù)據(jù)交換、數(shù)據(jù)存儲管理、數(shù)據(jù)加工清洗、數(shù)據(jù)計算、數(shù)據(jù)查詢)、數(shù)據(jù)管控(元數(shù)據(jù)、主數(shù)據(jù)管理、數(shù)據(jù)質量管理)、數(shù)據(jù)ETL、數(shù)據(jù)分析與挖掘、數(shù)據(jù)展現(xiàn)等。平臺管理功能多應用管理星環(huán)TranswarpDataHub大數(shù)據(jù)平臺對企業(yè)級用戶提供多應用場景的支持,例如:通過TranswarpStream提供實時數(shù)據(jù)計算場景支持,通過TranswarpInceptor提供批處理場景支持,通過TranswarpHyperbase提供在線數(shù)據(jù)服務場景支持,通過TranswarpDiscover提供數(shù)據(jù)分析、挖掘場景支持。星環(huán)大數(shù)據(jù)平臺通過TranswarpOperatingSystem云平臺系統(tǒng)(以下簡稱TOS)實現(xiàn)大數(shù)據(jù)平臺多應用管理,支持對應用的服務級別管理(SLA),實現(xiàn)應用的訪問資源控制,支持資源隔離。TOS基于Docker容器技術,支持一鍵部署TDH各個組件,支持優(yōu)先級的搶占式資源調度和細粒度資源分配,讓大數(shù)據(jù)應用輕松擁抱云服務,滿足企業(yè)對于構建統(tǒng)一的企業(yè)大數(shù)據(jù)平臺來驅動各種業(yè)務的強烈需求。TOS主要由4部分組成,底層由基于Docker的容器技術作為所有應用服務的承載,通過將應用服務裝載在Docker容器中,能夠實現(xiàn)應用環(huán)境和底層環(huán)境的解耦合;通過優(yōu)化過的Kurbernetes對整個集群的資源進行管理與調度;在此之上,內置了豐富的系統(tǒng)級服務應用,如完整Docker化的TranswarpDataHub集群各個組件等;對于其他應用服務的接入,提供了完整的DockerImagesRepository集中服務管理庫,用戶可以通過TOS提供的接口,將應用服務制作為DockerImage,加載入TOSRepository,通過定義調度規(guī)則,在TOS統(tǒng)一管理與調度。圖5-2大數(shù)據(jù)云平臺架構圖便捷部署:基于TOS,用戶可以通過WebUI、RESTAPI或者命令行一鍵瞬間安裝和部署TDH集群,能自動根據(jù)服務的依賴性安裝所需的其他服務組件。在虛擬技術之前,部署硬件資源滿足新的應用需求需要幾天時間,通過虛擬化技術把這個時間降到了分鐘級別,而目前基于Docker的TOS云平臺把時間降到了秒級別。Docker作為裝載進程的容器,不必重新啟動操作系統(tǒng),幾秒內能關閉,可以在數(shù)據(jù)中心創(chuàng)建或銷毀,沒有額外消耗。典型的數(shù)據(jù)中心利用率是30%,通過更積極的資源分配,以低成本方式對新的實例實現(xiàn)更合理的資源分配,從而提高數(shù)據(jù)中心的利用效率。完整的資源隔離:TOS通過優(yōu)化Kubernetes資源管理框架實現(xiàn)了基于Docker容器對CPU,內存,硬盤和網絡更好的隔離。TOS中Docker容器的隔離目前是由Linux內核提供的六項隔離,包括主機名與域名的隔離,信號量、消息隊列和共享內存的隔離,進程編號的隔離,網絡設備、網絡棧、端口的隔離,掛載點(文件系統(tǒng))的隔離,用戶和用戶組的隔離。這些隔離保證了不同容器的運行環(huán)境是基本不受影響的,比如掛載點的隔離,就保證了一個容器中的進程不能隨意訪問另外一個容器中的文件。TOS平臺相比于傳統(tǒng)的ApacheYarn管理框架和開源Kubernetes的資源管理框架而言,在資源粒度方面可以管控磁盤和網絡,而傳統(tǒng)資源調度框架只能管理到CPU和內存;在隔離性方面,容器技術有天然的優(yōu)勢;在依賴性和通用性方面,不依賴于Hadoop組件以及技術,這意味著可以實現(xiàn)所有上層應用的云化開發(fā)、測試、升級以及管理調度。容器的隔離目前是由Linux內核提供的六項隔離,包括主機名與域名的隔離,信號量、消息隊列和共享內存的隔離,進程編號的隔離,網絡設備、網絡棧、端口的隔離,掛載點(文件系統(tǒng))的隔離,用戶和用戶組的隔離。這些隔離保證了不同容器的運行環(huán)境是基本不受影響的,比如掛載點的隔離,就保證了一個容器中的進程不能隨意訪問另外一個容器中的文件。表5-1Yarn管理資源粒度隔離程度依賴性通用性YARNCPU/MEM進程級別、不精確依賴某個HDFS支持少量計算引擎KubernetesCPU/MEMContainer不依賴Hadoop支持通用Linux負載TOSCPU/MEM,DISK,NETWORKContainer+Quota+VLAN不依賴Hadoop支持大數(shù)據(jù)及通用應用靈活資源調度:TOS支持對TDH組件自動擴容或者縮容,同時也允許其他應用服務和大數(shù)據(jù)服務共享集群,從而提高資源的使用率。TOS創(chuàng)新的支持搶占式資源調度模型,能在保障實時業(yè)務的同時,提高集群空閑時的資源占用,讓批量作業(yè)和實時業(yè)務在互不干擾的情況下分時共享計算資源。通過支持動態(tài)擴容和收縮集群,從何實現(xiàn)了資源的動態(tài)分配與調度,整個過程熱插拔業(yè)務、服務無需重啟。自動修復:TOS的Replicator模塊負責檢測集群規(guī)模,當集群中服務發(fā)生問題時可以另起一個服務實例實現(xiàn)集群的自我修復功能。舉例而言,某個HyperbaseRegionServer由于硬件原因服務停止,TOS平臺能夠實時感知,并在管理的資源范圍內另起一個RegionServer的Docker容器接替因故停止的容器,動態(tài)的保證了服務集群的整體穩(wěn)定性。應用隔離:在TOS上運行的TDH以及應用服務還引入微服務的架構,顯著降低用戶部署環(huán)境對TDH以及應用服務穩(wěn)定性的影響,提高了部署的可用性,并且能讓用戶在不停業(yè)務以及服務的前提下,享受到快捷的TDH以及應用服務更新版本滾動升級。多租戶管理對于各個部門以及下級單位的不同應用需求,通過統(tǒng)一的集群管理,結合星環(huán)的YARN資源調度框架,可以動態(tài)創(chuàng)建和銷毀集群,靈活部署業(yè)務,適合對非7x24不間斷業(yè)務(例如周期性統(tǒng)計業(yè)務)動態(tài)部署。此外,在資源隔離方面,TranswarpYARN支持對計算資源和內存資源的管理能力,避免占用內存資源多的Spark或Map/Reduce集群之間爭搶內存資源。缺省模式下集群就是創(chuàng)建在YARN上,可以非常方便的動態(tài)創(chuàng)建和銷毀Spark或者Map/Reduce集群。同時,通過YARN的資源隔離和配額管理,可以避免使用同一個Map/Reduce集群時出現(xiàn)的計算資源爭搶現(xiàn)象,保證每項業(yè)務都能順利完成。與此同時,為了更好的利用平臺計算資源,在申請資源配額后,如果當前用戶的資源緊張或受限,可以動態(tài)調配其他用戶的閑置資源加入,當其他用戶使用時再歸還。同時,結合Kerberos實現(xiàn)TranswarpYARN的資源申請,作業(yè)提交以及隊列使用的權限管控,管理員通過管控界面,定義YARN中用戶能夠在哪些隊列中提交作業(yè),能申請資源的額度以及能提交作業(yè)的最大個數(shù)等,實現(xiàn)計算資源的用戶權限管控。因此,對于分析類應用,可以充分使用星環(huán)YARN的特性,實現(xiàn)分析集群的按需創(chuàng)建與銷毀,從而實現(xiàn)數(shù)據(jù)、資源、計算能力的統(tǒng)一調度和規(guī)劃。對不同的租戶的操作員進行分組分類分級管理,利用Kerberos以及LDAP對租戶應用授權,支持對計算資源和內存資源的管理能力,避免占用內存資源多的Spark或Map/Reduce集群之間爭搶內存資源,對租戶的數(shù)據(jù)訪問能力進行設置,實現(xiàn)數(shù)據(jù)隔離。統(tǒng)一運維監(jiān)控本方案提供統(tǒng)一的運維監(jiān)控服務,主要通過TOS實現(xiàn),TOS的核心是Docker和Kubernetes。本方案涉及到的所有軟件的部署都通過Docker打包成鏡像文件,以便非??旖莸牟渴饘嵤炔肯到y(tǒng)通過鏡像數(shù)據(jù)接口交互層進行交互。通過外部接口層納入集團運維平臺進行統(tǒng)一監(jiān)控。圖5-3統(tǒng)一監(jiān)控平臺本方案提供統(tǒng)一的運維監(jiān)控服務,主要通過TOS實現(xiàn),TOS的核心是Docker和Kubernetes。本方案涉及到的所有軟件的部署都通過Docker打包成鏡像文件,以便非??觳渴?。整個架構通過Docker打包,并提供服務接口,這種服務接口分為兩層:鏡像層提供接口文件提供數(shù)據(jù)接口外部接口層提供API提供URL嵌入提供數(shù)據(jù)接口提供XML接口(包括定制XML,JSON等)ESB接口整個接口層的設計便于產品之間,系統(tǒng)之間的交換,也便于整個架構對接IBMTivoli,BMCControlM等監(jiān)控平臺,引入監(jiān)控或者外推監(jiān)控,更好的融入到整個集團集團的監(jiān)控體系,便于統(tǒng)一監(jiān)控。Hadoop集群自動化部署一站式大數(shù)據(jù)平臺提供集群自動化部署服務。用戶只需要安裝TranswarpManager管理平臺軟件,就可以在友好的圖形化界面上安裝、部署、配置所需要的服務。整個安裝過程不需要用戶使用任何終端命令或者代碼。圖5-4TDH節(jié)點管理界面1平臺提供了強大的在線擴容功能,不需要宕機停庫,不需要停止業(yè)務,就可以添加新的節(jié)點,實現(xiàn)擴容。節(jié)點添加完成之后可以立即對新添加的節(jié)點進行角色的分配,一旦配置成功,則新加的節(jié)點就會馬上投入運算。擴容之后的數(shù)據(jù)節(jié)點也不需要停機進行數(shù)據(jù)重分布,系統(tǒng)自動選擇空閑的時間進行數(shù)據(jù)的重新分布。同時,擴容的操作可以方便的在界面進行操作。圖5-5TDH節(jié)點管理界面2Hadoop集群性能監(jiān)控平臺通過專門的監(jiān)控服務對集群的狀態(tài)進行監(jiān)控,包括服務器CPU、內存、網絡和磁盤的利用率和健康狀態(tài),以及分布式應用系統(tǒng)的狀態(tài),并在故障發(fā)生或者某項指標超過預設閥值時時提供告警功能。管理員可通過瀏覽器訪問集群的監(jiān)控和管理界面進行日常的監(jiān)控和維護,系統(tǒng)提供圖標信息展示。管理員可以便捷了解到集群的計算資源是否處于空閑狀態(tài)、哪些服務器的負載過高,甚至判斷集群的組網及機架安排是否合理等。管理員也可通過對各個節(jié)點的各個角色的日志信息進行檢索,獲得更加精確的信息。圖5-6TDH監(jiān)控模塊平臺集成Ganglia集群監(jiān)控系統(tǒng),能夠從上千臺服務器上收集系統(tǒng)信息,能夠保障當集群規(guī)模擴展至上百臺上千臺服務器時,監(jiān)控程序都能夠高效的獲取每臺服務器的狀態(tài)信息。Ganglia由Gmetad與Gmond組成,其中集群中每一臺機器上都有一個Gmond服務進程,Gmetad收集所有節(jié)點metrics信息并在Web前端界面上展現(xiàn)出來。集群中的每臺服務器上都運行監(jiān)控守護進程,守護進程能夠將這些數(shù)據(jù)的精簡傳遞,這使得Ganglia的運行對集群的資源消耗極少。所有的指標數(shù)據(jù)都存儲在一個RRD(RoundRobinDatabase)數(shù)據(jù)庫中,為了防止Gmetad頻繁寫磁盤造成I/O瓶頸,通過rrdcache緩存指標數(shù)據(jù),定量寫入RRD。存儲資源監(jiān)控,包括獲取存儲量、剩余存儲量以及存儲系統(tǒng)整體情況信息。通過Ganglia集群監(jiān)控系統(tǒng)向集團運維監(jiān)控平臺發(fā)送監(jiān)控消息,提供對接接口,實現(xiàn)大數(shù)據(jù)平臺與集團運維監(jiān)控平臺的互通,實現(xiàn)統(tǒng)一監(jiān)控。圖5-7TDH性能監(jiān)控界面運算資源監(jiān)控,包括監(jiān)控工作負載、CPU、內存資源、性能、組件性能(Kafka處理性能)等情況圖5-8TDH性能監(jiān)控管理界面提供全局日志和任務級日志。圖5-9TDH全局日志查看界面圖5-10TDH任務日志查看界面在故障發(fā)生時提供告警功能。圖5-11TDH告警監(jiān)控界面Hadoop集群資源管理TDH提供計算任務管理和作業(yè)管理,包括作業(yè)的上傳、配置、啟動、停止、刪除和狀態(tài)查看等功能。圖5-12TDH作業(yè)管理界面圖5-13TDH作業(yè)配置管理界面存儲資源管理,瀏覽數(shù)據(jù)、更改回收存儲資源。圖5-14TDH資源管理界面在TDH平臺中,資源可以從多個方面進行管理。從資源管理模塊YARN的層面,用戶通過配置不同的Scheduler來定義不一樣的資源使用策略,目前支持FIFOScheduler、FairScheduler以及CapacityScheduler,實現(xiàn)作業(yè)動態(tài)調整,支持對任務系統(tǒng)資源占用進行實時調配,改變作業(yè)調度優(yōu)先級等操作。圖5-15優(yōu)先級管理界面1圖5-16優(yōu)先級管理界面2圖形界面方式多租戶管理用戶可以使用圖形化界面來配置多租戶的用戶、組的權限。管理員用戶可以新建、編輯用戶的信息。圖5-17多租戶管理界面1圖5-18多租戶管理界面2管理員用戶可以編輯管理組的信息。圖5-19管理員編輯界面同時,管理員用戶也可以編輯、維護角色的信息。圖5-20角色信息編輯界面同時用戶可以可以按需創(chuàng)建,按需銷毀計算集群,并且創(chuàng)建集群時只需要指定所需計算資源,無需指定具體物理機器圖5-21角色資源管理界面1圖5-22角色資源管理界面2系統(tǒng)巡檢信息收集整個系統(tǒng)的軟硬件狀態(tài)都可以方便的從圖形界面中進行監(jiān)控。用戶可以實時的瀏覽集群中CPU、內存、網絡與磁盤等的狀態(tài)。圖5-23系統(tǒng)巡檢界面TDH平臺從各環(huán)節(jié)層次以及組件抽取巡檢信息,按照管理平臺的要求對其進行重新過濾和格式化整理,并最終進行日志信息入庫。整個過程需實現(xiàn)處理的流程化及自動調度機制,以保證管理平臺能夠及時的獲取日志數(shù)據(jù)。系統(tǒng)管理模塊對Hadoop平臺各層次所產生的日志記錄進行獲取并整理。其中包括訪問層日志記錄、應用層日志記錄、數(shù)據(jù)存儲層日志記錄、數(shù)據(jù)獲取層日志記錄以及元數(shù)據(jù)管理的日志記錄。提供一鍵式的圖形化巡檢工具,直觀反映關鍵部件狀態(tài),并提供一鍵式的信息收集工具,收集系統(tǒng)日志、配置信息以便于快速定位。圖5-24信息收集界面1圖5-25信息收集界面2系統(tǒng)性能跟蹤平臺提供了友好的界面,方便用戶跟蹤當前的任務進度與資源使用情況。用戶可以通過以下頁面監(jiān)控正在運行的任務與已經完成任務。同時界面也非常簡單明了的展示了每個查詢的資源消耗。圖5-26性能跟蹤界面也可以直接通過選擇時間范圍來查詢指定的SQL。圖5-27SQL任務跟蹤界面與集團運維監(jiān)控平臺對接通過Ganglia集群監(jiān)控系統(tǒng)向集團運維監(jiān)控平臺發(fā)送監(jiān)控消息,提供對接接口,實現(xiàn)大數(shù)據(jù)平臺與集團運維監(jiān)控平臺的互通,實現(xiàn)統(tǒng)一監(jiān)控。平臺通過專門的監(jiān)控服務對集群的狀態(tài)進行監(jiān)控,包括服務器CPU、內存、網絡和磁盤的利用率和健康狀態(tài),以及分布式應用系統(tǒng)的狀態(tài),并在故障發(fā)生或者某項指標超過預設閥值時提供告警功能。管理員可通過瀏覽器訪問集群的監(jiān)控和管理界面進行日常的監(jiān)控和維護,系統(tǒng)提供圖表信息展示。管理員可以便捷的了解到集群的計算資源是否處于空閑狀態(tài)、哪些服務器的負載過高,甚至判斷集群的組網及機架安排是否合理等。管理員也可通過對各個節(jié)點的各個角色的日志信息進行檢索,獲得更加精確的信息。圖5-28TDH監(jiān)控模塊平臺集成Ganglia集群監(jiān)控系統(tǒng),能夠從上千臺服務器上收集系統(tǒng)信息,能夠保障當集群規(guī)模擴展至上百臺上千臺服務器時,監(jiān)控程序都能夠高效的獲取每臺服務器的狀態(tài)信息。Ganglia由Gmetad與Gmond組成,其中集群中每一臺機器上都有一個Gmond服務進程,Gmetad收集所有節(jié)點metrics信息并在Web前端界面上展現(xiàn)出來。集群中的每臺服務器上都運行監(jiān)控守護進程,守護進程能夠將這些數(shù)據(jù)的精簡傳遞,這使得Ganglia的運行對集群的資源消耗極少。所有的指標數(shù)據(jù)都存儲在一個RRD(RoundRobinDatabase)數(shù)據(jù)庫中,為了防止Gmetad頻繁寫磁盤造成I/O瓶頸,通過rrdcache緩存指標數(shù)據(jù),定量寫入RRD。存儲資源監(jiān)控,包括獲取存儲量、剩余存儲量以及存儲系統(tǒng)整體情況信息。通過Ganglia集群監(jiān)控系統(tǒng)向集團運維監(jiān)控平臺發(fā)送監(jiān)控消息,提供對接接口,實現(xiàn)大數(shù)據(jù)平臺與集團運維監(jiān)控平臺的互通,實現(xiàn)統(tǒng)一監(jiān)控。圖5-29TDH性能管理界面運算資源監(jiān)控,包括監(jiān)控工作負載、CPU、內存資源、性能、組件性能(Kafka處理性能)等情況圖5-30TDH負載跟蹤界面提供全局日志和任務級日志。圖5-31TDH全局日志管理界面圖5-32TDH任務日志管理界面在故障發(fā)生時提供告警功能。圖5-33TDH告警管理管理界面作業(yè)調度管理Trinity產品充分支持集團數(shù)據(jù)服務技術方面的技術需求,數(shù)據(jù)流架構圖如下:圖5-34Trinity數(shù)據(jù)流架構圖Trinity提供功能完整,性能優(yōu)異的ETL框架支持平臺建設,針對數(shù)據(jù)的預處理,中間的轉換清洗,包括寫入目標時針對異常數(shù)據(jù)的捕獲。整個過程由Trinity提供的調度平臺,元數(shù)據(jù)管理平臺提供支撐,讓各部分之間緊密合作,又各司其職。針對此項目復雜的業(yè)務系統(tǒng)和管理,Trinity提供完善的調度功能,以更好的對各個模塊進行良好調度管理,相應邏輯圖如下:圖5-35Trinity調度邏輯架構圖調度平臺是平臺的數(shù)據(jù)流核心,調度平臺讓相關的業(yè)務系統(tǒng)、處理系統(tǒng)按照一定的業(yè)務邏輯,在客戶的安排下,像流水線一樣,或串行,或并行,按照一定的依賴關系,在每日,每周定時觸發(fā),依次執(zhí)行。Trinity提供完善的接口和管理模塊,讓眾多的作業(yè)管理簡易高效。數(shù)據(jù)管理數(shù)據(jù)管理框架集團大數(shù)據(jù)平臺的數(shù)據(jù)管理包含結構化、半結構化的加載和分析;在數(shù)據(jù)處理的過程中,對數(shù)據(jù)的清洗和實時監(jiān)控;對于ETL的整個處理過程進行完整調度。圖5-36Trinity數(shù)據(jù)處理過程結構化數(shù)據(jù)管理框架集團大數(shù)據(jù)平臺對結構化數(shù)據(jù)全部放到TDH的NoSQL數(shù)據(jù)庫Hyperbase中,以提升其性能,并通過元數(shù)據(jù)管理進行統(tǒng)一管理。外部接口包含批量及實時接口,以便滿足數(shù)據(jù)匯出、數(shù)據(jù)交換、數(shù)據(jù)分析的需求。概要的管理框架包含如下方面:圖5-37結構化數(shù)據(jù)管理框架半/非結構化數(shù)據(jù)管理框架集團大數(shù)據(jù)平臺對非結構化數(shù)據(jù)的處理需要根據(jù)實際的情況統(tǒng)一管理,按照如下原則進行處理:文檔分類互聯(lián)網獲取的數(shù)據(jù),日志文件文檔、掃描件、郵件等圖片、音頻、視頻處理原則10M以下,屬性信息及文檔本身放到Hyperbase中10M以上文檔,屬性信息存入Hyperbase中,文檔用HDFS保存檢索原則ES索引+Hyperbase索引ES檢索SQL檢索NLP客制化概要的管理框架包含如下方面:圖5-38非結構化數(shù)據(jù)管理框架數(shù)據(jù)采集集團大數(shù)據(jù)平臺的數(shù)據(jù)來源廣泛,根據(jù)來源,大致分為兩類:內部手工填報流+實時數(shù)據(jù)采集批量外部文件導入網絡爬蟲本方案對上述兩類數(shù)據(jù)都提供相應的解決方案,采集框架入下圖所示:圖5-39數(shù)據(jù)采集框架通過Trinity可以實現(xiàn)批量,實時及文件導入,相關說明參見5.5章節(jié),對于流數(shù)據(jù)采集,可以通過TranswarpStream組件支持流方式,實時數(shù)據(jù)采集,具體參見8.13.10;通過ETL工具Trinity支持批量導入方式、外部數(shù)據(jù)文件導入、異構數(shù)據(jù)庫導入、主動數(shù)據(jù)抽取、增量追加,具體參見5.2.4;通過公司自主開發(fā)產品iRIS進行網上數(shù)據(jù)采集工作;通過WEB頁面進行網上數(shù)據(jù)填報,這些WEB頁面是按照填報數(shù)據(jù)的特點自動生成填報頁面。iRIS設置流程如下圖5-40:圖5-40iRIS流程圖使用過程中,用戶可以通過瀏覽器系統(tǒng)交互,業(yè)務的產生與結果的交付,通過Web操作即可。產品具備如下功能:一個業(yè)務包含如下屬性:網址:采集分析的目標關鍵詞:用于過濾網頁調度類型:一次性調度:該業(yè)務執(zhí)行一次后進入執(zhí)行完畢狀態(tài),不再進行調度。該類型的調度可以細分為兩種:及時性調度和定時調度循環(huán)調度:該業(yè)務執(zhí)行一次后進入執(zhí)行完畢狀態(tài),但需要循環(huán)調度,當下一次調度周期來臨,則會被繼續(xù)送入執(zhí)行隊列執(zhí)行用戶產生業(yè)務的功能需求:能夠添加新的關鍵詞組,能夠維護關鍵詞組中的關鍵詞(增刪改)能夠添加新的網址,能夠維護網址組中的網址(增刪改)能夠從知識庫中選擇已經存在的網址組能夠從知識庫中選擇已經存在的關鍵詞組可以設置業(yè)務的調度計劃,即手動執(zhí)行與自動循環(huán)執(zhí)行(手動執(zhí)行和循環(huán)執(zhí)行都會由調度管理器選擇隊列執(zhí)行)用戶獲取結果的功能需求:用戶登錄進系統(tǒng)之后,能夠瀏覽與自己相關的Job信息能夠在網頁上查看結果集能夠將結果集導出為純文本文件以上各種方式均支持不同頻度、不同形態(tài)的企業(yè)內外部數(shù)據(jù)采集,可以根據(jù)具體采集內容進行靈活配置和開發(fā)。數(shù)據(jù)交換數(shù)據(jù)采集及交換平臺整體架構如下圖所示,建議采用Trinity作為整個平臺的采集、整合及交換平臺:圖5-41數(shù)據(jù)采集及交換平臺整體架構架構圖源系統(tǒng)層實現(xiàn)數(shù)據(jù)源管理功能,數(shù)據(jù)源包括各業(yè)務系統(tǒng)數(shù)據(jù)接入、互聯(lián)網數(shù)據(jù)采集、合作伙伴系統(tǒng)數(shù)據(jù)接入、外部臨時數(shù)據(jù)導入支持等各種類型。數(shù)據(jù)交換區(qū)包含接口定義和自定義組件,實現(xiàn)可自定義的對外數(shù)據(jù)服務接口能力和數(shù)據(jù)接口熱擴展能力。本方案采用如下原則處理上述需求:結構化數(shù)據(jù)業(yè)務系統(tǒng)+外部數(shù)據(jù)交換工具:Trinity工具。半結構化數(shù)據(jù)內部數(shù)據(jù)+互聯(lián)網等交換工具:IDEADATAiRIS。非結構化數(shù)據(jù)內部數(shù)據(jù)+互聯(lián)網等交換工具:IDEADATAiRIS。數(shù)據(jù)交換區(qū)包含接口定義和自定義組件,實現(xiàn)可自定義的對外數(shù)據(jù)服務接口能力和數(shù)據(jù)接口熱擴展能力。上述用到的所有交換工具都是可擴展,支持在線熱擴展功能,支持熱插拔功能。大數(shù)據(jù)平臺內各存儲區(qū)之間的數(shù)據(jù)交換功能為平臺軟件TDH本身功能,詳見5.3.4,此處不贅述。數(shù)據(jù)存儲與管理本方案建議的數(shù)據(jù)以TDH為數(shù)據(jù)存儲平臺,存儲的格式大致分為兩類:HDFSHyperbase這兩類的數(shù)據(jù)都可以實現(xiàn)多副本存儲,以提升可靠性,并按照數(shù)據(jù)的熱溫冷存放在不同的介質上(內存、磁盤、SSD)。對于以Hyperbase存儲的數(shù)據(jù),可以提供多種壓縮方式,以減少數(shù)據(jù)對存儲介質的占用,并提供多種索引方式,以便于更快的進行數(shù)據(jù)查詢與分析。Hyperbase支持多種索引,包括全局索引(GlobalIndex)、局部索引(LocalIndex)、高維索引(High-DimensionalIndex)以及全文索引(Full-TextIndex)等;結合Inceptor支持通過SQL進行復雜條件毫秒級高并發(fā)查詢。在TranswarpHyperbase中通過使用索引來加快數(shù)據(jù)的查詢速度。包括三種索引:本地索引、全局索引、全文索引,支持索引的自動創(chuàng)建(在創(chuàng)建表時指定索引),也支持對已有表創(chuàng)建索引。索引的基本設計思想是對TranswarpHyperbase表中的需要經常作為查詢條件的列建立一個映射到主數(shù)據(jù)的索引。查詢時可以利用索引特性進行快速定位并返回查詢結果。實驗證明,通過使用索引,用戶查詢的響應速度可以達到原來的20~100倍。Hyperbase支持全局、局部、高維索引和高級過濾器,且TranswarpHyperbase構建了全局索引、輔助索引和全文索引,擴展了SQL語法,滿足在線存儲和在線業(yè)務分析系統(tǒng)(OLAP)的低延時需求,實現(xiàn)高并發(fā)低延時的OLAP查詢。根據(jù)數(shù)據(jù)使用場景的不同,建議按照如下五個區(qū)域進行劃分,實施決策平臺這些劃分的詳細介紹如下:數(shù)據(jù)整合平臺集團集團企業(yè)級的數(shù)據(jù)整合區(qū)域HDFS+Hyperbase存儲為主全生命周期數(shù)據(jù)冷數(shù)據(jù),以磁盤保存為主三副本保存全局索引+復合索引支持數(shù)據(jù)分區(qū)實施決策平臺HDFS+Hyperbase熱數(shù)據(jù),內存存儲為主,以提升性能自助分析平臺HDFS+Hyperbase熱數(shù)據(jù),SSD+內存存儲為主,以提升性能數(shù)據(jù)探索平臺HDFS+Hyperbase溫數(shù)據(jù),SSD+內存存儲為主,以提升性能非結構化處理平臺HDFS為主+Hyperbase冷數(shù)據(jù),磁盤圖5-42數(shù)據(jù)存儲規(guī)劃數(shù)據(jù)存儲管理功能數(shù)據(jù)分區(qū)是為了訪問數(shù)據(jù)時,速度更快的存儲策略,針對不同的場景進行數(shù)據(jù)分區(qū)分布;為了提升海量數(shù)據(jù)查詢性能,提供表分區(qū)功能。Inceptor支持對表的單值分區(qū)和范圍分區(qū)。為一張表分區(qū):在物理上,將表中的數(shù)據(jù)按分區(qū)放在表目錄下的對應子目錄中,一個分區(qū)對應一個子目錄;在邏輯上,分區(qū)表和未分區(qū)表沒有區(qū)別。分區(qū)在創(chuàng)建表時完成,也可以通過ALTERTABLE來添加或者刪除。關于分區(qū)的建議,分區(qū)的目的是減少掃描成本。所以單個分區(qū)的大小和總分區(qū)數(shù)目都應該控制在合理范圍內。使用多層分區(qū)帶來的直接問題是總分區(qū)個數(shù)過多,因為總分區(qū)個數(shù)是所有分區(qū)鍵對應分區(qū)個數(shù)的乘積。所以我們建議盡量減少使用多層分區(qū)對于時間、日期一類的值,使用單值分區(qū)會導致分區(qū)過多。推薦使用范圍分區(qū)(RANGEPARTITION)。范圍分區(qū)可以靈活控制分區(qū)的數(shù)量,并可根據(jù)數(shù)據(jù)本身的特點使得各個分區(qū)的大小也控制在合理范圍內,從而使得應用性能得到保證。另外,有很多以往在Oracle系統(tǒng)上的應用都是采取的范圍分區(qū),對范圍分區(qū)的支持也能使得原有應用程序的遷移更加簡單。如果是應用場景是批量處理場景,那么為了提高批處理的速度,一般在存儲邏輯上,數(shù)據(jù)會放在HDFS上,基于Master/Slave架構提供高速批處理的性能。如果是高速隨機查詢,那么為了提高隨機查詢性能,一般在存儲邏輯上,會把數(shù)據(jù)放在Hyperbase上,基于HBase的架構,提供高速隨機查詢能力。對于非重要冷數(shù)據(jù),一般數(shù)據(jù)會存儲在磁盤內,做多個備份,也可采用ErasureCode技術實現(xiàn)低成本存儲,如果是熱門數(shù)據(jù),比如數(shù)據(jù)集市的精準內容,一般會改造成Holodesk的格式,存儲在SSD或者內存當中;數(shù)據(jù)多溫度管理在大數(shù)據(jù)時代,對于海量數(shù)據(jù)應該考慮數(shù)據(jù)的分級存儲方案以節(jié)約存儲成本。通常,我們會把數(shù)據(jù)分為熱數(shù)據(jù),在線數(shù)據(jù),近線數(shù)據(jù)和歸檔數(shù)據(jù)。不同的數(shù)據(jù)種類的應用和處理會有不同的需求。對于熱數(shù)據(jù)和在線數(shù)據(jù),更多的需要考慮應用在使用數(shù)據(jù)時的高效性,TranswarpInceptor用Holodesk的技術來加速熱數(shù)據(jù)處理。對于近線數(shù)據(jù),由于應用存取的需求相比熱數(shù)據(jù)和在線數(shù)據(jù)大大減少,主要需要保證數(shù)據(jù)存儲的可靠性,并考慮如何在保證可靠性的基礎上能盡量減少副本以節(jié)約存儲空間。熱數(shù)據(jù)可以根據(jù)應用需求,將經常需要進行分析的熱數(shù)據(jù)從HDFS或者Hyperbase中加載到Inceptor中的分布式內存數(shù)據(jù)列式存儲Holodesk中。通過內存加速分析,在秒級別響應,對數(shù)據(jù)進行交互式探索挖掘。此外內存數(shù)據(jù)庫還具備了通過R語言或者JAVAAPI對內存數(shù)據(jù)庫中內容進行數(shù)據(jù)挖掘的能力。在內存計算數(shù)據(jù)庫的存儲層,通過將二維數(shù)據(jù)表緩存入獨立的分布式內存(或SSD)層,回避GC問題。并通過建立自定義高效列式存儲結構,減少數(shù)據(jù)傳輸。星環(huán)的內存數(shù)據(jù)庫不僅僅可以支持數(shù)據(jù)存儲在內存中,同樣支持內存加SSD的混合存儲架構,使得內存數(shù)據(jù)庫中數(shù)據(jù)不僅能存儲在內存中也能存儲在SSD中,并且性能不會受到太大的影響。很大程度上提升了內存數(shù)據(jù)庫的容量以及整體的性價比。圖5-43熱數(shù)據(jù)存儲冷數(shù)據(jù)冷數(shù)據(jù)可以使用TranswarpHDFS中ErasureCode功能減少副本。ErasureCode可配置策略,指定HDFS中目錄,通過RaidServer監(jiān)控,在指定生命周期后將指定目錄下的文件降低其副本數(shù)為1,并由10個數(shù)據(jù)塊生成4個冗余校驗塊的,將3倍存儲開銷降低到1.4倍,并且在數(shù)據(jù)可靠性方面,ErasureCode在14個數(shù)據(jù)塊中可容忍任意4個塊丟失,比3份冗余存儲可容忍2份數(shù)據(jù)塊丟失更可靠。冷數(shù)據(jù)可使用ErasureCode自動降低存儲開銷。一個典型的應用場景:數(shù)據(jù)在導入HDFS后的一段時間內訪問頻繁,在一段時間后訪問頻率降低甚至正常狀態(tài)下不訪問??梢酝ㄟ^設置該數(shù)據(jù)的冷卻時間,當這些數(shù)據(jù)到達冷卻時間后,會自動觸發(fā)降副本的進程。圖5-44冷數(shù)據(jù)存儲生命周期管理數(shù)據(jù)生命周期理論認為數(shù)據(jù)是有生命周期的,隨著時間的推移,遵循數(shù)據(jù)訪問頻率變化與數(shù)據(jù)量累積變化成反比這一客觀規(guī)律。因此,需要根據(jù)數(shù)據(jù)訪問頻率進行數(shù)據(jù)價值評估,對大量低價值信息采取低成本的數(shù)據(jù)保存手段,使數(shù)據(jù)的價值與存儲的技術和管理相匹配,進而大幅降低整體數(shù)據(jù)存儲成本。根據(jù)數(shù)據(jù)的這一運動規(guī)律,數(shù)據(jù)生命周期理論將數(shù)據(jù)的生命周期分為在線、近線、離線以及銷毀4個階段。在線階段,數(shù)據(jù)訪問頻率較高,數(shù)據(jù)從產生開始一直在生產系統(tǒng)中保存,并且數(shù)據(jù)的生成和利用需要使用高速存儲,并提供相應的保護措施,保障數(shù)據(jù)的高可用性。這是采用熱數(shù)據(jù)的存儲策略,可存儲在內存或者SSD當中;近線階段,數(shù)據(jù)使用相對不頻繁,數(shù)據(jù)并不總是有用戶訪問,其重要性逐漸降低。通常將數(shù)據(jù)保存在中低端存儲設備中,但仍能夠進行在線訪問,由于處理能力有限,訪問的響應時間比在線數(shù)據(jù)訪問時間有所增加,而且近線數(shù)據(jù)一般不在線應用,因此,不會對業(yè)務系統(tǒng)產生影響。這階段可以存儲在磁盤當中。離線階段,數(shù)據(jù)一般是沒有用戶訪問的,只是為了預防一些特殊事件,按規(guī)定必須長時間保留,主要考慮的是數(shù)據(jù)的海量存儲。歷史數(shù)據(jù)隨著時間的推移在不斷的增加,由于這些數(shù)據(jù)對于在線系統(tǒng)來說沒有多大的實際意義,只是作為今后的備查,因而可備份到磁帶上長時間保存。采用Erasurecode存儲技術銷毀階段,數(shù)據(jù)已過保存期,不再具有利用價值,可以進行銷毀。這階段,需要看客戶咨詢,如果存儲空間足夠,可以不刪除銷毀;或者采用Erasurecode存儲技術處理。多索引模式目前HBase主要應用在結構化和半結構化的大數(shù)據(jù)存儲上,在邏輯上,HBase的表數(shù)據(jù)按RowKey進行字典排序,RowKey實際上是數(shù)據(jù)表的一級索引(PrimaryIndex),由于HBase本身沒有二級索引(SecondaryIndex)機制,基于索引檢索數(shù)據(jù)只能單純的依靠RowKey,為了能支持多條件查詢,開發(fā)者需要將所有可能作為查詢條件的字段一一拼接到RowKey中,這是HBase開發(fā)中極為常見的做法,但是無論怎樣設計,單一RowKey固有的局限性決定了它不可能有效的支持多條件查詢。受限于單一RowKey在復雜查詢上的局限性,基于二級索引(SecondaryIndex)的解決方案成為最受關注的研究方向。為解決這一問題,Hyperbase在索引支持上做了重大的完善和加強。Hyperbase支持多種方式的索引,如:COMBINE_INDEX和STRUCT_INDEX。COMBINE_INDEX使用一列或者多列組合生成索引,而STRUCT_INDEX對STRUCT類型中的一個或多個字段生成索引。Hyperbase中的索引還可根據(jù)存儲方式分為全局索引(GlobalIndex)和局部索引(LocalIndex)。全局索引的索引存儲與原表獨立,索引本身是以一張表的形式存在(索引表)。局部索引在原表中創(chuàng)建一個新的列族(索引列)。Hyperbase在使用索引的時候,能智能化選擇性能更高的索引支持數(shù)據(jù)查詢,智能化選擇索引使得用戶在使用索引時更加透明和方便。使用索引的時候,支持數(shù)據(jù)在已創(chuàng)建索引的情況下導入數(shù)據(jù),避免數(shù)據(jù)導入完畢后再創(chuàng)建索引的時間窗口。多數(shù)據(jù)副本管理TDH基于開源Spark框架設計,采用3副本存儲粗略,多級存儲技術中ErasureCode功能可降低數(shù)據(jù)存儲副本。ErasureCode可配置策略,指定HDFS中目錄,通過RaidServer監(jiān)控,在指定生命周期后將指定目錄下的文件降低其副本數(shù)為1,并由10個數(shù)據(jù)塊生成4個冗余校驗塊的,將3倍存儲開銷降低到1.4倍,并且在數(shù)據(jù)可靠性方面,ErasureCode在14個數(shù)據(jù)塊中可容忍任意4個塊丟失,比3份冗余存儲可容忍2份數(shù)據(jù)塊丟失更可靠。冷數(shù)據(jù)可使用ErasureCode自動降低存儲開銷。通過系統(tǒng)自動對數(shù)據(jù)塊校驗,一旦有數(shù)據(jù)丟失的情況發(fā)生,系統(tǒng)會自動從其他機架上復制,重新生成副本。數(shù)據(jù)平衡管理一般情況下,數(shù)據(jù)在錄入集群的時候就進行負載均衡,根據(jù)各個節(jié)點的情況來做數(shù)據(jù)平衡分發(fā)存放。但是如果在新增節(jié)點之后,如果想做到負載均衡則需要使用balancer的命令。對于這個命令,一般是有一個閥值,節(jié)點之間差額不超過10%,集群就是均衡的。當然,負載越平均,查詢相對也較快,但是均衡的過程會耗時不少。同時,對索引表進行探測,如超過閾值,會對索引表重新分配。支持自動設置好閾值,實現(xiàn)數(shù)據(jù)自動平衡。同時TDH采用基于一致性Hash算法來計算數(shù)據(jù)分布的均衡狀態(tài),一旦有數(shù)據(jù)傾斜發(fā)生,自動實現(xiàn)數(shù)據(jù)平衡;同時對一個存儲的索引進行探測,如果發(fā)生傾斜,自動分配到其他Region或者分區(qū)。在線節(jié)點管理平臺提供了強大的在線水平擴展功能,不需要宕機停庫,不需要停止業(yè)務,就可以添加新的節(jié)點,實現(xiàn)在線擴展。節(jié)點添加完成之后可以立即對新添加的節(jié)點進行角色的分配,一旦配置成功,則新加的節(jié)點就會馬上投入運算。實現(xiàn)新加入的節(jié)點并行化計算,系統(tǒng)性能能夠隨著系統(tǒng)服務器數(shù)目的增加平滑線性增長,(采用分布式架構,不存在分布式協(xié)調瓶頸導致性能損失的情況)擴容之后的數(shù)據(jù)節(jié)點也不需要停機進行數(shù)據(jù)重分布,采用Hash算法,系統(tǒng)自動選擇空閑的時間進行數(shù)據(jù)的重新分布,實現(xiàn)數(shù)據(jù)負載均衡;在國內實現(xiàn)部署擴展超過900個以上的案例經驗。Hyperbase支持多種數(shù)據(jù)類型,包括結構化數(shù)據(jù)、非結構化數(shù)據(jù)、半結構化數(shù)據(jù)等復雜的數(shù)據(jù),通過Inceptor支持多種擴展函數(shù),支持shell等,外用應用可在平臺上實現(xiàn)腳本的運行。HDFS將文件的數(shù)據(jù)塊分配信息存放在NameNode服務器之上,文件數(shù)據(jù)塊的信息分布的存放在DataNode服務器上。當整個系統(tǒng)容量需要擴充時,只需要增加DataNode的數(shù)量,系統(tǒng)會自動的實時將新的服務器匹配進整體陣列之中。之后,文件的分布算法會將數(shù)據(jù)塊搬遷到新的DataNode之中,不需任何系統(tǒng)當機維護或人工干預。通過以上實現(xiàn),HDFS可以做到在不停止服務的情況下實時的加入新的服務器作為分布式文件系統(tǒng)的容量升級,不需要人工干預文件的重新分布。分區(qū)管理為了提升海量數(shù)據(jù)查詢性能,提供表分區(qū)功能。Inceptor支持對表的單值分區(qū)和范圍分區(qū)。為一張表分區(qū):在物理上,將表中的數(shù)據(jù)按分區(qū)放在表目錄下的對應子目錄中,一個分區(qū)對應一個子目錄;在邏輯上,分區(qū)表和未分區(qū)表沒有區(qū)別。分區(qū)在創(chuàng)建表時完成,也可以通過ALTERTABLE來添加或者刪除。關于分區(qū)的建議,分區(qū)的目的是減少掃描成本。所以單個分區(qū)的大小和總分區(qū)數(shù)目都應該控制在合理范圍內。使用多層分區(qū)帶來的直接問題是總分區(qū)個數(shù)過多,因為總分區(qū)個數(shù)是所有分區(qū)鍵對應分區(qū)個數(shù)的乘積。所以我們建議盡量減少使用多層分區(qū)對于時間、日期一類的值,使用單值分區(qū)會導致分區(qū)過多。推薦使用范圍分區(qū)(RANGEPARTITION)。范圍分區(qū)可以靈活控制分區(qū)的數(shù)量,并可根據(jù)數(shù)據(jù)本身的特點使得各個分區(qū)的大小也控制在合理范圍內,從而使得應用性能得到保證。另外,有很多以往在Oracle系統(tǒng)上的應用都是采取的范圍分區(qū),對范圍分區(qū)的支持也能使得原有應用程序的遷移更加簡單。數(shù)據(jù)導入與導出Sqoop支持Oracle11g、IBMDB2、MySQL、PostgreSQL等數(shù)據(jù)庫。常用Sqoop將表從關系數(shù)據(jù)庫中全部拷貝到Hadoop中。Sqoop導入過程是分布式的,并支持全量以及增量式導入。Sqoop作為Map/Reduce客戶端,自動生成Map-Reduce任務,提交給Hadoop集群進行分布式并行數(shù)據(jù)抽取。Sqoop支持將數(shù)據(jù)導入到HDFS,Inceptor和Hyperbase,或者從HDFS,Inceptor或者Hyperbase中導出到關系數(shù)據(jù)庫。支持同步以及異步形式將文件批量導入數(shù)據(jù)表中。從關系型數(shù)據(jù)庫中將數(shù)據(jù)導入到集群平臺后,需要對入庫后的數(shù)據(jù)與原先關系型數(shù)據(jù)庫中的數(shù)據(jù)進行校驗,以保證數(shù)據(jù)入庫后的一致性。數(shù)據(jù)校驗在導入到集群平臺后或出賬完成,對關系型數(shù)據(jù)庫中當月單據(jù)表進行校驗,檢測單據(jù)表是否有變動,并從以下幾方面進行驗證:驗證導入數(shù)據(jù)的表結構信息;驗證原關系型數(shù)據(jù)庫中與集群平臺中表總記錄條數(shù)是否一致;隨機抽取號碼,分別從原關系型數(shù)據(jù)庫中與集群平臺中獲取該號碼的所有單據(jù),對記錄數(shù)、單據(jù)的完整內容進行比對,判斷是否一致;根據(jù)反饋的導入結果情況,如果出現(xiàn)錯誤會反饋出錯信息。導入模式可支持批量模式和增量模式。批量模式:批量模式用于在平臺建設完成初期進行歷史數(shù)據(jù)的遷移,將大量的基礎數(shù)據(jù)和歷史數(shù)據(jù)導入平臺集群??赏ㄟ^Sqoop等ETL工具將數(shù)據(jù)導入到HDFS或Hyperbase中;同樣可通過bulkload工具將批量數(shù)據(jù)導入到Hyperbase中;也可以直接將數(shù)據(jù)直接傳入HDFS,其后可以通過建立外表的方式對數(shù)據(jù)進行分析。增量模式:增量模式用于上線后將指定周期時間間隔(如每天,每小時或每10分鐘)內的數(shù)據(jù)導入平臺,可通過Sqoop的增量導入等模式進行。對于數(shù)據(jù)的導出支持SQL查詢結果導出為文本文件,可以設定文件的格式(分隔符等)、大小、命名。為了保障導出效率,系統(tǒng)內所有節(jié)點并行導出。多級數(shù)據(jù)存儲考慮到海量數(shù)據(jù)平臺的特點,TDH平臺實現(xiàn)了多級數(shù)據(jù)存儲的方式。TDH根據(jù)數(shù)據(jù)使用的特點分別對應不同的存儲技術。TDH平臺的多級存儲包括,支持獨立的分布式內存列式存儲,支持內存/SSD緩存相結合的混合數(shù)據(jù)存儲,支持常見的多副本磁盤存儲,還支持低副本高容錯的磁盤存儲方式。多級數(shù)據(jù)存儲技術中的Holodesk技術,結合上層高效穩(wěn)定的TranswarpInceptor執(zhí)行引擎,基于分布式內存列式存儲的SQL執(zhí)行比MapReduce框架快10~100倍,比開源的Spark快2~5倍。TranswarpInceptor將數(shù)據(jù)緩存在內存中,通過高效的內存計算達到快速掃描海量數(shù)據(jù)的目的。當用戶在海量數(shù)據(jù)級別分析時,考慮到單臺機器內存的限制,以及內存費用較為昂貴,建議集群中的每臺服務器都配置一塊800GB~1.6TB的PCIeSSD固態(tài)盤,當內存無法容納更大的數(shù)據(jù)量時,可以將數(shù)據(jù)裝載至SSD中。下圖為基于國際標準組織提供的TPC-DS測試集,Inceptor基于純內存的分布式內存存儲與基于純SSD的分布式內存存儲的性能對比,HolodeskSSD-based性能比純內存相差僅在10%~20%左右。圖5-45TPC-DS測試多級存儲技術中ErasureCode功能可降低數(shù)據(jù)存儲副本。ErasureCode可配置策略,指定HDFS中目錄,通過RaidServer監(jiān)控,在指定生命周期后將指定目錄下的文件降低其副本數(shù)為1,并由10個數(shù)據(jù)塊生成4個冗余校驗塊的,將3倍存儲開銷降低到1.4倍,并且在數(shù)據(jù)可靠性方面,ErasureCode在14個數(shù)據(jù)塊中可容忍任意4個塊丟失,比3份冗余存儲可容忍2份數(shù)據(jù)塊丟失更可靠。冷數(shù)據(jù)可使用ErasureCode自動降低存儲開銷。多種數(shù)據(jù)類型支持TranswarpHyperbase支持半結構化數(shù)據(jù)(JSON/BSON,XML形式存儲)和非結構化數(shù)據(jù)例如純文本,圖片或者大對象的高效存取。由于越來越多的應用在考慮對半結構化數(shù)據(jù),非結構化數(shù)據(jù)做查詢,檢索和分析,對這些數(shù)據(jù)存儲的支持能簡化應用程序的開發(fā)工作,同時TDH的優(yōu)化使得對這類數(shù)據(jù)的操作性能更高。全文數(shù)據(jù)處理TranswarpHyperbase支持通過建立增量全文索引(全文索引首先會對記錄做分詞處理,再對分詞結果做相應索引)對于全文關鍵字搜索達到秒級的返回。TranswarpHyperbase提供了全文索引功能,支撐內容管理,實現(xiàn)文字等非結構化數(shù)據(jù)的提取和處理;提供增量創(chuàng)建全文索引的能力,可以實時搜索到新增的數(shù)據(jù)。圖數(shù)據(jù)庫對于圖數(shù)據(jù)的支持在大數(shù)據(jù)時代也顯得日趨重要。TranswarpGraph是一個圖數(shù)據(jù)庫引擎,能實現(xiàn)圖數(shù)據(jù)的高效存取及分析處理。TranswarpGraph本身主要實現(xiàn)了精簡的圖序列化,豐富的圖數(shù)據(jù)建模,高效的查詢。TranswarpGraph同時也實現(xiàn)了數(shù)據(jù)存儲接口,數(shù)據(jù)檢索。TranswarpGraph提供了標準的JAVAAPI和圖數(shù)據(jù)庫交互工具。支持海量圖數(shù)據(jù)處理,有著優(yōu)秀的橫向拓展能力借助TranswarpHyperbase實現(xiàn)數(shù)據(jù)的強一致性支持圖數(shù)據(jù)的高并發(fā)事務處理基于Hadoop生態(tài)系統(tǒng),可實現(xiàn)批圖數(shù)據(jù)處理支持對點和邊的地理坐標,數(shù)字和全文檢索支持blueprint圖標準接口,可與blueprint生態(tài)系統(tǒng)的軟件兼容支持TDHGraphShell查詢語言,并可在java中直接調用該語言進行圖數(shù)據(jù)的操作提供通過JAVAAPI提供REST和TranswarpGraph二進制協(xié)議,方便遠程管理和快速查詢TranswarpGraph中的圖數(shù)據(jù)支持對點和邊建立索引,提升查詢性能良好的可拓展性,TranswarpGraph的性能隨著機器數(shù)量線性增長提供批量入庫工具,支持多種數(shù)據(jù)格式,Sequencefile,Graphson,EdgeList,ScriptIO支持單機和集群模式多種文件格式支持SequenceFileSequenceFile是HadoopAPI提供的一種二進制文件,它將數(shù)據(jù)以<key,value>的形式序列化到文件中。這種二進制文件內部使用Hadoop的標準的Writable接口實現(xiàn)序列化和反序列化。它與HadoopAPI中的MapFile是互相兼容的。Hive中的SequenceFile繼承自HadoopAPI的SequenceFile,不過它的key為空,使用value存放實際的值,這樣是為了避免MR在運行map階段的排序過程。如果用JavaAPI編寫SequenceFile,并讓Hive讀取,需確保使用value字段存放數(shù)據(jù),否則需要自定義讀取這種SequenceFile的InputFormatclass和OutputFormatclass。圖5-46SequenceFile格式支持RCFileRCFile是Hive推出的一種專門面向列的數(shù)據(jù)格式。它遵循“先按列劃分,再垂直劃分”的設計理念。當查詢過程中,針對它并不關心的列時,它會在IO上跳過這些列。需要說明的是,RCFile在map階段從遠端拷貝仍然是拷貝整個數(shù)據(jù)塊,并且拷貝到本地目錄后RCFile并不是真正跳過不需要的列,并跳到需要讀取的列,而是通過掃描每一個rowgroup的頭部定義來實現(xiàn)的,但是在整個HDFSBlock級別的頭部并沒有定義每個列從哪個rowgroup起始到哪個rowgroup結束。所以在讀取所有列的情況下,RCFile的性能反而沒有SequenceFile高。圖5-47RCFile格式支持AvroAvro是一種用于支持數(shù)據(jù)密集型的二進制文件格式。它的文件格式更為緊湊,若要讀取大量數(shù)據(jù)時,Avro能夠提供更好的序列化和反序列化性能。并且Avro數(shù)據(jù)文件天生是帶Schema定義的,所以它不需要開發(fā)者在API級別實現(xiàn)自己的Writable對象。最近多個Hadoop子項目都支持Avro數(shù)據(jù)格式,如Pig、Hive、Flume、Sqoop和Hcatalog。圖5-48Avro格式支持文本格式除上面提到的3種二進制格式之外,文本格式的數(shù)據(jù)也是Hadoop中經常碰到的,如TextFile、XML和JSON。文本格式除了會占用更多磁盤資源外,對它的解析開銷一般會比二進制格式高幾十倍以上,尤其是XML和JSON,它們的解析開銷比Textfile還要大,因此強烈不建議在生產系統(tǒng)中使用這些格式進行儲存。如果需要輸出這些格式,請在客戶端做相應的轉換操作。文本格式經常會用于日志收集,數(shù)據(jù)庫導入,Hive默認配置也是使用文本格式,而且常常容易忘了壓縮,所以請確保使用了正確的格式。另外文本格式的一個缺點是它不具備類型和模式,比如銷售金額、利潤這類數(shù)值數(shù)據(jù)或者日期時間類型的數(shù)據(jù),如果使用文本格式保存,由于它們本身的字符串類型的長短不一,或者含有負數(shù),導致MR沒有辦法排序,所以往往需要將它們預處理成含有模式的二進制格式,這又導致了不必要的預處理步驟的開銷和儲存資源的浪費。外部格式Hadoop實際上支持任意文件格式,只要能夠實現(xiàn)對應的RecordWriter和RecordReader即可。其中數(shù)據(jù)庫格式也是會經常儲存在Hadoop中,比如HBase、Mysql、Cassandra、MongoDB。這些格式一般是為了避免大量的數(shù)據(jù)移動和快速裝載的需求而用的。序列化和反序列化都是由這些數(shù)據(jù)庫格式的客戶端完成,并且文件的儲存位置和數(shù)據(jù)布局(DataLayout)不由Hadoop控制,文件切分也不是按HDFS的塊大?。╞locksize)進行切割。數(shù)據(jù)自定義標簽管理用戶可根據(jù)自己的使用習慣,自定義標簽,然后進行管理。數(shù)據(jù)讀寫鎖處理TDH平臺優(yōu)化了鎖機制,用分布式的細粒度的鎖代替全局鎖,減少了線程平均等鎖時間,提升了整個系統(tǒng)的吞吐量,使得TDH能夠在高并發(fā)低延時的場景下表現(xiàn)更為優(yōu)異,在Hyperbase實現(xiàn)行列級鎖。同時Hyperbase經過改進,可以實現(xiàn)行列級鎖,管理員可以根據(jù)實際情況對用戶進行鎖權限設置,最細粒度可是實現(xiàn)到單元格的數(shù)據(jù)快讀寫權限設置。元數(shù)據(jù)備份TDH元數(shù)據(jù)管理采取雙備份機制,在PrimaryNameNode上存儲一份,在StandbyNameNode上存儲一份,一旦當前FSImage時效,備份元數(shù)據(jù)立刻被使用;并且重新復制一份同步到恢復的NameNode節(jié)點上。表壓縮在Inceptor中對中間數(shù)據(jù)或最終數(shù)據(jù)做壓縮,是提高數(shù)據(jù)吞吐量和性能的一種手段。對數(shù)據(jù)做壓縮,可以大量減少磁盤的存儲空間,比如基于文本的數(shù)據(jù)文件,壓縮比可達三倍以上,同時壓縮后的文件在磁盤間傳輸和I/O也會大大減少。目前Inceptor使用ORC存儲格式,并支持Snappy等多種壓縮算法。支持對表按照壓縮比例進行及時透明壓縮。數(shù)據(jù)壓縮后支持查詢、修改、插入、刪除,此過程中無需解壓。數(shù)據(jù)加工清洗平臺利用Trinity工具進行數(shù)據(jù)清洗,包括如下主要內容:規(guī)則制定內置規(guī)則外部引入規(guī)則(Java+SQL)清洗預覽預覽規(guī)則效果運行中清洗預覽清洗監(jiān)控圖形化運行監(jiān)控清洗作業(yè)邏輯監(jiān)控主數(shù)據(jù)數(shù)據(jù)匹配利用整合好的主數(shù)據(jù)進行匹配以MDM系統(tǒng)為優(yōu)先級最高數(shù)據(jù)加工清洗邏輯圖如下所示:圖5-49加工清洗流程數(shù)據(jù)計算多計算框架支持星環(huán)TranswarpDataHub大數(shù)據(jù)平臺支持多種計算框架,例如:批處理計算框架、內存計算框架、流計算框架等,支持企業(yè)在大數(shù)據(jù)平臺上運行多種類型的復雜任務。 星環(huán)支持Spark、MapReduce等批處理框架,MapReduce計算任務的輸入是Key/Value數(shù)據(jù)對,輸出也以Key/Value數(shù)據(jù)對方式表示。根據(jù)業(yè)務邏輯實現(xiàn)Map和Reduce兩個接口函數(shù)內的具體操作內容,即可完成大規(guī)模數(shù)據(jù)的并行批處理任務。星環(huán)TranswarpInceptor基于Spark內存計算技術,能夠將數(shù)據(jù)緩存在內存中,更快速的完成批處理任務,性能是MapReduce的10倍到100倍。星環(huán)TranswarpDataHub提供對內存計算框架的支持,支持Spark內存計算,Spark是類HadoopMapReduce的計算框架,擁有HadoopMapReduce所具有的優(yōu)點;但不同于MapReduce的是Job中間輸出結果可以保存在內存中,從而不再需要讀寫HDFS,因此Spark能更好的適用于數(shù)據(jù)挖掘與機器學習等需要迭代的MapReduce的算法。Spark是一種與Hadoop相似的開源集群計算環(huán)境,但是兩者之間還存在一些不同之處,這些有用的不同之處使Spark在某些工作負載方面表現(xiàn)得更加優(yōu)越,換句話說,Spark啟用了內存分布數(shù)據(jù)集,除了能夠提供交互式查詢外,它還可以優(yōu)化迭代工作負載。Spark是在Scala語言中實現(xiàn)的,它將Scala用作其應用程序框架。與Hadoop不同,Spark和Scala能夠緊密集成,其中的Scala可以像操作本地集合對象一樣輕松的操作分布式數(shù)據(jù)集。盡管創(chuàng)建Spark是為了支持分布式數(shù)據(jù)集上的迭代作業(yè),但是實際上它是對Hadoop的補充,可以在Hadoop文件系統(tǒng)中并行運行。 基于內存計算的交互式交互式數(shù)據(jù)分析。此種類型任務的特點與Map/Reduce任務相反,要求復雜任務能夠在秒級返回結果。集群能夠提供秒級的任務響應能力,使得用戶可以在時間要求苛刻的場景下,仍然對海量數(shù)據(jù)可以進行交互式、探索性分析。此種類型的任務無法通過Map/Reduce完成,目前比較優(yōu)秀的做法是通過Spark分布式內存計算來完成。Spark低延遲、輕量級、高容錯等特性能夠滿足對海量數(shù)據(jù)秒級的數(shù)據(jù)分析的要求。另外對于多數(shù)數(shù)據(jù)倉庫類應用場景,也可通過TDHHadoop平臺在Inceptor(基于Spark的分布式內存計算引擎)上層開發(fā)的SQL接口,執(zhí)行復雜的SQL任務。Inceptor可以完成對歷史數(shù)據(jù)、非實時數(shù)據(jù)的統(tǒng)計分析。 TranswarpDataHub平臺支持實時流計算框架Stream。支持海量數(shù)據(jù)實時流入Hadoop平臺,并進行快速的處理,在毫秒內返回結果。此種類型的應用可以通過TDHHadoop平臺的TDHStream組件來實現(xiàn)??梢栽赥DHStream中進行基于時間窗口的統(tǒng)計、清洗、在線模型訓練等操作。通過支持批處理框架、內存計算框架、實時計算框架,星環(huán)TranswarpDataHub平臺支持多種應用場景及不同類型的任務,TDH平臺能夠在同一平臺提供多種數(shù)據(jù)處理引擎和計算引擎,來分別應對企業(yè)客戶數(shù)據(jù)中心經常遇到的各種場景:批處理任務場景、歷史數(shù)據(jù)分析場景,以及實時流數(shù)據(jù)處理場景。TDH平臺統(tǒng)一但不局限于上述計算框架于同一個平臺,提供了最大程度的便利性與靈活性。并行計算與并行處理能力TranswarpDataHub大數(shù)據(jù)平臺是分布式軟件系統(tǒng),即支持分布式處理的軟件系統(tǒng),提供并行計算和并行處理的能力,包括分布式操作系統(tǒng)、分布式程序設計語言及其編譯系統(tǒng)、分布式文件系統(tǒng)和分布式數(shù)據(jù)庫系統(tǒng)、分布式并行計算引擎等。提供大規(guī)模多服務器集群的部署方式,目前在國內最大規(guī)模集群已經超過900個節(jié)點,對于單個任務能夠通過多CPU、多進程并行及并發(fā)處理機制完成并行計算,所以集群的資源可以得到充分的利用。集群在并行處理的性能主要取決于IO吞吐量,網絡帶寬,內存容量和CPU計算性能,如果集群規(guī)模較大,瓶頸主要取決于網絡帶寬,此種情況可以通過配置更高速的網絡解決網絡瓶頸,例如:10GB,或者40GB的高速網絡。同時可以通過SSD,內存計算等技術解決分布式環(huán)境下并行計算的性能瓶頸。Hadoop是分布式軟件系統(tǒng)中文件系統(tǒng)這一層的軟件,它實現(xiàn)了分布式文件系統(tǒng)和并行存儲功能。Hadoop中的分布式文件系統(tǒng)HDFS能夠實現(xiàn)數(shù)據(jù)在計算機集群組成的云上高效的存儲和管理,Hadoop中的并行編程框架MapReduce能夠讓用戶編寫的Hadoop并行應用程序運行更加簡化。Hadoop上的并行應用程序開發(fā)是基于MapReduce編程框架的。MapReduce編程模型的原理是:利用一個輸入的key/value對集合來產生一個輸出的key/value對集合。MapReduce庫的用戶用兩個函數(shù)來表達這個計算:Map和Reduce。用戶自定義的map函數(shù)接收一個輸入的key/value對,然后產生一個中間key/value對的集合。MapReduce把所有具有相同key值的value集合在一起,然后傳遞給reduce函數(shù)。用戶自定義的reduce函數(shù)接收key和相關的value集合。reduce函數(shù)合并這些value值,形成一個較小的value集合。一般來說,每次reduce函數(shù)調用只產生0或1個輸出的value值。通常我們通過一個迭代器把中間的value值提供給reduce函數(shù),這樣就可以處理無法全部放入內存中的大量的value值集合了。大數(shù)據(jù)集分解為成百上千個小數(shù)據(jù)集,每個(或若干個)數(shù)據(jù)集分別由集群中的一個節(jié)點(一般就是一臺普通的計算機)進行處理并生成中間結果,然后這些中間結果又由大量的節(jié)點合并,形成最終結果。下圖也指出了MapReduce框架下并行程序中的三個主要函數(shù):map、reduce、main。在這個結構中,需要用戶完成的工作僅僅是根據(jù)任務編寫map和reduce兩個函數(shù)。MapReduce計算模型非常適合在大量計算機組成的大規(guī)模集群上并行運行。每一個map任務和每一個reduce任務均可以同時運行于一個單獨的計算節(jié)點上,可想而知,其運算效率是很高的,那么這樣的并行計算是如何做到的呢?下面將簡單介紹一下其原理。TranswarpDataHub平臺同時支持更高效的并行計算引擎:Spark。Spark解決分布式計算框架中不能有效處理的兩類問題:iterative(迭代計算)和interactive(交互式)計算。目前最流行的Hadoop系統(tǒng)實現(xiàn)了DAG(有向無環(huán)圖)的dataflow式的計算,不能處理有環(huán)的計算,也就是輸入同時做為輸出的循環(huán)計算。圖5-50并行計算Spark更適合于迭代運算比較多的ML(machineleaning和DM(datamining)運算。其主要的思想就是RDD(ResilientDistributedDataset),把所有計算的數(shù)據(jù)保存在分布式的內存中。在迭代計算中,通常情況下,都是對同一的數(shù)據(jù)集做反復的迭代計算,數(shù)據(jù)保存在內存中,將大大提高性能。RDD就是數(shù)據(jù)partition方式保存在cluster的內存中。操作有兩種:transformation和action,transform就是把一種RDD轉換為另一個RDD,和Hadoop的map操作很類似,只是定義operator比較豐富(map,join,filter,groupByKey等操作),action就類似于Hadoop的reduce,其輸出是一個aggregation函數(shù)的值如count,或者是一個集合(collection)。PL/SQL存儲過程TDH平臺支持大部分重要的PL/SQL語法。PL/SQL基本語句支持:TDH平臺對基本語句的支持包括:賦值語句、匿名塊執(zhí)行、函數(shù)定義和調用、存儲過程定義調用、UDF/UDAF調用。1)賦值語句支持賦值語句,并有完整的作用域機制和可見性。變量的作用域為變量申明開始到當前語句塊結束。當外部過程和內嵌過程定義了相同名字的變量的時候,在內嵌過程中如果直接寫這個變量名是沒有辦法訪問外部過程的變量的,可以通過給外部過程定義一個名字outername,通過outername變量名來訪問外部過程的變量。2)匿名塊執(zhí)行PL/SQL匿名塊語句是可以包含PL/SQL控制語句和SQL語句的可執(zhí)行語句。它可以用來在腳本語言中實現(xiàn)過程邏輯。匿名塊中可以有一個可選的DECLARE段用以聲明本塊所使用的變量,直接寫在最外層的匿名塊會立即執(zhí)行(區(qū)別于寫在函數(shù)或者包內部的匿名塊),也是PL/SQL程序的唯一入口。3)存儲過程調用支持存儲過程的調用。PL/SQL過程引用由過程名以及隨后的參數(shù)(如果有的話)組成。PL/SQL數(shù)據(jù)類型支持:TDH平臺對PL/SQL數(shù)據(jù)類型的支持包括,標量類型、集合類型及其方法(COUNT()/LIMIT()/etc.)、RECORD類型、隱/顯式類型轉換。1)標量類型標量類型的含義是存放單個值。Inceptor中支持的標量類型為int/double/string等Inceptor中所有支持的類型。2)集合類型Inceptor支持的集合類型主要分為3大類:Associativearray,Nestedtable,Variable-sizearray。3)RECORD類型Inceptor支持RECORD類型。類似C語言struct類型的臨時記錄對象類型,其變現(xiàn)形式為“單行多列”,也可能是“單列”。在PL/SQL當中表的schema對應到一個RECORD類型的,用戶也可以定義自己的RECORD類型而不和表schema發(fā)生任何關系。4)cursor類型Inceptor支持cursor類型。cursor用于提取多行數(shù)據(jù),定義后不會有數(shù)據(jù),使用后才會有數(shù)據(jù)。5)隱/顯式類型轉換Inceptor支持的顯式類型轉換:to_number(value)一般為字符類型轉換為數(shù)值類型to_date(value,'yyyymmdd')字符類型轉換為日期類型to_char(value)數(shù)值類型轉換為字符類型Inceptor支持的隱式類型轉換:連接時(||),數(shù)值類型一般轉為字符類型;賦值調用函數(shù)時,以定義的變量類型為準。PL/SQL其他復雜支持:1)Inceptor支持流程控制語句:IF/ELSEIF/ELSE語句,GOTO語句、LOOP循環(huán)、FOR循環(huán)、FORALL循環(huán)、WHILE循環(huán)、CONTINUE(WHEN)語句、EXIT(WHEN)語句;2)Inceptor支持游標:顯式CURSOR及其基本操作:OPEN/FETCH(BULKCOLLECT)/NOTFOUND/etc.;支持SELECT(BULKCOLLECT)INTO語句;3)Inceptor支持Package包,包括包內全局變量、包內類型、包內函數(shù)。包內全局變量定義在包頭部分。包內類型在包頭定義,用戶可以直接使用定義好的type。包內函數(shù)在包頭處聲明,在包體實現(xiàn)。PL/SQL異常支持Inceptor支持用戶自定義異常和系統(tǒng)預定義異常;支持RAISE語句;支持WHEN(OR)THEN(OTHERS)異常處理;支持存儲過程內部和存儲過程之間的異常傳播;部分系統(tǒng)預定義異常拋出點;部分編譯時刻錯誤檢測。1)系統(tǒng)預定義異常ACCESS_INTO_NULL未定義對象CASE_NOT_FOUNDCASE中若未包含相應的WHEN,并且沒有設置ELSE時COLLECTION_IS_NULL集合元素未初始化CURSER_ALREADY_OPEN游標已經打開DUP_VAL_ON_INDEX唯一索引對應的列上有重復的值INVALID_CURSOR在不合法的游標上進行操作INVALID_NUMBER內嵌的SQL語句不能將字符轉換為數(shù)字NO_DATA_FOUND使用selectinto未返回行,或應用索引表未初始化的元素時TOO_MANY_ROWS執(zhí)行selectinto時,結果集超過一行ZERO_DIVIDE除數(shù)為0SUBSCRIPT_BEYOND_COUNT元素下標超過嵌套表或VARRAY的最大值SUBSCRIPT_OUTSIDE_LIMIT使用嵌套表或VARRAY時,將下標指定為負數(shù)VALUE_ERROR賦值時,變量長度不足以容納實際數(shù)據(jù)LOGIN_DENIEDPL/SQL應用程序連接到數(shù)據(jù)庫時,提供了不正確的用戶名或密碼NOT_LOGGED_ONPL/SQL應用程序在沒有連接數(shù)據(jù)庫的情況下訪問數(shù)據(jù)異常PROGRAM_ERRORPL/SQL內部問題,可能需要重裝數(shù)據(jù)字典&pl./SQL系統(tǒng)包ROWTYPE_MISMATCH宿主游標變量與PL/SQL游標變量的返回類型不兼容SELF_IS_NULL使用對象類型時,在null對象上調用對象方法STORAGE_ERROR運行PL/SQL時,超出內存空間SYS_INVALID_ID無效的ROWID字符串TIMEOUT_ON_RESOURCE在等待資源時超時2)支持存儲過程內部和存儲過程之間的異常傳播。3)支持部分系統(tǒng)預定義異常拋出點分布式事務支持事務處理(transaction)是數(shù)據(jù)庫保證原子性(atomicity)的方法。原子性是指一系列任務在系統(tǒng)中只會有完成和未完成兩種狀態(tài),不會有只完成了一半的情況。事務處理的任務都是對表本身有修改的語句,包括增刪改,也就是SQL中的DML語句:LOAD/INSERT/UPDATE/DELETE。TDH支持通過InceptorShell和JDBC/ODBC接口進行事務處理。InceptorSQL的事務處理指令為COMMITTRANSACTION(提交事務)或者ROLLBACKTRANSACTION(回滾事務,撤回事務)。在Inceptor中對事務表的映射處理時,系統(tǒng)會默認任何activesession都包含在一個事務中,所以無需像在一些其他數(shù)據(jù)庫中專門通過BEGINTRANSACTION開始事務。在Inceptor中COMMITTRANSACTION或者ROLLBACKTRANSACTION后,一個事務即結束,系統(tǒng)會默認接著自動開始另一個事務。星環(huán)TDH支持分布式事務操作,主要幫助用戶多數(shù)據(jù)源匯總,數(shù)據(jù)拉鏈、交易性業(yè)務、數(shù)據(jù)實時持久化等需求,為了對Nosql數(shù)據(jù)庫實現(xiàn)事務操作,星環(huán)的分布式機制目前分為兩種:基于Inceptor的CRUD&Transcation:基于ORCFile改造的ORC事務表以及混合存儲格式改造的Holodesk格式。基于Hyperbase的CRUD&Transaction:實現(xiàn)方法HBaseTransactionStorageHandler、HBaseStorageHandler&HyperbaseStorageHandler事務是構成單一邏輯工作單元的集合操作,具備如下特性:原子性:事務的所有操作在數(shù)據(jù)庫中要么全部正確反映出來,要么完全不反映一致性:隔離執(zhí)行事務時能保持數(shù)據(jù)庫的一致性隔離性:多個事務并發(fā)執(zhí)行,但是任何事務不會干擾到其它事務的執(zhí)行持久性:一個事物成功完成后,它對數(shù)據(jù)庫的改變是永久的。TDHSQL事務隔離級別:Inceptor隔離:Serializable:保證可串行化調度Repeatableread:只允許已讀取已提交的數(shù)據(jù),且一個事務兩次讀取一個數(shù)據(jù)期間,其它事務不能更新該數(shù)據(jù)Readcommitted:只允許已讀取已提交的數(shù)據(jù),不要求可重復讀

Readuncommitted:允許讀取未提交的數(shù)據(jù)Hyperbase隔離:Snapshot:事務開始創(chuàng)建snapshot,若干個事務更新同一數(shù)據(jù),后提交失敗。ACID測試案例下面是浙江農信社對TDH的事務處理能力的測試報告:ACID測試----原子性測試測試名稱ACID測試----原子性測試用例編號測評目標驗證分布式事務處理原子性,保證事務操作原子性,要么所有提交操作全部完成,要么全部不完成,事務在執(zhí)行過程中發(fā)生錯誤,會被Rollback到事務開始前的狀態(tài)測試人前置條件集群正常運行測試步驟表結構:Tableatomicity_table_srckeyint,valuestring原子性性驗證truncatetableatomicity_table_src;CREATEORREPLACEPROCEDURETEST_ATOMICITY()isdeclarecntint:=0;BEGINbegintransaction;insertintoatomicity_table_srcvalues(1,'src1');insertintoatomicity_table_srcvalues(2,'src2');updateatomicity_table_srcsetvalue='updated1'wherekey=1;deletefromatomicity_table_srcwherekey=2;----插入不存在的表----insertintotable_not_existvalues(1,'test');commit;----異常處理回滾----EXCEPTIONWHENothersTHENrollback;dbms_output.put_line('plsqlfailed.')SELECTCOUNT(1)INTOcntFROMatomicity_table_src;ifcnt!=0thendbms_output.put_line('Weshouldnotgetanydatafromthetable')endifEND;/beginTEST_ATOMICITY()end;/檢查atomicity_table_src中是否有數(shù)據(jù),預期表中沒有數(shù)據(jù),并輸出plsqlfailed.預期結果事務操作支持原子性測試結果完整通過了原子性功能測試ACID測試----一致性測試測試名稱ACID測試----一致性測試用例編號測評目標驗證分布式事務處理一致性,保證事務操作一致性。保證在事務開始之前和事務結束以后,完整性約束沒有被破壞測試人前置條件集群正常運行測試步驟 表結構:Tableconsistency_tablekeyint,valuedouble向consistency_table表中插入數(shù)據(jù)insertintoconsistency_tablevalues(1,100.5);insertintoconsistency_tablevalues(2,30.5);模擬從consistency_table表中將key為1行中value100.5減少40,向表中將key為2行中value30.5增加40,保證約束條件value列總額不變,保證數(shù)據(jù)的一致性。模擬更新失敗CREATEORREPLACEPROCEDURETEST_CONSISTENCY()isdeclarecntint:=0;BEGINbegintransaction;updateconsistency_tablesetvalue=60.5wherekey=1;----插入不存在的表----insertintotable_not_existvalues(1,'test');updateconsistency_tablesetvalue=70.5wherekey=2;commit;----異常處理回滾----EXCEPTIONWHENother

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論