亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

大數(shù)據(jù)相關(guān)常見面試題與答案整理

  發(fā)布時(shí)間:2019-10-21 14:24:04   作者:愛薩薩   我要評(píng)論
這篇文章主要介紹了大數(shù)據(jù)相關(guān)常見面試題與答案,總結(jié)分析了大數(shù)據(jù)相關(guān)的概念、技術(shù)、原理,需要的朋友可以參考下

1、hadoop:
  1)hadoop是大數(shù)據(jù)分析的完整生態(tài)系統(tǒng),從數(shù)據(jù)采集,存儲(chǔ),分析,轉(zhuǎn)運(yùn),再到頁(yè)面展示,構(gòu)成了整個(gè)流程
  2)采集可以用flume,
  3)存儲(chǔ)用hbase,hdfs,mangodb就相當(dāng)于hbase,
  4)分析用Mapreduce自己寫算法,
  5)還有hive做數(shù)據(jù)倉(cāng)庫(kù),
  6)pig做數(shù)據(jù)流處理,
  7)轉(zhuǎn)儲(chǔ)方面有sqoop,可以將hdfs中的數(shù)據(jù)轉(zhuǎn)換存儲(chǔ)到mysql,oracle等傳統(tǒng)數(shù)據(jù)庫(kù),
這就構(gòu)成了一整套大數(shù)據(jù)分析的整個(gè)流程

2、Hadoop 集群可以運(yùn)行的 3 個(gè)模式分別是什么, 都有哪些注意點(diǎn)?
  單機(jī)模式、偽分布式模式、全分布式模式;

3、Hadoop 的核心配置文件?
  1)以前是hadoop-default.xml、hadoop-site.xml
  2)現(xiàn)在是core-site.xml、hdfs-site.xml、mapred-site.xml;都在conf目錄下;

4、hdfs-site.xml 的 3 個(gè)主要屬性?
  1)dfs.name.dir 決定的是元數(shù)據(jù)存儲(chǔ)的路徑以及 DFS 的存儲(chǔ)方式(磁盤或是遠(yuǎn)端)
  2)dfs.data.dir 決定的是數(shù)據(jù)存儲(chǔ)的路徑
  3)fs.checkpoint.dir 用于第二 Namenode

5、簡(jiǎn)述HDFS的原理?
  1)客戶端向 nameNode 發(fā)送要上傳文件的請(qǐng)求
  2)nameNode 返回給用戶是否能上傳數(shù)據(jù)的狀態(tài)
  3)加入用戶端需要上傳一個(gè) 1024M 的文件,客戶端會(huì)通過(guò) Rpc 請(qǐng)求 NameNode,并返回需要上傳給那些 DataNode(分配機(jī)器的距離以及空間的大小等),namonode會(huì)選擇就近原則分配機(jī)器。
  4)客戶端請(qǐng)求建立 block 傳輸管道 chnnel 上傳數(shù)據(jù)
  5)在上傳時(shí) datanode 會(huì)與其他的機(jī)器建立連接并把數(shù)據(jù)塊傳送到其他的機(jī)器上
  6)dataNode 向 namenode 匯報(bào)自己的儲(chǔ)存情況以及自己的信息
  7)當(dāng)?shù)谝粋€(gè)快上傳完后再去執(zhí)行其他的復(fù)制的傳送

6、簡(jiǎn)述MR(MapReduce)的原理?
  1)當(dāng)執(zhí)行mr程序時(shí),會(huì)執(zhí)行一個(gè)Job
  2)客戶端的jobClick會(huì)請(qǐng)求namenode的jobTracker要執(zhí)行任務(wù)
  3)jobClick會(huì)去HDFS端復(fù)制作業(yè)的資源文件
  4)客戶端的jobClick會(huì)向namenode提交作業(yè),讓namenode做準(zhǔn)備
  5)Namenode的jobTracker會(huì)去初始化創(chuàng)建的對(duì)象
  6)Namenode會(huì)獲取hdfs的劃分的分區(qū)
  7)Namenode去檢查TaskTracker的心跳信息,查看存活的機(jī)器
  8)當(dāng)執(zhí)行的datenode執(zhí)行任務(wù)時(shí)Datenode會(huì)去HDFS獲取作業(yè)的資源的文件
  9)TaskTracker會(huì)去執(zhí)行代碼,并登陸JVM的執(zhí)行渠道
  10)JVM或執(zhí)行MapTask或者ReduceTask
  11)執(zhí)行終結(jié)

