㈠ 「每日一道大數據面試題系列」spark如何調優
如果面試時被問到spark任務如何調優,我們該如何回答呢?
下面我們從四大方面回答這個問題,保證吊打面試官。
一、spark性能調優
1、分配更多的資源
比如增加執行器個數(num_executor)、增加執行器個數(executor_cores)、增加執行器內存(executor_memory)
2、調節並行度
spark.default.parallelism
3、重構RDD架構以及RDD持久化
盡量去復用RDD,差不多的RDD可以抽取成一個共同的RDD,公共RDD一定要實現持久化
4、廣播變數
SparkContext.broadcast方法創建一個對象,通過value方法訪問
5、使用kryo序列化
SparkConf中設置屬性:spark.serializer: org.apache.spark.serializer.kryoSerializer
6、使用fastutil優化數據格式(代替java中的Array、List、Set、Map)
7、調節數據本地化等待時長
調節參數: spark.locality.wait
二、JVM調優
降低cache操作的內存佔比 1.6版本之前使用的是靜態內存管理
spark中堆內存被劃分為兩塊:
一塊是專門來給RDD作cachepersist持久化的 StorageMemory,另一塊是給spark運算元函數運行使用的,存放函數中自己創建的對象。
1.6版本之後採用統一內存管理機制
storage和execution各佔50%,若己方不足對方空餘可佔用對方空間
可嘗試調節executor堆外內存
spark.yarn.executor.memoryOverhead = 2048m
調節連接等待時長
spark.core.connection.ack.wait.timeout = 300
三、shuffle數據傾斜調優
1、預聚合源數據,對hive源表提前進行聚合操作,在hive聚合之後,spark任務再去讀取
2、檢查傾斜的key是否是臟數據,可以提前過濾
3、提高shuffle操作rece的並行度
4、使用隨機key實現雙重聚合
5、將rece端 join轉換成map端 join
6、sample采樣傾斜key,單獨進行join後在union
7、使用隨機數以及擴容表進行join
四、運算元調優
1、使用mapPartition提升map類操作的性能
2、filter過後使用coalesce減少分區數量
3、使用foreachPartition優化寫數據性能
4、使用repartition解決sparksql低並行度的性能問題
5、receByKey替換groupByKey實現map讀預聚合
㈡ 大數據面試題及答案誰能分享一下
大數據時代才剛剛開始。隨著越來越多的公司傾向於大數據運營,人才需求達到歷史最高水平。這對你意味著什麼?如果您想在任何大數據崗位上工作,它只能轉化為更好的機會。您可以選擇成為數據分析師,數據科學家,資料庫管理員,大數據工程師,Hadoop大數據工程師等。在本文中,慧都網將介紹與大數據相關的前10大數據面試問題。
以下是最重要的大數據面試問題以及具體問題的詳細解答。對於更廣泛的問題,答案取決於您的經驗,我們將分享一些如何回答它們的提示。
10個大數據面試入門級問題
無論何時進行大數據采訪,采訪者都可能會詢問一些基本問題。無論您是大數據領域的新手還是經驗豐富,都需要基礎知識。因此,讓我們來介紹一些常見的基本大數據面試問題以及破解大數據面試的答案。
1.您對「大數據」一詞有何了解?
答:大數據是與復雜和大型數據集相關的術語。關系資料庫無法處理大數據,這就是使用特殊工具和方法對大量數據執行操作的原因。大數據使公司能夠更好地了解其業務,並幫助他們從定期收集的非結構化和原始數據中獲取有意義的信息。大數據還允許公司採取數據支持的更好的業務決策。
2.大數據的五個V是什麼?
答:大數據的五個V如下:
Volume -Volume表示體積大,即以高速率增長的數據量,即以PB為單位的數據量
Velocity -Velocity是數據增長的速度。社交媒體在數據增長速度方面發揮著重要作用。
Variety -Variety是指不同的數據類型,即各種數據格式,如文本,音頻,視頻等。
Veracity -Veracity是指可用數據的不確定性。由於大量數據帶來不完整性和不一致性,因此產生了准確性。
Value -價值是指將數據轉化為價值。通過將訪問的大數據轉換為價值,企業可以創造收入。
ResourceManager-該組件接收處理請求,並根據處理需要相應地分配給各個NodeManager。
NodeManager-它在每個單個數據節點上執行任務
處理
數據採集
HDFS在一組計算機上運行,而NAS在單個計算機上運行。因此,數據冗餘是HDFS中的常見問題。相反,復制協議在NAS的情況下是不同的。因此,數據冗餘的可能性要小得多。
在HDFS的情況下,數據作為數據塊存儲在本地驅動器中。在NAS的情況下,它存儲在專用硬體中。
YARN的兩個主要組成部分:
7.為什麼Hadoop可用於大數據分析?
答:由於數據分析已成為業務的關鍵參數之一,因此,企業正在處理大量結構化,非結構化和半結構化數據。在Hadoop主要支持其功能的情況下,分析非結構化數據非常困難
此外,Hadoop是開源的,可在商用硬體上運行。因此,它是企業的成本效益解決方案。
8.什麼是fsck?
答:fsck代表文件系統檢查。它是HDFS使用的命令。此命令用於檢查不一致性以及文件中是否存在任何問題。例如,如果文件有任何丟失的塊,則通過此命令通知HDFS。
9. NAS(網路附加存儲)和HDFS之間的主要區別是什麼?
答:NAS(網路附加存儲)和HDFS之間的主要區別 -
10.格式化NameNode的命令是什麼?
答:$ hdfs namenode -format。
歡迎咨詢慧都在線客服,我們將幫您轉接大數據專家團隊,並發送相關資料給您!
以上就是大數據面試題及答案,希望我的回答對您有幫助!
㈢ 大數據分析面試問什麼
基本工具
包括規定動作和自選動作兩類。
1.1 規定動作
SQL查詢:JOIN ON、DISTINCT、GROUP BY、ORDER BY等等。從資料庫中提取數據是數據分析的第一步。
1.2 自選動作
根據簡歷來問,簡歷上寫什麼就問什麼,會問得比較深入。簡歷作為敲門磚,撰寫也是非常重要的,切不可寫的過於誇張和造假,奉勸各位不要作死,畢竟不作死都有可能會死。Python、Stata、R、SPSS、SAS、EViews都算比較常見的數據分析工具。
2.邏輯思維
主要分為兩方面,對業務邏輯的理解能力和行文的邏輯水平。
2.1業務邏輯
雖然一個業務看似流程簡單清晰,但產生數據的復雜程度往往超過大多數人的想像。對業務邏輯的考察主要通過相關項目經歷。
2.2行文邏輯
畢竟最終產出是一份份報告,可能是HTML郵件也能是PDF。
3.理論儲備
也分為規定動作和可選動作。
3.1 規定動作
主要是基礎的統計學理論,如方差、協方差、算數平均數、幾何平均數、中位數、眾數、分位值、雙峰數據、長尾數據、假設檢驗、期望迭代法則、貝葉斯原理等。
3.2 自選動作
根據簡歷來問,簡歷上寫什麼hr一定會問什麼。
4.對細節的敏感度
作為數據分析師,每天要關注大量數據指標。對細節的敏感度是非常必要的。這主要分為兩方面,對統計口徑的敏感度和對數據的敏感度。
4.1 統計口徑
統計口徑一致是確保數據可比性的基礎,這非常考驗數據分析師的敏感度和行業經驗。
4.2 數據
面試者對數據異常波動、離群值、平均數沒有代表意義等情況的迅速識別能力。比如已知然壽司套餐單價1,500,酒水單價300,平均客單價2,500,能不能馬上想到這可能是雙峰數據或者長尾數據,抑或既雙峰又長尾的數據?
5.學習能力
互聯網行業瞬息萬變,光數據的存儲就有Oracle、MySQL、Hadoop、Spark、Hive、Impala、谷哥哥三駕馬車等一大堆奇奇怪怪的東西。互聯網行業的從業者經常要面對新需求、新工具、新方法。能否迅速掌握新知識,解決新問題面試者必須證明給hr看。主要考察的方式是了解過往項目經歷,或者出作業題(比如Sci-Hub)。
6.排版和簡單UI設計
數據分析報告必須簡潔、清晰、重點突出。主要考察方式是出作業題讓面試者限時交一份slides(就是PPT啦)出來。
7.價值觀
主要看工作熱情、態度、道德水平等等,這方面的問題比較隨機。
㈣ 大數據面試要准備哪些
一、大數據面試要准備一些應試須知:
1、讓面試官記住你的名字。很多人在介紹自己名字的時候僅僅只有簡單的一句「我叫某某某」,直到你的自我介紹完畢,面試官也沒有記住你的名字,如果後續的自我介紹中沒有突出的表現,那麼這樣的自我介紹註定是失敗的。
2、告訴面試官和應聘職位相關的工作經歷。在自我介紹自己的工作經歷時,一定要注意哪些經歷是和應聘職位相關,對應聘有幫助,哪些是毫無意義的。例如應聘技術人員的職位,我們主要講從事本職工作的經歷,如果有從事其他行業的經歷,比如從事過銷售,組織,管理工作的,也可以略微提一下,往往會對應聘起到一定的幫助。
3、在面試官面前展現性格陽光的一面。性格也是面試官需要考察的一項,一般來說活潑、外向的性格始終會受到大家的親睞,所以我們在面試官面前一定要展示性格陽光的一面,即使內向,也不能表現出來。
4、簡單的介紹一下自己的未來規劃。未來規劃這一項是為了告訴面試官,我是一個有計劃、有目標、有理想的人,我參加面試是因為我對這份工作比較熱愛,而不是為了混口飯吃而應聘這項工作。很多老闆最怕找到以混日子為目的的員工。
5、注意揚長避短。揚長避短也就是說在面試時盡量選擇自己好的方面來說,只說自己的優點,避免談及自己的缺點。從人性的角度來講,人們總是對負面的新聞感興趣,因此在面試時,面試官會千方百計的發現你的缺點,你的弱項,如果我們主動將缺點暴露給對方,那麼產生的影響往往是負面的。
細節決定成敗,一個簡單的自我介紹雖然只有短短的幾分鍾,但是其內容卻包羅萬象,因此在面試時自我介紹的完美與否是舉足輕重的。
二、大數據面試要准備一些常見的面試題:
1、你會Java語言嗎?熟悉到什麼程度?
2、你最喜歡的編程語言是什麼?為什麼?
3、處理過的最大的數據量?你是如何處理他們的?處理的結果如何。
2、在處理大數據過程中,如何保證得到期望值?
3、如何讓一個網路爬蟲速度更快、抽取更好的信息以及更好總結數據從而得到一干凈的資料庫?
4、點擊流數據應該是實時處理?為什麼?哪部分應該實時處理?
6、如何把非結構化的數據轉換成結構化的數據?這是否真的有必要做這樣的轉換?把數據存成平面文本文件是否比存成關系資料庫更好?
7、如何判別maprece過程有好的負載均衡?什麼是負載均衡?
8、Spark和Hive的區別,以及Spark和Hive的數據傾斜調優問題?
9、Hive和Hbase的區別?
10、MapRece的思想,以及MapRece調優問題?
11、你所了解的開源網站?
12、有兩個集群,每個集群有3個節點,使用hive分析相同的數據,sql語句完全一樣,一個集群的分析結果比另外一個慢的多,給出造成這種現象的可能原因?
13、Hbase的優化?
14、集群的版本,以及集群的瓶頸問題?
15、CRM項目,怎麼跟Spark結合?
16、如何創建一個關鍵字分類?
17、海量日誌數據,提取出某日訪問網路次數最多的那個IP?
18、Hadoop和Spark處理數據時,出現內存溢出的處理方法?
19、有一個1G大小的一個文件,裡面每一是一個詞,詞的大小不超過16位元組,內存大小限制大小1M,返回頻率最高的50個詞。
20、你是如何處理缺少數據的?你是推薦使用什麼樣的處理技術,或者說你是用什麼樣的技術處理呢?
㈤ 面試題-關於大數據量的分布式處理
面試題-關於大數據量的分布式處理
題目:生產系統每天會產生一個日誌文件F,數據量在5000W行的級別。文件F保存了兩列數據,一列是來源渠道,一列是來源渠道上的用戶標識。文件F用來記錄當日各渠道上的所有訪問用戶,每訪問一次,記錄一條。
請問如何快速計算出各渠道上新增的用戶?
問題分析:首先本次面試的是有關於分布式數據處理以及數據分析的職位,所以相關的面試題目可能會偏向於使用分布式的思想去解決。但無奈本人當時反應太慢,實在沒向分布式處理方向思考。
方案一:
本題最直觀的一個處理方法就是,直接拿著當日新增的5000W條訪問記錄一條一條的去匹配歷史訪問用戶。若存在歷史訪問記錄,則忽略;若不存在訪問記錄,則保存為新增記錄。很明顯,假若歷史訪問用戶有2億條記錄,則需要和2億條數據比較5000W次。比較次數可想而知。
由於本人一直在做基於資料庫的數據處理工作,很容易就想到將歷史數據保存在資料庫的一張表中,並對來源渠道和用戶標識這兩個欄位建立索引,然後遍歷日誌文件F(5000W次)。根據日誌文件F中的每一行去匹配資料庫中的歷史訪問記錄。由於歷史數據表有索引,單次查詢的速度也非常快。但是需要5000W次的資料庫查詢,很明顯效率低下。
方案二:
既然多次單一查詢無法滿足要求,於是可以先通過一種數據導入技術將當日新增數據導入到資料庫的另一張表中,並和歷史數據做左外關聯。若能關聯成功,則表示此用戶已存在;若關聯失敗,則表示此用戶不存在。
此方案暫且不說5000W條記錄的大表與2億條記錄的大表關聯效率有多高以及使用到的資料庫緩沖區的資源有多少,單就5000W條訪問記錄導入資料庫表,都是一個不小的時間花費。
方案三:
很明顯,面試時方案二的回答並未達到面試官的預期,最初被遺憾的PASS掉。一家很有潛力,自己很看好的公司,並計劃做為自己未來發展方向的職位,就這樣丟下我,揚長而去了。
這幾天又看了下分布式相關的介紹,突然想到這道題。一下子醒悟過來,其實還是因為對題目要考察的點分析得不夠透徹。當時以為只是僅僅考數據處理效率的一個題目,其實考的是一種將復雜問題拆分為簡單問題的拆分思想。了解到這一層,一種新的方式立馬在腦海中浮現出來。具體如下:
假如現在有N(N>=2)個存儲塊,並存在一個函數f(來源渠道,用戶標識),對於給定的一組(來源渠道,用戶標識),總能將其分發到一個固定的存儲塊內。那麼可以使用此函數將5000W行訪問記錄盡量均勻的分發至N個存儲塊上,並同時使用此函數將歷史訪問記錄也分發至這些存儲塊上。由於相同的一組記錄,肯定會被分配至同一個存儲塊,所以比較時,只需要分別比較各個存儲塊上當日新增記錄與歷史訪問用戶,然後將N個存儲塊上比較的結果匯總,即可得到最終結果。
假設歷史訪問用戶數據已通過函數f(來源渠道,用戶標識)被分發至了N個歷史文件H1、H2、…、HN。則詳細處理步驟如下:
1、將F中的內容使用函數f(來源渠道,用戶標識),分發至文件F1、F2、…、FN內。(可開M(M>=2)個並行,且若N-M越大,同時向同一文件寫入數據的概率越小)
2、將文件F1、F2、…、FN內的訪問記錄去重。(可開N個並行分別處理對應的N個文件)。
3、將文件Fn(1=<n<=N)去重後的結果與對應的歷史文件Hn比較得出新增用戶結果Rn。(可開N個並行分別處理對應的N個文件且當N足夠大時,實際要處理數據的量級就會相當小)。
4、合並第3步得到的結果R1、R2、…、RN即可得到當日新增用戶。(可並行)
5、為使歷史數據文件H1、H2、…、HN中的數據最全,將結果R1、R2、…、RN分別寫入對應的歷史文件中。(可並行)
本方案主要有以下優點:
1、數據的分發、處理、合並都可並行處理,明顯提高了處理效率。
2、由於每個存儲塊上的新增數據,只需要與它對應存儲塊上的歷史數據比較即可,大大減少了比較次數。(對於當日每一條記錄來說,都只需要與大約歷史的N分之一條數據去比較)
3、基本不需要考慮歷史全量數據的保存及獲取問題。
本方案缺點:
1、處理方案明顯變的復雜許多,不僅需要處理數據的分發,處理,還需要一個並行的快速收集方法。
2、可能需要多台伺服器並行處理。
本方案難點:
1、一個穩定(對於相同的一組來源渠道和用戶標識,必定會被分發至同一存儲塊)、快速(根據一條來源渠道和用戶標識數據,可以快速的計算出它將要被分發至的存儲塊)、均勻(當日新增數據及歷史數據都能盡量均勻的被分發至N個存儲塊,最理想的情況是每個存儲塊上分發到的數據都是總數據的N分之一)的分發函數至關重要。
2、如何分發、並行處理及匯總數據。