大數(shù)據(jù)spark經(jīng)典面試題目與參考答案總結(jié)
一、簡(jiǎn)答題
1.Spark master使用zookeeper進(jìn)行HA的,有哪些元數(shù)據(jù)保存在Zookeeper?
答:spark通過(guò)這個(gè)參數(shù)spark.deploy.zookeeper.dir指定master元數(shù)據(jù)在zookeeper中保存的位置,包括Worker,Driver和Application以及Executors。standby節(jié)點(diǎn)要從zk中,獲得元數(shù)據(jù)信息,恢復(fù)集群運(yùn)行狀態(tài),才能對(duì)外繼續(xù)提供服務(wù),作業(yè)提交資源申請(qǐng)等,在恢復(fù)前是不能接受請(qǐng)求的。另外,Master切換需要注意2點(diǎn)
1)在Master切換的過(guò)程中,所有的已經(jīng)在運(yùn)行的程序皆正常運(yùn)行!因?yàn)镾park Application在運(yùn)行前就已經(jīng)通過(guò)Cluster Manager獲得了計(jì)算資源,所以在運(yùn)行時(shí)Job本身的調(diào)度和處理和Master是沒(méi)有任何關(guān)系的!
2) 在Master的切換過(guò)程中唯一的影響是不能提交新的Job:一方面不能夠提交新的應(yīng)用程序給集群,因?yàn)橹挥蠥ctive Master才能接受新的程序的提交請(qǐng)求;另外一方面,已經(jīng)運(yùn)行的程序中也不能夠因?yàn)锳ction操作觸發(fā)新的Job的提交請(qǐng)求;
2.Spark master HA 主從切換過(guò)程不會(huì)影響集群已有的作業(yè)運(yùn)行,為什么?
答:因?yàn)槌绦蛟谶\(yùn)行之前,已經(jīng)申請(qǐng)過(guò)資源了,driver和Executors通訊,不需要和master進(jìn)行通訊的。
3.Spark on Mesos中,什么是的粗粒度分配,什么是細(xì)粒度分配,各自的優(yōu)點(diǎn)和缺點(diǎn)是什么?
答:1)粗粒度:?jiǎn)?dòng)時(shí)就分配好資源, 程序啟動(dòng),后續(xù)具體使用就使用分配好的資源,不需要再分配資源;好處:作業(yè)特別多時(shí),資源復(fù)用率高,適合粗粒度;不好:容易資源浪費(fèi),假如一個(gè)job有1000個(gè)task,完成了999個(gè),還有一個(gè)沒(méi)完成,那么使用粗粒度,999個(gè)資源就會(huì)閑置在那里,資源浪費(fèi)。2)細(xì)粒度分配:用資源的時(shí)候分配,用完了就立即回收資源,啟動(dòng)會(huì)麻煩一點(diǎn),啟動(dòng)一次分配一次,會(huì)比較麻煩。
4.如何配置spark master的HA?
1)配置zookeeper
2)修改spark_env.sh文件,spark的master參數(shù)不在指定,添加如下代碼到各個(gè)master節(jié)點(diǎn)
export SPARK_DAEMON_JAVA_OPTS="-Dspark.deploy.recoveryMode=ZOOKEEPER -Dspark.deploy.zookeeper.url=zk01:2181,zk02:2181,zk03:2181 -Dspark.deploy.zookeeper.dir=/spark"
3) 將spark_env.sh分發(fā)到各個(gè)節(jié)點(diǎn)
4)找到一個(gè)master節(jié)點(diǎn),執(zhí)行./start-all.sh,會(huì)在這里啟動(dòng)主master,其他的master備節(jié)點(diǎn),啟動(dòng)master命令: ./sbin/start-master.sh
5)提交程序的時(shí)候指定master的時(shí)候要指定三臺(tái)master,例如
./spark-shell --master spark://master01:7077,master02:7077,master03:7077
5.Apache Spark有哪些常見(jiàn)的穩(wěn)定版本,Spark1.6.0的數(shù)字分別代表什么意思?
答:常見(jiàn)的大的穩(wěn)定版本有Spark 1.3,Spark1.6, Spark 2.0 ,Spark1.6.0的數(shù)字含義
1)第一個(gè)數(shù)字:1
major version : 代表大版本更新,一般都會(huì)有一些 api 的變化,以及大的優(yōu)化或是一些結(jié)構(gòu)的改變;
2)第二個(gè)數(shù)字:6
minor version : 代表小版本更新,一般會(huì)新加 api,或者是對(duì)當(dāng)前的 api 就行優(yōu)化,或者是其他內(nèi)容的更新,比如說(shuō) WEB UI 的更新等等;
3)第三個(gè)數(shù)字:0
patch version , 代表修復(fù)當(dāng)前小版本存在的一些 bug,基本不會(huì)有任何 api 的改變和功能更新;記得有一個(gè)大神曾經(jīng)說(shuō)過(guò),如果要切換 spark 版本的話,最好選 patch version 非 0 的版本,因?yàn)橐话泐愃朴?1.2.0, … 1.6.0 這樣的版本是屬于大更新的,有可能會(huì)有一些隱藏的 bug 或是不穩(wěn)定性存在,所以最好選擇 1.2.1, … 1.6.1 這樣的版本。
通過(guò)版本號(hào)的解釋說(shuō)明,可以很容易了解到,spark2.1.1的發(fā)布時(shí)是針對(duì)大版本2.1做的一些bug修改,不會(huì)新增功能,也不會(huì)新增API,會(huì)比2.1.0版本更加穩(wěn)定。
6.driver的功能是什么?
答: 1)一個(gè)Spark作業(yè)運(yùn)行時(shí)包括一個(gè)Driver進(jìn)程,也是作業(yè)的主進(jìn)程,具有main函數(shù),并且有SparkContext的實(shí)例,是程序的人口點(diǎn);2)功能:負(fù)責(zé)向集群申請(qǐng)資源,向master注冊(cè)信息,負(fù)責(zé)了作業(yè)的調(diào)度,,負(fù)責(zé)作業(yè)的解析、生成Stage并調(diào)度Task到Executor上。包括DAGScheduler,TaskScheduler。
7.spark的有幾種部署模式,每種模式特點(diǎn)?
1)本地模式
Spark不一定非要跑在hadoop集群,可以在本地,起多個(gè)線程的方式來(lái)指定。將Spark應(yīng)用以多線程的方式直接運(yùn)行在本地,一般都是為了方便調(diào)試,本地模式分三類
• local:只啟動(dòng)一個(gè)executor
• local[k]:啟動(dòng)k個(gè)executor
• local[*]:?jiǎn)?dòng)跟cpu數(shù)目相同的 executor
2)standalone模式
分布式部署集群, 自帶完整的服務(wù),資源管理和任務(wù)監(jiān)控是Spark自己監(jiān)控,這個(gè)模式也是其他模式的基礎(chǔ),
3)Spark on yarn模式
分布式部署集群,資源和任務(wù)監(jiān)控交給yarn管理,但是目前僅支持粗粒度資源分配方式,包含cluster和client運(yùn)行模式,cluster適合生產(chǎn),driver運(yùn)行在集群子節(jié)點(diǎn),具有容錯(cuò)功能,client適合調(diào)試,dirver運(yùn)行在客戶端
4)Spark On Mesos模式。官方推薦這種模式(當(dāng)然,原因之一是血緣關(guān)系)。正是由于Spark開(kāi)發(fā)之初就考慮到支持Mesos,因此,目前而言,Spark運(yùn)行在Mesos上會(huì)比運(yùn)行在YARN上更加靈活,更加自然。用戶可選擇兩種調(diào)度模式之一運(yùn)行自己的應(yīng)用程序:
1) 粗粒度模式(Coarse-grained Mode):每個(gè)應(yīng)用程序的運(yùn)行環(huán)境由一個(gè)Dirver和若干個(gè)Executor組成,其中,每個(gè)Executor占用若干資源,內(nèi)部可運(yùn)行多個(gè)Task(對(duì)應(yīng)多少個(gè)“slot”)。應(yīng)用程序的各個(gè)任務(wù)正式運(yùn)行之前,需要將運(yùn)行環(huán)境中的資源全部申請(qǐng)好,且運(yùn)行過(guò)程中要一直占用這些資源,即使不用,最后程序運(yùn)行結(jié)束后,回收這些資源。
2) 細(xì)粒度模式(Fine-grained Mode):鑒于粗粒度模式會(huì)造成大量資源浪費(fèi),Spark On Mesos還提供了另外一種調(diào)度模式:細(xì)粒度模式,這種模式類似于現(xiàn)在的云計(jì)算,思想是按需分配。
8.Spark技術(shù)棧有哪些組件,每個(gè)組件都有什么功能,適合什么應(yīng)用場(chǎng)景?
答:可以畫一個(gè)這樣的技術(shù)棧圖先,然后分別解釋下每個(gè)組件的功能和場(chǎng)景
1)Spark core:是其它組件的基礎(chǔ),spark的內(nèi)核,主要包含:有向循環(huán)圖、RDD、Lingage、Cache、broadcast等,并封裝了底層通訊框架,是Spark的基礎(chǔ)。
2)SparkStreaming是一個(gè)對(duì)實(shí)時(shí)數(shù)據(jù)流進(jìn)行高通量、容錯(cuò)處理的流式處理系統(tǒng),可以對(duì)多種數(shù)據(jù)源(如Kdfka、Flume、Twitter、Zero和TCP 套接字)進(jìn)行類似Map、Reduce和Join等復(fù)雜操作,將流式計(jì)算分解成一系列短小的批處理作業(yè)。
3)Spark sql:Shark是SparkSQL的前身,Spark SQL的一個(gè)重要特點(diǎn)是其能夠統(tǒng)一處理關(guān)系表和RDD,使得開(kāi)發(fā)人員可以輕松地使用SQL命令進(jìn)行外部查詢,同時(shí)進(jìn)行更復(fù)雜的數(shù)據(jù)分析
4)BlinkDB :是一個(gè)用于在海量數(shù)據(jù)上運(yùn)行交互式 SQL 查詢的大規(guī)模并行查詢引擎,它允許用戶通過(guò)權(quán)衡數(shù)據(jù)精度來(lái)提升查詢響應(yīng)時(shí)間,其數(shù)據(jù)的精度被控制在允許的誤差范圍內(nèi)。
5)MLBase是Spark生態(tài)圈的一部分專注于機(jī)器學(xué)習(xí),讓機(jī)器學(xué)習(xí)的門檻更低,讓一些可能并不了解機(jī)器學(xué)習(xí)的用戶也能方便地使用MLbase。MLBase分為四部分:MLlib、MLI、ML Optimizer和MLRuntime。
6)GraphX是Spark中用于圖和圖并行計(jì)算
9.Spark中Work的主要工作是什么?
答:主要功能:管理當(dāng)前節(jié)點(diǎn)內(nèi)存,CPU的使用狀況,接收master分配過(guò)來(lái)的資源指令,通過(guò)ExecutorRunner啟動(dòng)程序分配任務(wù),worker就類似于包工頭,管理分配新進(jìn)程,做計(jì)算的服務(wù),相當(dāng)于process服務(wù)。需要注意的是:1)worker會(huì)不會(huì)匯報(bào)當(dāng)前信息給master,worker心跳給master主要只有workid,它不會(huì)發(fā)送資源信息以心跳的方式給mater,master分配的時(shí)候就知道work,只有出現(xiàn)故障的時(shí)候才會(huì)發(fā)送資源。2)worker不會(huì)運(yùn)行代碼,具體運(yùn)行的是Executor是可以運(yùn)行具體appliaction寫的業(yè)務(wù)邏輯代碼,操作代碼的節(jié)點(diǎn),它不會(huì)運(yùn)行程序的代碼的。
10.Spark為什么比mapreduce快?
答:1)基于內(nèi)存計(jì)算,減少低效的磁盤交互;2)高效的調(diào)度算法,基于DAG;3)容錯(cuò)機(jī)制Linage,精華部分就是DAG和Lingae
11.簡(jiǎn)單說(shuō)一下hadoop和spark的shuffle相同和差異?
答:1)從 high-level 的角度來(lái)看,兩者并沒(méi)有大的差別。 都是將 mapper(Spark 里是 ShuffleMapTask)的輸出進(jìn)行 partition,不同的 partition 送到不同的 reducer(Spark 里 reducer 可能是下一個(gè) stage 里的 ShuffleMapTask,也可能是 ResultTask)。Reducer 以內(nèi)存作緩沖區(qū),邊 shuffle 邊 aggregate 數(shù)據(jù),等到數(shù)據(jù) aggregate 好以后進(jìn)行 reduce() (Spark 里可能是后續(xù)的一系列操作)。
2)從 low-level 的角度來(lái)看,兩者差別不小。 Hadoop MapReduce 是 sort-based,進(jìn)入 combine() 和 reduce() 的 records 必須先 sort。這樣的好處在于 combine/reduce() 可以處理大規(guī)模的數(shù)據(jù),因?yàn)槠漭斎霐?shù)據(jù)可以通過(guò)外排得到(mapper 對(duì)每段數(shù)據(jù)先做排序,reducer 的 shuffle 對(duì)排好序的每段數(shù)據(jù)做歸并)。目前的 Spark 默認(rèn)選擇的是 hash-based,通常使用 HashMap 來(lái)對(duì) shuffle 來(lái)的數(shù)據(jù)進(jìn)行 aggregate,不會(huì)對(duì)數(shù)據(jù)進(jìn)行提前排序。如果用戶需要經(jīng)過(guò)排序的數(shù)據(jù),那么需要自己調(diào)用類似 sortByKey() 的操作;如果你是Spark 1.1的用戶,可以將spark.shuffle.manager設(shè)置為sort,則會(huì)對(duì)數(shù)據(jù)進(jìn)行排序。在Spark 1.2中,sort將作為默認(rèn)的Shuffle實(shí)現(xiàn)。
3)從實(shí)現(xiàn)角度來(lái)看,兩者也有不少差別。 Hadoop MapReduce 將處理流程劃分出明顯的幾個(gè)階段:map(), spill, merge, shuffle, sort, reduce() 等。每個(gè)階段各司其職,可以按照過(guò)程式的編程思想來(lái)逐一實(shí)現(xiàn)每個(gè)階段的功能。在 Spark 中,沒(méi)有這樣功能明確的階段,只有不同的 stage 和一系列的 transformation(),所以 spill, merge, aggregate 等操作需要蘊(yùn)含在 transformation() 中。
如果我們將 map 端劃分?jǐn)?shù)據(jù)、持久化數(shù)據(jù)的過(guò)程稱為 shuffle write,而將 reducer 讀入數(shù)據(jù)、aggregate 數(shù)據(jù)的過(guò)程稱為 shuffle read。那么在 Spark 中,問(wèn)題就變?yōu)樵趺丛?job 的邏輯或者物理執(zhí)行圖中加入 shuffle write 和 shuffle read 的處理邏輯?以及兩個(gè)處理邏輯應(yīng)該怎么高效實(shí)現(xiàn)?
Shuffle write由于不要求數(shù)據(jù)有序,shuffle write 的任務(wù)很簡(jiǎn)單:將數(shù)據(jù) partition 好,并持久化。之所以要持久化,一方面是要減少內(nèi)存存儲(chǔ)空間壓力,另一方面也是為了 fault-tolerance。
12.Mapreduce和Spark的都是并行計(jì)算,那么他們有什么相同和區(qū)別
答:兩者都是用mr模型來(lái)進(jìn)行并行計(jì)算:
1)hadoop的一個(gè)作業(yè)稱為job,job里面分為map task和reduce task,每個(gè)task都是在自己的進(jìn)程中運(yùn)行的,當(dāng)task結(jié)束時(shí),進(jìn)程也會(huì)結(jié)束。
2)spark用戶提交的任務(wù)成為application,一個(gè)application對(duì)應(yīng)一個(gè)sparkcontext,app中存在多個(gè)job,每觸發(fā)一次action操作就會(huì)產(chǎn)生一個(gè)job。這些job可以并行或串行執(zhí)行,每個(gè)job中有多個(gè)stage,stage是shuffle過(guò)程中DAGSchaduler通過(guò)RDD之間的依賴關(guān)系劃分job而來(lái)的,每個(gè)stage里面有多個(gè)task,組成taskset有TaskSchaduler分發(fā)到各個(gè)executor中執(zhí)行,executor的生命周期是和app一樣的,即使沒(méi)有job運(yùn)行也是存在的,所以task可以快速啟動(dòng)讀取內(nèi)存進(jìn)行計(jì)算。
3)hadoop的job只有map和reduce操作,表達(dá)能力比較欠缺而且在mr過(guò)程中會(huì)重復(fù)的讀寫hdfs,造成大量的io操作,多個(gè)job需要自己管理關(guān)系。
spark的迭代計(jì)算都是在內(nèi)存中進(jìn)行的,API中提供了大量的RDD操作如join,groupby等,而且通過(guò)DAG圖可以實(shí)現(xiàn)良好的容錯(cuò)。
13.RDD機(jī)制?
答:rdd分布式彈性數(shù)據(jù)集,簡(jiǎn)單的理解成一種數(shù)據(jù)結(jié)構(gòu),是spark框架上的通用貨幣。
所有算子都是基于rdd來(lái)執(zhí)行的,不同的場(chǎng)景會(huì)有不同的rdd實(shí)現(xiàn)類,但是都可以進(jìn)行互相轉(zhuǎn)換。
rdd執(zhí)行過(guò)程中會(huì)形成dag圖,然后形成lineage保證容錯(cuò)性等。 從物理的角度來(lái)看rdd存儲(chǔ)的是block和node之間的映射。
14、spark有哪些組件?
答:主要有如下組件:
1)master:管理集群和節(jié)點(diǎn),不參與計(jì)算。
2)worker:計(jì)算節(jié)點(diǎn),進(jìn)程本身不參與計(jì)算,和master匯報(bào)。
3)Driver:運(yùn)行程序的main方法,創(chuàng)建spark context對(duì)象。
4)spark context:控制整個(gè)application的生命周期,包括dagsheduler和task scheduler等組件。
5)client:用戶提交程序的入口。
15、spark工作機(jī)制?
答:用戶在client端提交作業(yè)后,會(huì)由Driver運(yùn)行main方法并創(chuàng)建spark context上下文。
執(zhí)行add算子,形成dag圖輸入dagscheduler,按照add之間的依賴關(guān)系劃分stage輸入task scheduler。 task scheduler會(huì)將stage劃分為task set分發(fā)到各個(gè)節(jié)點(diǎn)的executor中執(zhí)行。
16、spark的優(yōu)化怎么做?
答: spark調(diào)優(yōu)比較復(fù)雜,但是大體可以分為三個(gè)方面來(lái)進(jìn)行,1)平臺(tái)層面的調(diào)優(yōu):防止不必要的jar包分發(fā),提高數(shù)據(jù)的本地性,選擇高效的存儲(chǔ)格式如parquet,2)應(yīng)用程序?qū)用娴恼{(diào)優(yōu):過(guò)濾操作符的優(yōu)化降低過(guò)多小任務(wù),降低單條記錄的資源開(kāi)銷,處理數(shù)據(jù)傾斜,復(fù)用RDD進(jìn)行緩存,作業(yè)并行化執(zhí)行等等,3)JVM層面的調(diào)優(yōu):設(shè)置合適的資源量,設(shè)置合理的JVM,啟用高效的序列化方法如kyro,增大off head內(nèi)存等等
17.簡(jiǎn)要描述Spark分布式集群搭建的步驟
1)準(zhǔn)備linux環(huán)境,設(shè)置集群搭建賬號(hào)和用戶組,設(shè)置ssh,關(guān)閉防火墻,關(guān)閉seLinux,配置host,hostname
2)配置jdk到環(huán)境變量
3)搭建hadoop集群,如果要做master ha,需要搭建zookeeper集群
修改hdfs-site.xml,hadoop_env.sh,yarn-site.xml,slaves等配置文件
4)啟動(dòng)hadoop集群,啟動(dòng)前要格式化namenode
5)配置spark集群,修改spark-env.xml,slaves等配置文件,拷貝hadoop相關(guān)配置到spark conf目錄下
6)啟動(dòng)spark集群。
18.什么是RDD寬依賴和窄依賴?
RDD和它依賴的parent RDD(s)的關(guān)系有兩種不同的類型,即窄依賴(narrow dependency)和寬依賴(wide dependency)。
1)窄依賴指的是每一個(gè)parent RDD的Partition最多被子RDD的一個(gè)Partition使用
2)寬依賴指的是多個(gè)子RDD的Partition會(huì)依賴同一個(gè)parent RDD的Partition
19.spark-submit的時(shí)候如何引入外部jar包
方法一:spark-submit –jars
根據(jù)spark官網(wǎng),在提交任務(wù)的時(shí)候指定–jars,用逗號(hào)分開(kāi)。這樣做的缺點(diǎn)是每次都要指定jar包,如果jar包少的話可以這么做,但是如果多的話會(huì)很麻煩。
命令:spark-submit --master yarn-client --jars .jar,.jar
方法二:extraClassPath
提交時(shí)在spark-default中設(shè)定參數(shù),將所有需要的jar包考到一個(gè)文件里,然后在參數(shù)中指定該目錄就可以了,較上一個(gè)方便很多:
spark.executor.extraClassPath=/home/hadoop/wzq_workspace/lib/* spark.driver.extraClassPath=/home/hadoop/wzq_workspace/lib/*
需要注意的是,你要在所有可能運(yùn)行spark任務(wù)的機(jī)器上保證該目錄存在,并且將jar包考到所有機(jī)器上。這樣做的好處是提交代碼的時(shí)候不用再寫一長(zhǎng)串jar了,缺點(diǎn)是要把所有的jar包都拷一遍。
20.cache和pesist的區(qū)別
答:1)cache和persist都是用于將一個(gè)RDD進(jìn)行緩存的,這樣在之后使用的過(guò)程中就不需要重新計(jì)算了,可以大大節(jié)省程序運(yùn)行時(shí)間;2) cache只有一個(gè)默認(rèn)的緩存級(jí)別MEMORY_ONLY ,cache調(diào)用了persist,而persist可以根據(jù)情況設(shè)置其它的緩存級(jí)別;3)executor執(zhí)行的時(shí)候,默認(rèn)60%做cache,40%做task操作,persist最根本的函數(shù),最底層的函數(shù)
二、選擇題
1.Spark 的四大組件下面哪個(gè)不是 (D )
A.Spark Streaming B. Mlib
C Graphx D.Spark R
2.下面哪個(gè)端口不是 spark 自帶服務(wù)的端口 (C )
A.8080 B.4040 C.8090 D.18080
備注:8080:spark集群web ui端口,4040:sparkjob監(jiān)控端口,18080:jobhistory端口
3.spark 1.4 版本的最大變化 (B )
A spark sql Release 版本 B .引入 Spark R
C DataFrame D.支持動(dòng)態(tài)資源分配
4.Spark Job 默認(rèn)的調(diào)度模式 (A )
A FIFO B FAIR
C 無(wú) D 運(yùn)行時(shí)指定
5.哪個(gè)不是本地模式運(yùn)行的個(gè)條件 ( D)
A spark.localExecution.enabled=true
B 顯式指定本地運(yùn)行
C finalStage 無(wú)父 Stage
D partition默認(rèn)值
6.下面哪個(gè)不是 RDD 的特點(diǎn) (C )
A. 可分區(qū) B 可序列化 C 可修改 D 可持久化
7.關(guān)于廣播變量,下面哪個(gè)是錯(cuò)誤的 (D )
A 任何函數(shù)調(diào)用 B 是只讀的
C 存儲(chǔ)在各個(gè)節(jié)點(diǎn) D 存儲(chǔ)在磁盤或 HDFS
8.關(guān)于累加器,下面哪個(gè)是錯(cuò)誤的 (D )
A 支持加法 B 支持?jǐn)?shù)值類型
C 可并行 D 不支持自定義類型
9.Spark 支持的分布式部署方式中哪個(gè)是錯(cuò)誤的 (D )
A standalone B spark on mesos
C spark on YARN D Spark on local
10.Stage 的 Task 的數(shù)量由什么決定 (A )
A Partition B Job C Stage D TaskScheduler
11.下面哪個(gè)操作是窄依賴 (B )
A join B filter
C group D sort
12.下面哪個(gè)操作肯定是寬依賴 (C )
A map B flatMap
C reduceByKey D sample
13.spark 的 master 和 worker 通過(guò)什么方式進(jìn)行通信的? (D )
A http B nio C netty D Akka
14 默認(rèn)的存儲(chǔ)級(jí)別 (A )
A MEMORY_ONLY B MEMORY_ONLY_SER
C MEMORY_AND_DISK D MEMORY_AND_DISK_SER
15 spark.deploy.recoveryMode 不支持那種 (D )
A.ZooKeeper B. FileSystem
D NONE D Hadoop
16.下列哪個(gè)不是 RDD 的緩存方法 (C )
A persist() B Cache()
C Memory()
17.Task 運(yùn)行在下來(lái)哪里個(gè)選項(xiàng)中 Executor 上的工作單元 (C )
A Driver program B. spark master
C.worker node D Cluster manager
18.hive 的元數(shù)據(jù)存儲(chǔ)在 derby 和 MySQL 中有什么區(qū)別 (B )
A.沒(méi)區(qū)別 B.多會(huì)話
C.支持網(wǎng)絡(luò)環(huán)境 D數(shù)據(jù)庫(kù)的區(qū)別
19.DataFrame 和 RDD 最大的區(qū)別 (B )
A.科學(xué)統(tǒng)計(jì)支持 B.多了 schema
C.存儲(chǔ)方式不一樣 D.外部數(shù)據(jù)源支持
20.Master 的 ElectedLeader 事件后做了哪些操作 (D )
A. 通知 driver B.通知 worker
C.注冊(cè) application D.直接 ALIVE
相關(guān)文章
大數(shù)據(jù)相關(guān)常見(jiàn)面試題與答案整理
這篇文章主要介紹了大數(shù)據(jù)相關(guān)常見(jiàn)面試題與答案,總結(jié)分析了大數(shù)據(jù)相關(guān)的概念、技術(shù)、原理,需要的朋友可以參考下2019-10-21- 這篇文章主要介紹了大數(shù)據(jù)spark精華面試題與參考答案,整理總結(jié)了大數(shù)據(jù)spark面試中經(jīng)常遇到的各類問(wèn)題、概念與知識(shí)點(diǎn),需要的朋友可以參考下2019-10-15
- 這篇文章主要介紹了大數(shù)據(jù)工程師面試題與參考答案,總結(jié)整理了大數(shù)據(jù)相關(guān)的基本概念、原理、知識(shí)點(diǎn)與注意事項(xiàng),需要的朋友可以參考下2019-09-16
大數(shù)據(jù)基礎(chǔ)面試題考點(diǎn)與知識(shí)點(diǎn)整理
這篇文章主要介紹了大數(shù)據(jù)基礎(chǔ)面試題考點(diǎn)與知識(shí)點(diǎn),總結(jié)整理了大數(shù)據(jù)常見(jiàn)的各種知識(shí)點(diǎn)、難點(diǎn)、考點(diǎn)以及相關(guān)注意事項(xiàng),需要的朋友可以參考下2019-09-09BAT面試中的大數(shù)據(jù)相關(guān)問(wèn)題筆記
這篇文章主要介紹了BAT面試中的大數(shù)據(jù)相關(guān)問(wèn)題,涉及大數(shù)據(jù)相關(guān)的概念、原理、知識(shí)點(diǎn)與算法等問(wèn)題,需要的朋友可以參考下2019-08-30BAT大數(shù)據(jù)面試題與參考答案小結(jié)
這篇文章主要介紹了BAT大數(shù)據(jù)面試題與參考答案,總結(jié)分析了大數(shù)據(jù)常見(jiàn)的各種知識(shí)點(diǎn)、疑難問(wèn)題與參考答案,需要的朋友可以參考下2019-08-16數(shù)據(jù)挖掘常見(jiàn)面試題與參考答案簡(jiǎn)析
這篇文章主要介紹了數(shù)據(jù)挖掘常見(jiàn)面試題與參考答案,簡(jiǎn)單分析了數(shù)據(jù)挖掘面試中比較常見(jiàn)的概念、知識(shí)點(diǎn)與解答技巧,需要的朋友可以參考下2019-10-17- 這篇文章主要介紹了華為云計(jì)算電話面試與參考答案,總結(jié)分析了華為云計(jì)算電話面試中所遇到的各種問(wèn)題與相應(yīng)的參考答案,包括云計(jì)算相關(guān)的常見(jiàn)概念、原理與考察知識(shí)點(diǎn),需要的2019-10-12
- 這篇文章主要介紹了云計(jì)算常見(jiàn)面試題及參考答案,涉及云計(jì)算常見(jiàn)的概念、原理、知識(shí)點(diǎn)與相關(guān)注意事項(xiàng),需要的朋友可以參考下2019-10-11
- 這篇文章主要介紹了百度面試算法題目與參考答案,總結(jié)分析了位圖、排序、鏈表、二叉樹(shù)等操作的原理與相關(guān)實(shí)現(xiàn)技巧,需要的朋友可以參考下2019-09-06