7、談?wù)剶?shù)據(jù)傾斜,如何發(fā)生的,并給出優(yōu)化方案
     數(shù)據(jù)的傾斜主要是兩個(gè)的數(shù)據(jù)相差的數(shù)量不在一個(gè)級(jí)別上,在執(zhí)行任務(wù)時(shí)就造成了數(shù)據(jù)的傾斜,可以通過(guò)分區(qū)的方法減少reduce數(shù)據(jù)傾斜性能的方法,例如:抽樣和范圍的分區(qū)、自定義分區(qū)、數(shù)據(jù)大小傾斜的自定義策略;

8、簡(jiǎn)單概括安裝hadoop的步驟
  1)創(chuàng)建 hadoop 帳戶。
  2)setup.改 IP。
  3)安裝 java,并修改/etc/profile 文件,配置 java 的環(huán)境變量。
  4)修改 Host 文件域名。
  5)安裝 SSH,配置無(wú)密鑰通信。
  6)解壓 hadoop。
  7)配置 conf 文件下 hadoop-env.sh、core-site.sh、mapre-site.sh、hdfs-site.sh。
  8)配置 hadoop 的環(huán)境變量。
  9)Hadoop namenode -format
  10)start-all.sh

9、怎樣快速的殺死一個(gè)job
  1)執(zhí)行hadoop  job -list  拿到j(luò)ob-id
  2)Hadoop job kill hadoop-id

10、簡(jiǎn)單概述hadoop的combinet與partition的區(qū)別
  1)combine和partition都是函數(shù),中間的步驟應(yīng)該只有shuffle!
  2)combine分為map端和reduce端,作用是把同一個(gè)key的鍵值對(duì)合并在一起,可以自定義的;
  3)partition是分割map每個(gè)節(jié)點(diǎn)的結(jié)果,按照key分別映射給不同的reduce,也是可以自定義的。這里其實(shí)可以理解歸類。

11、hadoop的shuffer的概念
  1)Shuffer是一個(gè)過(guò)程,實(shí)在map端到reduce在調(diào)reduce數(shù)據(jù)之前都叫shuffer,主要是分區(qū)與排序,也就是內(nèi)部的緩存分分區(qū)以及分發(fā)(是reduce來(lái)拉數(shù)據(jù)的)和傳輸;

12、3 個(gè) datanode 中有一個(gè) 個(gè)datanode 出現(xiàn)錯(cuò)誤會(huì)怎樣?
    這個(gè) datanode 的數(shù)據(jù)會(huì)在其他的 datanode 上重新做備份。

13、簡(jiǎn)單概述一下hadoop1與hadoop2的區(qū)別
  1)Hadoop2與hadoop1最大的區(qū)別在于HDFS的架構(gòu)與mapreduce的很大的區(qū)別,而且速度上有很大的提升;
  2)hadoop2最主要的兩個(gè)變化是:namenode可以集群的部署了,hadoop2中的mapreduce中的jobTracker中的資源調(diào)度器與生命周期管理拆分成兩個(gè)獨(dú)立的組件,并命名為YARN

14、hadoop的二次排序
  1)Hadoop默認(rèn)的是HashPartitioner排序,當(dāng)map端一個(gè)文件非常大另外一個(gè)文件非常小時(shí)就會(huì)產(chǎn)生資源的分配不均勻,既可以使用setPartitionerClass來(lái)設(shè)置分區(qū),即形成了二次分區(qū)。

