50一、MapReduce計算框架中的輸入和輸出的基本數據結構是鍵-值對。node
50二、Hadoop神奇的一部分在於sort和shuffle過程。web
50三、Hive驅動計算的「語言」是一XML形式編碼的。算法
50四、Hive經過和Jobtracker通訊來初始化MapReduce任務(Job)。sql
50五、Metastore(元數據存儲)是一個獨立的關係型數據庫。shell
50六、Pig經常使用於ETL(數據抽取、數據轉換、數據裝載)。數據庫
50七、Hadoop團隊一般會將Hive和Pig結合使用。編程
50八、Hive沒法提供數據庫特性(如行級別更新,快速查詢響應和支持事務)。json
50九、HBase的設計靈感來自goole的bigTable。數組
5十、HBase面向列存儲,列組成列族。緩存
5十一、HBase對每一個列保留多個版本。
5十二、HBase使用HDFS來持久化存儲數據。
51三、將程序設計成驅動,比較方便移植。
51四、HBase沒有提供SQL語言。
51五、Hadoop面向批處理系統。
51六、CLI是咱們使用Hive的最經常使用方式。
51七、Jobtracker管理着Job,而HDFS則由namenode管理。
51八、元數據存儲中存儲了表的模式和分區信息等元數據。
51九、Hive會將輸出寫到標準輸出中。
520、–e執行字符串包含的命令。
52一、–s去掉ok。
52二、–f執行文件。
52三、若是查詢中的表名和這個例子並不相關,咱們有時候會使用src。
52四、用戶可使用上下鍵來滾動查詢歷史命令。
52五、用!執行bash shell命令。
52六、Hive Cli 可執行Hadoop的dfs命令。
52七、Hive自己提供了不一樣時區互相轉換的內置函數。
52八、Hive中的列支持使用strct、map和arry集合數據類型。
52九、Hive中並無鍵的概念。
530、Hive不會再數據加載時進行驗證,而是在查詢時進行。
53一、Hive中數據庫的概念本質上僅僅是表的一個目錄式命名空間。
53二、Hive會爲每一個數據接庫建立一個目錄。
53三、數據庫的文件目錄名是以.db結尾。
53四、Hive中並無嵌套數據庫的概念。
53五、Hive不容許用戶刪除一個包含有表的數據庫。
53六、Hive會自動增長兩個表屬性:last_modified_by|last_modified_time。
53七、Hive老是將建立的表的目錄放置在這個所屬的數據庫目錄以後。
53八、Show tables命令能夠列舉出全部的表。
53九、管理表(內布表)不方便和其餘工做共享數據。
540、Exte Nal告訴Hive這個表示外部表。
54一、Location 告訴Hive數據位於哪一個路徑下。
54二、由於表示外部的,因此Hive並不是人爲其徹底擁有這份數據。
54三、有些Hive QL並不使用外部表。
54四、分區字段,表現得舊和普通的字段同樣。
54五、對數據進行分區,也許最重要的緣由是爲了更快地查詢。
54六、經過show partitions命令查看錶中存在的全部分區。
54七、Hive沒有行級操做。
54八、Hive一般指定的路徑應該是一個目錄,而不是單獨的文件。
54九、Hive要求源文件和目標文件以及目錄應該在同一個文件系統中。
550、指定overwrite關鍵字,目標文件以前存在的會被刪除。
55一、Hive並不會驗證用戶裝載的數據和表的模式是否匹配。
55二、Hive會驗證文件格式是否和表結構定義的一致。
55三、INSERT語句容許用戶經過查詢語句向目標表中插入數據。
55四、靜態分區鍵必須出如今動態分區鍵以前。
55五、Hive中沒有臨時表的概念。
55六、Select是sql中的射影算子。
55七、可用正則來選舉咱們想要的列。
55八、Float和double相比較會出現問題。
55九、RLike可用正則指定匹配條件。
560、Hive目前不支持on中的or。
56一、視圖能夠容許保存一個查詢並像對待表同樣對這查詢進行操做。
56二、Hive值有有限的索引功能。
56三、Bitmap索引廣泛應用於排重後值較少的列。
56四、Hive中分區的功能是很是有用的。
56五、每一個task都是一個新的Jvm實例,都須要開啓和銷燬的開銷。
56六、分區提供一個隔離數據和優化查詢的便遍歷的方式。
56七、分桶是將數據集分解或更容易管理的若干部分的另外一種技術。
56八、Hive提供了serde抽象,其用於從輸入中提取數據。
56九、一個serDe一般是從左向右進行解析的。
570、Hive提供了一個列式SerDe來以混合列式格式存儲信息。
57一、Hive中一般使用「UDF」來表示任意的函數(用戶自定義函數)。
57二、Streaming提供了另外一種處理數據的方式。
57三、Hive中文件格式間具備明顯的差別。
57四、Hive文本文件格式選擇和記錄格式是對應的。
57五、SequenceFile能夠在塊級別和記錄級別進行壓縮。
57六、對於列式存儲而言,進行壓縮一般會很是高效。
57七、Hive功能強大的一個方面體如今不一樣的存儲格式間轉換數據很是地簡單。
57八、SerD是序列化/反序列化的簡寫形式。
57九、Hive引擎使用定義的InputFormat來讀取一行數據記錄。
580、Thrift是一個軟件框架,其用於跨語言的服務開發。
58一、HiveServer使用Thrift提供服務。
58二、存儲處理程序是一個結合InputFormat、OutPutFormat、SerDe和Hive須要使用的特定的代碼。
58三、存儲處理程序負責從底層存儲系統中讀取或寫入數據。
58四、Hadoop起源於Apache Nutch的子項目。
58五、HBase彌補了Hadoop只能離線批處理的不足。
58六、HBase可以存儲小文件,提供海量數據的隨機檢查。
58七、大數據強調3v特徵:即Volume(量級)、Varity(種類)和Velocity(速度)。
58八、結構優化,質量提升,是一種實現實質性的跨越式的進程。
58九、NoSQL是Not only SQL,泛指非關係型數據庫。
590、NoSQL的實現具備兩個特徵:使用硬盤和把隨機存儲器做存儲載體。
59一、NoSQL的Cache是記錄級的,是一種粗粒度的Cache。
59二、NoSQL無須事先爲要存儲的數據創建字段,隨時能夠存儲自定義的數據格式。
59三、HBase是一個高可靠、高性能、面向列、可伸縮的分佈式數據庫。
59四、HBase是NoSQL數據庫。
59五、HBase能夠經過行健(RowKey)檢索數據,僅支持單行事務,主要用於存儲非結構化和半結構化的鬆散數據。
59六、HBase的單表能夠有百億行,百萬列。
59七、HBase是面向列的存儲和權限控制,並支持列獨立檢索。
59八、HBase嚴重依賴Hadoop的HDFS組件。
59九、MapReduce能夠直接訪問HBase。
600、HBase中最重要的訪問方式是原生Java API。
60一、客戶端Client是整個HBase系統的入口。
60二、HMaster主要負責Table和Region的管理工做。
60三、HRegionServer主要負責響應用戶I/O請求。
60四、HStore存儲是HBase存儲的核心。
60五、HStore兩部分:Memstore和StoreFile。
60六、當StoreFile文件增加到必定閥值,會觸發CompCut。
60七、HBase的同一個表的記錄能夠有不同的列。
60八、HBase中最基本的單元是列。
60九、每個行的行健是惟一的。
6十、HBase中的表有若干行,每行有不少列,列中的值有多個版本,每一個版本的值稱爲一個單元格,單元格存不一樣的列值。
6十一、HBase稱爲無模式數據庫的緣由是HBase的表沒有列定義,沒有類型。
6十二、建立鏈接是一項很是消耗資源的工做。
61三、HBase爲咱們提供了一個鏈接池。
61四、行鍵是按字段排序由低到高存儲在表中。
61五、HBase中行鍵是惟一的索引。
61六、HBase中的列族是一些列的集合。
61七、一個列族中全部列成員有着相同的前綴。
61八、一個列族的成員在文件系統上都是存儲在一塊兒的。
61九、在建立表的時候至少指定一個列族。
620、修改列族要先停用表。
62一、HBase中的單元格由行鍵、列族、列、時間戳惟一肯定。
62二、單元格的內容是不可分別的字節數組。
62三、每一個單元格都保存着同一份數據的多個版本。
62四、時間戳是64位的整數。
62五、HBase對數據模型4個操做包括:Get、Put、Scan和Delete。
62六、多用戶多線程對統一行的讀寫操做都不會影響該行數據的原子性。
62七、Get方法獲取數據時,HBase返回的結果包含全部匹配的單元格數據。
62八、Result實例中包含列族、列限定符和時間戳等。
62九、Put操做要麼向表增長新行,要麼更新行。
630、Put操做每次都會發起一次到服務器的RPC操做。
63一、HBase客戶端有一個緩衝區,大大提升寫入性能。
63二、HBase提供compare-and-set先檢查,再執行。
63三、HBase沒有update操做。
63四、Scan操做容許多行特定屬性迭代。
63五、HBase的Delete操做能夠指定刪除某個列族或者某個列,或某時間更早的數據。
63六、HBase的Delete操做並非真正地從磁盤刪除數據。
63七、RowKey、Column、Version組合在一塊兒稱爲HBase的一個單元格。
63八、Version用一個長整型表示(時間)。
63九、Get是在Scan的基礎上實現的。
640、一個put操做會爲一個Cell建立一個版本,默認使用當前時間戳。
64一、刪除操做的實現是建立一個墓碑標記。
64二、Get和Scan操做返回的是通過排序的數據。
64三、返回的數據首選按行字典序排序,其次是列族、而後是列修飾符,最後的時間戳逆序。
64四、獲取列族的完整列名的惟一方法是處理全部行。
64五、HBase不支持鏈接查詢,即Join查詢。
64六、ICV(HBase計數器)操做發送在RegionServer上。
64七、事務特性ACID,如HBase這種NoSQL數據庫僅提供對行級別的原子性。
64八、HBase不是一個具有完整ACID特性的數據庫。
64九、HBase中一個表的數據會被劃分紅不少的Region。
650、剛剛穿件的表只有一個Region。
65一、每個Region由一個RegionServer管理。
65二、每一個Region包含起始RowKey的記錄,不包含結束RowKey的記錄。
65三、Region的拆分與轉移是由HBase自動完成。
65四、CAP原理是數據庫軟件的理論基礎。
65五、HBase爲了擴展性和性能考慮,弱化了事務性。
65六、RowKey是不可分割的字節數,按字典排序由低到高存儲在表中。
65七、RowKey決定了訪問HBase表時能夠獲得的性能。
65八、Region基於Rowkey爲一個區間的行提供服務。
65九、Hfile在硬盤上存儲有序的行。
660、HBase只能在RowKey上創建索引。
66一、RowKey優化:
一、字典排序
二、進行散列
三、儘可能短
66二、列族是一些列的集合。
66三、一個列族的全部列成員有着相同的前綴。
66四、列族的前綴必須是可輸出的字符。
66五、列族必須在表創建的時候聲明,列在用戶隨時能夠建立。
66六、在物理上,一個列族的成員在文件系統上都存儲在一塊兒。
66七、Flush和Compaction操做式針對一個Region的。
66八、考慮Flush性能,列族數量越少越好。
66九、HFile數據塊大小能夠在列族層次設置。
670、數據塊索引存儲每一個HFile數據塊的起始鍵。
67一、布隆過濾器(Bloom Filter)容許對存儲在每一個數據塊的數據作一個反向測驗。
67二、HFile能夠被壓縮並存放在HDFS上。
67三、HBase的每一個單元格只維護三個時間版本。
67四、CRUD操做式HTable最基本的功能,其中的每類方法都包含多種實現。
67五、Java客戶端有兩種查詢數據的方式:單行讀和掃描讀。
67六、每類操做的不一樣實現方法應用在不一樣的場景下。
67七、HBaseAdmin類是HBase數據庫的管理入口類。
67八、Scan類中的主要實現方法能夠劃分紅三類:
一、添加列或列族
二、設置查詢屬性
三、查看屬性信息
67九、整個刪除過程分爲三步:
一、初始化Table實例
二、構造實體類Delete,Delete封裝行鍵、列族或列名
三、執行刪除
680、HBase提供了若干封裝類用於「無縫」鏈接MapReduce。
68一、從HBase表彙總讀取數據,使用MapReduce計算完成以後,將數據存儲到其餘介質中。
68二、NoSQL不使用SQL做爲查詢語言。
68三、建立外部表適用於某表HBase已經存在,但在Hive中沒有相關信息。
68四、字符串類型是Redis中最基本的數據類型。
68五、全部Redis命令都是原子操做。
68六、Redis提供了4個命令能夠直接對二進制位進行操做。
68七、Redis是採用字典結構以鍵值對的形式存儲數據的。
68八、一個散列類型鍵能夠包含至多2的32次方減去1個字段。
68九、散列類型適合存儲對象。
690、大數據所面對的問題是:一是存儲,二是計算。
69一、大數據的定義是發現潛在規律和趨勢。
69二、谷歌三大論文:1)GFS、2)MapReduce、3)BigTable。
69三、Hadoop是一個批處理系統,不擅長實時計算。
69四、YARN是通用的資源管理系統。
69五、機器學習算法一般須要對同一個數據集合進行屢次迭代計算。
69六、RDD彈性分佈式數據集(Resillient Distributed DataSet)。
69七、Spark支持檢查點(checkpoint)的容錯機制。
69八、RDD支持的方法:
一、轉換(Traansformation) ——生產新的RDD
二、動做(Action) ——返回一個非RDD
69九、Spark沒有存儲能力,僅作數據倉庫。
700、MapReduce依附於Yarn來運行。
70一、Zookeeper的節點必須是奇數個。
70二、Standalone模式下,集羣能夠允許某一個或多個工做節點失效。
70三、Hadoop:HDFS、MapReduce、YARN。
70四、Spark能夠單獨使用HDFS或YARN。
70五、由YARN統一負載分配資源科避免分配混亂。
70六、Spark程序由master仍是YARN來調度執行,是由spark程序在提交時決定的。
70七、只有在交互需求是才使用yarn-client方式。
70八、切片,本地模式默認去CPU的核算。
70九、每一個Job的執行,都會經歷序列化,網絡傳輸,反序列化和運行的過程。
7十、在序列化是,spark會將Job運行所依賴的變量、方法(稱爲閉包)所有打包在一塊兒。
7十一、若是RDD屢次迭代,可將其持久化。
7十二、在Zookeeper模式下,恢復期間新任務沒法提交。
71三、RDD特色:1)只讀、2)可緩存、3)能夠經過從新計算獲得。
71四、Kafk是一個分佈式、分區、重複提交的日誌服務。
71五、Kafka掌管的類別消息叫作主題(topics)。
71六、生產者發佈消息到kafka主題中。
71七、消費者訂閱主題以及處理髮布的消息。
71八、Kafka每一個服務器叫作broker。
71九、主題是一個類別或者被髮布消息的名稱。
720、Kafka集羣根據時間保留消息,而不是是否被消費。
72一、消費者能夠隨時添加和移除。
72二、生產者發佈數據到他們選定的主題上。
72三、消費者、消息處理一般有兩種模式。:隊列和發佈-訂閱。
72四、在隊列模式中,一組消費者可能從服務器讀取消息,每一個消息被其中一個消費者消費。
72五、在發佈-訂閱模式中:消費者是廣播到所有的消費者中。
72六、消費者用一個消費組名稱來標識本身。
72七、Kafka可以提供順序保證並在一組消費者處理過程當中均衡負載。
72八、Kafka能夠替換傳統的消息代理。
72九、Kafka能夠媲美傳統的消息系統例如:ActiveMQ和RabitMQ。
730、Kafka一般用於操做監測數據的處理。
73一、Kafka做爲日誌聚合的一種解決方案。
73二、Zookeeper典型應用場景:配置文件的管理,集羣管理,分佈式隊列,同步鎖leader選舉,隊列管理等。
73三、Zookeeper是分佈式服務框架。
73四、dataMonitor類是本程序Zookeeper邏輯的核心。
73五、Zookeeper是一個基於觀察者模式設計的分佈式服務管理框架。
73六、分佈式應用中一般須要有一套完整的命名規則。
73七、Netty高性能的NIO框架。
73八、Netty快速開發高性能,高可靠性的網絡服務器和客戶端程序。
73九、Netty是一個網絡通訊框架。
740、NIO是一個面向塊的I/O系統。
74一、NIO核心對象:緩衝區(Buffer),通道(Channel),選擇器(Selecter)。
74二、在NIO庫中,全部數據都是用緩衝處理的。
74三、Netty是事件驅動的。
74四、Git是一個開源的分佈式版本控制系統。
74五、Kafka系統的角色:
一、Borker:一臺kafka服務器就是一個broker。
二、Topic:能夠理解爲一個MQ消息隊列的名字。
74六、Java程序設計語言、虛擬機、API類庫統稱JDK。
74七、Jdk是用於支持Java程序開發的最小環境。
74八、JRE是支持Java程序運行的標準環境。
74九、Java技術體系可分爲4個平臺:Java Card、Me、Se、EE。
750、Hadoop每一個切片構建一個map任務。
75一、Map輸出是中間結果,reduce產出最終輸出結果。
75二、集羣上的帶寬限制了MapReduce的做業的數量。
75三、HDFS中fsck指令能夠顯示塊信息。
75四、Namenode之間須要經過高可用的共享存儲實現編輯日誌的共享。
75五、Datanode須要同時向連個namenode發送數據塊處理報告。
75六、超級用戶是namenode進程的標識。
75七、Seek()方法是一個相對高開銷的操做。
75八、FileSystem是一個通用的文件系統Api。
75九、HDFS只容許對一個打開的文件順序寫入,或者在現有文件的末尾追加數據。
760、FileStatus封裝了文件系統中問價和目錄的元數據。
76一、過濾器有path表示,只能做用域文件名。
76二、Hadoop沒法自行第一網絡拓撲結構。
76三、DFSoutputstream將寫入分紅一個個的數據包,並寫入內部隊列,稱爲「數據隊列」。
76四、文件系統的一致模型描述了文件讀/寫的數據可見性。
76五、HDFS爲性能犧牲了一些Posix要求(可移植操做系統接口)。
76六、HDFS提供一個方法來使全部緩存與數據節點強行同步。
76七、Flume是一個將大規模流數據導入HDFS的工具。
76八、Flume節點容許以任何拓撲方式進行組織。
76九、當一個字段中包含多個類型時,ObjectWritable很是有用。
770、Avro是一個獨立於編程語言的數據序列化系統。
77一、Avro模式一般用Json來寫,數據一般採用二進制格式來編碼。
77二、Avro數據文件時可切分的,適合MapReduce快速處理。
77三、SeQuenceFile是能夠看作小文件的容器。
77四、MapFile是已經排序過的SequenceFile,它有索引,因此能夠按鍵查找。
77五、Hadoop提供了鉤子(hook)來輔助分析過程。
77六、Mini集羣普遍應用於Hadoop自帶的自動測試包中。
77七、做業歷史包括已完成做業的時間和配置信息。
77八、MapReduce任務日誌能夠從web界面訪問。
77九、複雜的做業一般是增長更多的做業,而不是增長做業的複雜度。
780、Jobcontrol的實例表示一個做業的運行圖。
78一、在Ooize中,工做流是一個由動做(action)節點和控制流節點組成的DAG。
78二、Ooize提供了一組與工做流交互的函數。
78三、TaskRunner啓動了一個新的Jvm裏運行每一個任務。
78四、YARN將Jobtracker的職能劃分多個獨立的實體。
78五、YARN集羣上能夠運行不一樣版本的MapReduce。
78六、每一個map任務都有一個環形內存緩存區用於存儲任務的輸出。
78七、在本地做業運行器上運行時,只支持0個或1個reduce。
78八、一個輸入切片(split)就是一個由單個map操做來處理的輸入塊。
78九、切片並不包含數據自己,而是指向數據的引用。
790、Jobtracker使用其存儲位置信息來調度map任務從而在tasktracker上處理這些切片數據。
79一、Reduce輸入的鍵必定是有序的。
79二、Hadoop爲每一個做業維護若干內置計數器,以描述多項指標。
79三、任務計數器由其關聯任務維護,並按期發送給tasktracker,再有tasktracker發送給Jobtracker。
79四、「邊數據」是做業所需的額外的只讀數據。
79五、Hadoop還爲mapper和reduce提供了一個包含了經常使用函數的庫。
79六、Hadoop使用dfs。Mapred,rpc和jvm四個上下文根。
79七、FileContext將度量寫到一個本地文件中。
79八、Ganglia是一個針對超大規模的開源的分佈式監控系統。
79九、Hadoop包括多個託管bean(MBean),能夠將hadoop度量發佈給支持JMX的應用。
800、Didtcp是一個理想的備份工具。
80一、HDFS可以容忍datanode故障,但這並不意味着容許隨意終止datanode。
80二、Shell for((i0;i<n;i++))。
80三、Break n跳出幾層循環。
80四、For I in {1 .、4}。
80五、Unset 刪除一個元素。
80六、Nohup 保持後臺容許。
80七、>覆蓋,>>追加。
80八、0、一、2標準輸入正確,錯誤輸出。
80九、Ls >/de/null 深淵。
8十、Linux默認無回收站。
8十一、–e執行轉義字符。
8十二、Fsimage:元數據鏡像文件。
81三、目前HDFS不支持斷點續傳。
81四、最後塊不足夠,則按實際打下存儲。
81五、HAR是一個目錄結構。
81六、Namenode兩種狀態:Active和standly。
81七、Namenode同步數據經過Journanodes集羣。
81八、Namenode切換,自動和手工切換。
81九、MapReduce是分佈式並行計算模型,用於解決海量數據問題。
820、Hive操做流程:
一、提交SQL 交給驅動
二、驅動編譯解析相關字段
三、去metastore查詢相關信息
四、編譯返回信息,發給驅動
五、驅動發一個執行計劃
六、DDLS對數據庫表操做
七、吧Job交給Jobtracker讓tasktracker執行
八、完成Job返回數據信息,找namenode查數據
九、Dfs ops直接和namenode交互
82一、Hive dfs ls 查看hadoop系統。
82二、Hive無刪除語句,用replace實現。
82三、Replace很危險,不建議使用。
82四、Hive刪字段,大多數狀況重建表。
82五、桶表時對數據進行哈希取值,而後放到不一樣文件中存儲。
82六、桶表應用於抽樣查詢,加載文件分文件存儲。
82七、使用視圖能夠下降查詢複雜度。
82八、索引是對數記錄偏移量。
82九、分區字段字段建索引。
830、建索引會引起MapReduce計算。
83一、裝載數據:1)本地文件加載方式,2)查詢裝載。
83二、動態分區加載方式。
83三、Hive是讀模式。
83四、RDBMS是寫模式。
83五、Hive不支持對單行操做,只支持覆蓋和追加。
83六、每一個HStore對應了Table中的一個列族的存儲。
83七、HStore是HBase存儲的核心:HFile、memstore。
83八、HLog用於數據還原。
83九、HFile是不定長的。
840、CSV是逗號分隔符的文件。
84一、Hive分析HBase,只要表映射便可。
84二、列族優化:
一、隨機查詢:數據塊越少,索引越大,佔用內存也越大
二、順序查詢:更好的順序掃描須要更大的數據塊
84三、布隆:有問題反饋,無問題不反饋。
84四、HBase刪除數據時先標記合併刪除。
84五、HBase熱點優化,建立分區。
84六、Solr能夠實現全文搜索。
84七、Solr能夠方便實現站內搜索功能。
84八、Solr是經過http協議處理搜索和查詢請求。
84九、Solr是一個索引庫。
850、線性的訪問磁盤,不少時候比隨機訪問內存塊。
85一、Kafka將數據分段,爲每一個段創建索引。
85二、索引分兩部分:offset和position。
85三、Storm處理高頻數據和大規模數據。
85四、Storm由用戶自定義處流程。
85五、Stream ——一列火車。
85六、Tuple ——一節車箱。
85七、數據 ——乘客。
85八、Bolt ——對tuple中數據進行處理 中間站。
85九、Spout ——源頭,至關於火車的始發站。
860、Toplogy ——軌道。
86一、Storm 主-從結構。
86二、主節點:nimbus,負責分發代碼,分配任務。
86三、從節點:supervisor,負責產生worker,執行任務。
86四、Storm集羣的運行依賴於Zookeeper。
86五、Executor是一個被worker進程啓動的單獨線程。
86六、Task是最終運行spout或bolt中代碼的執行單元。
86七、Slots就是work進程。
86八、將數據按類型分組。
86九、Storm流分組:1)隨機 負載均衡,2)字段 類型分組。
870、Work掛掉,storm會從新啓動一個進程,數據不會丟失。
87一、Storm不支持HA(目前)。
87二、每一個work都有一個ack/fail確認機制。
87三、Trident是對storm進行封裝的一個框架。
87四、ES也是對Luncene的封裝,天生爲分佈式而生。
87五、ES基於Restful接口。
87六、Hadoop RPC調用是基於Probobuf實現的。
87七、Client protocol定義了全部由客戶端發起的,由namenode響應的操做:
一、HDFS文件讀相關的操做
二、HDFS文件寫以及追加寫的相關操做
三、管理HDFS命名空間(namenode)的相關操做
四、系統問題與管理相關的操做
五、快照相關操做
六、緩存相關操做
七、其餘
87八、FileSystem:
一、HDFS文件讀操做
二、HDFS文件寫與追加操做
三、命名空間的管理操做
87九、DFSAdmin:對系統問題管理相關操做。
880、處於安全模式(safemode)中的namenode不接受客戶端對命名空間的修改操做,只讀。
88一、剛剛啓動的namenode直接自動進入安全模式。
88二、必須在安全模式的兩個操做:
一、‘-savenamespace’用於將整個命名空間保存到新的fsimage文件中
二、‘-rolledits’則會觸發重置editlog文件
88三、Refreshnodes()方法會觸發namenode刷新數據節點列表。
88四、Findizeupgrade()和rollingupgrade()操做都是與namenode升級相關。
88五、快照保存了一個實踐點上HDFS摸個路徑中全部數據的拷貝。
88六、快照能夠將失效的集羣回滾到以前一個正常的時間點上。
88七、建立快照以前,先開啓目錄的快照功能。
88八、HDFS 2.3版本添加了集中式緩存管理功能:
一、Cache directive:表示要被緩存到內存的文件或目錄
二、Cache pool:用於管理一系列的cache directive相似於命名空間
88九、Datanode使用DatanodeProtocol接口與namenode握手註冊,發送心跳進行全量以及增量的數據彙報。
890、DatanodeProtocol三種方法類型:
一、Datanode啓動相關
二、心跳相關
三、數據塊讀寫相關
89一、Datnode啓動操做會與namenode進行四次交互:
一、與namenode握手
二、註冊上的datanode
三、彙報數據塊
四、緩存全部數據塊
89二、分佈式系統的節點之間大多采用心跳維護節點的健康狀態。
89三、InterDatanodeProtocol(DN與DN之間接口),主要用於租約恢復操做。
89四、客戶端打開一個文件進行寫操做是,首先獲取租約,並按期更新租約。
89五、NamenodeProtocol定義了第二namenode與namenode之間的接口。
89六、HDFS除了RPC調用還定義了流式接口(TCP/HTTP)。
89七、Hadoop RPC不足以支持大文件讀寫。
89八、HDFS客戶端讀取一個HDFS文件流程 :
一、打開HDFS文件
二、從namenode獲取datanode地址
三、鏈接到datanode讀取數據塊
四、關閉輸入流
89九、數據塊的應答包中不只包含了數據,還包含了校驗值。
900、HDFS客戶端寫入一個HDFS文件的流程:
一、建立文件
二、創建數據流管道
三、經過數據流管道寫入數據
四、關閉輸入流並提交文件
90一、HDFS追加文件流程:
一、打開已有的HDFS文件
二、創建數據流管道
三、經過數據流管道寫入數據
四、關閉輸入流並提交文件
90二、對於命名空間的一致性,兩個namenode都須要與一組獨立運行的節點(Journalnode,JNS)通訊。
90三、ZKFailovercontroller負責維護HA。
90四、RPC(Remote Procedure Call protocol),遠程過程調用協議。
90五、Hadoop RPC框架底層採用Java NIO,Java動態代理以及protobuf等。
90六、RPC框架:
一、通訊模塊
二、客戶端stub程序
三、服務器端stub程序
四、請求程序
五、服務程序
90七、客戶端的stub能夠看做是一個代理對象。
90八、Hadoop RPC 框架的使用抽象:
一、定義RPC協議
二、實現RPC協議
三、客戶端獲取代理對象
四、服務端啓動並構造RPC servers
90九、Namenode:
一、文件系統目錄樹管理
二、數據塊以及數據節點管理
三、租約管理:namenode給予租約持有者在規定時間內擁有文件權限的合同
四、緩存管理
五、Fsnamesystem
Namenode的啓動和中止
9十、HDFS文件系統的命名空間是以/爲根的整個目錄樹,是經過FSDirectory類來管理的。
9十一、HDFS中文件與目錄都被當作系統目錄樹的一個INode節點。
9十二、HDFS會將命名空間保存到namenode的本地系統上一個叫fsimage的文件彙總。
91三、FSDirectory維護者文件系統目錄樹的節點。
91四、INode get方法:
一、Username
二、Groupnode
三、Fspermission
四、Allfeature:安全相關
五、Modification
六、Accesstime
七、Sattrfeature:擴展屬性
91五、HDFS的檢查點機制會定時將editlog文件與fsimage文件合併以產生新的fsimage文件。
91六、非HA,檢查點操做由secondary namenode來執行。
91七、Namenode維護着HDFS中連個最重要的關係:
一、HDFS文件系統的目錄樹以及文件的數據塊索引
二、數據塊和數據節點的對應關係
91八、當namenode發生錯誤並今夕了Active與standly切換時,多餘的副本不能直接刪除,先彙報再從隊列中移除。
91九、數據塊副本狀態:
一、正常副本
二、損壞副本
三、多餘副本
四、等待刪除副本
五、等待刪除副本
六、等待複製副本
七、正在複製副本
八、推遲操做副本
920、數據副本的刪除狀況:
一、數據塊所屬的HDFS文件被刪除
二、數據塊的副本數量多於配置表
三、副本被namenode標記損壞副本
92一、在HDFS中,客戶端寫文件時須要先從租約管理器中申請一個租約。
92二、Namenode啓動時會首先加載命名空間鏡像併合並編輯日誌。
92三、預防腦裂,HDFS提供三個級別的隔離機制:
一、共享存儲隔離
二、客戶端隔離
三、Datanode隔離
92四、HA管理命令的執行是由HAAdmin爲負責的。
92五、Namenode三個類:
一、Namenode類
二、nameNode Rpcserver
三、FSNamesystem類
92六、塊池:一個塊池由屬於同一個命名空間的全部數據塊組成。
92七、命名空間卷:一個namenode管理的命名空間以及它對應的塊池一塊兒被稱爲命名空間卷。
92八、每一個塊池都是一個獨立的數據塊集合。
92九、Datanode從邏輯上可切分幾個模塊:
一、數據層
二、邏輯層:向NN彙報,心跳,掃描損壞數據塊
三、服務器
930、Datanode升級須要考慮:
一、版本兼容性問題
二、升級消耗的硬盤空間問題
三、回滾要求
93一、Datanode兩個管理功能:
一、管理與組織磁盤存儲目錄
二、管理與組織數據塊及其元數據文件
93二、Storedirectory:
一、獲取文件夾相關
二、加鎖/解鎖
三、存儲狀態恢復
93三、集中式緩存由分佈在datanode上的對外內存組成,同時被namenode統一管理。
93四、數據包:
一、數據包頭
二、校驗數據
三、實際數據
93五、Java NIO零拷貝模式。
93六、Datanode掃描器同期驗證datanode上存儲的數據塊正確性。
93七、HDFS目前提供三個客戶端接口:
一、distributedFileSystem
二、FSShell
三、DFSAdmin
93八、DFSClient是用戶使用HDFS各項功能的起點。
93九、HDFS管理員經過DFSAdmin工具管理與配置HDFS。
940、HDFS目前實現的讀操做有三個層次:
一、網絡讀:socket
二、短路讀:同一節點
三、零拷貝讀:緩存轉換
94一、Shuffle和sort階段負責執行兩個主要動做:
一、決定哪一個reducer接收map輸出的鍵值對(切片)
二、並肯定傳輸給reducer的鍵值對是進行排序的
94二、MapReduce是基於批處理的框架,不適合實時訪問數據。
94三、Hadoop配置文件:
一、Hadoop-env.sh ——設置環境變量
二、Core-site.xml ——系統級的Hadoop配置項
三、Hdfs-site.xml ——HDFS配置
四、Mapred-site.xml ——HDFS設置
五、Master ——Hadoop的master主機列表
六、Slaves ——Hadoop的slave主機地址列表
94四、Flume四個組件:
一、Nodes ——flume數據路徑
二、Agents ——從本地主機上收集流數據
三、Collectors ——彙總來自代理的數據
四、Master——執行配置管理任務
94五、Flume以Avro Json格式寫數據。
94六、Agent數據接收器是Agent數據源的目的地。
94七、Flume數據源:
一、Text ——處理一次的文本文件,每次處理一行
二、Tail ——爲加入文件的每行生產一個事件
三、Multitail ——tail工具支持多文件處理
四、Syslogudp ——處理syslogUDP消息
五、syslogTcp ——處理sysLogTcp消息
六、execperiodic ——任意命令按期執行,整個輸出是一個事件
七、execstream ——執行任意指令,每行是一個獨立事件
八、exec ——按期執行任意指令並肯定整個輸出的每行事件
九、scribe ——處理scrive collection 系統生產的數據
94八、Collector數據接收器支持多種事件輸入格式:
一、Syslog ——輸出相似syslog格式的事件
二、Log4j ——輸出相似Hadoop log4j 格式的事件
三、avroJson——輸出進過Avro編碼的json格式的數據
四、avrodata ——輸出通過avro二進制編碼的數據
五、debug ——僅在調試時使用
六、raw——只輸出事件自己,不包含元數據
94九、spark編程模型是彈性分佈式數據集,他是MapReduce模型的擴展和延伸。
950、RDD記錄血統,而不是真正數據。
95一、Spark四類操做:
一、建立操做:用於RDD建立工做
二、轉換操做:RDD變換成新的RDD
三、控制操做:RDD持久化
四、行爲操做:可以觸發spark運行的操做
95二、調度器安裝DAG進行計算,並最終獲得目標RDD。
95三、RDD模型將計算分解爲多個相互獨立的細粒度任務。
95四、Spark中提供了通用接口來抽象每一個RDD
一、分區信息:它們是數據集的最小分片
二、依賴關係:指向其父RDD
三、函數:基於RDD計算方法
四、劃分策略和數據位置的元數據
95五、RDD操做中用戶可使用Partition方法獲取RDD劃分的分區數。
95六、Spark中RDD計算是以分區爲單位的。
95七、Spark默認連個劃分器:哈希分區和範圍分區。
95八、Hadoop中的每個HDFS數據塊都稱爲一個RDD分區。
95九、Map/mapPartitions做用每一個元素,每一個分區。
960、Checkpoint將切斷與該RDD以前的依賴關係。
96一、Spark基本概念:
一、Application ——用戶編寫的spark應用程序
二、Driver ——application的main建立sparkContext
三、Cluster manager ——指在集羣上獲取資源的外部服務
四、Standlone ——spark原生的資源管理
五、Hadoop YARN
六、Worl ——工做節點
七、Master ——總控進程
八、Executor ——執行進程
96二、Spark定義了通訊框架接口,這些接口實現中調用netty的具體方法。
96三、Shuffle寫有基於哈希和排序兩種方式。
96四、Clustermanager提供了資源的分配和管理。
96五、資源分配和調度的基本單位是container。
96六、在YARN中,每一個application實例都有一個application master進程。
96七、Application master是application啓動的第一個容器,它負責和resourceManager打交道並請求資源。
96八、Spark SQL執行過程:
一、詞法和語法解析
二、綁定
三、優化四、執行
96九、Spark 提供了兩種方式將RDD轉換成DataFrame:
一、經過定義 case class ,使用反射推斷schema
二、經過編程接口,定義schema,並應用到RDD上
970、YARN拆分Jobtracker的兩大職責:資源管理,做業調度/監控:
一、全局的resource Manager
二、每一個應用對應的Application Master
97一、Resource Manager擁有爲系統中的全部應用的資源分配的決定權。
97二、Container爲應用程序授予在特定主機上使用資源全權利。
97三、YARN三種調度器:
一、FIFO調度器
二、Capacity調度器
三、Fair調度器
97四、Storm一個work進程執行的是一個topplpgy的子集。
97五、Executor是一個被work進程啓動的單獨線程。
97六、Work之間通訊是經過Netty進行通訊的。
97七、Stream grouping:
一、Shuffle ——隨機分組
二、Fields ——按字段分組
三、All ——廣播發送
四、Non ——隨機分配
五、Diret ——直接分組
97八、Task是運行spout或bolt中的線程。
97九、Strom的核心:
一、主節點 ——Nimbus
二、工做節點——supervisor
三、協調器——Zookeeper
四、工做進程——worker
五、任務線程——task
980、Storm三大應用:
一、信息流處理
二、持續計算
三、分佈式遠程調用
98一、提交一個Topology以後,storm建立spout/bolt實例big進行序列化。
98二、流是一個分佈式並行建立和處理的無界的連續元組。
98三、Storm數據傳輸利用的是zmq開源的消息傳遞框架。
98四、Topology是由stream grouping連接起來的spout和bolt節點網絡。
98五、Tupe能夠理解成鍵值對,即Fields和values。
98六、Tuple的asked,faild都由spout發出並維護的。
98七、本地模式:storm用一個進程紅的線程模擬全部spout/bolt。
98八、Nimbus和supervisor之間的通訊依賴Zookeeper完成。
98九、用戶畫像是一個實際用戶的虛擬表明,如年齡,性別等。
990、在機器學習中,對象是指含有一組特徵的行變量。
99一、行變量的集合最容易構造的結構就是表。
99二、Hadoop有三種令牌:
一、委託令牌
二、塊訪問令牌
三、做業令牌
99三、對事物運動這種不肯定性(隨機性)的度量就是機率論。
99四、大數據4V:
一、Volume ——數據體量大
二、Variety ——數據類型繁多
三、Velocity ——處理速度快
四、Value ——商業價值高
99五、移動互聯網產生了和客戶緊密擁綁的大數據。
99六、在互聯網這個產業鏈中,誰掌握了用戶,誰的天下。
99七、消費者的注意力和使用習慣去了哪裏,錢就會流向哪裏。
99八、體驗的產生是一個藝術的過程。
99九、大數據的目標是定位。
1000、創建一個學習型企業架構。