大資料 hadoop 經典面試題 三

2021-08-29 09:31:55 字數 4171 閱讀 9097

輸入分片(inputsplit):在進行map計算之前,mapreduce會根據輸入檔案計算輸入分片(input split),每個輸入分片(input split)針對乙個map任務;儲存的並非資料本身,而是乙個分片長度和乙個記錄資料的位置的陣列,輸入分片(input split)往往和hdfs的block(塊)關係很密切

map階段:程式設計師編寫好的map函式了,因此map函式效率相對好控制,而且一般map操作都是本地化操作也就是在資料儲存節點上進行;

combiner階段:combiner階段是程式設計師可以選擇的,combiner其實也是一種reduce操作,因此我們看見wordcount類裡是用reduce進行載入的

shuffle階段:將map的輸出作為reduce的輸入的過程就是shuffle了

reduce階段:和map函式一樣也是程式設計師編寫的,最終結果是儲存在hdfs上的。

mapreduce是乙個軟體框架,基於該框架能夠容易地編寫應用程式,這些應用程式能夠執行在由上千個商用機器組成的大集群上,並以一種可靠的,具有容錯能力的方式並行地處理上tb級別的海量資料集  

客戶端:編寫mapreduce程式,配置作業,提交作業,這就是程式設計師完成的工作;

jobtracker:初始化作業,分配作業,與tasktracker通訊,協調整個作業的執行;

tasktracker:保持與jobtracker的通訊,在分配的資料片段上執行map或reduce任務,tasktracker和jobtracker的不同有個     很重要的方面,就是在執行任務時候tasktracker可以有n多個,jobtracker則只會有乙個

hdfs:儲存作業的資料、配置資訊等等,最後的結果也是儲存在hdfs上面

mongodb與mysql命令對比 傳統的關聯式資料庫一般由資料庫(database)、表(table)、記錄(record)三個層次概念組成,mongodb是由資料庫(database)、集合(collection)、文件物件(document)三個層次組成。mongodb對於關係型資料庫裡的表,但是集合中沒有列、行和關係概念,這體現了模式自由的特點。

二者最大的區別就是mongodb是非關係型資料庫,mysql是關係型資料庫,那麼在選型的時候,很大程度上就需要由業務來決定傾向性。mongodb沒有表、行、列等等的概念,相對更靈活,限制更少一些。

mongodb可以更方便的處理流式資料。

mongodb的索引放在記憶體中,能夠提公升隨機讀寫的效能。

mongodb對資料間的事務關係支援比較弱。

mongodb自帶乙個分布式檔案系統,可以很方便地部署到伺服器機群上。

mongodb支援單集合分片,可以很好的解決單錶過大的問題。

參考文章:

負載均衡 建立在現有網路結構之上,它提供了一種廉價有效透明的方法擴充套件網路裝置和伺服器的頻寬、增加吞吐量、加強網路資料處理能力、提高網路的靈活性和可用性。

負載均衡,英文名稱為load balance,其意思就是分攤到多個操作單元上進行執行,例如web伺服器、ftp伺服器、企業關鍵應用伺服器和其它關鍵任務伺服器等,從而共同完成工作任務。

kafka使用zookeeper用於管理、協調**。每個kafka**通過zookeeper協調其他kafka**。當kafka系統中新增了**或某個**失效時,zookeeper服務將通知生產者和消費者。生產者與消費者據此開始與其他**協調工作。zookeeper在kakfa中扮演的角色:kafka將元資料資訊儲存在zookeeper中,但是傳送給topic本身的資料是不會發到zk上的

kafka使用zookeeper來實現動態的集群擴充套件,不需要更改客戶端(producer和consumer)的配置。broker會在zookeeper註冊並保持相關的元資料(topic,partition資訊等)更新。

而客戶端會在zookeeper上註冊相關的watcher。一旦zookeeper發生變化,客戶端能及時感知並作出相應調整。這樣就保證了新增或去除broker時,各broker間仍能自動實現負載均衡。這裡的客戶端指的是kafka的訊息生產端(producer)和訊息消費端(consumer)

broker端使用zookeeper來註冊broker資訊,以及監測partitionleader存活性.

consumer端使用zookeeper用來註冊consumer資訊,其中包括consumer消費的partition列表等,同時也用來發現broker列表,並和partitionleader建立socket連線,並獲取訊息.

zookeer和producer沒有建立關係,只和brokers、consumers建立關係以實現負載均衡,即同乙個consumergroup中的consumers可以實現負載均衡(因為producer是瞬態的,可以傳送後關閉,無需直接等待)