15、mapreduce的combiner的作用是什么,什么時(shí)候不應(yīng)該使用?
  1)Mapreduce中的Combiner就是為了避免map任務(wù)和reduce任務(wù)之間的數(shù)據(jù)傳輸而設(shè)置的,Hadoop允許用戶針對(duì)map task的輸出指定一個(gè)合并函數(shù)。即為了減少傳輸?shù)絉educe中的數(shù)據(jù)量。它主要是為了削減Mapper的輸出從而減少網(wǎng)絡(luò)帶寬和Reducer之上的負(fù)載。
  2)在數(shù)據(jù)量較少時(shí)不宜使用。

16、你對(duì)zookeeper的理解?
  1)隨著大數(shù)據(jù)的快速發(fā)展,多機(jī)器的協(xié)調(diào)工作,避免主要機(jī)器單點(diǎn)故障的問(wèn)題,于是就引入管理機(jī)器的一個(gè)軟件,他就是zookeeper來(lái)協(xié)助機(jī)器正常的運(yùn)行。
  2)Zookeeper有兩個(gè)角色分別是leader與follower ,其中l(wèi)eader是主節(jié)點(diǎn),其他的是副節(jié)點(diǎn),在安裝配置上一定要注意配置奇數(shù)個(gè)的機(jī)器上,便于zookeeper快速切換選舉其他的機(jī)器。
  3)在其他的軟件執(zhí)行任務(wù)時(shí)在zookeeper注冊(cè)時(shí)會(huì)在zookeeper下生成相對(duì)應(yīng)的目錄,以便zookeeper去管理機(jī)器。

17、hive是怎樣保存元數(shù)據(jù)的?
  1)保存元數(shù)據(jù)的方式有:內(nèi)存數(shù)據(jù)庫(kù)rerdy,本地mysql數(shù)據(jù)庫(kù),遠(yuǎn)程mysql數(shù)據(jù)庫(kù);
  2)但是本地的mysql數(shù)據(jù)用的比較多,因?yàn)楸镜刈x寫速度都比較快

18、Hive中外部表與內(nèi)部表的區(qū)別
  1)Hive 創(chuàng)建內(nèi)部表時(shí),會(huì)將數(shù)據(jù)移動(dòng)到數(shù)據(jù)倉(cāng)庫(kù)指向的路徑;若創(chuàng)建外部表,僅記錄數(shù)據(jù)所在的路徑,不對(duì)數(shù)據(jù)的位置做任何改變。
  2)在刪除表的時(shí)候,內(nèi)部表的元數(shù)據(jù)和數(shù)據(jù)會(huì)被一起刪除,而外部表只刪除元數(shù)據(jù),不刪除數(shù)據(jù)。這樣外部表相對(duì)來(lái)說(shuō)更加安全些,數(shù)據(jù)組織也更加靈活,方便共享源數(shù)據(jù)。

19、對(duì)于 hive,你寫過(guò)哪些 UDF 函數(shù),作用是什么?
  1)UDF: user  defined  function  的縮寫,
  1)編寫hive udf的兩種方式extends UDF 重寫evaluate第二種extends GenericUDF重寫initialize、getDisplayString、evaluate方法

20、Hive 的 sort by 和 order by 的區(qū)別
  1)order by 會(huì)對(duì)輸入做全局排序,因此只有一個(gè)reducer(多個(gè)reducer無(wú)法保證全局有序)只有一個(gè)reducer,會(huì)導(dǎo)致當(dāng)輸入規(guī)模較大時(shí),需要較長(zhǎng)的計(jì)算時(shí)間。
  2)sort by不是全局排序,其在數(shù)據(jù)進(jìn)入reducer前完成排序.因此,如果用sort by進(jìn)行排序,并且設(shè)置mapred.reduce.tasks>1, 則sort by只保證每個(gè)reducer的輸出有序,不保證全局有序。

