1. 程式人生 > >此文獻給正打算入門大資料的朋友:大資料學習筆記1000條(2)

此文獻給正打算入門大資料的朋友:大資料學習筆記1000條(2)

501、MapReduce計算框架中的輸入和輸出的基本資料結構是鍵-值對。

502、Hadoop神奇的一部分在於sort和shuffle過程。

503、Hive驅動計算的“語言”是一XML形式編碼的。

504、Hive通過和Jobtracker通訊來初始化MapReduce任務(Job)。

505、Metastore(元資料儲存)是一個獨立的關係型資料庫。

很多初學者,對大資料的概念都是模糊不清的,大資料是什麼,能做什麼,學的時候,該按照什麼線路去學習,學完往哪方面發展,想深入瞭解,想學習的同學歡迎加入大資料學習qq群:458345782,有大量乾貨(零基礎以及進階的經典實戰)分享給大家,並且有清華大學畢業的資深大資料講師給大家免費授課,給大家分享目前國內最完整的大資料高階實戰實用學習流程體系

506、Pig常用於ETL(資料抽取、資料轉換、資料裝載)。

507、Hadoop團隊通常會將Hive和Pig結合使用。

508、Hive無法提供資料庫特性(如行級別更新,快速查詢響應和支援事務)。

509、HBase的設計靈感來自goole的bigTable。

510、HBase面向列儲存,列組成列族。

511、HBase對每個列保留多個版本。

512、HBase使用HDFS來持久化儲存資料。

513、將程式設計成驅動,比較方便移植。

514、HBase沒有提供SQL語言。

515、Hadoop面向批處理系統。

516、CLI是我們使用Hive的最常用方式。

517、Jobtracker管理著Job,而HDFS則由namenode管理。

518、元資料儲存中儲存了表的模式和分割槽資訊等元資料。

519、Hive會將輸出寫到標準輸出中。

520、–e執行字串包含的命令。

521、–s去掉ok。

522、–f執行檔案。

523、如果查詢中的表名和這個例子並不相關,我們有時候會使用src。

524、使用者可以使用上下鍵來滾動查詢歷史命令。

525、用!執行bash shell命令。

526、Hive Cli 可執行Hadoop的dfs命令。

527、Hive本身提供了不同時區互相轉換的內建函式。

528、Hive中的列支援使用strct、map和arry集合資料型別。

529、Hive中並沒有鍵的概念。

530、Hive不會再資料載入時進行驗證,而是在查詢時進行。

531、Hive中資料庫的概念本質上僅僅是表的一個目錄式名稱空間。

532、Hive會為每個資料接庫建立一個目錄。

533、資料庫的檔案目錄名是以.db結尾。

534、Hive中並沒有巢狀資料庫的概念。

535、Hive不允許使用者刪除一個包含有表的資料庫。

536、Hive會自動增加兩個表屬性:last_modified_by|last_modified_time。

537、Hive總是將建立的表的目錄放置在這個所屬的資料庫目錄之後。

538、Show tables命令可以列舉出所有的表。

539、管理表(內布表)不方便和其他工作共享資料。

540、Exte Nal告訴Hive這個表示外部表。

541、Location 告訴Hive資料位於哪個路徑下。

542、因為表示外部的,所以Hive並非人為其完全擁有這份資料。

543、有些Hive QL並不使用外部表。

544、分割槽欄位,表現得舊和普通的欄位一樣。

545、對資料進行分割槽,也許最重要的原因是為了更快地查詢。

546、通過show partitions命令查看錶中存在的所有分割槽。

547、Hive沒有行級操作。

548、Hive通常指定的路徑應該是一個目錄,而不是單獨的檔案。

549、Hive要求原始檔和目標檔案以及目錄應該在同一個檔案系統中。

550、指定overwrite關鍵字,目標檔案之前存在的會被刪除。

551、Hive並不會驗證使用者裝載的資料和表的模式是否匹配。

552、Hive會驗證檔案格式是否和表結構定義的一致。

553、INSERT語句允許使用者通過查詢語句向目標表中插入資料。

554、靜態分割槽鍵必須出現在動態分割槽鍵之前。

555、Hive中沒有臨時表的概念。

556、Select是sql中的射影運算元。

557、可用正則來選舉我們想要的列。

558、Float和double相比較會出現問題。

559、RLike可用正則指定匹配條件。

560、Hive目前不支援on中的or。

561、檢視可以允許儲存一個查詢並像對待表一樣對這查詢進行操作。

562、Hive值有有限的索引功能。

563、Bitmap索引普遍應用於排重後值較少的列。

564、Hive中分割槽的功能是非常有用的。

565、每個task都是一個新的Jvm例項,都需要開啟和銷燬的開銷。

566、分割槽提供一個隔離資料和優化查詢的便遍歷的方式。

567、分桶是將資料集分解或更容易管理的若干部分的另一種技術。

568、Hive提供了serde抽象,其用於從輸入中提取資料。

569、一個serDe通常是從左向右進行解析的。

570、Hive提供了一個列式SerDe來以混合列式格式儲存資訊。

571、Hive中通常使用“UDF”來表示任意的函式(使用者自定義函式)。

572、Streaming提供了另一種處理資料的方式。

573、Hive中檔案格式間具有明顯的差異。

574、Hive文字檔案格式選擇和記錄格式是對應的。

575、SequenceFile可以在塊級別和記錄級別進行壓縮。

576、對於列式儲存而言,進行壓縮通常會非常高效。

577、Hive功能強大的一個方面體現在不同的儲存格式間轉換資料非常地簡單。

578、SerD是序列化/反序列化的簡寫形式。

579、Hive引擎使用定義的InputFormat來讀取一行資料記錄。

580、Thrift是一個軟體框架,其用於跨語言的服務開發。

581、HiveServer使用Thrift提供服務。

582、儲存處理程式是一個結合InputFormat、OutPutFormat、SerDe和Hive需要使用的特定的程式碼。

583、儲存處理程式負責從底層儲存系統中讀取或寫入資料。

584、Hadoop起源於Apache Nutch的子專案。

585、HBase彌補了Hadoop只能離線批處理的不足。

586、HBase能夠儲存小檔案,提供海量資料的隨機檢查。

587、大資料強調3v特徵:即Volume(量級)、Varity(種類)和Velocity(速度)。

588、結構優化,質量提高,是一種實現實質性的跨越式的程序。

589、NoSQL是Not only SQL,泛指非關係型資料庫。

590、NoSQL的實現具有兩個特徵:使用硬碟和把隨機儲存器作儲存載體。

591、NoSQL的Cache是記錄級的,是一種粗粒度的Cache。

592、NoSQL無須事先為要儲存的資料建立欄位,隨時可以儲存自定義的資料格式。

593、HBase是一個高可靠、高效能、面向列、可伸縮的分散式資料庫。

594、HBase是NoSQL資料庫。

595、HBase可以通過行健(RowKey)檢索資料,僅支援單行事務,主要用於儲存非結構化和半結構化的鬆散資料。

596、HBase的單表可以有百億行,百萬列。

597、HBase是面向列的儲存和許可權控制,並支援列獨立檢索。

598、HBase嚴重依賴Hadoop的HDFS元件。

599、MapReduce可以直接訪問HBase。

600、HBase中最重要的訪問方式是原生Java API。

601、客戶端Client是整個HBase系統的入口。

