版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
Cloudera開發(fā)者學(xué)習(xí)筆記Cloudera簡介:CDH:Cloudera'sDistnbutionincludingApacheHadoop:最完整經(jīng)過測試的廣泛部署的Hadoop發(fā)行版本、集成了所有關(guān)鍵的Hadoop生態(tài)系統(tǒng)項(xiàng)目CDH可分為ClouderaExpress(免費(fèi))和ClouderaEnterprise(收費(fèi)并附加額外ClouderaManager功能)ClouderaExpress提供免費(fèi)的ClouderaManagerHadoop端到端的管理、部署、管理和監(jiān)控集群ClouderaEnterprise提供收費(fèi)的ClouderaManager支持配置歷史記錄和回滾、滾動(dòng)更新、LDAP集成、SNMP支持、自動(dòng)災(zāi)難恢復(fù)等企業(yè)級客戶需要的功能Hadoop!:STREAMSEARCHImpalaPROCESS,ANALYZE,SERVEBATCHRELATIONALNoSQLFILESYSTEMHDFSKuduHBas?UNIFIEDSERVICESSpark.Hive.PigMapReduceSECURITYSTREAMSEARCHImpalaPROCESS,ANALYZE,SERVEBATCHRELATIONALNoSQLFILESYSTEMHDFSKuduHBas?UNIFIEDSERVICESSpark.Hive.PigMapReduceSECURITYSentry.RecordserviceRESOURCEMANAGEMENTYARNSTOREBATCHSqoopBATCHSqoopKafka?FlumeINTEGRATE常見的Hadoop使用案列:提取/轉(zhuǎn)換/加載(ETL)數(shù)據(jù)清洗、文本挖掘、索引建立、圖形創(chuàng)建和分析、模式識別、協(xié)調(diào)過濾、預(yù)測模型、情感分析、風(fēng)險(xiǎn)評估等數(shù)據(jù)量大、速度快、數(shù)據(jù)多樣的數(shù)據(jù)分析使用Hadoop進(jìn)行大數(shù)據(jù)處理:
將程序帶入數(shù)據(jù)而不是數(shù)據(jù)到程序(數(shù)據(jù)本地化)兩個(gè)關(guān)鍵的概念是數(shù)據(jù)存儲(chǔ)時(shí)分配數(shù)據(jù)、在數(shù)據(jù)所在位置進(jìn)行計(jì)算Hadoop的核心組件:將程序帶入數(shù)據(jù)而不是數(shù)據(jù)到程序(數(shù)據(jù)本地化)兩個(gè)關(guān)鍵的概念是數(shù)據(jù)存儲(chǔ)時(shí)分配數(shù)據(jù)、在數(shù)據(jù)所在位置進(jìn)行計(jì)算Hadoop的核心組件:Storage:HDFS、ResourceManagement:YARN、Processing:Spark、MapReduce數(shù)據(jù)采集和存儲(chǔ)(IngestandStorage):數(shù)據(jù)采集:傳統(tǒng)的數(shù)據(jù)管理系統(tǒng)如數(shù)據(jù)庫、曰志和其他機(jī)器生成的數(shù)據(jù)(事件數(shù)據(jù))、導(dǎo)入的文件數(shù)據(jù)存儲(chǔ):Hadoop分布式文件系統(tǒng)(HDFS)、ApacheHBase(Hadoop數(shù)據(jù)庫):基于HDFS的NOSQL分布式數(shù)據(jù)庫、支持非常大量的數(shù)據(jù)和高吞吐量只有一張表、以冗余度換取查詢搜索時(shí)間數(shù)據(jù)采集工具:HDFS直接文件傳輸:hdfsdfs-put目標(biāo)文件目的地址和文件名(HDFS上的路徑)、ApacheSqoop:從關(guān)系型數(shù)據(jù)庫高速導(dǎo)入HDFS中(sqoopimport)得出用sqoopexportsApacheFlume:用于攝取流數(shù)據(jù)的分布式服務(wù),非常適合來自多個(gè)系統(tǒng)的事件數(shù)據(jù)如曰志文件、Kafka:高吞吐量、可擴(kuò)展的消息系統(tǒng),分布式、可靠的發(fā)布訂閱系統(tǒng),與Flume和SparkStreaming集成Hadoop大規(guī)模數(shù)據(jù)處理引擎:ApacheSpark:運(yùn)行于Hadoop集群和HDFS中的數(shù)據(jù)HadoopMapReduce:原始的Hadoop處理引擎(框架)主要基于Java、仍然是主導(dǎo)技術(shù)、但沒有Spark速度快、具有廣泛而成熟的容錯(cuò)能力分布式數(shù)據(jù)分析處理組件:ApachePig:構(gòu)建在Hadoop上以提供高級數(shù)據(jù)處理、寫底層MapReduce腳本方法、善于加入和轉(zhuǎn)換數(shù)據(jù)、Pig解釋器在客戶機(jī)上運(yùn)行:將PigLatin腳本轉(zhuǎn)換成MapReduce或Sparkjobs并將作業(yè)提交到Hadoop集群處理ApacheImpala:高性能的SQL引擎運(yùn)行在Hadoop集群上,數(shù)據(jù)存儲(chǔ)在HDFS文件或HBase表中.基于內(nèi)存的計(jì)算非常低的延遲-以毫秒為單位,是理想的互動(dòng)型分析工具、Impala支持SQL方言(ImpalaSQL)HDFS中的數(shù)據(jù)建模為數(shù)據(jù)庫表(數(shù)據(jù)可以與Hive共享)ApacheHive:hive是Hadoop之上的一個(gè)抽象層,使用類似SQL語言的HiveQL(類似于ImpalaSQL)、適用于數(shù)據(jù)處理和ETL,底層為MapReduce執(zhí)行查詢ApacheSolr:交互式全文搜索Hadoop集群中的數(shù)據(jù)允許非技術(shù)用戶訪問數(shù)據(jù)、動(dòng)態(tài)基于Web的儀表盤與Hue界面,基于ApacheSentry的安全性Hadoop的其他生態(tài)系統(tǒng)工具:Hue(HadoopUserExperience):Hadoop的Ul,web前端的Hadoop使Hadoop更容易使用ApacheOozie:工作流管理,Hadoop作業(yè)的工作流引擎、定義作業(yè)之間的依賴關(guān)系,Oozie服務(wù)器以正確的順序?qū)⒆鳂I(yè)提交到服務(wù)器ApacheSentry:為Hadoop生態(tài)系統(tǒng)組件提供了細(xì)粒度的訪問控制(授權(quán))Impala、Hive、ClouderaSearchsHDFS,結(jié)合Kerberos認(rèn)證,提供了一個(gè)整體集群安全解決方案Hadoop是分布式存儲(chǔ)和處理的框架核心Hadoop包括用于存儲(chǔ)的HDFS和用于集群資源管理的YARNHadoop生態(tài)系統(tǒng)包括許多組件:攝入數(shù)據(jù)(Flume、Sqoop、Kafka)存儲(chǔ)數(shù)據(jù)(HDFS、HBase)處理數(shù)據(jù)(Spark、HadoopMapReduce、Pig)將數(shù)據(jù)建模為SQL訪問表(Impala.Hive)探索數(shù)據(jù)(Hue、Search)保護(hù)數(shù)據(jù)(Sentry)HDFS基本概念:HDFS(HadoopDistributedFileSystem):用java編寫的分布式文件系統(tǒng)、基于谷歌的GFS論文實(shí)現(xiàn)、位于本地文件系統(tǒng)之上,為大量數(shù)據(jù)提供冗余存儲(chǔ)。HDFS中的文件是“WriteOnee"模式,不允許隨機(jī)寫入文件、不能修改,讀取模式為大型流式讀?。╯treamingreadsoffiles)。文件在HDFS中被切分為大小固定(默認(rèn)為128M)的數(shù)據(jù)塊(block).每一個(gè)數(shù)據(jù)塊復(fù)制在多個(gè)數(shù)據(jù)節(jié)點(diǎn)(DataNode)上(默認(rèn)為3個(gè)),集群cluster有且僅有一個(gè)NameNode用于存儲(chǔ)元數(shù)據(jù)信息(1.路徑2.blklD3.log曰志4.DataNode地址),所有的DataNode由NameNode管理(即訪問DataNode必須先從NameNode處取得DataNode的信息)HDFSNameNode可用性:NameNode守護(hù)進(jìn)程必須始終運(yùn)行(一旦停止將無法訪問集群),通常設(shè)置為高可用性避免單點(diǎn)故障(HA)有一個(gè)備用的NameNode,小集群也可以使用經(jīng)典模式:一個(gè)NameNode、一個(gè)SecondaryNameNode(用于輔助NameNode工作,記錄bookkeeping,不是備份notbackup)訪問HDFS:FsShell:$hdfsdfs可查看命令項(xiàng)在Spark中通過URL如hdfs://nnhost:port/file(namenode的默認(rèn)端口號為8020,50070/50470)調(diào)用HDFS的API接口直接訪問HDFS如pig、hive、Impala中的hdfs接口資源管理YARN架構(gòu):YARN二YetAnotherResourceNegotiator(另一個(gè)資源談判者)YARN是包含Hadoop的處理層:資源管理、作業(yè)調(diào)度程序YARN的守護(hù)進(jìn)程:ResourceManager(RM)資源管理器:在主節(jié)點(diǎn)(NameNode)上運(yùn)行的守護(hù)程序、負(fù)責(zé)全局資源調(diào)度,競爭應(yīng)用之間的仲裁系統(tǒng)資源,提供一個(gè)可插撥的調(diào)度程序來支持不同的算法(如容量、公平調(diào)度程序等)NodeManager(NM):在工作節(jié)點(diǎn)(DataNode)上運(yùn)行,作用是與RM通信從而根據(jù)RM的指令管理節(jié)點(diǎn)資源,另一個(gè)作用是推出容器(資源評估)Containers(容器):根據(jù)資源需求由RM創(chuàng)建,在從節(jié)點(diǎn)上分配所需資源使應(yīng)用程序在一個(gè)或多個(gè)容器中運(yùn)行ApplicationMaster(AM):每個(gè)應(yīng)用程序?qū)?yīng)一個(gè)AM,是框架/特定應(yīng)用程序,在容器中運(yùn)行,會(huì)請求更多容器來運(yùn)行應(yīng)用程序任務(wù)Hadoop為開發(fā)人員提供了三個(gè)主要的YARN工具、Hue作業(yè)瀏覽器、YARNWebUl、YARN命令行。ResourceManagerUl是主要的入口點(diǎn)、默認(rèn)在運(yùn)行RM的主機(jī)(NameNode)的8080端口上JobHistoryServer作業(yè)歷史服務(wù)器:YARN沒有跟蹤作業(yè)和歷史,Spark和MapReduce都提供了作業(yè)歷史記錄服務(wù)器用于歸檔作業(yè)的指標(biāo)和元數(shù)據(jù),可以通過作業(yè)歷史記錄UI或Hue訪問YARN命令行:用于配置和查看有關(guān)YARN集群信息的命令、基本格式為yarn<command>大多數(shù)YARN命令用于管理也有一部分用于開發(fā)如:yarn-list用于查看正在運(yùn)行的應(yīng)用程序yarn-killjobid用于終止一個(gè)正在運(yùn)行的應(yīng)用程序Clientyarnlogs-applicationld<app-id>查看指定應(yīng)用程序的曰志yarn-help查看命令選項(xiàng)ClientaResource[QI、ManagerI使用ApacheSqoop導(dǎo)入關(guān)系型數(shù)據(jù):Sqoop用于在數(shù)據(jù)庫和HDFS之間交換數(shù)據(jù)、可以將所有表、單個(gè)表或表部分導(dǎo)入HDFS,數(shù)據(jù)可以以各種格式導(dǎo)入,可以將數(shù)據(jù)從HDFS導(dǎo)入到數(shù)據(jù)庫中Sqoop的工作原理:底層是MapReduce,導(dǎo)入的基本步驟為1?檢查表的詳細(xì)信息(元數(shù)據(jù)信息),2?創(chuàng)建并將作業(yè)提交到集群,3從表中獲取記錄,并將數(shù)據(jù)寫入到HDFSSqoop的基本語法為sqooptool-name[tool?options]常用的sqoop命令為:sqoopimport--connectjdbc:mysql://dbhost/PATH\sernamedbuser--passwordpwSqooplist-tables-connectjdbc:mysql://dbhost/PATHSqoopeval-queryUSQL語句"-connectjdbc:mysql://Sqoopexport一connectjdbc:mysql://導(dǎo)入過程有HadoopMapReduce作業(yè)執(zhí)行、sqoop首先要檢查導(dǎo)入的表,確認(rèn)主鍵,運(yùn)行邊界查詢以查看將導(dǎo)入多少條記錄,將邊界查詢結(jié)果除以任務(wù)數(shù)(mapper)使用它來配置任務(wù),以使他們具有相等的負(fù)載,sqoop還會(huì)為正在導(dǎo)入的每個(gè)表生成一個(gè)Java源文件(在導(dǎo)入過程中編譯并使用、導(dǎo)入之后仍然保留、但可以刪除)Sqoopimport-all-tables導(dǎo)入數(shù)據(jù)庫中的所有表默認(rèn)以逗號分隔文件,--warehouse-dir<hdfs路徑〉或者--target-dir<hdfs路徑〉來指定導(dǎo)入的數(shù)據(jù)庫表存放在hdfs的什么位置(兩者的區(qū)別在于使用-warehouse-dir指定的路徑是在hdfs上創(chuàng)建路徑之后再以表名創(chuàng)建文件夾存放數(shù)據(jù),而使用-target-dir后直接給出路徑是指在hdfs上的最終路徑、不根據(jù)表名創(chuàng)建文件夾)、但默認(rèn)為/user/hive/warehouse路徑下Sqoop支持增量導(dǎo)入、但由于HDFS的writeonce特性實(shí)際上是創(chuàng)建了一個(gè)新的hdfs文件,使用(一incrementallastmodifaied)將導(dǎo)入模式設(shè)置為修改追加模式,表中需要有一個(gè)時(shí)間戳字段,使用--check-columnv時(shí)間戳字段〉,并設(shè)置在上一次導(dǎo)入時(shí)的時(shí)間戳字段的最大值?-last-value'時(shí)間戳’--incrementalappend設(shè)置為追加模式、將主鍵作為檢查字段-check-columnid,設(shè)置上一次導(dǎo)入的最大值-last-value<key>Sqoopexport導(dǎo)出數(shù)據(jù)需使用--export-dir<hdfs路徑〉指定要導(dǎo)出的數(shù)據(jù)位■,--update-modeallowinsert導(dǎo)出模式為插入(數(shù)據(jù)庫中已有這張表)-table<表名〉指定要導(dǎo)出到那張表?-columns11字段名,字段名”可選擇表中的某幾列導(dǎo)入-whereK條件”查詢滿足條件的行導(dǎo)入?-split-by字段(在表未指明主鍵的情況下指定以某個(gè)字段作為導(dǎo)入分配時(shí)的切分邊界查詢)--query*sql查詢語句'(where條件后必須添加SCONDITIONS)where后如果有查詢條時(shí)在whereSCONDITIONS后使用AND條件表達(dá)式提升Sqoop導(dǎo)入性能:更改數(shù)據(jù)庫連接選項(xiàng)(通用為JDBC),直接模式??direct,控制并行性:使用?m或--num-mappers來設(shè)置并行數(shù)(默認(rèn)為4)--fields-terminated-by“\t”設(shè)置分隔符為制表符,默認(rèn)情況下以文本導(dǎo)入的數(shù)據(jù)分隔符是逗號--null-non-string 填充的值’填充空值真實(shí)生產(chǎn)環(huán)境中應(yīng)使用的sqoop版本是sqoop2--hive-import直接將數(shù)據(jù)作為hive或impala的表,在hive中創(chuàng)建元數(shù)據(jù)?-hive-database<databasename>將數(shù)據(jù)導(dǎo)入到指定數(shù)據(jù)庫?-as-avrodatafile將數(shù)據(jù)以Avro格式導(dǎo)入/導(dǎo)出--as-parquetfile將數(shù)據(jù)以parquet格式導(dǎo)入/導(dǎo)出--compression-codec所用sqoop壓縮(壓縮格式可設(shè)置為snappy/gzip2等)Hive和Impala簡介:兩者都是提供SQL查詢存儲(chǔ)在HDFS/HBase中的數(shù)據(jù)的工具Hive:是MapReduce之上的一個(gè)高級抽象,使用HiveQL,生成在Hadoop集群上運(yùn)行的MapReduce或spark作業(yè)。Impala:是一種高性能的專用SQL引擎,使用ImpalaSQL,低查詢延時(shí)(以毫秒為單位)Hive具有更多的功能如:對復(fù)雜數(shù)據(jù)類型的支持(如數(shù)組,map)和窗口分析的更廣泛支持,高度可擴(kuò)展性,常用于批量加工Impala具有更快的速度:是專業(yè)SQL引擎的5-50倍性能以上,是理想的交互式查詢和數(shù)據(jù)分析工具。 ParseImpalaSQLMakeoptimizationsPlanexecutionExecutequeryonthecluster -A— ParseImpalaSQLMakeoptimizationsPlanexecutionExecutequeryontheclusterParseHiveQLMakeoptimi2ationsPlanexecutionSubmitjob(s)toclusterMonitorprogressHDFSHadoopClusterDataProcessingEngine(MapReduceorSpark)HadoopClusterHDFSHDFSHadoopClusterDataProcessingEngine(MapReduceorSpark)HadoopClusterHDFS曰志文件分析:服務(wù)器曰志文件是重要的數(shù)據(jù)源:Hive和Impala允許處理曰志文件的目錄允許類似于原始數(shù)據(jù)的SQL查詢情感分析:商業(yè)智能:Hive和Impala的交互:Hive和Impala提供許多用于運(yùn)行查詢的接口:命令行(Impala:Impalashell,Hive:beeline),HueWebUl(Hive查詢編輯器,Impala查詢編輯器,MetastoreManager),ODBC/JDBCImpala-shell-ihostname:port指定連接到服務(wù)器使用shell從Impala中執(zhí)行系統(tǒng)內(nèi)部命令(不支持hdfs命令,但可以使用hdfsdfs)Impala-shell-fxxx.sql執(zhí)行包含查詢的文件Impala-shell-ddatabase選擇要操作的數(shù)據(jù)庫Impala-shell-q4SQL語句,直接運(yùn)行查詢Impala-shell?fxxx.sql?oresults.txt??delimited-output_delimiyer=7-o捕獲輸出到文件,可選定分隔符:'(默認(rèn)為\t)啟動(dòng)beeline(Hive的shell):通過指定的Hive2服務(wù)器的URL來啟動(dòng)beeline(加上用戶名和密碼,如果需要的話):beeline-ujdbc:hive2://host:10000-ntraining(這里的host是hive2服務(wù)器的ip地址)使用!號執(zhí)行beeline的內(nèi)部命令如:Jconnecturl連接到不同的hive2服務(wù)器,!verbose顯示添加的查詢的詳細(xì)信息beeline的相關(guān)命令還有beeline-u -fmyquery.sql執(zhí)行查詢代碼,-eSELECT*FROMuser'直接從命令查詢,--silent抑制信息性消息使用Hive和Impala建模和管理數(shù)據(jù):元數(shù)據(jù)存儲(chǔ)在Metastroe中,hive和impala使用相同的數(shù)據(jù)HDFS中的表,Metastore中的元數(shù)據(jù)類似于SQL語句,使用關(guān)鍵字LOCATION可以指定數(shù)據(jù)存放位置(HDFS中的路徑),創(chuàng)建外部表使用關(guān)鍵字EXTERNAL(外部表在刪除時(shí)只刪除元數(shù)據(jù)、數(shù)據(jù)會(huì)保留,用于數(shù)據(jù)復(fù)用時(shí)),根據(jù)現(xiàn)有表創(chuàng)建新表使用關(guān)鍵字LIKE創(chuàng)建的表結(jié)構(gòu)和Like的表一致,describeformatted查看詳細(xì)元數(shù)據(jù)信息,showcreatetable顯示創(chuàng)建表的SQL命令hive和impala是閱讀模式(schemaonread)是指不驗(yàn)證插入的數(shù)據(jù),文件只是簡單的移動(dòng)到創(chuàng)建表時(shí)指定的位置(HDFS中),因此數(shù)據(jù)加載到表格非常快,只有在執(zhí)行查詢時(shí)才會(huì)發(fā)現(xiàn)文件格式的錯(cuò)誤,丟失或無效的數(shù)據(jù)將表示為NULL,加載數(shù)據(jù)時(shí)只需將文件添加到hdfs表中的目錄,可以使用hdfsdfs命令或者使用LOADDATAINPATH路徑或目錄INTOTABLE表名命令從Hive或Impala內(nèi)完成數(shù)據(jù)加載(與hdfs命令類似均是移動(dòng)文件到hdfs表目錄,源文件可以是文件或目錄)使用OVERWRITE關(guān)鍵字在導(dǎo)入之前刪除所有記錄LOADDATAINPATH7tmp/sales.txfOVERWRITEINTOTABLEsales;,填充表的另一種方式是通過查詢,使用insertinto將結(jié)果添加到現(xiàn)有Hive表中:INSERTINTOTABLEaccount_copySELECT*FROMaccounts;,同樣使用OVERWRITE可以替換所有現(xiàn)有數(shù)據(jù)INSERTOVERWRITETABLEaccount.copySELECT--HCatalog:HCatalog是hive中的子項(xiàng)目,可以訪問Metastore,使用hive的DDL(數(shù)據(jù)定義語言)語法heat-e"指定單個(gè)命令,heat-f執(zhí)行文件中的DDL語言Impala元數(shù)據(jù)緩存:Impala在集群中的每個(gè)工作節(jié)點(diǎn)運(yùn)行著Impala守護(hù)進(jìn)程,在主節(jié)點(diǎn)上運(yùn)行著另外兩個(gè)守護(hù)程序以支持查詢執(zhí)行:StateStore守護(hù)進(jìn)程和Catalog守護(hù)進(jìn)程,StateStore進(jìn)程的作用是提供impala守護(hù)進(jìn)程查詢服務(wù),定期檢查impala守護(hù)進(jìn)程的狀態(tài),Catalog進(jìn)程的作用是將元數(shù)據(jù)更改中繼到集群中的所有impala守護(hù)進(jìn)程中去元數(shù)據(jù)緩存:impala守護(hù)進(jìn)程高速緩存元數(shù)據(jù),在啟動(dòng)時(shí)從Metastore緩存當(dāng)一個(gè)impala守護(hù)程序更改metastore時(shí)會(huì)通知目錄服務(wù)(catalog),目錄服務(wù)會(huì)通知其他所有impala守護(hù)進(jìn)程更新緩存,此時(shí)從impala之外的元數(shù)據(jù)更新不為impala所知,因此impala元數(shù)據(jù)高速緩存將是失效的,必須手動(dòng)刷新或無效impala的元數(shù)據(jù)緩存(manuallyrefreshorinvalidateimpala'smetadatacache)三種方式更新元數(shù)據(jù)緩存:invalidatemetadata將整個(gè)緩存標(biāo)記為過時(shí),重新加載所有元數(shù)據(jù)緩存(危險(xiǎn))refresh<table>立即重新加載某個(gè)表的元數(shù)據(jù).僅為新數(shù)據(jù)文件重新加載HDFS塊位置invalidatemetadata<table>標(biāo)記某張表為過時(shí)重新加載該張表元數(shù)據(jù)storedasavro將數(shù)據(jù)以avro格式存儲(chǔ)(這里的storedas表示已a(bǔ)vro格式去讀取數(shù)據(jù)9tblproperties('avro.schema.literal'二”/'avro.schema.urT二'HDFS路徑的json文件,)指定數(shù)據(jù)格式/從hdfs中導(dǎo)入格式hive支持所有avro類型,impala不支持復(fù)雜的avro類型(enum,array,fixed,map,union,record等)storedasparquet創(chuàng)建一個(gè)以Parquet格式存儲(chǔ)的新表在impala中使用likeparquet從現(xiàn)有parquet數(shù)據(jù)文件中使用列元數(shù)據(jù)setcompression_codec=snappy使用hive和impala壓縮hive不支持在子查詢中創(chuàng)建外部表impala中可以altertableaccounts_parquetsettblpropertiesfEXTERNAL5=5TRUE')將表改為外部表這里的external最好用大寫,true也用大寫。數(shù)據(jù)格式:在hive和impala中storedasformat選擇文件存儲(chǔ)格式文本文件仃extFiles):是Hadoop中最基本的文件類型,可以從幾乎所有編程語言讀取或?qū)懭?,逗號或制表符分隔文件可以與許多應(yīng)用程序兼容,在調(diào)試時(shí)會(huì)很有用,但在規(guī)模上這種格式效率低下,將數(shù)值表示為字符串會(huì)浪費(fèi)存儲(chǔ)空間,難以表示二進(jìn)制數(shù)據(jù)(通常使用如Base64編碼技術(shù)),具有良好的互操作性,但性能不佳。序列文件(SequenceFiles):以二進(jìn)制容器格式存儲(chǔ)鍵值對(key.value),具有更小的冗余度,比文本文件更高效,能夠存儲(chǔ)圖像等二進(jìn)制數(shù)據(jù),格式是java特定的,并且與Hadoop緊密耦合,良好的表現(xiàn)但互操作性差。Avro文件:優(yōu)化了二進(jìn)制編碼,存儲(chǔ)有效,廣泛支持Hadoop生態(tài)集群(當(dāng)然也可以在Hadoop之外使用),是理想的長期存儲(chǔ)重要數(shù)據(jù)的格式,可以從多種語言讀寫,將模式嵌入文件中,因此始終可讀,模式演進(jìn)可以適應(yīng)變化,具有良好的互操作性和性能?。℉adoop中通用存儲(chǔ)的最佳選擇)avro支持柱狀格式(以列column為基準(zhǔn))在選擇表的列的一小部分時(shí)非常有效。Parquet文件:是優(yōu)化的柱狀格式,減少存儲(chǔ)空間,提升性能(基于列的訪問模式的最佳選擇)Avro:數(shù)據(jù)序列化serialization:—種將內(nèi)存中的數(shù)據(jù)表示為一系列字節(jié)的方式。Avro是一個(gè)高效的數(shù)據(jù)序列化框架,提供兼容性而不犧牲性能(數(shù)據(jù)根據(jù)你定義的模式進(jìn)行序列化,以java,C,C++、C#、Python.PHP等語言讀寫數(shù)據(jù),使用高度優(yōu)化的二進(jìn)制編碼對數(shù)據(jù)進(jìn)行序列化,指定隨時(shí)間變化模式的規(guī)則),支持遠(yuǎn)程過程調(diào)用(RPC:RemoteProcedereCalls):可用于構(gòu)建定制網(wǎng)絡(luò)協(xié)議,F(xiàn)lume用于內(nèi)部通信Avro支持的簡單數(shù)據(jù)類型如:null、booleansint、long、float、double、bytes、stringo支持的復(fù)雜數(shù)據(jù)類型:record(有一個(gè)或多個(gè)字段組成的用戶自定義類型)、enum、arrayxmap、unionsfixed(固定數(shù)量的8位無符號字節(jié))。Avro基本格式:{unamespacen:ncom.Ioudacre.data",“type”:”record”,“name”:”employee”,“fields”:]{“name”:”id”,”type”:[“nu『,”int”}{“name”:”name”,”type”:”string”,”default”:”:T}{“name”:”title”,”type”:”string”,”default”:”EN”}{“name”:”bonus”,”type”:”int”}]}Avro支持在模式中設(shè)置默認(rèn)值,當(dāng)沒有字段顯式設(shè)置值使用,當(dāng)序列化數(shù)據(jù)時(shí)avro會(huì)檢查空值,只有在模式中明確指定可以為空時(shí)才允許空值。所有的類型都支持doc屬性(類似于注釋,在實(shí)際中不顯示)Avro容器格式:avro定義了用于存儲(chǔ)Avro記錄的容器文件格式,也稱為avro數(shù)據(jù)文件格式,類似于HadoopSequenceFile格式,跨語言支持讀寫數(shù)據(jù),支持壓縮塊(組)的記錄使用AvroTools檢查Avro數(shù)據(jù)文件:avro-toolstojsonmydatafile.avro將Avro文件格式轉(zhuǎn)換為json文件avro-toolsgetschemamydatafile.avro用于獲取Avro文件的構(gòu)架模式進(jìn)化:你的數(shù)據(jù)結(jié)構(gòu)可能將隨著時(shí)間的推移而改變(添加、刪除、更改或重命名字段),更改可能會(huì)破壞許多格式的兼容性,在SequenceFile中序列化的對象將變得不可讀,寫入avro數(shù)據(jù)文件的數(shù)據(jù)總是可讀的(用于寫的數(shù)據(jù)模式嵌入文件本身,但是讀取數(shù)據(jù)的應(yīng)用程序可能會(huì)期待新的結(jié)構(gòu)),所以Avro有一個(gè)獨(dú)特的方式來保持向前的兼容性。模式演變:如果字段隨著時(shí)間推移在不斷重命名、刪除、添加等操作,我們將更改模式,使用新的模式來寫入新的數(shù)據(jù),但新的應(yīng)用程序無法讀取舊的數(shù)據(jù),如重命名字段后在這里將舊的字段映射到新的字段中利用”aliases”:[“舊的字段名”],來使得向前兼容,新添加的字段將缺少以前寫入的記錄值因此使用”default”:”默認(rèn)值”,來使得能讀取舊的數(shù)據(jù)。模式演變中出現(xiàn)更改的兼容性變化包括:添加、更改或刪除doc屬性,更改字段默認(rèn)值,添加一個(gè)帶默認(rèn)值的新字段,刪除指定默認(rèn)值的字段,將數(shù)據(jù)類型推廣到更廣泛,為字段添加別名等操作不會(huì)影響到兼容性。會(huì)影響到兼容性的操作:更改記錄的name或namespace空間屬性,添加一個(gè)沒有默認(rèn)值的字段,從enum中刪除符號,從union中刪除類型,將字段的類型修改為可能階段的數(shù)據(jù)類型等等。使用Parquettools檢查parquet文件格式:parquet-toolshead查看parquet格式頭字段parquet-toolsschema查看parquet文件模式類型另一個(gè)影響性能的情況是:數(shù)據(jù)壓縮總的來說BZip2節(jié)省了最多空間,但LZ4和Snappy要快得多impala支持Snappy但不支持LZ4選擇數(shù)據(jù)集格式需要考慮的幾個(gè)方面:攝取模式,工具兼容性,預(yù)期壽命,存儲(chǔ)和性能要求。數(shù)據(jù)文件分區(qū):默認(rèn)情況下,數(shù)據(jù)集里的所有文件都存儲(chǔ)在單個(gè)HDFS目錄中.這樣在分析或處理過程中會(huì)讀取目錄中的所有文件,全表掃描。分區(qū)細(xì)分?jǐn)?shù)據(jù),只能對數(shù)據(jù)的相關(guān)子集進(jìn)行分析,潛力要快得多。分區(qū)涉及兩個(gè)階段,存儲(chǔ)/檢索Sqoop內(nèi)支持分區(qū),在一ive-import選項(xiàng)時(shí),使用一hive-partition-key和—hive?partition?value在hive和impala中分區(qū):在創(chuàng)建表模式時(shí)使用關(guān)鍵字partitionedby(statestring),用于分區(qū)的字段不定義在表內(nèi),只用定義在partitionedby中,同時(shí)還可以創(chuàng)建嵌套分區(qū),用逗號隔開使用Flume捕獲數(shù)據(jù):Flume時(shí)用于數(shù)據(jù)收集的高性能系統(tǒng),能實(shí)時(shí)采集數(shù)據(jù)支持從多個(gè)源將數(shù)據(jù)聚合到HDFS中,具有水平可伸縮性、擴(kuò)展性、可靠性等優(yōu)點(diǎn)。可靠性(reliability):通信信道提供了Flume的可靠性,內(nèi)存信道如果失去電源數(shù)據(jù)將丟失。基于磁盤的信道隊(duì)列保證了面對電源損耗的數(shù)據(jù)耐久性??蓴U(kuò)展性(scalability):向系統(tǒng)添加更多資源,可以提高系統(tǒng)性能,F(xiàn)lume水平擴(kuò)展:隨著負(fù)載増加可以在配置中添加更多機(jī)器,可以將Source和sink添加到現(xiàn)有存儲(chǔ)層或數(shù)據(jù)平臺來擴(kuò)展Flume。如:GeneralSources包括來自任何Linux進(jìn)程的文件數(shù)據(jù)、syslog和標(biāo)準(zhǔn)輸出,GeneralSink包括本地文件系統(tǒng)或HDFS上的文件,開發(fā)者可以自己編寫Sources或sinks。Flume使用可配置的“代理”收集數(shù)據(jù):代理可以從許多來源(包括其他代理)接收數(shù)據(jù),大規(guī)模部署使用多層可擴(kuò)展和可靠性,支持檢查和修改“飛行"中的數(shù)據(jù)基礎(chǔ)架構(gòu):事件(event)是Flume中數(shù)據(jù)的基本單位,由體和標(biāo)題(元數(shù)據(jù))的集合組成。標(biāo)題由名稱值對組成,主要用于指導(dǎo)輸出組件:Source(源):用于從外部角色接收事件并且生成Flume事件Sink(池/槽):用于發(fā)送一個(gè)事件到他的目的地Channel(通道):用于從源緩沖事件直到它被sink排出Agent(代理):用于配置和托管Source、channel和sink的java進(jìn)程Flume數(shù)據(jù)流:Senassysk>g
messagesyslogServerFlumeAgentSenassysk>g
messagesyslogServerFlumeAgentFlumeSources:內(nèi)置的源模式有:syslog(通過網(wǎng)絡(luò)從UNIXsyslog守護(hù)程序捕獲消息)、netcat(捕獲任意TCP端口上寫入socket的所有數(shù)據(jù))、exec(執(zhí)行UNIX程序并從標(biāo)準(zhǔn)輸出中讀取事件)、spooldir(從指定(本地)目錄中顯示的文件提取事件)、HTTPsource(從http請求接收事件)、kafka(接收來自kafka的消息)等。FlumeSinks:sink的模式有:Null(丟棄所有事件,等效于/dev/null)、Logger(使用SLF4J將事件記錄為INFO級別)、IRC(將事件發(fā)送到指定的Internet中繼聊天信道)、HDFS(將事件寫入HDFS中指定的目錄文件)、Kafka(將消息發(fā)給Kafka)、HBaseSink(在HBase中存儲(chǔ)事件)等。
FlumeChannels:channel—般有:Memory(將事件存在機(jī)器的RAM中、速度快、但不可靠)、File(在本地磁盤上存儲(chǔ)事件、比RAM慢但更可靠)、JDBC(使用JDBC存儲(chǔ)數(shù)據(jù)庫表中的事件,比文件信道慢)、Kafka(使用Kafka作為任何源和sink類型之間的可擴(kuò)展、可靠卻高度可用的信道)FlumeAgent配置:配置文件使用分成引用、每個(gè)組件都分配一個(gè)用戶自定義的ID,然后在該ID上附加屬性名稱:如圖agent1?sources=srclagentl?sinks=sinklagentl?channels=chiagentl?channels.chi?type=memoryConnectssour-andchannelagentl.sources?srclConnectssour-andchannelagentl?sources?srcl?spooLDir=/var/flume/incominiagentl?sources?srcl?channels=chi< agensinks.sink].type=hdfsagentl?sinks?sinkl?hdfs?path=/loudacre/logdataagentl?sinks.sinkl?ohannol=chi 屬性因組件類型(源、通道、接收器)而異,屬性也因子類型而異(如netcat源于syslog源)。此外有關(guān)sink的配置,在路徑上可能包含基于事件頭的模式、如時(shí)間戳:默認(rèn)情況下,HDFS接收器寫入未壓縮的SequenceFile,使用codeC指定編碼器將啟用壓縮:agentl.sinks.sinkl?type=hdfsagentl.sinks.sinkl.hdfs.path=/loudacre/logdaagentl?sinks?sinkl?hdfs?codeC=snappyagentl?sinks?sinkl?channel=chi將fileType參數(shù)設(shè)置為DataStream寫入原始數(shù)據(jù),使用fileSuffix還可以指定文件拓展名agentl?sinks.sinkl..type=hdfsagentl?sinks?sinkl?hdfs?path=/loudacre/logdata/%y
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(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ǔ)空間,僅對用戶上傳內(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 改協(xié)議購房合同范例
- 校園贊助合同范例
- 充電樁租房合同范例
- 天津?yàn)I海職業(yè)學(xué)院《食品加工與貯運(yùn)專題》2023-2024學(xué)年第一學(xué)期期末試卷
- 萬州區(qū)第三方運(yùn)輸合同范例
- 天津渤海職業(yè)技術(shù)學(xué)院《物聯(lián)網(wǎng)通信技術(shù)》2023-2024學(xué)年第一學(xué)期期末試卷
- 梁平雕花鋁單板施工方案
- 家電oem加工合同范例
- 河道清理雇傭合同范例
- 澳洲裝修合同范例
- 統(tǒng)編版(2024年新版)七年級上冊道德與法治第一單元測試卷(含答案)
- 乳脂計(jì)校準(zhǔn)規(guī)范試驗(yàn)報(bào)告
- 從零開始學(xué)韓語智慧樹知到期末考試答案章節(jié)答案2024年青島酒店管理職業(yè)技術(shù)學(xué)院
- 月子餐課件-參考模板
- 《稻草人》整本書導(dǎo)讀課(教學(xué)設(shè)計(jì))2023-2024學(xué)年統(tǒng)編版語文三年級上冊
- 中圖版高中地理選擇性必修2模塊綜合測試
- 情緒管理國內(nèi)外研究現(xiàn)狀
- 部編版五年級語文上冊期末試卷(含答案)-
- 走進(jìn)民航智慧樹知到期末考試答案2024年
- 醫(yī)用氧氣安全培訓(xùn)課件
- 物資、百貨、五金采購 投標(biāo)方案(技術(shù)方案)
評論
0/150
提交評論