21、Hbase 的 rowkey 怎么創(chuàng)建比較好?列族怎么創(chuàng)建比較好?
  1)Rowkey是一個(gè)二進(jìn)制碼流,Rowkey的長(zhǎng)度被很多開發(fā)者建議說(shuō)設(shè)計(jì)在10~100個(gè)字節(jié),不過(guò)建議是越短越好,不要超過(guò)16個(gè)字節(jié)。在查找時(shí)有索引會(huì)加快速度。
  2)Rowkey散列原則 、 Rowkey唯一原則 、 針對(duì)事務(wù)數(shù)據(jù)Rowkey設(shè)計(jì) 、 針對(duì)統(tǒng)計(jì)數(shù)據(jù)的Rowkey設(shè)計(jì) 、 針對(duì)通用數(shù)據(jù)的Rowkey設(shè)計(jì)、 支持多3)總結(jié)設(shè)計(jì)列族:
    a、一般不建議設(shè)計(jì)多個(gè)列族
    b、數(shù)據(jù)塊的緩存的設(shè)計(jì)
    c、激進(jìn)緩存設(shè)計(jì)
    d、布隆過(guò)濾器的設(shè)計(jì)(可以提高隨機(jī)讀取的速度)
    e、生產(chǎn)日期的設(shè)計(jì)
    f、列族壓縮
    g、單元時(shí)間版本

22、hive 如何調(diào)優(yōu)?
  1)在優(yōu)化時(shí)要注意數(shù)據(jù)的問(wèn)題,盡量減少數(shù)據(jù)傾斜的問(wèn)題,減少job的數(shù)量,同事對(duì)小的文件進(jìn)行成大的文件,
  2)如果優(yōu)化的設(shè)計(jì)那就更好了,因?yàn)閔ive的運(yùn)算就是mapReduce所以調(diào)節(jié)mapreduce的參數(shù)也會(huì)使性能提高,如調(diào)節(jié)task的數(shù)目。

23、hbase 寫數(shù)據(jù)的原理
  1)首先,Client通過(guò)訪問(wèn)ZK來(lái)請(qǐng)求目標(biāo)數(shù)據(jù)的地址。
  2)ZK中保存了-ROOT-表的地址,所以ZK通過(guò)訪問(wèn)-ROOT-表來(lái)請(qǐng)求數(shù)據(jù)地址。
  3)同樣,-ROOT-表中保存的是.META.的信息,通過(guò)訪問(wèn).META.表來(lái)獲取具體的RS。
  4).META.表查詢到具體RS信息后返回具體RS地址給Client。
  5)Client端獲取到目標(biāo)地址后,然后直接向該地址發(fā)送數(shù)據(jù)請(qǐng)求

24、hbase宕機(jī)了如何處理?
  1)HBase的RegionServer宕機(jī)超過(guò)一定時(shí)間后,HMaster會(huì)將其所管理的region重新分布到其他活動(dòng)的RegionServer上,由于數(shù)據(jù)和日志都持久在HDFS中,該操作不會(huì)導(dǎo)致數(shù)據(jù)丟失。所以數(shù)據(jù)的一致性和安全性是有保障的。
  2)但是重新分配的region需要根據(jù)日志恢復(fù)原RegionServer中的內(nèi)存MemoryStore表,這會(huì)導(dǎo)致宕機(jī)的region在這段時(shí)間內(nèi)無(wú)法對(duì)外提供服務(wù)。
  3)而一旦重分布,宕機(jī)的節(jié)點(diǎn)重新啟動(dòng)后就相當(dāng)于一個(gè)新的RegionServer加入集群,為了平衡,需要再次將某些region分布到該server。
  4)因此,Region Server的內(nèi)存表memstore如何在節(jié)點(diǎn)間做到更高的可用,是HBase的一個(gè)較大的挑戰(zhàn)。

25、Hbase 中的 metastore 用來(lái)做什么的?
  1)Hbase的metastore是用來(lái)保存數(shù)據(jù)的,
  2)其中保存數(shù)據(jù)的方式有有三種第一種于第二種是本地儲(chǔ)存,第二種是遠(yuǎn)程儲(chǔ)存這一種企業(yè)用的比較多