602、HMaster主要負責Table和Region的管理工作。

603、HRegionServer主要負責響應使用者I/O請求。

604、HStore儲存是HBase儲存的核心。

605、HStore兩部分:Memstore和StoreFile。

606、當StoreFile檔案增長到一定閥值,會觸發CompCut。

607、HBase的同一個表的記錄可以有不一樣的列。

608、HBase中最基本的單元是列。

609、每一個行的行健是唯一的。

610、HBase中的表有若干行,每行有很多列,列中的值有多個版本,每個版本的值稱為一個單元格,單元格存不同的列值。

611、HBase稱為無模式資料庫的原因是HBase的表沒有列定義,沒有型別。

612、建立連線是一項非常消耗資源的工作。

613、HBase為我們提供了一個連線池。

614、行鍵是按欄位排序由低到高儲存在表中。

615、HBase中行鍵是唯一的索引。

616、HBase中的列族是一些列的集合。

617、一個列族中所有列成員有著相同的字首。

618、一個列族的成員在檔案系統上都是儲存在一起的。

619、在建立表的時候至少指定一個列族。

620、修改列族要先停用表。

621、HBase中的單元格由行鍵、列族、列、時間戳唯一確定。

622、單元格的內容是不可分別的位元組陣列。

623、每個單元格都儲存著同一份資料的多個版本。

624、時間戳是64位的整數。

625、HBase對資料模型4個操作包括:Get、Put、Scan和Delete。

626、多使用者多執行緒對統一行的讀寫操作都不會影響該行資料的原子性。

627、Get方法獲取資料時,HBase返回的結果包含所有匹配的單元格資料。

628、Result例項中包含列族、列限定符和時間戳等。

629、Put操作要麼向表增加新行,要麼更新行。

630、Put操作每次都會發起一次到伺服器的RPC操作。

631、HBase客戶端有一個緩衝區,大大提高寫入效能。

632、HBase提供compare-and-set先檢查,再執行。

633、HBase沒有update操作。

634、Scan操作允許多行特定屬性迭代。

635、HBase的Delete操作可以指定刪除某個列族或者某個列,或某時間更早的資料。

636、HBase的Delete操作並不是真正地從磁碟刪除資料。

637、RowKey、Column、Version組合在一起稱為HBase的一個單元格。

638、Version用一個長整型表示(時間)。

639、Get是在Scan的基礎上實現的。

640、一個put操作會為一個Cell建立一個版本,預設使用當前時間戳。

641、刪除操作的實現是建立一個墓碑標記。

642、Get和Scan操作返回的是經過排序的資料。

643、返回的資料首選按行字典序排序,其次是列族、然後是列修飾符,最後的時間戳逆序。

644、獲取列族的完整列名的唯一方法是處理所有行。

645、HBase不支援連線查詢,即Join查詢。

646、ICV(HBase計數器)操作傳送在RegionServer上。

647、事務特性ACID,如HBase這種NoSQL資料庫僅提供對行級別的原子性。

648、HBase不是一個具備完整ACID特性的資料庫。

649、HBase中一個表的資料會被劃分成很多的Region。

650、剛剛穿件的表只有一個Region。

651、每一個Region由一個RegionServer管理。

652、每個Region包含起始RowKey的記錄,不包含結束RowKey的記錄。

653、Region的拆分與轉移是由HBase自動完成。

654、CAP原理是資料庫軟體的理論基礎。

655、HBase為了擴充套件性和效能考慮,弱化了事務性。

656、RowKey是不可分割的位元組數,按字典排序由低到高儲存在表中。

657、RowKey決定了訪問HBase表時可以得到的效能。

658、Region基於Rowkey為一個區間的行提供服務。

659、Hfile在硬碟上儲存有序的行。

660、HBase只能在RowKey上建立索引。

661、RowKey優化:

1、字典排序

2、進行雜湊

3、儘量短

662、列族是一些列的集合。

663、一個列族的所有列成員有著相同的字首。

664、列族的字首必須是可輸出的字元。

665、列族必須在表建立的時候宣告,列在使用者隨時可以建立。

666、在物理上,一個列族的成員在檔案系統上都儲存在一起。

667、Flush和Compaction操作式針對一個Region的。

668、考慮Flush效能,列族數量越少越好。

669、HFile資料塊大小可以在列族層次設定。

670、資料塊索引儲存每個HFile資料塊的起始鍵。

671、布隆過濾器(Bloom Filter)允許對儲存在每個資料塊的資料做一個反向測驗。

672、HFile可以被壓縮並存放在HDFS上。

673、HBase的每個單元格只維護三個時間版本。

674、CRUD操作式HTable最基本的功能,其中的每類方法都包含多種實現。

675、Java客戶端有兩種查詢資料的方式:單行讀和掃描讀。

676、每類操作的不同實現方法應用在不同的場景下。

677、HBaseAdmin類是HBase資料庫的管理入口類。

678、Scan類中的主要實現方法可以劃分成三類:

1、新增列或列族

2、設定查詢屬性

3、檢視屬性資訊

679、整個刪除過程分為三步:

1、初始化Table例項

2、構造實體類Delete,Delete封裝行鍵、列族或列名

3、執行刪除

680、HBase提供了若干封裝類用於“無縫”連線MapReduce。

681、從HBase表彙總讀取資料,使用MapReduce計算完成之後,將資料儲存到其他介質中。

682、NoSQL不使用SQL作為查詢語言。

683、建立外部表適用於某表HBase已經存在,但在Hive中沒有相關資訊。

684、字串型別是Redis中最基本的資料型別。

685、所有Redis命令都是原子操作。

686、Redis提供了4個命令可以直接對二進位制位進行操作。

687、Redis是採用字典結構以鍵值對的形式儲存資料的。

688、一個雜湊型別鍵可以包含至多2的32次方減去1個欄位。

689、雜湊型別適合儲存物件。

690、大資料所面對的問題是:一是儲存,二是計算。

691、大資料的定義是發現潛在規律和趨勢。

692、谷歌三大論文:1)GFS、2)MapReduce、3)BigTable。

693、Hadoop是一個批處理系統,不擅長實時計算。

694、YARN是通用的資源管理系統。

695、機器學習演算法通常需要對同一個資料集合進行多次迭代計算。

696、RDD彈性分散式資料集(Resillient Distributed DataSet)。

697、Spark支援檢查點(checkpoint)的容錯機制。

698、RDD支援的方法:

1、轉換(Traansformation) ——生產新的RDD

2、動作(Action) ——返回一個非RDD

699、Spark沒有儲存能力,僅做資料倉庫。

700、MapReduce依附於Yarn來執行。

701、Zookeeper的節點必須是奇數個。

702、Standalone模式下,叢集可以容許某一個或多個工作節點失效。

703、Hadoop:HDFS、MapReduce、YARN。

704、Spark可以單獨使用HDFS或YARN。

705、由YARN統一負載分配資源科避免分配混亂。

706、Spark程式由master還是YARN來排程執行,是由spark程式在提交時決定的。

707、只有在互動需求是才使用yarn-client方式。

708、切片,本地模式預設去CPU的核算。

709、每個Job的執行,都會經歷序列化,網路傳輸,反序列化和執行的過程。

710、在序列化是,spark會將Job執行所依賴的變數、方法(稱為閉包)全部打包在一起。

711、如果RDD多次迭代,可將其持久化。

