版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
鴻鵠收集整 歸作者所1//從社區(qū)開源蛻變?yōu)橐? 屬性4明細(xì):歷史明細(xì);影像:影像數(shù)據(jù)存放;推薦/:指?jìng)€(gè)人特點(diǎn)分析,推薦指精準(zhǔn);偽控: 信息管理;:記錄了個(gè)人過去的信用行為。//PAGEPAGE7Fusnsiht用10%開源的支持混合負(fù)載,從批量、交互查詢、數(shù)據(jù)挖掘,到實(shí)angLoader:基于ApacheSqoopStream:類SQL////問題定位等技巧,包括:使用JDK工具,通過jstatjstackjmap等,分析卡死、性能、////在上述的每個(gè)環(huán)節(jié),F(xiàn)usionInsightFusionInsight////推薦流程:先學(xué)習(xí)FusionInsight產(chǎn)品自帶的代碼樣例,理解透徹之后再去做業(yè)務(wù)開發(fā)。這種方式:1.生搬硬套的操作極易出問題;2.在業(yè)務(wù)應(yīng)用中再定位Fusnsght3.usiIsig//FusionInsight客戶端提供了安 (分 和 ,分別適用于linuxwindows),執(zhí)行安 可得到樣例工程所需要的依賴jar包和配置文件帳號(hào)信息需通過申請(qǐng), //上述的各種約束問題,并不是 usnsiht平臺(tái)引入的,而是kebes認(rèn)證體系+開源hdop安全性實(shí)+JDK安特性現(xiàn)所求的。人機(jī)賬號(hào):指人和機(jī)器(程序)交互場(chǎng)景下使用的賬號(hào);機(jī)機(jī)賬號(hào):指機(jī)器(程序)和機(jī)器(程序) B集群的HDFS組件,需要在B集群上創(chuàng)建同名賬號(hào),并給此賬號(hào)賦予// ,卻忘記了后面的jaas.confjaas.conf配置文件的內(nèi)容,隨著JDK類型而變化。在IBMJDK和OracleJDK下,jaas.conf配優(yōu)化okepr配置:.不需再去關(guān)注js.nf配置文件;b.用戶不需關(guān)注DK是rce的還是IBMPIK////////Sprk/Mpeuce/So平臺(tái)上的業(yè)務(wù)應(yīng)用的單步調(diào)試是難點(diǎn),F(xiàn)usnsiht提供了調(diào)試指導(dǎo);////本質(zhì)上,它們都 不對(duì) ,只提供keytab文件人機(jī)賬號(hào)提 ,同時(shí)也提供keytab文件////////講解過程:1.數(shù)據(jù)導(dǎo)入 ;2.業(yè)務(wù)查詢;3.數(shù)據(jù)備份;4.其他對(duì)外接口////講解過程:1.Fume導(dǎo)入;2.Fume將數(shù)據(jù)放到Kaka上;3.Som上的運(yùn)用做分析結(jié)果存放在B(關(guān)系數(shù)據(jù)庫上),一般是因?yàn)榭蛻舻膽?yīng)用先前都是連接B的,客戶不想改變?cè)瓉淼膽?yīng)用(考慮到成本)。我們一般推薦客戶擁抱大數(shù)據(jù),使用Bse替換DB。//講解:數(shù)據(jù)通過Flume/FTP/Bulkload(HBase提供的數(shù)據(jù)導(dǎo)入命令)等方式導(dǎo)入到 和用戶是HBase上數(shù)據(jù)的消費(fèi)者,對(duì) 和用戶就是HBase的應(yīng)用程序。//講解:數(shù)據(jù)通過kka導(dǎo)入,Stemng實(shí)時(shí)訂閱,作為Kaka的消費(fèi)者,完成消息的實(shí)時(shí)處位置提醒和實(shí)時(shí):例如,這個(gè)用戶的進(jìn)入了某個(gè)商業(yè)圈,給這個(gè)用戶推薦本商業(yè)////數(shù)據(jù)流從Kafka集群流入,Streaming上的應(yīng)用作為Kafka數(shù)據(jù)的消費(fèi)者 ,若有部分中間結(jié)果需緩存,則放在Redis////應(yīng)用:數(shù)據(jù)源中的數(shù)據(jù),并進(jìn)行關(guān)證數(shù)據(jù)質(zhì)量;然后加載到HBase集////1.F,Loader適合做全量(定時(shí))。Flume才適合做實(shí)時(shí)2.F3.T,Solr不僅可以做全文檢索,也可以當(dāng)一個(gè)非關(guān)系數(shù)據(jù)庫使用,只是沒有HBase//(C)Streming當(dāng)前不支持運(yùn)行在YARN//(A)HBase原生接口不提供SQL,當(dāng)然,可以通過和其他組件配合,例如HiveonHBase或者PhoenixonHBase,但這些方案中,對(duì)外的還是Hive接口或者Phoenix接口。(D)Solr是搜索引擎,沒有SQL//(A)MapReduce(D)Hive的本職也是MapReduce//(D)這個(gè)配置文件只有在keper組件時(shí)才需要,而且在usnsihtC60版本以后,樣例代碼中已經(jīng)提供了統(tǒng)一認(rèn)證工具類,通過這個(gè)類的PI生成js對(duì)象,不需再要求提供js.c////////////低時(shí)間延遲數(shù)據(jù)的應(yīng)用,例如幾十毫秒范圍原因:hdfsmod總數(shù)受限于Nmode內(nèi)存容量。根據(jù)經(jīng)驗(yàn),每個(gè)文件,和數(shù)據(jù)塊的信息大約占150字節(jié),如果一百萬個(gè)文件,且每個(gè)文件占一個(gè)數(shù)據(jù)塊,那至少需要300MB的內(nèi)存,但是如果原因:現(xiàn)在hdfs文件只有一個(gè)writer////DistriutFileystm對(duì)象:DS客戶端通過調(diào)用DistriutFileystm的Cet()方法來請(qǐng)求創(chuàng)建文件;FSDataOutputStream對(duì)象:DistributedFileSystem通過對(duì)NameNode發(fā)出RPC請(qǐng)求,在NameNode的Namespace里面創(chuàng)建一個(gè)新的文件信息。DistributedFileSystem返回一個(gè)FSDataOutputStream給客戶端,讓它從FSDataOutputStream中寫入數(shù)據(jù),F(xiàn)SDataOutputStream接著包裝一個(gè)DFSOutputStream,用來與DataNode及NameNode的I/O通信。//DistriutFileystm對(duì)象:DS客戶端通過調(diào)用DistriutFileystm的Cet()方法來請(qǐng)求創(chuàng)建文件;FSDataOutputStream對(duì)象:DistributedFileSystem通過對(duì)NameNode發(fā)出RPC請(qǐng)求,在NameNode的Namespace里面創(chuàng)建一個(gè)新的文件信息。DistributedFileSystem返回一個(gè)FSDataOutputStream給客戶端,讓它從FSDataOutputStream中寫入數(shù)據(jù),F(xiàn)SDataOutputStream接著包裝一個(gè)DFSOutputStream,用來與DataNode及NameNode的I/O通信。Flush//DistriutFileystm對(duì)象:HDFS客戶端通過調(diào)用istriutdFieSstem對(duì)象的opn()方法打開需要 的文件。FSDautStem對(duì)象:DstriutdFleSstm通過對(duì)Nmode發(fā)出C請(qǐng)求,確定要文件的bok的位置。DstriutdFleSstm返回一個(gè)FDanutStem給DS客戶端,讓它從FSDataInputStream中讀取數(shù)據(jù)。FSDataInputStream接著包裝一個(gè)DFSInputStream,用來與DataNode及NameNode的I/O通信////////客戶端:登錄FusionInsight 獲取樣例工程:解壓客戶端包,、從中獲取hdfs-example生成樣例工程:執(zhí)行安 中的install.bat生成工程。將從管理員處獲取keytab文件放入 導(dǎo)入eclipse:將樣例工程導(dǎo)入到eclipse中//初始化Configuration對(duì)象,并加載xml根據(jù)配置文件進(jìn)行Kerberos初始化HDFSFilesystem使用FileSystem對(duì)象對(duì)HDFS 使用DFSInputStream對(duì)象從HDFS 文件使用DFSOutputStream對(duì)象向HDFS////////更詳細(xì)的HDFSAPI使用接口數(shù)據(jù)可靠性的說明在調(diào)用wrie函數(shù)寫入數(shù)據(jù)時(shí),HDS客戶端并不會(huì)將數(shù)據(jù)寫入DS,而是緩存在客戶端內(nèi)對(duì)于有高可靠要求的數(shù)據(jù),應(yīng)該寫完后,調(diào)用hflush將數(shù)據(jù)刷新到HDFS//////////////HDFSS詳細(xì)命令//////// //C//例如使用admin用戶刪除了 hdfsdfs-mv/user/admin/.trash*/test//////////4//HBase又叫HMaster,在HA模式下,包含主用Master和備用Master主用Mster:負(fù)責(zé)Bse中rgiSever的管理,包括表的增刪改查;rgnSever的負(fù)載均衡,rgin分布調(diào)整;rin以及后的rgn分配;rgnever失效后的rgin遷移等。備用Mster:當(dāng)主用Mser故障時(shí),備用Mster將取代主用Mster對(duì)外提供服務(wù)。故障恢復(fù)后,原主用Mt ZooKeeper為HBase集群中各進(jìn)程提供分布式協(xié)作服務(wù)。各regionServer到Zookeeper中,主用Master據(jù)此感知各個(gè)regionServerHDFS為HBase提供高可靠的文 服務(wù),HBase的數(shù)據(jù)全 // 2.高吞吐量:HBase支持高并發(fā)讀寫,通過使用日志文件(HLOG)和內(nèi)存來將隨機(jī)寫轉(zhuǎn)換成順序?qū)?,保證穩(wěn)定的數(shù)據(jù)插入速率;讀寫?yīng)毩?,這兩種操作沒有。3.高效隨機(jī):低延遲,數(shù)據(jù)按列,數(shù)據(jù)即索引。并且數(shù)據(jù)量的增大不會(huì)增加時(shí)延4.優(yōu)雅的伸縮性。HBase服務(wù)能力可以隨服務(wù)器的增長而線性增長;HBase中表的數(shù)據(jù)表按Key值范圍自動(dòng)分片,散布于不同的機(jī)器上,實(shí)現(xiàn)自動(dòng)負(fù)載均衡;支持百億行×百萬列×上萬個(gè)版本。5.能夠同時(shí)處理結(jié)構(gòu)化和非結(jié)構(gòu)化的數(shù)6.ACID是指在數(shù)據(jù)庫管理系統(tǒng) 具有的四個(gè)特性:原子性(Atomicity)、一致(nsistency)、性(Islatin,又稱獨(dú)立性)、持久性(Durability)。在數(shù)據(jù)庫系統(tǒng)中,一個(gè)事務(wù)是指由一系列數(shù)據(jù)庫操作組成的一個(gè)完整的邏輯過程。例如銀行轉(zhuǎn)帳,從原賬戶扣除金額,以及向目標(biāo)賬戶添加金額,這兩個(gè)數(shù)據(jù)庫操作的總和構(gòu)成一個(gè)完整的邏輯過程,不可拆分。這個(gè)過程被稱為一個(gè)事務(wù),具有ACID特性。其他特點(diǎn)7.高可靠性。HBase是運(yùn)行在Hadoop上的NSQL數(shù)據(jù)庫,它的數(shù)據(jù)由HDFS做了數(shù)據(jù)冗余,具有高可靠性。8.低成本。HBase可構(gòu)建在廉價(jià)的PC上,此外,HBase支持較多的壓縮算法降 空間6//超過一年的繁瑣的查詢模式既降低了前臺(tái)業(yè)務(wù)操作效率,又嚴(yán)重降低了客戶體驗(yàn),易產(chǎn)生對(duì)銀行的不滿與 。//HBase//////。但也不能隨意設(shè)計(jì)表,將優(yōu)勢(shì)變?yōu)榱觿?shì)。比如若大多數(shù)查詢都要全表掃描,完全沒有利用HBs寫入場(chǎng)景需要考慮數(shù)據(jù)的分布均勻,分布均勻跟RowKey//// 下一頁將講解HBase//HBase中權(quán)限控制分為兩步第一步:給角色賦權(quán)限,例如商業(yè)分析師 yst_role,需要賦予table的read權(quán)限第二步:給用戶綁定一個(gè)或多個(gè)角色。綁定后,該用戶即擁有這些角色的所有權(quán)限。取各角色權(quán)限的并集。上層級(jí)別的自動(dòng)擁有下層級(jí)別的權(quán)大圈的角色包含小圈內(nèi)的所有權(quán)限。也就是擁有g(shù)lobal權(quán)限的角色自動(dòng)擁有namesace的權(quán)限。注意,權(quán)限分為admin,create,red,wrte,eecte。附錄中有HBase各操作所需權(quán)限匯總列ActionScopeCreateTablenamespaceDeleteTabletableADMIN||PutcolumnfamilyDeletecolumnfamilyinternalReadcolumnfamilyTableFlushtableADMIN||//配置文件和jar在執(zhí)行自動(dòng)配 //1.獲取配置,需要指定路徑。通過HBaseConfiguration.create()創(chuàng)建的Configuration實(shí)core-core-因此,這四個(gè)配置文件,應(yīng)該要放置在“ureolde”下面(將一個(gè)文件夾設(shè)置為Sureolder的方法:如果在工程下面建立了一個(gè)ruce的文件夾,那么,可以在該uldPath”>“UsesSourceFolde”即可)同時(shí),如果頻繁創(chuàng)建figurtn實(shí)例,會(huì)導(dǎo)致創(chuàng)建很多不必要的Hectn實(shí)例,很容易達(dá)到oKeepr建議在整個(gè)客戶端代碼范圍內(nèi),都共用同一個(gè)Configuration2.3.獲得(1)建議用Connection方式建立連接,并獲取Admin(2)Admin的實(shí)例應(yīng)盡量遵循“用時(shí)創(chuàng)建,用完關(guān)閉”的原則。不應(yīng)該長時(shí)間//finallytry{}catch(IOExceptione)LOG.error("Failedtocloseadmin",}}}4.。5.調(diào)用建表API判斷表存在的接口為// 場(chǎng)景以及HBase自身特點(diǎn)來設(shè)計(jì)表HBase因?yàn)镠Base不支持條件查詢和Orderby記錄只能按Rowkey(及其Range)////HBase應(yīng)用的編譯、調(diào)試和運(yùn)行類似普通JAVA//Bes (lis/ge/scn和////(1)查詢的業(yè)務(wù)只支持一年 右側(cè)是采用 十年或更長都支 //新增業(yè)務(wù)和為了將傳統(tǒng)數(shù)據(jù)表轉(zhuǎn)換為HBase這里增加 ////某客戶歷史某查詢示//////右側(cè)是HBase主要變動(dòng)在于將傳統(tǒng)表的多個(gè)字段組合成了HBase中的RowKey同時(shí)考慮到某些屬性是很 卻又同 的,將其放入冷列族并且合并到一Qualifier中處理。既做到了與熱列族的物理,又提高了冷列 //右側(cè)是HBase主要變動(dòng)在于將傳統(tǒng)表的多個(gè)字段組合成了HBase中的RowKey同時(shí)考慮到某些屬性是很 卻又同 的,將其放入冷列族并且合并到一Qualifier中處理。既做到了與熱列族的物理,又提高了冷列 ////在HBase中,一直在繁忙寫數(shù)據(jù)的region被稱為熱點(diǎn)region//大標(biāo)題的HBase表設(shè)計(jì)是指對(duì)HBase而言所有數(shù)據(jù)都是表,所有的設(shè)計(jì)都?xì)w納到表設(shè)小標(biāo)題的表設(shè)計(jì)是指針對(duì)詳細(xì)的Table而言,Table的結(jié)構(gòu)、Table的Family屬性等相可以將數(shù)據(jù)以天為單位分開,這樣當(dāng)數(shù)據(jù)過期的時(shí)候,可以通過drop2.建表預(yù)分rgion:可以讓rgin在開始階段就能夠均衡到各個(gè)rginevr之間。因此需要根據(jù)數(shù)據(jù)的分布,識(shí)別出可能會(huì)造成熱點(diǎn)的key的區(qū)域,在這些區(qū)域設(shè)置splitkey,進(jìn)行預(yù)分rgio。3.Family屬性:HBase是個(gè)的數(shù)據(jù)表。每行每列可以存放多個(gè)版本的數(shù)據(jù)。多個(gè)版4.RowKey離散度舉例:對(duì)于數(shù)據(jù)表中的某個(gè)列A,它的所有的可能的枚舉值共有M個(gè),而數(shù)據(jù)表的錄為列A的離散度= 號(hào)碼和號(hào)碼等。屬性值內(nèi)容是指選取什么樣的屬性作為RowKey,舉例:銀行經(jīng)常需要基于號(hào)詢?cè)斍?,?這個(gè)屬性就可以考慮作為RowKey的組成成分時(shí)間屬性是指可以利用時(shí)間來作為owKy可以滿足部分時(shí)間范圍的查詢,以及基于時(shí)間范圍的清理等。//////////////////例如:當(dāng)業(yè)務(wù)既有基于號(hào)查詳情,又有基于查詢?cè)斍榭梢詫⑻?hào)作為主RowKey,然后建立一個(gè)到號(hào)的二級(jí)索引,這樣就能滿足上述基于和基于的兩種查詢場(chǎng)景。//Family的屬性有:BLOOMFILTER(過濾器Qualifier(1)把獨(dú)立的高頻的屬性直接轉(zhuǎn)換為HBase的Qualifier,形成一個(gè)屬性即一個(gè) ////CreateTable用到的參數(shù)HTableDescriptor通??梢园慈缦路绞綐?gòu)建,包含表名和表名和FamilyHTableDescriptorhtd=newHColumnDescriptorhcd=new 。兼容開源//創(chuàng)建表分為快速建表和預(yù)分rgn建表,前者表示創(chuàng)建表后整張表只有一個(gè)rgn,隨著數(shù)據(jù)量的增加會(huì)自動(dòng)成多個(gè)rgn;后者表示,創(chuàng)建表時(shí)預(yù)先分配多個(gè)rgn,默認(rèn)情況下,在創(chuàng)建Bse表的時(shí)候會(huì)自動(dòng)創(chuàng)建一個(gè)rgin分區(qū),當(dāng)導(dǎo)入數(shù)據(jù)的時(shí)候,所有的HBse客戶端都向這一個(gè)rgion寫數(shù)據(jù),直到這個(gè)rgion種可以加快批量寫入速度的方法是通過預(yù)先創(chuàng)建一些空的rgs,這樣當(dāng)數(shù)據(jù)寫入HBserg開啟壓縮功能有利于減少HBase中數(shù)據(jù)的冗余數(shù)據(jù),HBase中有兩類壓縮機(jī)制文件級(jí)別的壓縮prss和DaaBde前綴壓縮。e中數(shù)據(jù)格式是e,文件級(jí)別的壓縮既是針對(duì)e的壓縮,前綴壓縮式針對(duì)e中數(shù)據(jù)主要部分DaaB進(jìn)行壓縮。使用Base壓縮功能的方法是在創(chuàng)建表時(shí),針對(duì)y在CunDsptr類中通過接口設(shè)置ase是一個(gè)面向列的數(shù)據(jù)庫,一行數(shù)據(jù),可能對(duì)應(yīng)多個(gè)my,而一個(gè)my又可以對(duì)應(yīng)多個(gè)列。通常,寫入數(shù)據(jù)的時(shí)候,我們需要指定要寫入的列(含y名稱和列名稱)。如果要往ase表中寫入一行數(shù)據(jù),需要首先構(gòu)建一個(gè)ut實(shí)例。ut中包含了數(shù)據(jù)的Rwy值和指定列(含y名稱和列名稱)的ue值,一個(gè)Rwy的e值可以有多個(gè)()//1.HBase(1)(2)(3)(4)(5)參照PPT進(jìn)行回(1)(2)設(shè)計(jì)HBase(3) 并導(dǎo)入HBase樣例工程(jar,并進(jìn)行安全認(rèn)證(5)(6)HBase////1.T,同時(shí)需要注意的是,解決數(shù)據(jù)分布不均勻還有其他方法的。比如避免過多熱點(diǎn)rgin,將owey中號(hào)的后四位前置,這能避免6625開頭的rg過度集中的問題。2.T,處理TTL屬性,還有多項(xiàng)Family屬性。HBase不同F(xiàn)amily在物 3.T,指定起始RowKey1.C,F(xiàn)amily//1.ABC,RowKey(1)因?yàn)镠Base是K-V模型,Rowkey(2)RowKey過程會(huì)影響每次RPC//////////////////MapReduce的資源管理平臺(tái)采用YARNpceHopYNYetohereucegotior)Hop管理和調(diào)度,它的引入為集群在利用率、資源統(tǒng)一管理和數(shù)據(jù)共享等方面帶來了巨大好處。////分片的必要性:MR框架將一個(gè)分片和一個(gè)MapTast對(duì)應(yīng),即一個(gè)MapTask只負(fù)責(zé)處理一個(gè)數(shù)據(jù)分片。數(shù)據(jù)分片的數(shù)量確定了為這個(gè)Job創(chuàng)建MapTask的個(gè)數(shù)。pplicanMste(A)負(fù)責(zé)一個(gè)pplitn生命周期內(nèi)的所有工作。包括:與M調(diào)度器協(xié)商以獲取資源;將得到的資源進(jìn)一步分配給內(nèi)部任務(wù)(資源的二次分配);與通信以啟動(dòng)/停止任務(wù);所有任務(wù)運(yùn)行狀態(tài),并在任務(wù)運(yùn)行失敗時(shí)重新為任務(wù)申請(qǐng)資源以重啟任務(wù)。eurcMge(RM)(odMnger)的資源匯報(bào)信息,并根據(jù)收集的資源按照一定的策略分配給各個(gè)應(yīng)用程序。NodeManager(NM)是每個(gè)節(jié)點(diǎn)上的,它管理Hadoop集群中單個(gè)計(jì)算節(jié)點(diǎn),包括與ResourceManger保持通信,監(jiān)督Container的生命周期管理,每個(gè)Container的資屬服務(wù)(auxiliaryservice)。// Reduce1.CopyReduceTask從各個(gè)MapTask拷貝MOF文件2.Sort通常又叫Merge,將多個(gè)MOF3.Reduce用戶自定義的Reduce//待處理的大文件A已經(jīng)存放在S上,大文件A被切分的數(shù)據(jù)塊A1、2、A3分別存放在DaaNde#1、#2、#3上。創(chuàng)建3個(gè)MapTask和3個(gè)ReduceTask,這些Task運(yùn)行在Container中。MapTask1、2、3的輸出是一個(gè)進(jìn)行過了分區(qū)與排序(假設(shè)沒做Combine)的MOFReduceTask從MapTask獲取MOF文件,經(jīng)過合并、排序,最后根據(jù)用戶自定義的//////////E1/STM-1接FE接在URP8100與SoftSwitch、MSCServer等設(shè)備對(duì)接時(shí),提供基于IP的 GE接 時(shí)鐘接連接由BITS設(shè)備、E1接口板(線路時(shí)鐘)提供時(shí)鐘信//E1/STM-1接FE接在URP8100與SoftSwitch、MSCServer等設(shè)備對(duì)接時(shí),提供基于IP的 GE接 時(shí)鐘接連接由BITS設(shè)備、E1接口板(線路時(shí)鐘)提供時(shí)鐘信//客戶端:登錄FusionInsight 程:apreduce-exampleFE接在RP100So Mi.r 等提供承載通道GE接導(dǎo)入主要用于URP8100與文件服務(wù)器對(duì)接,提供基于IP 流。(部分局i時(shí)鐘接連接由BITS設(shè)備、E1接口板(線路時(shí)鐘)提供時(shí)鐘信////////////////////////////////////////////3.該類的作用是將輸入的數(shù)據(jù)分割成一個(gè)個(gè)的split,并將plit進(jìn)一步拆分成<ke,value>對(duì)作為map函數(shù)的輸入。在執(zhí)行一個(gè)任務(wù)的時(shí)候,Mpeue會(huì)將輸入數(shù)據(jù)劃分成N個(gè)Split,然后啟動(dòng)相應(yīng)的N個(gè)Mp程序來分別處理它們。該類將解決數(shù)據(jù)如何劃分,Split4.splitmappartitionsortcombineshuffle//////////上圖中的CLI/Beeline屬于用戶交互型的客戶端。依賴于JDBC接口 Hive分為三個(gè)角色HiveServer、MetaStore、WebHcatHiveServer負(fù)責(zé)接受客戶端請(qǐng)求、解析、執(zhí)行HQL命令并返回查詢結(jié)MetaStore提供元數(shù)據(jù)服務(wù)WebHcat負(fù)責(zé)對(duì)外提供元數(shù)據(jù)、DDL等的http服 4//數(shù)據(jù)庫:創(chuàng)建表時(shí)如果不指定數(shù)據(jù)庫,則默認(rèn)為default數(shù)據(jù)表:物理概念,實(shí)際對(duì)應(yīng)HDFS上的一 同樣的桶數(shù)量來分桶,然后根據(jù)分桶字段做joinCREATETABLElist_bucket_single(keySTRING,valueSTRING)SKEWEDBY(key)ON(1,5,6)[STOREDASDIRECTORIES];//Hive構(gòu)建在基于靜態(tài)批處理的Hadoop之上,Hadoop通常都有較高的延遲并且在作業(yè)提交和調(diào)度的時(shí)候需要大量的開銷。Hive并不能夠在大規(guī)模數(shù)據(jù)集上實(shí)現(xiàn)低延遲快速的查詢,例如,Hive在幾百M(fèi)B的數(shù)據(jù)集上執(zhí)行查詢一般有分鐘級(jí)的時(shí)間延遲。因此,過程嚴(yán)格遵守HadoopMapReduce的作業(yè)執(zhí)行模型,Hive將用戶的HQL語句通過解釋器轉(zhuǎn)換為MapReduce作業(yè)提交到Hadoop集群上,Hadoop 作業(yè)執(zhí)行結(jié)果給用戶。Hive并非為聯(lián)機(jī)事務(wù)處理而設(shè)計(jì),Hive并不提供實(shí)時(shí)的查詢和基于行級(jí)的數(shù)據(jù)更新操作。Hive的最佳使用場(chǎng)合是大數(shù)據(jù)集的批處理作業(yè),例如,網(wǎng)//////客戶端:登錄FusionInsight 生成樣例工程:執(zhí)行安 中的install.bat生成工程:將從管理員處獲取keytab,krb5.conf文件放入 導(dǎo)入eclipse:將樣例工程導(dǎo)入到eclipse//該實(shí)例程序?qū)崿F(xiàn)了通過連接veive的連接//////////客戶端:登錄FusionInsight 安裝ODBC驅(qū)動(dòng):解壓客戶端包,從中獲其他環(huán)境配置:JDK1.8isaltadiovD//進(jìn)入到MITKerberos安裝路徑,找到可執(zhí)行文件kinit.exekinit-k-t/path_to_userkeytab/user.keytabUserName"人機(jī)"打開MITKerberos,單擊“getTicket”,在彈出的“MITKerberos:GetTicket”窗口中, 驅(qū) 方法驅(qū)動(dòng):通 hiveODBC客戶端可以獲驅(qū)動(dòng),windows下執(zhí)行示例:odbcreg/ihiveodbcLinux(SUSE)下執(zhí)行示例:rpm-ivhFusioninsight-hive-odbc-1.0.0-1.x86_64.rpm--nodeps 18驅(qū) 的詳細(xì)步驟請(qǐng)參考FusionInsight的CPI文檔//該實(shí)例程序?qū)崿F(xiàn)了通過ODBC連接hive,并實(shí)行showdatabases命令,并將執(zhí)行結(jié)果打印////////在客戶端機(jī)器令行終端輸入python可查看Python版本號(hào)。如下顯示Python版本2.6.6Python2.6.6(r266:84292,Oct122012,14:23:48)[GCC (RedHat4.4.6-onlinux2Type"help","copyright","credits"or"license"formore 令行終端執(zhí)行pythonsetup.pyinstall。如下內(nèi)容表示安裝setuptools的5.7版本成Finishedprocessingdependenciesfor//該實(shí)例執(zhí)行演示了如何使用python連接hive,并執(zhí)行showtables命令,然后打印出show執(zhí)行pythonpython-examples/pyCLI_sec.py即可運(yùn)行安全集群的樣例代執(zhí)行pythonpython-examples/pyCLI_nosec.py即可執(zhí)行連接非安全版本集群的Python客//HCatLog是一個(gè)對(duì)hadoop中的表 的管理層,方便Pig,Mapreduce等讀寫文客戶端:登錄FusionInsight 生成樣例程:行安裝 的itll.bt成工。將管理處獲的keytb,crb5.cof文件入cf 。導(dǎo)入eclipse:將樣例工程導(dǎo)入到eclipse中//1.編寫完的應(yīng)用程序需要打包并上傳至任意節(jié)點(diǎn)2.exportexportexport運(yùn)行yarn--config$HADOOP_HOME/etc/hadoopjar//本示例演示了如何使用HCatalog提供的HCatInputFormat和HCatOutputFormat接口 當(dāng)于以下HQL:* selectcol1,count(*)fromt1groupbycol1;**1)創(chuàng) createtablet1(col1*2)創(chuàng)建目的表 createtablet2(col1int,col2*3)將工程打成jar包后上傳*4)配置環(huán)境變量**export*export*export*exportLIB_JARS=$HCAT_HOME/share/hcatalog/hive-hcatalog-core- $HCAT_HOME/lib/hive-metastore- $HCAT_HOME/lib/hive-exec- $HCAT_HOME/lib/libfb303- $HCAT_HOME/lib/slf4j-api-//////////該實(shí)例實(shí)現(xiàn)了通過WebHCat的rest接口,執(zhí)行一個(gè)查詢語句select*frompokes,并返回//該實(shí)例程序演示了如何通過java代碼WebHCat的rest服務(wù)//該實(shí)例程序演示了如何通過java代碼WebHCat的rest服務(wù)//執(zhí)行pythonpython-examples/pyCLI_sec.py即可運(yùn)行安全集群的樣例代執(zhí)行pythonpython-examples/pyCLI_nosec.py即可執(zhí)行連接非安全版本集群的Python客//////////////UDF的概念:用戶自定義函數(shù)。用于在處理數(shù)據(jù)時(shí)加上用戶自己定義的處理邏UFUFeva創(chuàng)建UF令setroleCREATEFUNCTIONaddDoubles .bigdata.hive.example.udf.AddDoublesUDF'usingjar使用SELECTaddDoubles(1,2,3)from//客戶端參數(shù)的用法:在執(zhí)行sql前,先執(zhí)行set參數(shù)名=參數(shù)值;例如sethive.execution.engine=spark;即可將執(zhí)行引擎切換為spark//////////加上distributebyedce//////1、通過FusionInsightManager界 安裝。具體參面章2、不需要??梢越挥晒芾韱T創(chuàng)建永久3、TextFile,ORC,SequenceFile,RCFile,Parquet4、需要給這種UDF加上注解@UDFType(deterministic=//1、2、//////////44////66////88////hosts文件路徑:Windows:C:\Windows\System32\drivers\etc\hosts,FusionInsight集群的時(shí)間可通過登錄主管理節(jié)點(diǎn)(集群管理IP地址所在節(jié)點(diǎn))運(yùn)行//具體請(qǐng)參見《FusionInsightHDV100R002C60SPC200產(chǎn)品文檔 》,應(yīng)用開發(fā)指南Solr//Solr用戶是指屬于Solr//// // 相關(guān)ConnectionManagerHttpUtil.PROP_MAX_CONNECTIONS,設(shè)置整個(gè)連接池的大小,默認(rèn)為為十個(gè),即一般為((HttpUtil.PROP_MAX_CONNECTIONS_PER_HOST值大?。?Solr實(shí)例個(gè)數(shù))Htp Uti.PRPM_CNECTINS_PE_HST,設(shè)置連接到一個(gè)olr實(shí)例的這個(gè)設(shè)置要視乎客戶的業(yè)務(wù)規(guī)模來設(shè)置,其最大值要小于服務(wù)端的連接池大小SOLR_TM_MAXTHREADS=800)// 相關(guān)ConnectionManagerHttpUtil.PROP_MAX_CONNECTIONS,設(shè)置整個(gè)連接池的大小,默認(rèn)為為十個(gè),即一般為((HttpUtil.PROP_MAX_CONNECTIONS_PER_HOST值大?。?Solr實(shí)例個(gè)數(shù))HttpUtil.PROP_MAX_CONNECTIONS_PER_HOST,設(shè)置連接到一個(gè)Solr實(shí)例的這個(gè)設(shè)置要視乎客戶的業(yè)務(wù)規(guī)模來設(shè)置,其最大值要小于服務(wù)端的連接池大小SOLR_TM_MAXTHREADS=800)//完整的schema定義在“配置集Schema根據(jù)“ollctn設(shè)計(jì)-索引位置”介紹確定位置,根據(jù)“配置集olrnfigml”可最終確定solrfig.xlShard數(shù)目確定在“Collection設(shè)計(jì)-Shard//////////Collcton:在olrud集群中邏輯意義上的完整的索引,對(duì)邏輯數(shù)據(jù)的邏輯。可以索引看成關(guān)系數(shù)據(jù)庫的表,它不原始值。它可以被劃分為一個(gè)或者多個(gè)Shrd,每個(gè)ShrdepliCfigSe。 :在lrlud集群中的主要實(shí)體,是索引和查詢的基本單元,可以包含一個(gè)或多個(gè)字段,是一組描述某些事物的數(shù)據(jù)集合。必須包含一個(gè)能唯一標(biāo)識(shí)該文檔uniqeeySchema:uniqueKey、Field、FieldTypeFieldType//根據(jù)前文所列的業(yè)務(wù)目標(biāo)進(jìn)行Collection//其 到HDFS,還有一些配置項(xiàng)設(shè)置:其中solr.hdfs.replication.numbe配置項(xiàng)定義在HDFS上數(shù)據(jù)的副本數(shù),當(dāng)Collection副本因子>=2時(shí),此項(xiàng)值可設(shè)置為1<int其他配置項(xiàng)介紹請(qǐng)參見《FusionInsightHDV100R002C60SPC200產(chǎn)品文檔.》,管理員指南->業(yè)務(wù)操作指南->Solr->業(yè)務(wù)常見操作->Solr配置集文件說明->//SolrServer實(shí)例內(nèi)存一般配置16G,一個(gè)SolrCore一般占64M左右,那么一個(gè)SolrServer實(shí)例可容實(shí)例可容納128個(gè)Shard,可根據(jù)當(dāng)前集群//miors:是否忽略標(biāo)準(zhǔn)化,可節(jié)省內(nèi)存。原始類型數(shù)據(jù)此值默認(rèn)為tue,當(dāng)全文字fle ////maxChars參數(shù),一個(gè)int類型參數(shù),用于限制的字符////當(dāng)對(duì)一個(gè)文檔進(jìn)行索引時(shí),其中的每個(gè)fild中的數(shù)據(jù)都會(huì)經(jīng)歷分析,分詞和多步的分詞過(kize)(ie)的處理Factories//id作為uniqueKey字段,該字段需被標(biāo)記,indexed=“true”,stored=“true”,required=“true”,docValues=“true”defutSerhied>text</efutSerhied>ldtxt”<solrQueryParserdefaultOperator=“AND”/>查詢短語間的邏輯操作符,默認(rèn)為OR,若需示例中是使用Grm分詞器來索引和查詢文本。索引時(shí)會(huì)根據(jù)配置中指定最小、最大Tity中指定了mGrmSize為2,mxGrmize為2,那么會(huì)產(chǎn)生下面的索引詞:(2grs):To,on,n,,h,ht。//Solr客戶 及安裝,具體請(qǐng)參見《FusionInsightHDV100R002C60SPC200產(chǎn)品文.》,->業(yè)務(wù)操作指南->Solr->使用Solr配置集的其他操作如list、delete等操作,請(qǐng)參見《FusionInsightHDV100R002C60SPC200產(chǎn)品文檔.》,管理員指南->業(yè)務(wù)操作指南->Solr->業(yè)務(wù)常見操作->S客戶端操作命令,Solr配置集操作命令章節(jié)//////由于數(shù)據(jù)都在HBase中,為避免重復(fù),將非uniqueKey的索引字段的stored設(shè)置false,不在Solr由于RowKey的設(shè)計(jì),一個(gè)doc內(nèi)不存在多個(gè)值,multiValued設(shè)置//Solr索引應(yīng)用先從Kaka消息隊(duì)列(數(shù)據(jù)源)中取數(shù)據(jù),實(shí)時(shí)向Bse中寫數(shù)據(jù)的同時(shí),使用SolrPI在Solr中建立索引// Solr查詢應(yīng)用通過SolrAPI提交Solr 獲取滿足查詢條件的 Solr查詢應(yīng)用根據(jù)Rowkey,通過HBaseAPI去HBase ////HttpUtil.PROP_MAX_CONNECTIONS,設(shè)置整個(gè)連接池的大小,默認(rèn)為為十個(gè),即一般為((HttpUtil.PROP_MAX_CONNECTIONS_PER_HOST值大?。?Solr實(shí)例個(gè)數(shù))Htp Util.PRPM_CNECTINS_PE_HST,設(shè)置連接到一個(gè)olr實(shí)例的這個(gè)設(shè)置要視乎客戶的業(yè)務(wù)規(guī)模來設(shè)置,其最大值要小于服務(wù)端的連接池大小SOLR_TM_MAXTHREADS=800)注意:不要使用UpdateRequest中的 > s()”方法該方法內(nèi)部是copy了一份已被添加進(jìn)去的doc請(qǐng)使用 ,Map<String,Object>> sMap()ddFiddc的為準(zhǔn)。如果Slr應(yīng)用,需要支持指定頁碼跳轉(zhuǎn)的功能,可使用arsar)和sRwsws)來實(shí)現(xiàn)。通過start和rows參數(shù)可非常方便地進(jìn)行分頁,但是當(dāng)深度翻頁達(dá)百萬條索引時(shí),Solr會(huì)將前面的百萬索引到內(nèi)存,這樣做非常耗內(nèi)存,容易OOM。此時(shí)建議使用當(dāng)如下的字符出現(xiàn)在要查詢的值內(nèi)時(shí)需要進(jìn)行轉(zhuǎn)義【+-&&||!()^~*org.apache.solr..solrj.util. escapeQueryChars(Strings)由于游標(biāo)是無狀態(tài)的,不會(huì)索引數(shù)據(jù)在內(nèi)存里面,僅僅記錄最后一個(gè)doc的計(jì)算值類似md5,然后每一次,都會(huì)如此記錄最后一個(gè)值的mark,下一次通過這個(gè)mark便能快速的定位到第二頁上,如此往復(fù),便能完成整個(gè)數(shù)據(jù)的,而且耗費(fèi)內(nèi)存非常()會(huì)造成多個(gè)游標(biāo)的mrk值,這樣以來下一次請(qǐng)求就不知道如何定位了,而且有可能出現(xiàn)重復(fù)讀數(shù)據(jù)的情況。//登錄SolrAdminUI需要該用戶屬于Solrgroup、Supergroup用戶組,或者Solradmin。SolrAdminUI操作,請(qǐng)參見《FusionInsightHDV100R002C60SPC200產(chǎn)品文檔》,->業(yè)務(wù)操作指南->Solr->->SolrAdmin//在SolrAdmin頁面點(diǎn)擊Cloud->Tree可查看SolrCloud中Collections、配置集live_nodes//在SolrAdmin頁面點(diǎn)擊Cloud->Graph,可查看SolrCloud中所有的Collection及其////////如圖所示操作,向該Replica中添加一條id為“changeme”,字段title值為“changeme” //在SolrAdmin頁面,點(diǎn)擊CoreSelector,選擇Core(即Replica),點(diǎn)擊“Query”qfqsortstart指定結(jié)果集偏移量;rowsfl指定查詢返回的字段,該字段在schema.xmldf指定默認(rèn)字段,覆蓋schema.xmlRawQueryParmeters指定查詢參數(shù),如”shards.tolerant=true”。多個(gè)查詢參////1.答案2.答案//3.答案//考慮索引性能為3MB/s,該Collection 數(shù)據(jù)規(guī)模為8億條,hrd數(shù)目可以設(shè)置大于8個(gè),且可以為當(dāng)前olrSerer實(shí)例的數(shù)目的根據(jù)數(shù)據(jù)模型對(duì)Cllctn進(jìn)行shma設(shè)計(jì),如定義uiueKey字段,對(duì)g文本字義其分析器等查詢age在23~40之間的docs:“age:[23TO查詢msg中含有指定詞語的////綁定該角色的用戶可以創(chuàng)建Collection,并對(duì)Solr服務(wù)內(nèi)所有的Collection////這里面的操作是指通過SolrJavaAPI、RestAPI////////////44//一個(gè)典型的Kaka集群中包含若干Proucer(可以是web前端產(chǎn)生的PageView,或者是服務(wù)器日志,系統(tǒng)CU、Mory等),若rkr(Kaka支持水平擴(kuò)展,一般brker數(shù)量越多,集群吞吐率越高),若干nuer,以及一個(gè)okepr集群。Kaka通過oeper管理集群配置,Leder,以及在umer發(fā)生變化時(shí)進(jìn)行rblnce。Prouer使用puhBoer,Cumer使用ullBrk訂閱并消費(fèi)//66順序保證:消息隊(duì)列保證順序。Kafka保證一個(gè)Partition//順序保證:消息隊(duì)列保證順序。Kafka保證一個(gè)Partition//////對(duì)應(yīng)后續(xù)參考哪個(gè)樣例代碼。目標(biāo)Topic用客戶端的describe命令,查看該Topic如果需要?jiǎng)?chuàng)建Topic,那么該Topic和Partition新Topc創(chuàng)建需要,預(yù)估該Topc的數(shù)據(jù)吞吐量,數(shù)據(jù)保存周期、磁盤是否滿足要求等因素目標(biāo)Topic是否為安全 必須要使用NewAPI。預(yù)開發(fā)客戶端性能指標(biāo)?可靠性?實(shí)時(shí)性////詳細(xì)操作見CPI文//詳細(xì)操作見CPI文////////梳理業(yè)務(wù)場(chǎng)景流程(目標(biāo)Topic狀態(tài)、Partition個(gè)數(shù),預(yù)開發(fā)角色,數(shù)據(jù)流向熟悉Kafka提供的相應(yīng)API(包括Producer、Consumer新舊API、安全接口//打包到Linux1、右鍵選擇工程,選擇“Export2、選擇導(dǎo)出“RunnableJARfile”,并點(diǎn)擊“Next3、在“Launchconfiguration”下拉框中選擇Producer類或者Consumer類作為默認(rèn)執(zhí),然后點(diǎn)擊“Bowse”按鈕,在彈出的窗口中指定生成的r包名稱及存放路徑,并點(diǎn)Copyrurdlibrrisnoauboldernxtotegnetd”,點(diǎn)擊“Fini”。4、然后會(huì)在上步指定 下生成一個(gè)Jar包和一個(gè)存放lib的文件夾5、將剛才生成的依賴庫文件夾(此處為“example_lib”)拷貝到Linux環(huán)境上任 ,例如:“/opt/example”,然后將剛才生成的jar包拷貝到“/opt/example/example_lib”下。 7、進(jìn)入拷貝下“/opt/example”,首先確保conf下和依賴庫文件下的所有文執(zhí)行命令,如java-cp.:/opt/example/example_lib/*:/opt/example/conf //////Kaka是一個(gè)分布式消息系統(tǒng),在此系統(tǒng)上我們可以做一些消息的發(fā)布和訂閱操作,假定用戶要開發(fā)一個(gè)Pouer,讓其每秒向Kaa集群某opc發(fā)送一條消息,另外,我們還需要實(shí)現(xiàn)一個(gè)CoueTpc//Parit:rtnTiaio.Tiaio同的rr實(shí)例上,并且相同tin的不同副本分布在不同的rr實(shí)例上,副本之間會(huì)有一個(gè)作為er,ProdurCseee的rtn在Kaka集群中,Paritn越多吞吐量越高,但是artition過多也存在潛在影響,例如文件句柄增加、不可用性增加(如:某個(gè)節(jié)點(diǎn)故障后,部分Paritn重選Leder后時(shí)間窗口會(huì)比較大)建議:?jiǎn)蝹€(gè)Partition的磁盤占用最大不超過100GB;單節(jié)點(diǎn)上Partition數(shù)目不超過;整個(gè)集群的分區(qū)總數(shù)不超過10000//////grup.d:作為一個(gè)消費(fèi)者群組的標(biāo)識(shí),Kaka中對(duì)于同一個(gè)消費(fèi)者群組會(huì)進(jìn)行分區(qū)和Cnuer之間的均衡分配,保證組內(nèi)每個(gè)numer客戶端可以均衡的去消費(fèi)每個(gè)Paritn上的數(shù)據(jù),以提高消費(fèi)者的吞吐量;并且對(duì)于同一個(gè)消費(fèi)者組內(nèi)的r消息不會(huì)被重復(fù)消費(fèi)。Offset:用來記錄當(dāng)前組消費(fèi)到的位置,以便于下次繼續(xù)消費(fèi),offset一個(gè)概念,屬于同一個(gè)消費(fèi)者群組的Consumer會(huì)同步更新同一個(gè)offset//////////////所謂安全Topic指的是,在安全Kak集群中,對(duì)該Topic設(shè)置了CL。安全Topic,就必須要使用wPI。//////2、Kafka所有消息都會(huì)被保存在硬盤中,同時(shí)Kafka通過對(duì)TopicPartition設(shè)置replication來//D////////////Sprkoe:類似于M的分布式內(nèi)存計(jì)算框架,最大的特點(diǎn)是將中間計(jì)算結(jié)果直接放在內(nèi)存中,提升計(jì)算性能。自帶了Stne模式的資源管理框架,同時(shí),也支持YN、MESOS的資源管理系統(tǒng)。FI集成的是SparkOnYarn的模式。其它模式暫不支持SQL,可以針對(duì)不同數(shù)據(jù)格式(如:JSON,Parquet,ORC等)和數(shù)據(jù)源執(zhí)行ETL操SprkStrmng:微批處理的流處理引擎,將流數(shù)據(jù)分片以后用Sprkor的計(jì)算引擎中進(jìn)行處理。相對(duì)于StrMllib和GraphX主要一些算法庫FusionInsightSpark默認(rèn)運(yùn)行在YARN集群之上//// //////這里以IDEA工具和JAVA樣例為例子,描述了完整 IDE流程類似,步驟略有差 獲取樣例工程:解 的客戶端,Spark樣例工程在 導(dǎo)入IDE:?jiǎn)螕鬎ileNewProjectfromExistingSources… POM文件,然后根據(jù)應(yīng)用開發(fā)指南的指導(dǎo),導(dǎo)入工程依賴的Jar說明:不要將dev_lib下的所有Jar包導(dǎo)入,根據(jù)文檔中的“參考信息”導(dǎo)入工程對(duì)Jar包即可單擊ProjectStructure…打開ProjectStructure 框,在ProjectsettingsArtifacts中,點(diǎn)擊“+”圖標(biāo),選擇JarFrommoduleswith 包中,只需要打包代碼編譯結(jié)果和工程自己引入的第包。單擊BuildBuildArtifactsts…選擇上一步新建的Artifacts,然后////// Driver向ResourceManager申請(qǐng)ResourceManager啟動(dòng)AM向ResourceManager申請(qǐng)Resource啟動(dòng)Executor向Driver向Executor分配Task Task執(zhí)行結(jié)//////////使用textFile()方法可以將本地文件或HDFS文件轉(zhuǎn)換成RDD 加載數(shù)據(jù))。如textFile(“/data”),支持通配符。textFile()可選第二個(gè)參數(shù)slice,默認(rèn)情況下為每一個(gè)block分配一個(gè)slice。用戶也可以通過slice指定的分片,但不能使用少于HDFSblock的分片數(shù)。使用euncFile[K,V]()方法可以將Seuceile轉(zhuǎn)換成D。SeuceFle文件是Hop用來 二進(jìn)制形式的eyvle對(duì)設(shè)計(jì)一種面文(FltFile)。使用SprkntxthoDD方法可以將其他任何Hop輸入類型轉(zhuǎn)化成DD使用方法。一般來說,HdpDHFSblock都成為一個(gè)DD此外,通過Trnsomtn可以將opD等轉(zhuǎn)換成ileD(依賴一個(gè)父D產(chǎn)生)和oinedD(D)//用戶可以對(duì)DD對(duì)象進(jìn)行各種運(yùn)算,類似于MR的mp、ruce。Srk提供了豐富的算子可以對(duì)DDTrfrti和cti//窄依賴對(duì)優(yōu)化很有利。邏輯上,每個(gè)RDD的算子都是一個(gè)fork/join(此join非join,而是指同步多個(gè)并行任務(wù)的brr);把計(jì)算ork到每個(gè)分區(qū),算完后on,然后下一個(gè)fokjon。如果直接轉(zhuǎn)換到物理實(shí)現(xiàn),是很不經(jīng)濟(jì)的:一是每一個(gè)D(即使是中間結(jié)果)都需要物化到內(nèi)存或中,費(fèi)時(shí)費(fèi)空間;二是join作為全局的brer很昂貴的,會(huì)被最慢的那個(gè)節(jié)點(diǎn)拖死。如果子D的分區(qū)到父D的分區(qū)是窄依賴,frjfork/jon并為一個(gè),不但減少了大量的全局arr,而且無需物化很多中間結(jié)果RSapipne優(yōu)化。窄依賴優(yōu)勢(shì):先,arowdpedece可以支在同個(gè)custrnde上管道形式執(zhí)行多條命令,例如在執(zhí)行了p后,緊接著執(zhí)行fter;其次,則是從失敗恢復(fù)的角考慮。rrowdpedeces 復(fù)更有,因它只重新計(jì)失的parentpartto即可,而且可以并行地在不同節(jié)點(diǎn)進(jìn)重計(jì)算tge劃分:stge的劃分是Sprk作業(yè)調(diào)度的關(guān)鍵一步,它基于DAG確定依賴關(guān)系,借此來劃分ste,將依賴鏈斷開,每個(gè)stg內(nèi)部可以并行運(yùn)行,整個(gè)作業(yè)按照ste順序依次執(zhí)行,最終完成整個(gè)ob。實(shí)際應(yīng)用提交的ob中D依賴關(guān)系是十分復(fù)雜的,依據(jù)這些依賴關(guān)系來劃分ste自然是十分的,Sprk此時(shí)就利用了前文提到的依賴關(guān)系,調(diào)度器從DAG圖末端出發(fā),逆向遍歷整個(gè)依賴關(guān)系鏈,遇到ufflepnncy(寬依賴關(guān)系的一種叫法)就斷開,遇到NroDepdecy就將其加入到當(dāng)前tge。stge中tsk數(shù)目由stge末端的DD分區(qū)個(gè)數(shù)來決定,D轉(zhuǎn)換是基于分區(qū)的一種粗粒度計(jì)算,一個(gè)stage執(zhí)行的結(jié)果就是這幾個(gè)分區(qū)構(gòu)成的RDD//本頁示例代碼完成對(duì)一個(gè)HDFS上的文本文件進(jìn)行單詞數(shù)統(tǒng)計(jì),單詞以空格進(jìn)行分隔// 從HDFS上通過textFile方法獲取一個(gè)RDD,RDD中的數(shù)據(jù)為一行行的文 通過flatMap將文本按空格進(jìn)行分隔 通過map,對(duì)每一個(gè)單詞進(jìn)行計(jì) 通過reducyKey 通過saveAsTextFile將結(jié)果保存到HDFS上//////其中,numTask:并發(fā)的任務(wù)//////////硬件:一般在集群規(guī)劃時(shí)就已經(jīng)確定硬件的規(guī)格。屬于Spk調(diào)優(yōu)階段不可控困索,不在此討論。資源:一個(gè)Sprk應(yīng)用,分配多少CPU,內(nèi)存需要根據(jù)應(yīng)用場(chǎng)景提前規(guī)劃。資源分配并不是越多越好,只有分配的資源和應(yīng)用實(shí)際訴求相匹配,才能用將硬件的價(jià)值最大化。算法:在應(yīng)用開發(fā)階段,對(duì)應(yīng)用的性能有至關(guān)重要的影響,完成同一個(gè)任務(wù),算法的////StorageLevel包含級(jí)別存放所有的數(shù)據(jù),則數(shù)據(jù)可能就不會(huì)進(jìn)行持久化。那么下次對(duì)這個(gè)RDD執(zhí)行算子操作 MMY_NDDISK:使用未序列化的va對(duì)象格式,優(yōu)先嘗試將數(shù)據(jù)保存在內(nèi)存中。如果內(nèi)存不夠存放所有的數(shù)據(jù),會(huì)將數(shù)據(jù)寫入磁盤文件中,下次對(duì)這個(gè)執(zhí)行算子時(shí)持久化在磁盤文件中的據(jù)會(huì)被 來使。MMY_NLY_SE:基本含義同MMY_NY。唯一的區(qū)別是,會(huì)將DD中的數(shù)據(jù)進(jìn)行序列化,D的每個(gè)pritn會(huì)被序列化成一個(gè)字節(jié)數(shù)組。這種方式更加節(jié)省內(nèi)存,。MMY_NDDISK_E:基本含義同MMY_NDDISK。唯一的區(qū)別是,會(huì)將D中的數(shù)據(jù)進(jìn)行序列化,D的每個(gè)pritn會(huì)被序列化成一個(gè)字節(jié)數(shù)組。這種方式更加。DISK_ONLY:使用未序列化的Java////使用reduceByKey/aggregateByKey替代所謂的mpside預(yù)聚合,說的是在每個(gè)節(jié)點(diǎn)本地對(duì)相同的key進(jìn)行一次聚合操作,類似于的本地 bine。mpsi預(yù)之后,個(gè)節(jié)本地會(huì)有一相同的key,因?yàn)槎鄺l相同的ey都被聚合起來了。其他節(jié)點(diǎn)在拉取所有節(jié)點(diǎn)上的相同ky時(shí),I說,在可能的情況下,建議使用rucyKy或ggetByKey算子來替代掉gruByKy算子。因?yàn)閞duByKey和ggregtKey算子都會(huì)使用用戶自定義的函數(shù)對(duì)每個(gè)節(jié)點(diǎn)本地的相同ky進(jìn)行預(yù)聚合。而guKey算子是不會(huì)進(jìn)行預(yù)聚合的,全量使用mapPartitions替代普通mpritspriton所有的數(shù)據(jù),而不是一次函數(shù)調(diào)用處理一條,性能相對(duì)來說會(huì)高一些。但是有的時(shí)候,使用mpPrtis會(huì)出現(xiàn)M(內(nèi)存溢出)的問題。因?yàn)閱未魏瘮?shù)調(diào)用就要處理掉一個(gè)priton果內(nèi)存不夠,回收時(shí)是無法回收掉太多對(duì)象的,很可能出現(xiàn)M異常。所以使用這類操作時(shí)要慎重!//使用filter之后進(jìn)行coalesce操通常對(duì)一個(gè)DD執(zhí)行fil算子過濾掉DD中較多數(shù)據(jù)后(比如30%以上的數(shù)據(jù)),建議使用oece算子,手動(dòng)減少D的pritn數(shù)量,將D中的數(shù)據(jù)壓縮到更少的ritnfile之后,D的每個(gè)priton被過濾掉,此時(shí)如果照常進(jìn)行后續(xù)的計(jì)算,其實(shí)每個(gè)tsk處理的pritn中的數(shù)據(jù)量并不是很多,有一點(diǎn)資源浪費(fèi),而且此時(shí)處理的tk越多,可能速度反而越慢。因此用lsce減少priin數(shù)量,將D中的數(shù)據(jù)壓縮到更少的pritn之后,只要使用更少的tsk即可處理完所有的priton使用repartitionAndSortWithinPartitions替代repartition與sortrpritonndSorWitiritsSpr官推薦一個(gè)子,建,如需要在rpritonrpritodSritiParits算子。因?yàn)樵撍阕涌梢砸贿呥M(jìn)行重分區(qū)的suflufl與r兩個(gè)操作同時(shí)進(jìn)行,比先ufl再r使用foreachPartitions替代原理類于mpriinsmp”一個(gè)priion據(jù),而不是一次函數(shù)調(diào)處理一條數(shù)據(jù)。在實(shí)踐中發(fā)現(xiàn),forehParitns類的算子,對(duì)性能的提升還是很有幫助的。比如在forech函數(shù)中,將DD中所有數(shù)據(jù)寫MySL,那么如果是普通的orh算子,就會(huì)一條數(shù)據(jù)一條數(shù)據(jù)地寫,每次函數(shù)調(diào)用可能就會(huì)創(chuàng)建一個(gè)數(shù)據(jù)庫連接,此時(shí)就勢(shì)必會(huì)頻繁地創(chuàng)建和銷毀數(shù)據(jù)庫連接,性能是非常低下;但是如果用forehPariins算子 處理一個(gè)pritn的數(shù)據(jù),那么對(duì)于每個(gè)pritn,只要?jiǎng)?chuàng)建一個(gè)數(shù)據(jù)庫連接即可,然后執(zhí)行批量插入操作,此時(shí)性能是比較高的。////////為什么不默認(rèn)使用Kryo序列Sprk默認(rèn)使用的是a的序列化機(jī)制,也就是bjectututStem/bjectnutStemPI來進(jìn)行序列化和反序列化。但是Srk同時(shí)支持使用Kro序列化庫,Kro序列化類庫的性能比va序列化類庫的性能要高很多。介紹,Kro序列化機(jī)制比va序列化機(jī)制,性能高10SprKrKryo//Executor的內(nèi)存主要分為三第一塊是讓task執(zhí)行我們自己編寫的代碼時(shí)使用,默認(rèn)是占Executor總內(nèi)存的第二塊是讓task通過shuffle過程拉取了上一個(gè)stage的task的輸出后,進(jìn)行聚合等操作時(shí)第三塊是讓RDD持久化時(shí)使用,默認(rèn)占Executor總內(nèi)存的60%tsk的執(zhí)行速度是跟每個(gè)Exeuor進(jìn)程的CUor數(shù)量有直接關(guān)系的。一個(gè)Uco同一時(shí)間只能執(zhí)行一個(gè)線程。而每個(gè)Exuor進(jìn)程上分配到的多個(gè)tk,都是以每個(gè)tskCPUortsktsk////////SparkSQL是一個(gè)用于處理結(jié)構(gòu)化數(shù)據(jù)的Spark組件,作為ApacheSpark大數(shù)據(jù)框架的對(duì)不同數(shù)據(jù)格式(如:JSON,Parquet,ORC等)和數(shù)據(jù)源(如:HDFS、數(shù)據(jù)庫等SparkSQL的應(yīng)用與SparkCore的執(zhí)行過程類似,多了一個(gè)將SQL語句解析成RDD算子yzeLogicalGeneratePhysicalPrepareedSpark//JDBC使用有兩種方在應(yīng)用中通過JDBC連接到JDBCServer,然后執(zhí)行使用spark-beeline交互式命令行工具,執(zhí)行Spark應(yīng)用有兩種方式在應(yīng)用中通過SparkSQLContext來提交SQL語使用spark-sql命令行工具執(zhí)行//sparbene是作為客戶端連接到BCSever上,SL語句是在BCSeer的應(yīng)用中執(zhí)行,在YCSeverspark-sql是在客戶端中直接啟動(dòng)的Spark應(yīng)用,和spark-submit提交spark,在FusionInsight的集群上可以使用local和yarn模式,spark-sql只支持yarn-模式,不支持yarn-cluster模式。spark-sql可以通過參數(shù)指定個(gè)性化的參數(shù),包括:CPU、內(nèi)存、executor個(gè)數(shù),詳細(xì)參數(shù)可以通過spark-sql--help查看。在Yarn的界//spark.sql.dialect:SQL語法配置參數(shù)//CREATETABLECHILD(NAMESTRING,AGEINT)ROWFORMATDELIMITEDFIELDSTERMINATEDBY','SELECT*FROMDROPTABLE//通過JDBC連接SparkSQL與普通的JDBC連關(guān)系數(shù)據(jù)庫的代碼流程類似本頁中的程序打包運(yùn)行與普通vMn應(yīng)用開發(fā)指南。//由于DatFre帶有Sha信息,因此,查詢優(yōu)化器可以進(jìn)行有針對(duì)性的優(yōu)化,以提高查詢效率。////注意:登錄時(shí)的Userprincipal,keytab路徑和krb5配置文件路徑需要根據(jù)實(shí)際情況//////////////SparkStreaming系統(tǒng)需要設(shè)置批處理間隔使得數(shù)據(jù)匯總到一定的量后再一并操批處理間隔是SparkStreaming的概念和關(guān)鍵參數(shù),它決定了SparkStreaming提交批處理時(shí)間可以達(dá)到毫秒級(jí)別,最小值為50ms,一般建議設(shè)置不小于Dstream:輸入數(shù)據(jù)//Sprk提供了一個(gè)高級(jí)的可靠 elleKfkeceier類型來實(shí)現(xiàn)可靠的數(shù)據(jù)收取,它利用了Sprk1.2提供的WL(Writehedg)功能,把接收到的每一批數(shù)據(jù)持久化到磁盤后,更新oppritn的offet信息,再去接收下一批Kaka數(shù)據(jù)。萬一eceie失敗,重啟后能從WAL里面恢出已收的數(shù)據(jù),從而免了ceiver節(jié)宕機(jī)造成的數(shù)據(jù)丟失給應(yīng)用分配的cores數(shù)量必須大于Receiver數(shù)目,這樣才能保證每個(gè)Receiver占用一個(gè)的同時(shí),至少還有另一個(gè)cores來處理數(shù)////此樣例程序,生成Kafka測(cè)試數(shù)據(jù)方法 com..bigdata.spark.examples.FemaleInfoCollectionKafka--masteryarn---jars sparkStreamingTest////////窗口在源DStream上滑動(dòng),合并和操作落入窗內(nèi)的源RDDs,產(chǎn)生窗口化的DStream的。//窗口在源DStream上滑動(dòng),合并和操作落入窗內(nèi)的源RDDs,產(chǎn)生窗口化的DStream的。////在Streaming中Checkpoint有特殊的意義對(duì)于普通的Spark任務(wù),沒有cp不會(huì)影響正確性,因?yàn)槿魏螖?shù)據(jù)都是可以從source y出來的但是對(duì)于premig,如果rivr掛掉,不做任何處理,因?yàn)榱鲾?shù)據(jù)是無限的,你不可能像rk一樣把所有數(shù)據(jù)ey一遍,即使se支持ey,比如kafka,也會(huì)丟數(shù)據(jù),影響正確性,沒有進(jìn)行有狀態(tài)的asfrmation操作的簡(jiǎn)單流應(yīng)用程序在運(yùn)行時(shí)可以不開啟checkoint。在這種情況下,從drivr故障的恢復(fù)將是部分恢復(fù)(接收到了但是還沒有處理的數(shù)據(jù)將會(huì)丟失)。//checkpoint每批數(shù)據(jù)會(huì)減少操作的吞吐transformation需要RDDcheckpoint。默認(rèn)的間隔時(shí)間是批間隔時(shí)間的倍數(shù),最少10秒。它可以通過dstream.checkpoint來典型的情況下,設(shè)置checkpoint間隔是DStream的滑動(dòng)間隔的5-10//在存入Spk內(nèi)存之前,接收的數(shù)據(jù)都被合并成了一個(gè)大數(shù)據(jù)塊。每批數(shù)據(jù)中塊的個(gè)數(shù)決定了任務(wù)的個(gè)數(shù),阻塞間隔由配置參數(shù)spa.temng.ockntrl決定,默認(rèn)的值是200毫秒。使用spark.default.parallelism設(shè)置并發(fā)任//////JVM增加調(diào)試參數(shù)示例:-Xdebug-Xnoagent-drive和exutorsrdefuts.nfM//////spark-default.conf配置文件、--conf參數(shù)、SparkConf對(duì)//1、2、微批 理吞吐3、4、////////////////////Redis步驟4中,一般情況下,客戶端緩存的集群拓?fù)湫畔⒏?wù)端記錄的是一致的,seve2就是目的server;當(dāng)集群擴(kuò)容時(shí),集群的拓?fù)湫畔?huì)發(fā)生變化,而客戶端的記錄的拓?fù)?/////數(shù)據(jù)量影響eis集群實(shí)例數(shù)及moy的配置,mmory配置是指單個(gè)eds實(shí)例的最大內(nèi)存,edsixeryedi讀寫性能對(duì)Redis/需要考慮數(shù)據(jù)的分布均勻,分布均勻跟KEY及數(shù)據(jù)結(jié)構(gòu)的選擇有關(guān)。如 大量數(shù)都放到一個(gè)KY中,應(yīng)盡量拆分為多個(gè)KEY,以使數(shù)據(jù)均分到集群中的各個(gè)實(shí)例上,做到負(fù)載均衡。//若安裝eds服務(wù)時(shí)DI_SECUITYENBLD參數(shù)設(shè)置為fse,即eds服務(wù)為非安全模式,則無需創(chuàng)建用戶。////客戶端的樣例工程已包含依賴jar//1.Redis redis.authentication.jaas系統(tǒng)參數(shù)也可通過在java命令行中加-//1.Redis redis.authentication.jaas系統(tǒng)參數(shù)也可通過在java命令行中加-//使用list結(jié)構(gòu)的lpush,ltrim操作可向列表中插入數(shù)據(jù)并使其只保存最近N個(gè)數(shù)據(jù),使榜應(yīng)用,將需要排序的值設(shè)置成sortedset的score,將具體的數(shù)據(jù)設(shè)置成相應(yīng)的set//////////////////////////////////1.sortedset2.//////////Streaming基于開源的Storm,在開源Storm的基礎(chǔ)上增加了持續(xù)查詢語言CQL4//客戶端向Nimbus提交業(yè)務(wù)拓?fù)洌@ 表示 和CQL兩種形。 并接受Nimbus分配的任務(wù),根據(jù)需要啟動(dòng)和停止屬于自己管自己的信息到ZooKeeper中,Nimbus據(jù)此感知各個(gè)角色的健康狀態(tài)。//66////88//////提交Stemg應(yīng)用(使用Stemg客戶端)需要進(jìn)行安全認(rèn)證,因此需要先從管理員處申請(qǐng)一個(gè)具有Steig限的戶,且該用的認(rèn)憑據(jù)。的認(rèn)證憑據(jù)包含用戶keytab文件和krb5.confStemg的權(quán)限管理是由用戶組控制的。一個(gè)用戶如果屬于Stemng組,則該用戶為Stemng普通用戶,只能管理自己提交的拓?fù)洌瑹o法操作別用戶提交的拓?fù)?。如果用戶屬于strmigdiSteig在申請(qǐng)用戶時(shí)需要明確所需要的用戶權(quán)限,盡量做到用戶權(quán)限最小化,否則容易出現(xiàn)拓?fù)浔灰馔獠僮鞯膱?chǎng)景。Streaming支持安全的HDFS、HBase、Kafka、Redis等外部組件,如果業(yè)務(wù)中需要訪問以上外部組件,所申請(qǐng)的用戶需要同時(shí)具有該外部組件的權(quán)限。業(yè)務(wù)開發(fā)請(qǐng)參考storm-examples樣例工程中相關(guān)組件的樣例代碼,或者參考FusionInsightHD產(chǎn)品文檔->應(yīng)用開發(fā)指南->Storm開發(fā)指南->信息// srcmn/rurces 下是相關(guān)配置文件,如f,stomyml等,業(yè)務(wù)中需要的其他配置文件如用戶ketb文件需要到該 下 下是工程依賴的jar//////實(shí)現(xiàn)生成隨機(jī)字符串的Spout示例中RandomSentenceSpout定義發(fā)送給下一跳的字段為“word//實(shí)現(xiàn)單詞拆分的Bolt//實(shí)現(xiàn)單詞統(tǒng)計(jì)邏輯的Bolt//使用TopologyBuildersetSpout()方法設(shè)置SpoutsetBolt()方法設(shè)置Bolt,并在setBolt()初始化Config對(duì)象,并且設(shè)置客戶端參數(shù)。stormTPOLGY_CKER_EECUTS(seumAckes)用來設(shè)置cker的數(shù)量,設(shè)置為0表示不開啟cke。StormSubmitter.submitTopology(topology-name,conf,topology)接口來提交拓?fù)?/Storm在提交拓?fù)鋾r(shí)是需要將業(yè)務(wù)的jr包上傳至服務(wù)端的,因此需要將eclipse代碼(業(yè)務(wù)代碼)打成一個(gè)j包////使用CMD模式提交拓?fù)鋾r(shí),在提交之前請(qǐng)使用已申請(qǐng)的安全用戶執(zhí)行kinit<userName>進(jìn)行安全認(rèn)證。當(dāng)前在二次開發(fā)樣例中,只有orduntoogy.jva提供了三種提交方式,其他樣例或者新開發(fā)的業(yè)務(wù)代碼可以參照rdutTplgyLcal模式是在本地模擬啟動(dòng)一個(gè)stom集群和keper示例,然后啟動(dòng)orkr進(jìn)程,方便調(diào)試業(yè)務(wù)功能的正確性。當(dāng)前somexmle工程中的b下已經(jīng)提供了部分常用r包,如、nj包b之外cspt中。//單步調(diào)試中workr進(jìn)程調(diào)試端口為8011,若和系統(tǒng)中其他服務(wù)的端口有,請(qǐng)自行換其他端口。////StreamCQL(StreamContinuousQueryLanguage)是建立在分布式流處理平臺(tái)基礎(chǔ)上存在業(yè)務(wù)邏輯重用性不高、重復(fù)開發(fā)、開發(fā)效率低下等問題。ramCQL提供了較豐富的分布式流計(jì)算功能,除了具有過濾、轉(zhuǎn)換等傳統(tǒng)的基本能力之外,ramCL引入//正文圖中使用CQL語句實(shí)現(xiàn)了一個(gè)拓?fù)洳⒃贑QLS 詳細(xì)的CL語法請(qǐng)參考《CL語法手冊(cè)》,用戶可以在suport上搜索“CL語法手冊(cè)”來獲取相應(yīng)版本的文檔。//CQL也提供在eclipse上直接提交的能力,具體執(zhí)行過程和Streaming////數(shù)據(jù)從TCP客戶端發(fā)出經(jīng)過Stormcluster業(yè)務(wù)目標(biāo):統(tǒng)計(jì)最近10To1010分鐘的時(shí)間范圍內(nèi)的op10。如時(shí)間從0點(diǎn)開始,10分鐘時(shí)輸出的是[n1mn]內(nèi)的To10,10分10秒時(shí)輸出的是[1010i10]內(nèi)的10//SpoutTimerSpoutGatherBolt用來匯總CountBolt的處理結(jié)果并排序,最終輸出10分鐘內(nèi)的//Spout作為storm的數(shù)據(jù)源組件,需要負(fù)責(zé)數(shù)據(jù)的接收工作。前端使用 ,那Spout則是作為TCPServer來和 通信通過TCP接收到數(shù)據(jù)后需要進(jìn)行數(shù)據(jù)反序列化操作,如前端數(shù)據(jù)是通過poouf進(jìn)行的序列化,那么在Spu//TimerSpoutTimerSpout發(fā)送的時(shí)間戳可以幫助業(yè)務(wù)在內(nèi)存中緩存數(shù)據(jù),從而達(dá)到模擬時(shí)間窗口的//CountingBolt是實(shí)現(xiàn)業(yè)務(wù)邏輯的主要CountingBolt同時(shí)接受Spout和TimerSpout的數(shù)CountingBolt在接收到Spout的數(shù)據(jù)時(shí),將數(shù)據(jù)緩存/刷新進(jìn)本地?cái)?shù)據(jù)結(jié)構(gòu);在接收到TimerSpout的數(shù)據(jù)時(shí),將當(dāng)前窗口中的值和從TimerBolt接收到的時(shí)間戳一起發(fā)送給下//GatherBolt接收CountingBolt的數(shù)GatherBolt在接收到CountingBolt的數(shù)據(jù)時(shí)需要判斷是否是同一批次的數(shù)據(jù)(CountingBolt有多并發(fā)的場(chǎng)景下,GatherBolt需要保證結(jié)果的正確性,根據(jù)攜帶的時(shí)間GatherBolt在接收到完整的一批次數(shù)據(jù)后,要進(jìn)行最終的排序,并且將Top10介質(zhì)可以是kafka、redis、DB、HDFS、Hbase//分組方式是Sut和ot、olt和olt之間的數(shù)據(jù)傳遞的方式,也稱為消息分發(fā)策略。分組方式直接影響業(yè)務(wù)的功能和性能,在拓?fù)浣Y(jié)構(gòu)中各組件(Sut/lt)的交接點(diǎn)選擇一個(gè)拓?fù)淇梢岳斫鉃橐粋€(gè)有向無環(huán)圖,其中的Sput和lt等組件構(gòu)成了圖的頂點(diǎn),各頂點(diǎn)間的分組方式則直決定邊的。用戶可以自定義分組方式,通過實(shí)現(xiàn)customGrou////本例中,Spout和CountingBolt之間需要使用 //TimerSpout和CountingBolt之間必須采用 ,來保證countingBolt的所有CountingBolt和GatherBolt之間則需要采用globalGrou,因?yàn)樗衼碜訡ountingBolt的數(shù)據(jù)都要匯聚到GatherBolt進(jìn)行匯總,需要保證消息的唯一性。也可以通過設(shè)置GatherBolt的并發(fā)度為1來實(shí)現(xiàn),這時(shí)任何分組方式都可以使用。////// 繼承 接繼承 接口之 接口,IBaiscBolt在自動(dòng)加上了ack,用戶無需手動(dòng)開啟ack////創(chuàng)建一個(gè)輸入流example,該輸入流是一個(gè)TCP客戶端,目標(biāo)服務(wù)端的ip例子1中流S1中了一個(gè)20秒的跳動(dòng)窗口,S2了一個(gè)的窗口,當(dāng)S1或者S2中有例子2中流S1了一個(gè)10條數(shù)據(jù)的滑動(dòng)窗口,2了一個(gè)當(dāng)天數(shù)據(jù)時(shí)間窗口,當(dāng)S1或者S2中有數(shù)據(jù)進(jìn)來時(shí)做一次匹配,匹配條件是S1d=S2d,然后將S1和S2的字段進(jìn)行左o(S1中字段不能為空)中////介紹了Stemng的應(yīng)用開發(fā)使用場(chǎng)景,隨后詳細(xì)介紹了Stemng和CL應(yīng)用開發(fā)的流程。使用一個(gè)應(yīng)用開發(fā)案例介紹了一個(gè)Som業(yè)務(wù)pooy的開發(fā)流程,包括消息可靠性的設(shè)置,分組方式的選擇等。最后介紹了Storm的Spout和Bolt的JavaAPI接口和CQL//2.F,Tuple發(fā)送失敗后會(huì)回調(diào)Sput的fil()果需要
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 同步優(yōu)化設(shè)計(jì)2024年高中數(shù)學(xué)第一章直線與圓1.4兩條直線的平行與垂直課后篇鞏固提升含解析北師大版選擇性必修第一冊(cè)
- 專題11 課外閱讀(講義+試題) -2023年三升四語文暑假銜接課(統(tǒng)編版)
- 2024貸款購銷合同范本范文
- 2024養(yǎng)豬場(chǎng)轉(zhuǎn)讓合同(參考文本)
- 草藥基地合同范本(2篇)
- 2022年監(jiān)理合同(2篇)
- 關(guān)于試用期工作總結(jié)
- 頑固皮膚病康復(fù)經(jīng)驗(yàn)分享
- 國際會(huì)展中心建設(shè)總承包合同
- 跨境電商快遞租賃合同
- DB11/1950-2021-公共建筑無障礙設(shè)計(jì)標(biāo)準(zhǔn)
- 鍍鋅線專業(yè)詞匯表
- 股權(quán)代持股東會(huì)決議
- 第17課 盼 六年級(jí)語文上冊(cè)同步分層作業(yè)設(shè)計(jì)系列(統(tǒng)編版)
- 文化旅游安全培訓(xùn)
- 數(shù)字技術(shù)在幼兒科學(xué)教育中的應(yīng)用與實(shí)踐
- 初中物理光學(xué)難題難度含解析答案
- 2024年中國民航科學(xué)技術(shù)研究院社會(huì)招聘工作人員16人歷年高頻考題難、易錯(cuò)點(diǎn)模擬試題(共500題)附帶答案詳解
- 公平競(jìng)爭(zhēng)審查制度實(shí)施細(xì)則
- 燃煤鍋爐作業(yè)安全操作規(guī)程
- 2024年考研英語真題及答案(完整版)
評(píng)論
0/150
提交評(píng)論