26、hbase是怎樣預(yù)分區(qū)的?
  如何去進(jìn)行預(yù)分區(qū),可以采用下面三步:
  1)取樣,先隨機(jī)生成一定數(shù)量的rowkey,將取樣數(shù)據(jù)按升序排序放到一個(gè)集合里
  2)根據(jù)預(yù)分區(qū)的region個(gè)數(shù),對(duì)整個(gè)集合平均分割,即是相關(guān)的splitKeys.
  3)HBaseAdmin.createTable(HTableDescriptor tableDescriptor,byte[][] splitkeys)可以指定預(yù)分區(qū)的splitKey,即是指定region間的rowkey臨界值

27、怎樣將 mysql 的數(shù)據(jù)導(dǎo)入到 hbase 中?
  1)不能使用 sqoop,速度太慢了,提示如下:
    A、一種可以加快批量寫入速度的方法是通過(guò)預(yù)先創(chuàng)建一些空的 regions,這樣當(dāng)數(shù)據(jù)寫入 HBase 時(shí),會(huì)按照 region 分區(qū)情況,在集群內(nèi)做數(shù)據(jù)的負(fù)載均衡。
    B、hbase 里面有這樣一個(gè) hfileoutputformat 類,他的實(shí)現(xiàn)可以將數(shù)據(jù)轉(zhuǎn)換成 hfile格式,通過(guò) new 一個(gè)這個(gè)類,進(jìn)行相關(guān)配置,這樣會(huì)在 hdfs 下面產(chǎn)生一個(gè)文件,這個(gè)時(shí)候利用 hbase 提供的 jruby 的 loadtable.rb 腳本就可以進(jìn)行批量導(dǎo)入。

28、Redis, 傳統(tǒng)數(shù)據(jù)庫(kù),hbase,hive  每個(gè)之間的區(qū)別?
  1)Redis 是基于內(nèi)存的數(shù)據(jù)庫(kù),注重實(shí)用內(nèi)存的計(jì)算,
  2)hbase是列式數(shù)據(jù)庫(kù),無(wú)法創(chuàng)建主鍵,地從是基于HDFS的,每一行可以保存很多的列,
  3)hive是數(shù)據(jù)的倉(cāng)庫(kù),是為了減輕mapreduce而設(shè)計(jì)的,不是數(shù)據(jù)庫(kù),是用來(lái)與hadoop做交互的。

29、HBase scan setBatch和setCaching的區(qū)別
  1)scan可以通過(guò)setCaching與setBatch方法提高速度(以空間換時(shí)間),
  2)setCaching設(shè)置的值為每次rpc的請(qǐng)求記錄數(shù),默認(rèn)是1;cache大可以優(yōu)化性能,但是太大了會(huì)花費(fèi)很長(zhǎng)的時(shí)間進(jìn)行一次傳輸。
  3)setBatch設(shè)置每次取的column size;有些row特別大,所以需要分開傳給client,就是一次傳一個(gè)row的幾個(gè)column。

30、flume 不采集 Nginx 日志,通過(guò) Logger4j 采集日志,優(yōu)缺點(diǎn)是什么?
  1)在nginx采集日志時(shí)無(wú)法獲取session的信息,然而logger4j則可以獲取session的信息,
  2)logger4j的方式比較穩(wěn)定,不會(huì)宕機(jī)。缺點(diǎn):不夠靈活,logger4j的方式和項(xiàng)目結(jié)合過(guò)濾緊密,而flume的方式就比較靈活,便于插拔式比較好,不會(huì)影響項(xiàng)目的性能。

31、flume 和 kafka 采集日志區(qū)別,采集日志時(shí)中間停了,怎么記錄之前的日志。
  1)Flume 采集日志是通過(guò)流的方式直接將日志收集到存儲(chǔ)層,而 kafka 將日志緩存在 kafka集群,待后期可以采集到存儲(chǔ)層。
  2)Flume 采集中間停了,可以采用文件的方式記錄之前的日志,而 kafka 是采用 offset(偏移量) 的方式記錄之前的日志。