712、在Zookeeper模式下,恢復期間新任務無法提交。

713、RDD特點:1)只讀、2)可快取、3)可以通過重新計算得到。

714、Kafk是一個分散式、分割槽、重複提交的日誌服務。

715、Kafka掌管的類別訊息叫做主題(topics)。

716、生產者釋出訊息到kafka主題中。

717、消費者訂閱主題以及處理髮布的訊息。

718、Kafka每個伺服器叫做broker。

719、主題是一個類別或者被髮布訊息的名稱。

720、Kafka叢集根據時間保留訊息,而不是是否被消費。

721、消費者可以隨時新增和移除。

722、生產者釋出資料到他們選定的主題上。

723、消費者、訊息處理通常有兩種模式。:佇列和釋出-訂閱。

724、在佇列模式中,一組消費者可能從伺服器讀取訊息,每個訊息被其中一個消費者消費。

725、在釋出-訂閱模式中:消費者是廣播到全部的消費者中。

726、消費者用一個消費組名稱來標識自己。

727、Kafka能夠提供順序保證並在一組消費者處理過程中均衡負載。

728、Kafka可以替換傳統的訊息代理。

729、Kafka可以媲美傳統的訊息系統例如:ActiveMQ和RabitMQ。

730、Kafka通常用於操作監測資料的處理。

731、Kafka作為日誌聚合的一種解決方案。

732、Zookeeper典型應用場景:配置檔案的管理,叢集管理,分散式佇列,同步鎖leader選舉,佇列管理等。

733、Zookeeper是分散式服務框架。

734、dataMonitor類是本程式Zookeeper邏輯的核心。

735、Zookeeper是一個基於觀察者模式設計的分散式服務管理框架。

736、分散式應用中通常需要有一套完整的命名規則。

737、Netty高效能的NIO框架。

738、Netty快速開發高效能,高可靠性的網路伺服器和客戶端程式。

739、Netty是一個網路通訊框架。

740、NIO是一個面向塊的I/O系統。

741、NIO核心物件:緩衝區(Buffer),通道(Channel),選擇器(Selecter)。

742、在NIO庫中,所有資料都是用緩衝處理的。

743、Netty是事件驅動的。

744、Git是一個開源的分散式版本控制系統。

745、Kafka系統的角色:

1、Borker:一臺kafka伺服器就是一個broker。

2、Topic:可以理解為一個MQ訊息佇列的名字。

746、Java程式設計語言、虛擬機器、API類庫統稱JDK。

747、Jdk是用於支援Java程式開發的最小環境。

748、JRE是支援Java程式執行的標準環境。

749、Java技術體系可分為4個平臺:Java Card、Me、Se、EE。

750、Hadoop每個切片構建一個map任務。

751、Map輸出是中間結果,reduce產出最終輸出結果。

752、叢集上的頻寬限制了MapReduce的作業的數量。

753、HDFS中fsck指令可以顯示塊資訊。

754、Namenode之間需要通過高可用的共享儲存實現編輯日誌的共享。

755、Datanode需要同時向連個namenode傳送資料塊處理報告。

756、超級使用者是namenode程序的標識。

757、Seek()方法是一個相對高開銷的操作。

758、FileSystem是一個通用的檔案系統Api。

759、HDFS只允許對一個開啟的檔案順序寫入,或者在現有檔案的末尾追加資料。

760、FileStatus封裝了檔案系統中問價和目錄的元資料。

761、過濾器有path表示,只能作用域檔名。

762、Hadoop無法自行第一網路拓撲結構。

763、DFSoutputstream將寫入分成一個個的資料包,並寫入內部佇列,稱為“資料佇列”。

764、檔案系統的一致模型描述了檔案讀/寫的資料可見性。

765、HDFS為效能犧牲了一些Posix要求(可移植作業系統介面)。

766、HDFS提供一個方法來使所有快取與資料節點強行同步。

767、Flume是一個將大規模流資料匯入HDFS的工具。

768、Flume節點允許以任何拓撲方式進行組織。

769、當一個欄位中包含多個型別時,ObjectWritable非常有用。

770、Avro是一個獨立於程式語言的資料序列化系統。

771、Avro模式通常用Json來寫,資料通常採用二進位制格式來編碼。

772、Avro資料檔案時可切分的,適合MapReduce快速處理。

773、SeQuenceFile是可以看做小檔案的容器。

774、MapFile是已經排序過的SequenceFile,它有索引,所以可以按鍵查詢。

775、Hadoop提供了鉤子(hook)來輔助分析過程。

776、Mini叢集廣泛應用於Hadoop自帶的自動測試包中。

777、作業歷史包括已完成作業的時間和配置資訊。

778、MapReduce任務日誌可以從web介面訪問。

779、複雜的作業通常是增加更多的作業,而不是增加作業的複雜度。

780、Jobcontrol的例項表示一個作業的執行圖。

781、在Ooize中,工作流是一個由動作(action)節點和控制流節點組成的DAG。

782、Ooize提供了一組與工作流互動的函式。

783、TaskRunner啟動了一個新的Jvm裡執行每個任務。

784、YARN將Jobtracker的職能劃分多個獨立的實體。

785、YARN叢集上可以執行不同版本的MapReduce。

786、每個map任務都有一個環形記憶體快取區用於儲存任務的輸出。

787、在本地作業執行器上執行時,只支援0個或1個reduce。

788、一個輸入切片(split)就是一個由單個map操作來處理的輸入塊。

789、切片並不包含資料本身,而是指向資料的引用。

790、Jobtracker使用其儲存位置資訊來排程map任務從而在tasktracker上處理這些切片資料。

791、Reduce輸入的鍵一定是有序的。

792、Hadoop為每個作業維護若干內建計數器,以描述多項指標。

793、任務計數器由其關聯任務維護,並定期傳送給tasktracker,再有tasktracker傳送給Jobtracker。

794、“邊資料”是作業所需的額外的只讀資料。

795、Hadoop還為mapper和reduce提供了一個包含了常用函式的庫。

796、Hadoop使用dfs。Mapred,rpc和jvm四個上下文根。

797、FileContext將度量寫到一個本地檔案中。

798、Ganglia是一個針對超大規模的開源的分散式監控系統。

799、Hadoop包括多個託管bean(MBean),可以將hadoop度量釋出給支援JMX的應用。

800、Didtcp是一個理想的備份工具。

801、HDFS能夠容忍datanode故障,但這並不意味著允許隨意終止datanode。

802、Shell for((i0;i<n;i++))。

803、Break n跳出幾層迴圈。

804、For I in {1 .、4}。

805、Unset 刪除一個元素。

806、Nohup 保持後臺允許。

807、>覆蓋,>>追加。

808、0、1、2標準輸入正確,錯誤輸出。

809、Ls >/de/null 深淵。

810、Linux預設無回收站。

811、–e執行轉義字元。

812、Fsimage:元資料映象檔案。

813、目前HDFS不支援斷點續傳。

814、最後塊不足夠,則按實際打下儲存。

815、HAR是一個目錄結構。

816、Namenode兩種狀態:Active和standly。

817、Namenode同步資料通過Journanodes叢集。

818、Namenode切換,自動和手工切換。

819、MapReduce是分散式平行計算模型,用於解決海量資料問題。

820、Hive操作流程:

1、提交SQL 交給驅動

2、驅動編譯解析相關欄位

