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

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

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

Readuncommitted:允許讀取未提交的數(shù)據(jù)Hyperbase隔離:Snapshot:事務(wù)開始創(chuàng)建snapshot,若干個事務(wù)更新同一數(shù)據(jù),后提交失敗。ACID測試案例下面是浙江農(nóng)信社對TDH的事務(wù)處理能力的測試報(bào)告:ACID測試----原子性測試測試名稱ACID測試----原子性測試用例編號測評目標(biāo)驗(yàn)證分布式事務(wù)處理原子性,保證事務(wù)操作原子性,要么所有提交操作全部完成,要么全部不完成,事務(wù)在執(zhí)行過程中發(fā)生錯誤,會被Rollback到事務(wù)開始前的狀態(tài)測試人前置條件集群正常運(yùn)行測試步驟表結(jié)構(gòu):Tableatomicity_table_srckeyint,valuestring原子性性驗(yàn)證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ù),預(yù)期表中沒有數(shù)據(jù),并輸出plsqlfailed.預(yù)期結(jié)果事務(wù)操作支持原子性測試結(jié)果完整通過了原子性功能測試ACID測試----一致性測試測試名稱ACID測試----一致性測試用例編號測評目標(biāo)驗(yàn)證分布式事務(wù)處理一致性,保證事務(wù)操作一致性。保證在事務(wù)開始之前和事務(wù)結(jié)束以后,完整性約束沒有被破壞測試人前置條件集群正常運(yùn)行測試步驟 表結(jié)構(gòu):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)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論