32、kafka 中怎樣儲(chǔ)存數(shù)據(jù)結(jié)構(gòu)的,data.....目錄下有多少個(gè)分區(qū),每個(gè)分區(qū)的存儲(chǔ)格式是什么樣的?
  1)topic 是按照“主題名-分區(qū)”存儲(chǔ)的
  2)分區(qū)個(gè)數(shù)由配置文件決定
  3)每個(gè)分區(qū)下最重要的兩個(gè)文件是 0000000000.log 和 000000.index,0000000.log,以默認(rèn) 1G 大小回滾。

33、mr 和 spark 區(qū)別,怎么理解 spark-rdd
  1)Mr 是文件方式的分布式計(jì)算框架,是將中間結(jié)果和最終結(jié)果記錄在文件中,map 和 reduce的數(shù)據(jù)分發(fā)也是在文件中。
  2)spark 是內(nèi)存迭代式的計(jì)算框架,計(jì)算的中間結(jié)果可以緩存內(nèi)存,也可以緩存硬盤,但是不是每一步計(jì)算都需要緩存的。
  3)spark-rdd 是一個(gè)數(shù)據(jù)的分區(qū)記錄集合,是利用內(nèi)存來(lái)計(jì)算的,spark之所以快是因?yàn)橛袃?nèi)存的模式

34、你們的集群規(guī)模?
  1)這個(gè)得看個(gè)人在公司的規(guī)模,下面介紹一下我們公司的一些配置:
    聯(lián)想System x3750  服務(wù)器,價(jià)格3.5萬(wàn),內(nèi)存容量32G,產(chǎn)品類型機(jī)架式,硬盤接口SSD,CPU頻率2.6GH,CPU數(shù)量2顆,三級(jí)緩存15MB,cpu核心6核,cpu線程數(shù)12線程,最大內(nèi)存支持1.5T,網(wǎng)絡(luò)是千兆網(wǎng)卡,可插拔時(shí)硬盤接口12個(gè)卡槽,配置1T的容量
詳細(xì):http://detail.zol.com.cn/server/index1101243.shtml

名字 軟件 運(yùn)行管理
Hadoop1 JDK,hadoop namenode
Hadoop2 JDK,hadoop namenode
Hadoop3 JDK,hadoop secondaryNamenode
Hadoop4 JDK,hadoop secondaryNamenode
Hadoop5 JDK,hadoop datanode
Hadoop6 JDK,hadoop datanode
Hadoop7 JDK,hadoop datanode
Hadoop8 JDK,hadoop datanode
Hadoop9 JDK,hadoop datanode
Hadoop10 JDK,zookeeper,tomcat,mvn,kafka leader
Hadoop11 JDK,zookeeper,tomcat,mvn,kafka follower
Hadoop12 JDK,zookeeper,tomcat,mvn,kafka follower
Hadoop13 JDK,hive,mysql,svn,logstarh hive,mysql,svn
Hadoop14 JDK,hbase,mysql備份 datanode
Hadoop15 JDK,nginx,Log日志手機(jī) datanode

數(shù)據(jù)就是每天訪問(wèn)的Log日志不是很大,有的時(shí)候大有的時(shí)候小的可憐

35、你在項(xiàng)目中遇到了哪些難題,是怎么解決的?
  1)在執(zhí)行任務(wù)時(shí)發(fā)現(xiàn)副本的個(gè)數(shù)不對(duì),經(jīng)過(guò)一番的查找發(fā)現(xiàn)是超時(shí)的原因,修改了配置文件hdfs-site.xml:中修改了超時(shí)時(shí)間。
  2)由于當(dāng)時(shí)在分配各個(gè)目錄空間大小時(shí),沒(méi)有很好的分配導(dǎo)致有的目錄的空間浪費(fèi),于是整體商量后把儲(chǔ)存的空間調(diào)大了一些。

相關(guān)文章

最新評(píng)論