3、去metastore查詢相關資訊

4、編譯返回資訊,發給驅動

5、驅動發一個執行計劃

6、DDLS對資料庫表操作

7、吧Job交給Jobtracker讓tasktracker執行

8、完成Job返回資料資訊,找namenode查資料

9、Dfs ops直接和namenode互動

821、Hive dfs ls 檢視hadoop系統。

822、Hive無刪除語句,用replace實現。

823、Replace很危險,不建議使用。

824、Hive刪欄位,大多數情況重建表。

825、桶表時對資料進行雜湊取值,然後放到不同檔案中儲存。

826、桶表應用於抽樣查詢,載入檔案分檔案儲存。

827、使用檢視可以降低查詢複雜度。

828、索引是對數記錄偏移量。

829、分割槽欄位欄位建索引。

830、建索引會引發MapReduce計算。

831、裝載資料:1)本地檔案載入方式,2)查詢裝載。

832、動態分割槽載入方式。

833、Hive是讀模式。

834、RDBMS是寫模式。

835、Hive不支援對單行操作,只支援覆蓋和追加。

836、每個HStore對應了Table中的一個列族的儲存。

837、HStore是HBase儲存的核心:HFile、memstore。

838、HLog用於資料還原。

839、HFile是不定長的。

840、CSV是逗號分隔符的檔案。

841、Hive分析HBase,只要表對映即可。

842、列族優化:

1、隨機查詢:資料塊越少,索引越大,佔用記憶體也越大

2、順序查詢:更好的順序掃描需要更大的資料塊

843、布隆:有問題反饋,無問題不反饋。

844、HBase刪除資料時先標記合併刪除。

845、HBase熱點優化,建立分割槽。

846、Solr可以實現全文搜尋。

847、Solr可以方便實現站內搜尋功能。

848、Solr是通過http協議處理搜尋和查詢請求。

849、Solr是一個索引庫。

850、線性的訪問磁碟,很多時候比隨機訪問記憶體塊。

851、Kafka將資料分段,為每個段建立索引。

852、索引分兩部分:offset和position。

853、Storm處理高頻資料和大規模資料。

854、Storm由使用者自定義處流程。

855、Stream ——一列火車。

856、Tuple ——一節車廂。

857、資料 ——乘客。

858、Bolt ——對tuple中資料進行處理 中間站。

859、Spout ——源頭,相當於火車的始發站。

860、Toplogy ——軌道。

861、Storm 主-從結構。

862、主節點:nimbus,負責分發程式碼,分配任務。

863、從節點:supervisor,負責產生worker,執行任務。

864、Storm叢集的執行依賴於Zookeeper。

865、Executor是一個被worker程序啟動的單獨執行緒。

866、Task是最終執行spout或bolt中程式碼的執行單元。

867、Slots就是work程序。

868、將資料按型別分組。

869、Storm流分組:1)隨機 負載均衡,2)欄位 型別分組。

870、Work掛掉,storm會重新啟動一個程序,資料不會丟失。

871、Storm不支援HA(目前)。

872、每個work都有一個ack/fail確認機制。

873、Trident是對storm進行封裝的一個框架。

874、ES也是對Luncene的封裝,天生為分散式而生。

875、ES基於Restful介面。

876、Hadoop RPC呼叫是基於Probobuf實現的。

877、Client protocol定義了所有由客戶端發起的,由namenode響應的操作:

1、HDFS檔案讀相關的操作

2、HDFS檔案寫以及追加寫的相關操作

3、管理HDFS名稱空間(namenode)的相關操作

4、系統問題與管理相關的操作

5、快照相關操作

6、快取相關操作

7、其他

878、FileSystem:

1、HDFS檔案讀操作

2、HDFS檔案寫與追加操作

3、名稱空間的管理操作

879、DFSAdmin:對系統問題管理相關操作。

880、處於安全模式(safemode)中的namenode不接受客戶端對名稱空間的修改操作,只讀。

881、剛剛啟動的namenode直接自動進入安全模式。

882、必須在安全模式的兩個操作:

1、‘-savenamespace’用於將整個名稱空間儲存到新的fsimage檔案中

2、‘-rolledits’則會觸發重置editlog檔案

883、Refreshnodes()方法會觸發namenode重新整理資料節點列表。

884、Findizeupgrade()和rollingupgrade()操作都是與namenode升級相關。

885、快照儲存了一個實踐點上HDFS摸個路徑中所有資料的拷貝。

886、快照可以將失效的叢集回滾到之前一個正常的時間點上。

887、建立快照之前,先開啟目錄的快照功能。

888、HDFS 2.3版本添加了集中式快取管理功能:

1、Cache directive:表示要被快取到記憶體的檔案或目錄

2、Cache pool:用於管理一系列的cache directive類似於名稱空間

889、Datanode使用DatanodeProtocol介面與namenode握手註冊,傳送心跳進行全量以及增量的資料彙報。

890、DatanodeProtocol三種方法型別:

1、Datanode啟動相關

2、心跳相關

3、資料塊讀寫相關

891、Datnode啟動操作會與namenode進行四次互動:

1、與namenode握手

2、註冊上的datanode

3、彙報資料塊

4、快取所有資料塊

892、分散式系統的節點之間大多采用心跳維護節點的健康狀態。

893、InterDatanodeProtocol(DN與DN之間介面),主要用於租約恢復操作。

894、客戶端開啟一個檔案進行寫操作是,首先獲取租約,並定期更新租約。

895、NamenodeProtocol定義了第二namenode與namenode之間的介面。

896、HDFS除了RPC呼叫還定義了流式介面(TCP/HTTP)。

897、Hadoop RPC不足以支援大檔案讀寫。

898、HDFS客戶端讀取一個HDFS檔案流程 :

1、開啟HDFS檔案

2、從namenode獲取datanode地址

3、連線到datanode讀取資料塊

4、關閉輸入流

899、資料塊的應答包中不僅包含了資料,還包含了校驗值。

900、HDFS客戶端寫入一個HDFS檔案的流程:

1、建立檔案

2、建立資料流管道

3、通過資料流管道寫入資料

4、關閉輸入流並提交檔案

901、HDFS追加檔案流程:

1、開啟已有的HDFS檔案

2、建立資料流管道

3、通過資料流管道寫入資料

4、關閉輸入流並提交檔案

902、對於名稱空間的一致性,兩個namenode都需要與一組獨立執行的節點(Journalnode,JNS)通訊。

903、ZKFailovercontroller負責維護HA。

904、RPC(Remote Procedure Call protocol),遠端過程呼叫協議。

905、Hadoop RPC框架底層採用Java NIO,Java動態代理以及protobuf等。

906、RPC框架:

1、通訊模組

2、客戶端stub程式

3、伺服器端stub程式

4、請求程式

5、服務程式

907、客戶端的stub可以看作是一個代理物件。

908、Hadoop RPC 框架的使用抽象:

1、定義RPC協議

2、實現RPC協議

3、客戶端獲取代理物件

4、服務端啟動並構造RPC servers

909、Namenode:

1、檔案系統目錄樹管理

2、資料塊以及資料節點管理

3、租約管理:namenode給予租約持有者在規定時間內擁有檔案許可權的合同

4、快取管理

5、Fsnamesystem

Namenode的啟動和停止

910、HDFS檔案系統的名稱空間是以/為根的整個目錄樹,是通過FSDirectory類來管理的。