zookeeper是乙個分布式協調服務。這樣我們就可以利用zookeeper來協調多個分布式程序之間的活動。比如在乙個分布式環境中,為了提高可靠性,我們的集群的每台伺服器上都部署著同樣的服務。但是,一件事情如果集群中的每個伺服器都進行的話,那相互之間就要協調,程式設計起來將非常複雜。而如果我們只讓乙個服務進行操作,那又存在單點。通常還有一種做法就是使用分布式鎖,在某個時刻只讓乙個服務去幹活,當這台服務出問題的時候鎖釋放,立即fail over到另外的服務。這在很多分布式系統中都是這麼做,這種設計有乙個更好聽的名字叫leader election(leader選舉)。比如hbase的master就是採用這種機制。但要注意的是分布式鎖跟同乙個程序的鎖還是有區別的,所以使用的時候要比同乙個程序裡的鎖更謹慎的使用。

事務是一種機制、是一種操作序列,它包含了一組資料庫操作命令,這組命令要麼全部執行,要麼全部不執行。因此事務是乙個不可分割的工作邏輯單元。在資料庫系統上執行併發操作時事務是作為最小的控制單元來使用的。這特別適用於多使用者同時操作的資料通訊系統。例如:訂票、銀行、保險公司以及**交易系統等。

事務4大屬性:

1   原子性(atomicity):事務是乙個完整的操作。

2   一致性(consistency):當事務完成時,資料必須處於一致狀態。

3   隔離性(isolation):對資料進行修改的所有併發事務是彼此隔離的。

4   永續性(durability):事務完成後,它對於系統的影響是永久性的。xin_35353187/article/details/82351970

1、客戶端首先會根據配置檔案中zookeeper位址連線zookeeper,並讀取//meta-region-server節點資訊,該節點資訊儲存hbase元資料(hbase:meta)表所在的regionserver位址以及訪問埠等資訊。使用者可以通過zookeeper命令(get //meta-region-server)檢視該節點資訊。

2、根據hbase:meta所在regionserver的訪問資訊,客戶端會將該元資料表載入到本地並進行快取。然後在表中確定待檢索rowkey所在的regionserver資訊。

3、根據資料所在regionserver的訪問資訊,客戶端會向該regionserver傳送真正的資料讀取請求。

資料傾斜 解決原則就是將資料量大key打散,分到不同的分割槽再重新 處理一遍

hive group的時候 指定組合 key,

本地單機模式:本地單機模式下,所有的

spark

程序均執行於同乙個jvm中,並行處理則通過多執行緒來實現。在預設情況下,單機模式啟動與本地系統的cpu核心數目相同的執行緒。如果要設定並行的級別,則以local[n]的格式來指定乙個master變數,n表示要使用的執行緒數目。

集群單機模式(standalone):spark

集群由兩類程式構成:乙個驅動程式(driver)和多個執行程式(excutor)。本地模式時所有的處理都執行在同乙個jvm內,在集群模式時通常執行在多個不同的節點上。

基於mesos: mesos是乙個開源集群計算框架。

基於yarn:hadoop

關聯形成集群計算和資源排程框架。(使用較多)

我們使用的是spark on yarn。

參考:參考:

參考:9

大資料hadoop面試題精準講解

包括hdfs和mapreduce兩部分。1 hdfs自動儲存多個副本,移動計算。缺點是小檔案訪問占用namenode記憶體,寫入只支援追加,不能隨機修改。它儲存的邏輯空間稱為block,檔案的許可權類似linux。整體架構分三種節點,nn,snn,dn nn 負責讀寫操作儲存metadata own...

經典大資料求職面試題目

首先看到100g的日誌檔案,我們的第一反應肯定是太大了,根本載入不到記憶體,更別說設計演算法了,那麼怎麼辦呢?既然裝不下,我們是不是可以將其切分開來,一小部分一小部分輪流進入記憶體呢,答案當然是肯定的。在這裡要記住一點 但凡是大資料的問題,都可通過切分來解決它。粗略算一下 如果我們將其分成1000個...

大資料面試題

海量資料面試題整理 1.給定a b兩個檔案,各存放50億個url,每個url各佔64位元組,記憶體限制是4g,讓你找出a b檔案共同的url?方案1 可以估計每個檔案安的大小為50g 64 320g,遠遠大於記憶體限制的4g。所以不可能將其完全載入到記憶體中處理。考慮採取分而治之的方法。s 求每對小...