911、HDFS中檔案與目錄都被當做系統目錄樹的一個INode節點。

912、HDFS會將名稱空間儲存到namenode的本地系統上一個叫fsimage的檔案彙總。

913、FSDirectory維護者檔案系統目錄樹的節點。

914、INode get方法:

1、Username

2、Groupnode

3、Fspermission

4、Allfeature:安全相關

5、Modification

6、Accesstime

7、Sattrfeature:擴充套件屬性

915、HDFS的檢查點機制會定時將editlog檔案與fsimage檔案合併以產生新的fsimage檔案。

916、非HA,檢查點操作由secondary namenode來執行。

917、Namenode維護著HDFS中連個最重要的關係:

1、HDFS檔案系統的目錄樹以及檔案的資料塊索引

2、資料塊和資料節點的對應關係

918、當namenode發生錯誤並今夕了Active與standly切換時,多餘的副本不能直接刪除,先彙報再從佇列中移除。

919、資料塊副本狀態:

1、正常副本

2、損壞副本

3、多餘副本

4、等待刪除副本

5、等待刪除副本

6、等待複製副本

7、正在複製副本

8、推遲操作副本

920、資料副本的刪除情況:

1、資料塊所屬的HDFS檔案被刪除

2、資料塊的副本數量多於配置表

3、副本被namenode標記損壞副本

921、在HDFS中,客戶端寫檔案時需要先從租約管理器中申請一個租約。

922、Namenode啟動時會首先載入名稱空間映象併合並編輯日誌。

923、預防腦裂,HDFS提供三個級別的隔離機制:

1、共享儲存隔離

2、客戶端隔離

3、Datanode隔離

924、HA管理命令的執行是由HAAdmin為負責的。

925、Namenode三個類:

1、Namenode類

2、nameNode Rpcserver

3、FSNamesystem類

926、塊池:一個塊池由屬於同一個名稱空間的所有資料塊組成。

927、名稱空間卷:一個namenode管理的名稱空間以及它對應的塊池一起被稱為名稱空間卷。

928、每個塊池都是一個獨立的資料塊集合。

929、Datanode從邏輯上可切分幾個模組:

1、資料層

2、邏輯層:向NN彙報,心跳,掃描損壞資料塊

3、伺服器

930、Datanode升級需要考慮:

1、版本相容性問題

2、升級消耗的硬碟空間問題

3、回滾要求

931、Datanode兩個管理功能:

1、管理與組織磁碟儲存目錄

2、管理與組織資料塊及其元資料檔案

932、Storedirectory:

1、獲取資料夾相關

2、加鎖/解鎖

3、儲存狀態恢復

933、集中式快取由分佈在datanode上的對外記憶體組成,同時被namenode統一管理。

934、資料包:

1、資料包頭

2、校驗資料

3、實際資料

935、Java NIO零拷貝模式。

936、Datanode掃描器同期驗證datanode上儲存的資料塊正確性。

937、HDFS目前提供三個客戶端介面:

1、distributedFileSystem

2、FSShell

3、DFSAdmin

938、DFSClient是使用者使用HDFS各項功能的起點。

939、HDFS管理員通過DFSAdmin工具管理與配置HDFS。

940、HDFS目前實現的讀操作有三個層次:

1、網路讀:socket

2、短路讀:同一節點

3、零拷貝讀:快取轉換

941、Shuffle和sort階段負責執行兩個主要動作:

1、決定哪個reducer接收map輸出的鍵值對(切片)

2、並確定傳輸給reducer的鍵值對是進行排序的

942、MapReduce是基於批處理的框架,不適合實時訪問資料。

943、Hadoop配置檔案:

1、Hadoop-env.sh ——設定環境變數

2、Core-site.xml ——系統級的Hadoop配置項

3、Hdfs-site.xml ——HDFS配置

4、Mapred-site.xml ——HDFS設定

5、Master ——Hadoop的master主機列表

6、Slaves ——Hadoop的slave主機地址列表

944、Flume四個元件:

1、Nodes ——flume資料路徑

2、Agents ——從本地主機上收集流資料

3、Collectors ——彙總來自代理的資料

4、Master——執行配置管理任務

945、Flume以Avro Json格式寫資料。

946、Agent資料接收器是Agent資料來源的目的地。

947、Flume資料來源:

1、Text ——處理一次的文字檔案,每次處理一行

2、Tail ——為加入檔案的每行生產一個事件

3、Multitail ——tail工具支援多檔案處理

4、Syslogudp ——處理syslogUDP訊息

5、syslogTcp ——處理sysLogTcp訊息

6、execperiodic ——任意命令定期執行,整個輸出是一個事件

7、execstream ——執行任意指令,每行是一個獨立事件

8、exec ——定期執行任意指令並確定整個輸出的每行事件

9、scribe ——處理scrive collection 系統生產的資料

948、Collector資料接收器支援多種事件輸入格式:

1、Syslog ——輸出類似syslog格式的事件

2、Log4j ——輸出類似Hadoop log4j 格式的事件

3、avroJson——輸出進過Avro編碼的json格式的資料

4、avrodata ——輸出經過avro二進位制編碼的資料

5、debug ——僅在除錯時使用

6、raw——只輸出事件本身,不包含元資料

949、spark程式設計模型是彈性分散式資料集,他是MapReduce模型的擴充套件和延伸。

950、RDD記錄血統,而不是真正資料。

951、Spark四類操作:

1、建立操作:用於RDD建立工作

2、轉換操作:RDD變換成新的RDD

3、控制操作:RDD持久化

4、行為操作:能夠觸發spark執行的操作

952、排程器安裝DAG進行計算,並最終得到目標RDD。

953、RDD模型將計算分解為多個相互獨立的細粒度任務。

954、Spark中提供了通用介面來抽象每個RDD

1、分割槽資訊:它們是資料集的最小分片

2、依賴關係:指向其父RDD

3、函式:基於RDD計算方法

4、劃分策略和資料位置的元資料

955、RDD操作中使用者可以使用Partition方法獲取RDD劃分的分割槽數。

956、Spark中RDD計算是以分割槽為單位的。

957、Spark預設連個劃分器:雜湊分割槽和範圍分割槽。

958、Hadoop中的每一個HDFS資料塊都稱為一個RDD分割槽。

959、Map/mapPartitions作用每個元素,每個分割槽。

960、Checkpoint將切斷與該RDD之前的依賴關係。

961、Spark基本概念:

1、Application ——使用者編寫的spark應用程式

2、Driver ——application的main建立sparkContext

3、Cluster manager ——指在叢集上獲取資源的外部服務

4、Standlone ——spark原生的資源管理

5、Hadoop YARN

6、Worl ——工作節點

7、Master ——總控程序

8、Executor ——執行程序

962、Spark定義了通訊框架介面,這些介面實現中呼叫netty的具體方法。

963、Shuffle寫有基於雜湊和排序兩種方式。

964、Clustermanager提供了資源的分配和管理。

965、資源分配和排程的基本單位是container。

966、在YARN中,每個application例項都有一個application master程序。

967、Application master是application啟動的第一個容器,它負責和resourceManager打交道並請求資源。

968、Spark SQL執行過程:

1、詞法和語法解析

2、繫結

3、優化4、執行

969、Spark 提供了兩種方式將RDD轉換成DataFrame:

1、通過定義 case class ,使用反射推斷schema

2、通過程式設計介面,定義schema,並應用到RDD上

970、YARN拆分Jobtracker的兩大職責:資源管理,作業排程/監控:

1、全域性的resource Manager

2、每個應用對應的Application Master

971、Resource Manager擁有為系統中的所有應用的資源分配的決定權。

972、Container為應用程式授予在特定主機上使用資源全權利。

973、YARN三種排程器:

1、FIFO排程器

2、Capacity排程器

3、Fair排程器

974、Storm一個work程序執行的是一個topplpgy的子集。

975、Executor是一個被work程序啟動的單獨執行緒。

976、Work之間通訊是通過Netty進行通訊的。

977、Stream grouping:

1、Shuffle ——隨機分組

2、Fields ——按欄位分組

3、All ——廣播發送

4、Non ——隨機分配

5、Diret ——直接分組

978、Task是執行spout或bolt中的執行緒。

979、Strom的核心:

1、主節點 ——Nimbus

2、工作節點——supervisor

3、協調器——Zookeeper

4、工作程序——worker

5、任務執行緒——task

980、Storm三大應用:

1、資訊流處理

2、持續計算

3、分散式遠端呼叫

981、提交一個Topology之後,storm建立spout/bolt例項big進行序列化。

982、流是一個分散式並行建立和處理的×××的連續元組。

983、Storm資料傳輸利用的是zmq開源的訊息傳遞框架。

984、Topology是由stream grouping連結起來的spout和bolt節點網路。

985、Tupe可以理解成鍵值對,即Fields和values。

986、Tuple的asked,faild都由spout發出並維護的。

987、本地模式:storm用一個程序紅的執行緒模擬所有spout/bolt。

988、Nimbus和supervisor之間的通訊依賴Zookeeper完成。

989、使用者畫像是一個實際使用者的虛擬代表,如年齡,性別等。

990、在機器學習中,物件是指含有一組特徵的行變數。

991、行變數的集合最容易構造的結構就是表。

992、Hadoop有三種令牌:

1、委託令牌

2、塊訪問令牌

3、作業令牌

993、對事物運動這種不確定性(隨機性)的度量就是概率論。

994、大資料4V:

1、Volume ——資料體量大

2、Variety ——資料型別繁多

3、Velocity ——處理速度快

4、Value ——商業價值高

995、移動網際網路產生了和客戶緊密擁綁的大資料。

996、在網際網路這個產業鏈中,誰掌握了使用者,誰的天下。

997、消費者的注意力和使用習慣去了哪裡,錢就會流向哪裡。

998、體驗的產生是一個藝術的過程。

999、大資料的目標是定位。

1000、建立一個學習型企業架構。

很多初學者,對大資料的概念都是模糊不清的,大資料是什麼,能做什麼,學的時候,該按照什麼線路去學習,學完往哪方面發展,想深入瞭解,想學習的同學歡迎加入大資料學習qq群:458345782,有大量乾貨(零基礎以及進階的經典實戰)分享給大家,並且有清華大學畢業的資深大資料講師給大家免費授課,給大家分享目前國內最完整的大資料高階實戰實用學習流程體系
96 正在簡書上學習
2018.11.08 09:24 字數 11814 閱讀 0評論 0喜歡 0
編輯文章
501、MapReduce計算框架中的輸入和輸出的基本資料結構是鍵-值對。

502、Hadoop神奇的一部分在於sort和shuffle過程。

503、Hive驅動計算的“語言”是一XML形式編碼的。

504、Hive通過和Jobtracker通訊來初始化MapReduce任務(Job)。

505、Metastore(元資料儲存)是一個獨立的關係型資料庫。

很多初學者,對大資料的概念都是模糊不清的,大資料是什麼,能做什麼,學的時候,該按照什麼線路去學習,學完往哪方面發展,想深入瞭解,想學習的同學歡迎加入大資料學習qq群:458345782,有大量乾貨(零基礎以及進階的經典實戰)分享給大家,並且有清華大學畢業的資深大資料講師給大家免費授課,給大家分享目前國內最完整的大資料高階實戰實用學習流程體系

506、Pig常用於ETL(資料抽取、資料轉換、資料裝載)。

507、Hadoop團隊通常會將Hive和Pig結合使用。

508、Hive無法提供資料庫特性(如行級別更新,快速查詢響應和支援事務)。

509、HBase的設計靈感來自goole的bigTable。

510、HBase面向列儲存,列組成列族。

511、HBase對每個列保留多個版本。

512、HBase使用HDFS來持久化儲存資料。

513、將程式設計成驅動,比較方便移植。

514、HBase沒有提供SQL語言。

515、Hadoop面向批處理系統。

516、CLI是我們使用Hive的最常用方式。

517、Jobtracker管理著Job,而HDFS則由namenode管理。

518、元資料儲存中儲存了表的模式和分割槽資訊等元資料。

519、Hive會將輸出寫到標準輸出中。

520、–e執行字串包含的命令。

521、–s去掉ok。

522、–f執行檔案。

523、如果查詢中的表名和這個例子並不相關,我們有時候會使用src。

524、使用者可以使用上下鍵來滾動查詢歷史命令。

525、用!執行bash shell命令。

526、Hive Cli 可執行Hadoop的dfs命令。

527、Hive本身提供了不同時區互相轉換的內建函式。

528、Hive中的列支援使用strct、map和arry集合資料型別。

529、Hive中並沒有鍵的概念。

530、Hive不會再資料載入時進行驗證,而是在查詢時進行。

531、Hive中資料庫的概念本質上僅僅是表的一個目錄式名稱空間。

532、Hive會為每個資料接庫建立一個目錄。

533、資料庫的檔案目錄名是以.db結尾。

534、Hive中並沒有巢狀資料庫的概念。

535、Hive不允許使用者刪除一個包含有表的資料庫。

536、Hive會自動增加兩個表屬性:last_modified_by|last_modified_time。

537、Hive總是將建立的表的目錄放置在這個所屬的資料庫目錄之後。

538、Show tables命令可以列舉出所有的表。

539、管理表(內布表)不方便和其他工作共享資料。

540、Exte Nal告訴Hive這個表示外部表。

541、Location 告訴Hive資料位於哪個路徑下。

542、因為表示外部的,所以Hive並非人為其完全擁有這份資料。

543、有些Hive QL並不使用外部表。

544、分割槽欄位,表現得舊和普通的欄位一樣。

545、對資料進行分割槽,也許最重要的原因是為了更快地查詢。

546、通過show partitions命令查看錶中存在的所有分割槽。

547、Hive沒有行級操作。

548、Hive通常指定的路徑應該是一個目錄,而不是單獨的檔案。

549、Hive要求原始檔和目標檔案以及目錄應該在同一個檔案系統中。

550、指定overwrite關鍵字,目標檔案之前存在的會被刪除。

551、Hive並不會驗證使用者裝載的資料和表的模式是否匹配。

552、Hive會驗證檔案格式是否和表結構定義的一致。

553、INSERT語句允許使用者通過查詢語句向目標表中插入資料。

554、靜態分割槽鍵必須出現在動態分割槽鍵之前。

555、Hive中沒有臨時表的概念。

556、Select是sql中的射影運算元。

557、可用正則來選舉我們想要的列。

558、Float和double相比較會出現問題。

559、RLike可用正則指定匹配條件。

560、Hive目前不支援on中的or。

561、檢視可以允許儲存一個查詢並像對待表一樣對這查詢進行操作。

562、Hive值有有限的索引功能。

563、Bitmap索引普遍應用於排重後值較少的列。

564、Hive中分割槽的功能是非常有用的。

565、每個task都是一個新的Jvm例項,都需要開啟和銷燬的開銷。

566、分割槽提供一個隔離資料和優化查詢的便遍歷的方式。

567、分桶是將資料集分解或更容易管理的若干部分的另一種技術。

568、Hive提供了serde抽象,其用於從輸入中提取資料。

569、一個serDe通常是從左向右進行解析的。

570、Hive提供了一個列式SerDe來以混合列式格式儲存資訊。

571、Hive中通常使用“UDF”來表示任意的函式(使用者自定義函式)。

572、Streaming提供了另一種處理資料的方式。

573、Hive中檔案格式間具有明顯的差異。

574、Hive文字檔案格式選擇和記錄格式是對應的。

575、SequenceFile可以在塊級別和記錄級別進行壓縮。

576、對於列式儲存而言,進行壓縮通常會非常高效。

577、Hive功能強大的一個方面體現在不同的儲存格式間轉換資料非常地簡單。

578、SerD是序列化/反序列化的簡寫形式。

579、Hive引擎使用定義的InputFormat來讀取一行資料記錄。

580、Thrift是一個軟體框架,其用於跨語言的服務開發。

581、HiveServer使用Thrift提供服務。

582、儲存處理程式是一個結合InputFormat、OutPutFormat、SerDe和Hive需要使用的特定的程式碼。

583、儲存處理程式負責從底層儲存系統中讀取或寫入資料。

584、Hadoop起源於Apache Nutch的子專案。

585、HBase彌補了Hadoop只能離線批處理的不足。

586、HBase能夠儲存小檔案,提供海量資料的隨機檢查。

587、大資料強調3v特徵:即Volume(量級)、Varity(種類)和Velocity(速度)。

588、結構優化,質量提高,是一種實現實質性的跨越式的程序。

589、NoSQL是Not only SQL,泛指非關係型資料庫。

590、NoSQL的實現具有兩個特徵:使用硬碟和把隨機儲存器作儲存載體。

591、NoSQL的Cache是記錄級的,是一種粗粒度的Cache。

592、NoSQL無須事先為要儲存的資料建立欄位,隨時可以儲存自定義的資料格式。

593、HBase是一個高可靠、高效能、面向列、可伸縮的分散式資料庫。

594、HBase是NoSQL資料庫。

595、HBase可以通過行健(RowKey)檢索資料,僅支援單行事務,主要用於儲存非結構化和半結構化的鬆散資料。

596、HBase的單表可以有百億行,百萬列。

597、HBase是面向列的儲存和許可權控制,並支援列獨立檢索。

598、HBase嚴重依賴Hadoop的HDFS元件。

599、MapReduce可以直接訪問HBase。

600、HBase中最重要的訪問方式是原生Java API。

601、客戶端Client是整個HBase系統的入口。

602、HMaster主要負責Table和Region的管理工作。

603、HRegionServer主要負責響應使用者I/O請求。

604、HStore儲存是HBase儲存的核心。

605、HStore兩部分:Memstore和StoreFile。

606、當StoreFile檔案增長到一定閥值,會觸發CompCut。

607、HBase的同一個表的記錄可以有不一樣的列。

608、HBase中最基本的單元是列。

609、每一個行的行健是唯一的。

610、HBase中的表有若干行,每行有很多列,列中的值有多個版本,每個版本的值稱為一個單元格,單元格存不同的列值。

611、HBase稱為無模式資料庫的原因是HBase的表沒有列定義,沒有型別。

612、建立連線是一項非常消耗資源的工作。

613、HBase為我們提供了一個連線池。

614、行鍵是按欄位排序由低到高儲存在表中。

615、HBase中行鍵是唯一的索引。

616、HBase中的列族是一些列的集合。

617、一個列族中所有列成員有著相同的字首。

618、一個列族的成員在檔案系統上都是儲存在一起的。

619、在建立表的時候至少指定一個列族。

620、修改列族要先停用表。

621、HBase中的單元格由行鍵、列族、列、時間戳唯一確定。

622、單元格的內容是不可分別的位元組陣列。

623、每個單元格都儲存著同一份資料的多個版本。

624、時間戳是64位的整數。

625、HBase對資料模型4個操作包括:Get、Put、Scan和Delete。

626、多使用者多執行緒對統一行的讀寫操作都不會影響該行資料的原子性。

627、Get方法獲取資料時,HBase返回的結果包含所有匹配的單元格資料。

628、Result例項中包含列族、列限定符和時間戳等。

629、Put操作要麼向表增加新行,要麼更新行。

630、Put操作每次都會發起一次到伺服器的RPC操作。

631、HBase客戶端有一個緩衝區,大大提高寫入效能。

632、HBase提供compare-and-set先檢查,再執行。

633、HBase沒有update操作。

634、Scan操作允許多行特定屬性迭代。

635、HBase的Delete操作可以指定刪除某個列族或者某個列,或某時間更早的資料。

636、HBase的Delete操作並不是真正地從磁碟刪除資料。

637、RowKey、Column、Version組合在一起稱為HBase的一個單元格。

638、Version用一個長整型表示(時間)。

639、Get是在Scan的基礎上實現的。

640、一個put操作會為一個Cell建立一個版本,預設使用當前時間戳。

641、刪除操作的實現是建立一個墓碑標記。

642、Get和Scan操作返回的是經過排序的資料。

643、返回的資料首選按行字典序排序,其次是列族、然後是列修飾符,最後的時間戳逆序。

644、獲取列族的完整列名的唯一方法是處理所有行。

645、HBase不支援連線查詢,即Join查詢。

646、ICV(HBase計數器)操作傳送在RegionServer上。

647、事務特性ACID,如HBase這種NoSQL資料庫僅提供對行級別的原子性。

648、HBase不是一個具備完整ACID特性的資料庫。

649、HBase中一個表的資料會被劃分成很多的Region。

650、剛剛穿件的表只有一個Region。

651、每一個Region由一個RegionServer管理。

652、每個Region包含起始RowKey的記錄,不包含結束RowKey的記錄。

653、Region的拆分與轉移是由HBase自動完成。

654、CAP原理是資料庫軟體的理論基礎。

655、HBase為了擴充套件性和效能考慮,弱化了事務性。

656、RowKey是不可分割的位元組數,按字典排序由低到高儲存在表中。

657、RowKey決定了訪問HBase表時可以得到的效能。

658、Region基於Rowkey為一個區間的行提供服務。

659、Hfile在硬碟上儲存有序的行。

660、HBase只能在RowKey上建立索引。

661、RowKey優化:

1、字典排序

2、進行雜湊

3、儘量短

662、列族是一些列的集合。

663、一個列族的所有列成員有著相同的字首。

664、列族的字首必須是可輸出的字元。

665、列族必須在表建立的時候宣告,列在使用者隨時可以建立。

666、在物理上,一個列族的成員在檔案系統上都儲存在一起。

667、Flush和Compaction操作式針對一個Region的。

668、考慮Flush效能,列族數量越少越好。

669、HFile資料塊大小可以在列族層次設定。

670、資料塊索引儲存每個HFile資料塊的起始鍵。

671、布隆過濾器(Bloom Filter)允許對儲存在每個資料塊的資料做一個反向測驗。

672、HFile可以被壓縮並存放在HDFS上。

673、HBase的每個單元格只維護三個時間版本。

674、CRUD操作式HTable最基本的功能,其中的每類方法都包含多種實現。

675、Java客戶端有兩種查詢資料的方式:單行讀和掃描讀。

676、每類操作的不同實現方法應用在不同的場景下。

677、HBaseAdmin類是HBase資料庫的管理入口類。

678、Scan類中的主要實現方法可以劃分成三類:

1、新增列或列族

2、設定查詢屬性

3、檢視屬性資訊

679、整個刪除過程分為三步:

1、初始化Table例項

2、構造實體類Delete,Delete封裝行鍵、列族或列名

3、執行刪除

680、HBase提供了若干封裝類用於“無縫”連線MapReduce。

681、從HBase表彙總讀取資料,使用MapReduce計算完成之後,將資料儲存到其他介質中。

682、NoSQL不使用SQL作為查詢語言。

683、建立外部表適用於某表HBase已經存在,但在Hive中沒有相關資訊。

684、字串型別是Redis中最基本的資料型別。

685、所有Redis命令都是原子操作。

686、Redis提供了4個命令可以直接對二進位制位進行操作。

687、Redis是採用字典結構以鍵值對的形式儲存資料的。

688、一個雜湊型別鍵可以包含至多2的32次方減去1個欄位。

689、雜湊型別適合儲存物件。

690、大資料所面對的問題是:一是儲存,二是計算。

691、大資料的定義是發現潛在規律和趨勢。

692、谷歌三大論文:1)GFS、2)MapReduce、3)BigTable。

693、Hadoop是一個批處理系統,不擅長實時計算。

694、YARN是通用的資源管理系統。

695、機器學習演算法通常需要對同一個資料集合進行多次迭代計算。

696、RDD彈性分散式資料集(Resillient Distributed DataSet)。

697、Spark支援檢查點(checkpoint)的容錯機制。

698、RDD支援的方法:

1、轉換(Traansformation) ——生產新的RDD

2、動作(Action) ——返回一個非RDD

699、Spark沒有儲存能力,僅做資料倉庫。

700、MapReduce依附於Yarn來執行。

701、Zookeeper的節點必須是奇數個。

702、Standalone模式下,叢集可以容許某一個或多個工作節點失效。

703、Hadoop:HDFS、MapReduce、YARN。

704、Spark可以單獨使用HDFS或YARN。

705、由YARN統一負載分配資源科避免分配混亂。

706、Spark程式由master還是YARN來排程執行,是由spark程式在提交時決定的。

707、只有在互動需求是才使用yarn-client方式。

708、切片,本地模式預設去CPU的核算。

709、每個Job的執行,都會經歷序列化,網路傳輸,反序列化和執行的過程。

710、在序列化是,spark會將Job執行所依賴的變數、方法(稱為閉包)全部打包在一起。

711、如果RDD多次迭代,可將其持久化。

712、在Zookeeper模式下,恢復期間新任務無法提交。

713、RDD特點:1)只讀、2)可快取、3)可以通過重新計算得到。

714、Kafk是一個分散式、分割槽、重複提交的日誌服務。

715、Kafka掌管的類別訊息叫做主題(topics)。

716、生產者釋出訊息到kafka主題中。

717、消費者訂閱主題以及處理髮布的訊息。

718、Kafka每個伺服器叫做broker。

719、主題是一個類別或者被髮布訊息的名稱。

720、Kafka叢集根據時間保留訊息,而不是是否被消費。

721、消費者可以隨時新增和移除。

722、生產者釋出資料到他們選定的主題上。

723、消費者、訊息處理通常有兩種模式。:佇列和釋出-訂閱。

724、在佇列模式中,一組消費者可能從伺服器讀取訊息,每個訊息被其中一個消費者消費。

725、在釋出-訂閱模式中:消費者是廣播到全部的消費者中。

726、消費者用一個消費組名稱來標識自己。

727、Kafka能夠提供順序保證並在一組消費者處理過程中均衡負載。

728、Kafka可以替換傳統的訊息代理。

729、Kafka可以媲美傳統的訊息系統例如:ActiveMQ和RabitMQ。

730、Kafka通常用於操作監測資料的處理。

731、Kafka作為日誌聚合的一種解決方案。

732、Zookeeper典型應用場景:配置檔案的管理,叢集管理,分散式佇列,同步鎖leader選舉,佇列管理等。

733、Zookeeper是分散式服務框架。

734、dataMonitor類是本程式Zookeeper邏輯的核心。

735、Zookeeper是一個基於觀察者模式設計的分散式服務管理框架。

736、分散式應用中通常需要有一套完整的命名規則。

737、Netty高效能的NIO框架。

738、Netty快速開發高效能,高可靠性的網路伺服器和客戶端程式。

739、Netty是一個網路通訊框架。

740、NIO是一個面向塊的I/O系統。

741、NIO核心物件:緩衝區(Buffer),通道(Channel),選擇器(Selecter)。

742、在NIO庫中,所有資料都是用緩衝處理的。

743、Netty是事件驅動的。

744、Git是一個開源的分散式版本控制系統。

745、Kafka系統的角色:

1、Borker:一臺kafka伺服器就是一個broker。

2、Topic:可以理解為一個MQ訊息佇列的名字。

746、Java程式設計語言、虛擬機器、API類庫統稱JDK。

747、Jdk是用於支援Java程式開發的最小環境。

748、JRE是支援Java程式執行的標準環境。

749、Java技術體系可分為4個平臺:Java Card、Me、Se、EE。

750、Hadoop每個切片構建一個map任務。

751、Map輸出是中間結果,reduce產出最終輸出結果。

752、叢集上的頻寬限制了MapReduce的作業的數量。

753、HDFS中fsck指令可以顯示塊資訊。

754、Namenode之間需要通過高可用的共享儲存實現編輯日誌的共享。

755、Datanode需要同時向連個namenode傳送資料塊處理報告。

756、超級使用者是namenode程序的標識。

757、Seek()方法是一個相對高開銷的操作。

758、FileSystem是一個通用的檔案系統Api。

759、HDFS只允許對一個開啟的檔案順序寫入,或者在現有檔案的末尾追加資料。

760、FileStatus封裝了檔案系統中問價和目錄的元資料。

761、過濾器有path表示,只能作用域檔名。

762、Hadoop無法自行第一網路拓撲結構。

763、DFSoutputstream將寫入分成一個個的資料包,並寫入內部佇列,稱為“資料佇列”。

764、檔案系統的一致模型描述了檔案讀/寫的資料可見性。

765、HDFS為效能犧牲了一些Posix要求(可移植作業系統介面)。

766、HDFS提供一個方法來使所有快取與資料節點強行同步。

767、Flume是一個將大規模流資料匯入HDFS的工具。

768、Flume節點允許以任何拓撲方式進行組織。

769、當一個欄位中包含多個型別時,ObjectWritable非常有用。

770、Avro是一個獨立於程式語言的資料序列化系統。

771、Avro模式通常用Json來寫,資料通常採用二進位制格式來編碼。

772、Avro資料檔案時可切分的,適合MapReduce快速處理。

773、SeQuenceFile是可以看做小檔案的容器